From 1b3d915af72711ecb2d265e266e52de4038184a5 Mon Sep 17 00:00:00 2001 From: stvn Date: Tue, 13 Apr 2021 20:16:54 -0700 Subject: [PATCH] refactor: Move RequestFactoryNoCsrf helper to common/ --- common/djangoapps/student/tests/factories.py | 11 +++++++++++ lms/djangoapps/courseware/tests/factories.py | 11 ----------- lms/djangoapps/courseware/tests/test_entrance_exam.py | 2 +- lms/djangoapps/courseware/tests/test_module_render.py | 6 ++---- lms/djangoapps/courseware/tests/test_views.py | 3 ++- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/common/djangoapps/student/tests/factories.py b/common/djangoapps/student/tests/factories.py index 2ee87d6990..ee1610e8e7 100644 --- a/common/djangoapps/student/tests/factories.py +++ b/common/djangoapps/student/tests/factories.py @@ -7,6 +7,7 @@ from uuid import uuid4 import factory from django.contrib.auth.models import AnonymousUser, Group, Permission from django.contrib.contenttypes.models import ContentType +from django.test.client import RequestFactory from factory.django import DjangoModelFactory from opaque_keys.edx.keys import CourseKey from pytz import UTC @@ -115,6 +116,16 @@ class UserFactory(DjangoModelFactory): # lint-amnesty, pylint: disable=missing- self.groups.add(GroupFactory.simple_generate(create, name=group_name)) # lint-amnesty, pylint: disable=no-member +class RequestFactoryNoCsrf(RequestFactory): + """ + RequestFactory, which disables csrf checks. + """ + def request(self, **kwargs): + request = super().request(**kwargs) + setattr(request, '_dont_enforce_csrf_checks', True) # pylint: disable=literal-used-as-attribute + return request + + class AnonymousUserFactory(factory.Factory): class Meta: model = AnonymousUser diff --git a/lms/djangoapps/courseware/tests/factories.py b/lms/djangoapps/courseware/tests/factories.py index d0657241e5..5802c7a845 100644 --- a/lms/djangoapps/courseware/tests/factories.py +++ b/lms/djangoapps/courseware/tests/factories.py @@ -5,7 +5,6 @@ import json from functools import partial import factory -from django.test.client import RequestFactory from factory.django import DjangoModelFactory from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.locator import CourseLocator @@ -68,13 +67,3 @@ class StudentInfoFactory(DjangoModelFactory): # lint-amnesty, pylint: disable=m field_name = 'existing_field' value = json.dumps('old_value') student = factory.SubFactory(UserFactory) - - -class RequestFactoryNoCsrf(RequestFactory): - """ - RequestFactory, which disables csrf checks. - """ - def request(self, **kwargs): - request = super().request(**kwargs) - setattr(request, '_dont_enforce_csrf_checks', True) # pylint: disable=literal-used-as-attribute - return request diff --git a/lms/djangoapps/courseware/tests/test_entrance_exam.py b/lms/djangoapps/courseware/tests/test_entrance_exam.py index dd60c428b9..5cf95c56e5 100644 --- a/lms/djangoapps/courseware/tests/test_entrance_exam.py +++ b/lms/djangoapps/courseware/tests/test_entrance_exam.py @@ -18,13 +18,13 @@ from lms.djangoapps.courseware.entrance_exams import ( ) from lms.djangoapps.courseware.model_data import FieldDataCache from lms.djangoapps.courseware.module_render import get_module, handle_xblock_callback, toc_for_course -from lms.djangoapps.courseware.tests.factories import RequestFactoryNoCsrf from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase from openedx.core.djangolib.testing.utils import get_mock_request from openedx.features.course_experience import DISABLE_COURSE_OUTLINE_PAGE_FLAG, DISABLE_UNIFIED_COURSE_TAB_FLAG from common.djangoapps.student.models import CourseEnrollment from common.djangoapps.student.tests.factories import AnonymousUserFactory, CourseEnrollmentFactory from common.djangoapps.student.tests.factories import InstructorFactory +from common.djangoapps.student.tests.factories import RequestFactoryNoCsrf from common.djangoapps.student.tests.factories import StaffFactory from common.djangoapps.student.tests.factories import UserFactory from common.djangoapps.util.milestones_helpers import ( diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py index 4725c74acb..6a8d601221 100644 --- a/lms/djangoapps/courseware/tests/test_module_render.py +++ b/lms/djangoapps/courseware/tests/test_module_render.py @@ -43,6 +43,7 @@ from xblock.test.tools import TestRuntime # lint-amnesty, pylint: disable=wrong from capa.tests.response_xml_factory import OptionResponseXMLFactory # lint-amnesty, pylint: disable=reimported from common.djangoapps.course_modes.models import CourseMode # lint-amnesty, pylint: disable=reimported from common.djangoapps.student.tests.factories import GlobalStaffFactory +from common.djangoapps.student.tests.factories import RequestFactoryNoCsrf from common.djangoapps.student.tests.factories import UserFactory from lms.djangoapps.courseware import module_render as render from lms.djangoapps.courseware.access_response import AccessResponse @@ -52,10 +53,7 @@ from lms.djangoapps.courseware.masquerade import CourseMasquerade from lms.djangoapps.courseware.model_data import FieldDataCache from lms.djangoapps.courseware.models import StudentModule from lms.djangoapps.courseware.module_render import get_module_for_descriptor, hash_resource -from lms.djangoapps.courseware.tests.factories import ( - RequestFactoryNoCsrf, - StudentModuleFactory, -) +from lms.djangoapps.courseware.tests.factories import StudentModuleFactory from lms.djangoapps.courseware.tests.test_submitting_problems import TestSubmittingProblems from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase from lms.djangoapps.lms_xblock.field_data import LmsFieldData diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index beb9265a48..33319ad1fb 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -36,6 +36,7 @@ from common.djangoapps.course_modes.models import CourseMode from common.djangoapps.course_modes.tests.factories import CourseModeFactory from freezegun import freeze_time # lint-amnesty, pylint: disable=wrong-import-order from common.djangoapps.student.tests.factories import GlobalStaffFactory +from common.djangoapps.student.tests.factories import RequestFactoryNoCsrf from lms.djangoapps.certificates import api as certs_api from lms.djangoapps.certificates.models import ( CertificateGenerationConfiguration, @@ -48,7 +49,7 @@ from lms.djangoapps.commerce.utils import EcommerceService from lms.djangoapps.courseware.access_utils import check_course_open_for_learner from lms.djangoapps.courseware.model_data import FieldDataCache, set_score from lms.djangoapps.courseware.module_render import get_module, handle_xblock_callback -from lms.djangoapps.courseware.tests.factories import RequestFactoryNoCsrf, StudentModuleFactory +from lms.djangoapps.courseware.tests.factories import StudentModuleFactory from lms.djangoapps.courseware.tests.helpers import get_expiration_banner_text from lms.djangoapps.courseware.testutils import RenderXBlockTestMixin from lms.djangoapps.courseware.toggles import (