diff --git a/backend/core/tests/test_access_rights.py b/backend/core/tests/test_access_rights.py index bd4627be1b83c91c9196fa2bd4a4a6e1a6df8e3d..51987f5332f696fa2acaf489dc1ecdf41f059c41 100644 --- a/backend/core/tests/test_access_rights.py +++ b/backend/core/tests/test_access_rights.py @@ -3,13 +3,12 @@ from rest_framework import status from rest_framework.test import (APIRequestFactory, APITestCase, force_authenticate) -from core.models import Reviewer -from core.views import StudentSelfApiViewSet +from core.views import StudentSelfApiViewSet, TutorApiViewSet from util.factories import GradyUserFactory class AccessRightsOfStudentAPIViewTests(APITestCase): - """ All tests that enshure that only students can see what students + """ All tests that ensure that only students can see what students should see belong here """ @classmethod @@ -24,7 +23,7 @@ class AccessRightsOfStudentAPIViewTests(APITestCase): self.request = self.factory.get(reverse('student_page-list')) self.view = StudentSelfApiViewSet.as_view({'get': 'retrieve'}) - def test_unauthorized_access_denied(self): + def test_unauthenticated_access_denied(self): response = self.view(self.request) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @@ -42,3 +41,72 @@ class AccessRightsOfStudentAPIViewTests(APITestCase): force_authenticate(self.request, user=self.student.user) response = self.view(self.request) self.assertEqual(response.status_code, status.HTTP_200_OK) + + +class AccessRightsOfTutorAPIViewTests(APITestCase): + """ Tests to ensure that only Reviewers have access to the TutorList information""" + @classmethod + def setUpTestData(cls): + cls.factory = APIRequestFactory() + cls.user_factory = GradyUserFactory() + + def setUp(self): + self.student = self.user_factory.make_student() + self.tutor = self.user_factory.make_tutor() + self.reviewer = self.user_factory.make_reviewer() + self.request = self.factory.get(reverse('tutor-list')) + self.view = TutorApiViewSet.as_view({'get': 'list'}) + + def test_unauthenticated_access_denied(self): + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_student_has_no_access(self): + force_authenticate(self.request, user=self.student.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_tutor_has_no_access(self): + force_authenticate(self.request, user=self.tutor.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_reviewer_has_access(self): + force_authenticate(self.request, user=self.reviewer.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + +class AccessRightsOfStudentReviewerAPIViewTest(APITestCase): + """ Tests to ensure that only Reviewers have access to the StudentReviewerApi endpoint information""" + + @classmethod + def setUpTestData(cls): + cls.factory = APIRequestFactory() + cls.user_factory = GradyUserFactory() + + def setUp(self): + self.student = self.user_factory.make_student() + self.tutor = self.user_factory.make_tutor() + self.reviewer = self.user_factory.make_reviewer() + self.request = self.factory.get(reverse('student-list')) + self.view = TutorApiViewSet.as_view({'get': 'list'}) + + def test_unauthenticated_access_denied(self): + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_student_has_no_access(self): + force_authenticate(self.request, user=self.student.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_tutor_has_no_access(self): + force_authenticate(self.request, user=self.tutor.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_reviewer_has_access(self): + force_authenticate(self.request, user=self.reviewer.user) + response = self.view(self.request) + self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/backend/core/tests/test_student_page.py b/backend/core/tests/test_student_page.py index 166583ad543484da2544ad34830a23cc578796e5..930163ad8c94ebb906210976e06f6de8253c3b14 100644 --- a/backend/core/tests/test_student_page.py +++ b/backend/core/tests/test_student_page.py @@ -1,5 +1,4 @@ from django.urls import reverse -from rest_framework import status from rest_framework.test import (APIRequestFactory, APITestCase, force_authenticate) @@ -87,5 +86,5 @@ class StudentPageTests(APITestCase): self.student.submissions.first().type.full_score) # We don't want a matriculation number here - def test_matriculation_number_is_not_senf(self): + def test_matriculation_number_is_not_send(self): self.assertNotIn('matrikel_no', self.submission_list_first_entry)