Skip to content
Snippets Groups Projects
Commit eb673df2 authored by Eva Bardou's avatar Eva Bardou
Browse files

Add IsVerified permission on Validate/RejectClassification endpoints

parent f798bfe6
No related branches found
No related tags found
1 merge request!1162Add IsVerified permission on Validate/RejectClassification endpoints
......@@ -478,6 +478,7 @@ class ManageClassificationsSelection(SelectionMixin, CorpusACLMixin, CreateAPIVi
class ClassificationModerationActionsMixin(GenericAPIView):
permission_classes = (IsVerified, )
serializer_class = ClassificationSerializer
def get_queryset(self):
......
......@@ -260,14 +260,27 @@ class TestClasses(FixtureAPITestCase):
classification.refresh_from_db()
self.assertEqual(classification.moderator, self.user)
def test_classification_validate_without_permissions(self):
def test_classification_validate_requires_login(self):
classification = self.element.classifications.create(
ml_class=self.text,
confidence=.5,
)
with self.assertNumQueries(0):
response = self.client.put(reverse('api:classification-validate', kwargs={'pk': classification.id}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_classification_validate_requires_verified(self):
self.user.verified_email = False
self.user.save()
self.client.force_login(self.user)
classification = self.element.classifications.create(
ml_class=self.text,
confidence=.5,
)
with self.assertNumQueries(2):
response = self.client.put(reverse('api:classification-validate', kwargs={'pk': classification.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_worker_classification_reject(self):
self.client.force_login(self.user)
......@@ -311,11 +324,21 @@ class TestClasses(FixtureAPITestCase):
with self.assertRaises(Classification.DoesNotExist):
classification.refresh_from_db()
def test_classification_reject_without_permissions(self):
def test_classification_reject_requires_login(self):
classification = self.element.classifications.create(ml_class=self.text, confidence=.42)
with self.assertNumQueries(0):
response = self.client.put(reverse('api:classification-reject', kwargs={'pk': classification.id}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_classification_reject_requires_verified(self):
self.user.verified_email = False
self.user.save()
self.client.force_login(self.user)
classification = self.element.classifications.create(ml_class=self.text, confidence=.42)
with self.assertNumQueries(2):
response = self.client.put(reverse('api:classification-reject', kwargs={'pk': classification.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_classification_can_still_be_moderated(self):
self.client.force_login(self.user)
......
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