diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 5337a3d..9e217fb 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,7 +14,11 @@ Change Log Unreleased ********** -2.0.1 - 2021-01-08 +3.2.0 - 2024-01-30 +****************** +* Remove audit access to chat view + +2.0.1 - 2024-01-08 ****************** * Gate content integration with waffle flag diff --git a/learning_assistant/__init__.py b/learning_assistant/__init__.py index 787d2c3..cf622ab 100644 --- a/learning_assistant/__init__.py +++ b/learning_assistant/__init__.py @@ -2,6 +2,6 @@ Plugin for a learning assistant backend, intended for use within edx-platform. """ -__version__ = '3.1.0' +__version__ = '3.2.0' default_app_config = 'learning_assistant.apps.LearningAssistantConfig' # pylint: disable=invalid-name diff --git a/learning_assistant/views.py b/learning_assistant/views.py index 0bcbedb..00a5edf 100644 --- a/learning_assistant/views.py +++ b/learning_assistant/views.py @@ -57,7 +57,7 @@ def post(self, request, course_id): enrollment_object = CourseEnrollment.get_enrollment(request.user, courserun_key) enrollment_mode = enrollment_object.mode if enrollment_object else None if ( - (enrollment_mode not in CourseMode.ALL_MODES) + (enrollment_mode not in CourseMode.VERIFIED_MODES) and user_role not in ('staff', 'instructor') ): return Response( diff --git a/tests/test_views.py b/tests/test_views.py index fdb0fb6..9f3edc7 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -94,12 +94,25 @@ def test_course_waffle_inactive(self, mock_waffle): def test_user_no_enrollment_not_staff(self, mock_mode, mock_enrollment, mock_role, mock_waffle): mock_waffle.return_value = True mock_role.return_value = 'student' - mock_mode.ALL_MODES = ['verified'] + mock_mode.VERIFIED_MODES = ['verified'] mock_enrollment.return_value = None response = self.client.post(reverse('chat', kwargs={'course_id': self.course_id})) self.assertEqual(response.status_code, 403) + @patch('learning_assistant.views.learning_assistant_enabled') + @patch('learning_assistant.views.get_user_role') + @patch('learning_assistant.views.CourseEnrollment.get_enrollment') + @patch('learning_assistant.views.CourseMode') + def test_user_audit_enrollment_not_staff(self, mock_mode, mock_enrollment, mock_role, mock_waffle): + mock_waffle.return_value = True + mock_role.return_value = 'student' + mock_mode.VERIFIED_MODES = ['verified'] + mock_enrollment.return_value = MagicMock(mode='audit') + + response = self.client.post(reverse('chat', kwargs={'course_id': self.course_id})) + self.assertEqual(response.status_code, 403) + @patch('learning_assistant.views.render_prompt_template') @patch('learning_assistant.views.learning_assistant_enabled') @patch('learning_assistant.views.get_user_role') @@ -131,7 +144,7 @@ def test_invalid_messages(self, mock_role, mock_waffle, mock_render): def test_chat_response(self, mock_mode, mock_enrollment, mock_role, mock_waffle, mock_chat_response, mock_render): mock_waffle.return_value = True mock_role.return_value = 'student' - mock_mode.ALL_MODES = ['verified'] + mock_mode.VERIFIED_MODES = ['verified'] mock_enrollment.return_value = MagicMock(mode='verified') mock_chat_response.return_value = (200, {'role': 'assistant', 'content': 'Something else'}) mock_render.return_value = 'This is a template'