Skip to content
Snippets Groups Projects
Commit cb3f9d9f authored by ml bonhomme's avatar ml bonhomme :bee: Committed by Erwan Rouchet
Browse files

DestroyAllowedMetaData endpoint and tests

parent 570628e2
No related branches found
No related tags found
1 merge request!1496DestroyAllowedMetaData endpoint and tests
......@@ -27,7 +27,6 @@ from rest_framework.generics import (
DestroyAPIView,
ListAPIView,
ListCreateAPIView,
RetrieveUpdateAPIView,
RetrieveUpdateDestroyAPIView,
UpdateAPIView,
)
......@@ -1413,9 +1412,10 @@ class CorpusAllowedMetaData(CorpusACLMixin, ListCreateAPIView):
@extend_schema_view(
get=extend_schema(operation_id='RetrieveAllowedMetaData', description='Retrieve an allowed metadata.'),
patch=extend_schema(operation_id='PartialUpdateAllowedMetaData', description='Edit an allowed metadata.'),
put=extend_schema(operation_id='UpdateAllowedMetaData', description='Edit an allowed metadata.')
put=extend_schema(operation_id='UpdateAllowedMetaData', description='Edit an allowed metadata.'),
delete=extend_schema(operation_id='DestroyAllowedMetaData', description='Delete an existing allowed metadata.')
)
class AllowedMetaDataEdit(CorpusACLMixin, RetrieveUpdateAPIView):
class AllowedMetaDataEdit(CorpusACLMixin, RetrieveUpdateDestroyAPIView):
permission_classes = (IsVerified, )
serializer_class = CorpusAllowedMetaDataSerializer
queryset = AllowedMetaData.objects.none()
......
......@@ -5,6 +5,7 @@ from rest_framework import status
from arkindex.documents.models import AllowedMetaData, Corpus, MetaType
from arkindex.project.tests import FixtureAPITestCase
from arkindex.users.models import Role
class TestAllowedMetaData(FixtureAPITestCase):
......@@ -253,3 +254,44 @@ class TestAllowedMetaData(FixtureAPITestCase):
self.assertDictEqual(response.json(), {
'detail': ['An AllowedMetaData with this type and name already exists in this corpus.']
})
def test_destroy(self):
self.client.force_login(self.user)
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
response = self.client.get(
reverse('api:corpus-allowed-metadata', kwargs={'pk': self.corpus.id}),
data={'page_size': 3}
)
data = response.json()
self.assertEqual(data['count'], 5)
response = self.client.get(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_destroy_requires_login(self):
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_destroy_requires_verified(self):
self.user.verified_email = False
self.user.save()
self.client.force_login(self.user)
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_destroy_private_corpus(self):
self.client.force_login(self.user)
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.private_corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_destroy_guest_forbidden(self):
self.client.force_login(self.user)
self.corpus.memberships.filter(user=self.user).update(level=Role.Guest.value)
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_destroy_contributor_forbidden(self):
self.client.force_login(self.user)
self.corpus.memberships.filter(user=self.user).update(level=Role.Contributor.value)
response = self.client.delete(reverse('api:allowed-metadata-edit', kwargs={'corpus': self.corpus.id, 'pk': self.test_meta.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
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