2929from pytz import UTC
3030from xblock .fields import Date
3131
32- from cms .djangoapps .contentstore import toggles
3332from cms .djangoapps .contentstore .utils import reverse_course_url , reverse_usage_url
3433from cms .djangoapps .models .settings .course_grading import (
3534 GRADING_POLICY_CHANGED_EVENT_TYPE ,
@@ -123,18 +122,16 @@ def setUp(self):
123122 CourseStaffRole (self .course .id ).add_users (self .nonstaff )
124123
125124 @override_settings (FEATURES = {'DISABLE_MOBILE_COURSE_AVAILABLE' : True })
126- @override_waffle_flag (toggles .LEGACY_STUDIO_ADVANCED_SETTINGS , True )
127125 def test_mobile_field_available (self ):
128126
129127 """
130128 Test to check `Mobile Course Available` field is not viewable in Studio
131129 when DISABLE_MOBILE_COURSE_AVAILABLE is true.
132130 """
133131
134- response = self .client .get_html (self .course_setting_url )
135- start = response .content .decode ('utf-8' ).find ("mobile_available" )
136- end = response .content .decode ('utf-8' ).find ("}" , start )
137- settings_fields = json .loads (response .content .decode ('utf-8' )[start + len ("mobile_available: " ):end + 1 ])
132+ response = self .client .get (self .course_setting_url , HTTP_ACCEPT = 'application/json' )
133+ data = json .loads (response .content .decode ('utf-8' ))
134+ settings_fields = data .get ('mobile_available' )
138135
139136 self .assertEqual (settings_fields ["display_name" ], "Mobile Course Available" ) # noqa: PT009
140137 self .assertEqual (settings_fields ["deprecated" ], True ) # noqa: PT009
@@ -146,7 +143,6 @@ def test_mobile_field_available(self):
146143 (False , True , True )
147144 )
148145 @ddt .unpack
149- @override_waffle_flag (toggles .LEGACY_STUDIO_ADVANCED_SETTINGS , True )
150146 def test_discussion_fields_available (self , is_pages_and_resources_enabled ,
151147 is_legacy_discussion_setting_enabled , fields_visible ):
152148 """
@@ -155,11 +151,27 @@ def test_discussion_fields_available(self, is_pages_and_resources_enabled,
155151
156152 with override_waffle_flag (ENABLE_PAGES_AND_RESOURCES_MICROFRONTEND , is_pages_and_resources_enabled ):
157153 with override_waffle_flag (OVERRIDE_DISCUSSION_LEGACY_SETTINGS_FLAG , is_legacy_discussion_setting_enabled ):
158- response = self .client .get_html (self .course_setting_url ).content .decode ('utf-8' )
159- self .assertEqual ('allow_anonymous' in response , fields_visible ) # noqa: PT009
160- self .assertEqual ('allow_anonymous_to_peers' in response , fields_visible ) # noqa: PT009
161- self .assertEqual ('discussion_blackouts' in response , fields_visible ) # noqa: PT009
162- self .assertEqual ('discussion_topics' in response , fields_visible ) # noqa: PT009
154+ response = self .client .get (self .course_setting_url , HTTP_ACCEPT = 'application/json' )
155+ data = json .loads (response .content .decode ('utf-8' ))
156+ self .assertEqual ('allow_anonymous' in data , fields_visible ) # noqa: PT009
157+ self .assertEqual ('allow_anonymous_to_peers' in data , fields_visible ) # noqa: PT009
158+ self .assertEqual ('discussion_blackouts' in data , fields_visible ) # noqa: PT009
159+ self .assertEqual ('discussion_topics' in data , fields_visible ) # noqa: PT009
160+
161+ @ddt .data (False , True )
162+ def test_disable_advanced_settings_feature (self , disable_advanced_settings ):
163+ """
164+ When DISABLE_ADVANCED_SETTINGS is enabled, non-staff users should receive
165+ a 403 on the advanced settings URL; staff users should always be redirected.
166+ """
167+ with override_settings (FEATURES = {
168+ 'DISABLE_ADVANCED_SETTINGS' : disable_advanced_settings ,
169+ }, COURSE_AUTHORING_MICROFRONTEND_URL = 'https://mfe.example' ):
170+ response = self .non_staff_client .get_html (self .course_setting_url )
171+ self .assertEqual (response .status_code , 403 if disable_advanced_settings else 302 ) # noqa: PT009
172+
173+ response = self .client .get_html (self .course_setting_url )
174+ self .assertEqual (response .status_code , 302 ) # noqa: PT009
163175
164176 def test_grading_handler_redirects_to_mfe (self ):
165177 """grading_handler redirects to the authoring MFE."""
0 commit comments