Skip to content
Snippets Groups Projects
Commit 6fbd2917 authored by robinwilliam.hundt's avatar robinwilliam.hundt
Browse files

Added currently failing tests for access-rights

Currently students and tutors have access to the /tutor/ endpoint in the browsable api and at least get a 200 response in the tests for the /student/ endpoint however can not access this one in the browsable api.
parent 9306fdeb
No related branches found
No related tags found
1 merge request!17Refactor views to viewsets
...@@ -3,13 +3,12 @@ from rest_framework import status ...@@ -3,13 +3,12 @@ from rest_framework import status
from rest_framework.test import (APIRequestFactory, APITestCase, from rest_framework.test import (APIRequestFactory, APITestCase,
force_authenticate) force_authenticate)
from core.models import Reviewer from core.views import StudentSelfApiViewSet, TutorApiViewSet
from core.views import StudentSelfApiViewSet
from util.factories import GradyUserFactory from util.factories import GradyUserFactory
class AccessRightsOfStudentAPIViewTests(APITestCase): 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 """ should see belong here """
@classmethod @classmethod
...@@ -24,7 +23,7 @@ class AccessRightsOfStudentAPIViewTests(APITestCase): ...@@ -24,7 +23,7 @@ class AccessRightsOfStudentAPIViewTests(APITestCase):
self.request = self.factory.get(reverse('student_page-list')) self.request = self.factory.get(reverse('student_page-list'))
self.view = StudentSelfApiViewSet.as_view({'get': 'retrieve'}) self.view = StudentSelfApiViewSet.as_view({'get': 'retrieve'})
def test_unauthorized_access_denied(self): def test_unauthenticated_access_denied(self):
response = self.view(self.request) response = self.view(self.request)
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
...@@ -42,3 +41,72 @@ class AccessRightsOfStudentAPIViewTests(APITestCase): ...@@ -42,3 +41,72 @@ class AccessRightsOfStudentAPIViewTests(APITestCase):
force_authenticate(self.request, user=self.student.user) force_authenticate(self.request, user=self.student.user)
response = self.view(self.request) response = self.view(self.request)
self.assertEqual(response.status_code, status.HTTP_200_OK) 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)
from django.urls import reverse from django.urls import reverse
from rest_framework import status
from rest_framework.test import (APIRequestFactory, APITestCase, from rest_framework.test import (APIRequestFactory, APITestCase,
force_authenticate) force_authenticate)
...@@ -87,5 +86,5 @@ class StudentPageTests(APITestCase): ...@@ -87,5 +86,5 @@ class StudentPageTests(APITestCase):
self.student.submissions.first().type.full_score) self.student.submissions.first().type.full_score)
# We don't want a matriculation number here # 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) self.assertNotIn('matrikel_no', self.submission_list_first_entry)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment