diff --git a/cookbook/tests/api/test_api_username.py b/cookbook/tests/api/test_api_username.py deleted file mode 100644 index 23657ece2..000000000 --- a/cookbook/tests/api/test_api_username.py +++ /dev/null @@ -1,41 +0,0 @@ -from cookbook.tests.views.test_views import TestViews -from django.contrib import auth -from django.urls import reverse - - -class TestApiUsername(TestViews): - - def setUp(self): - super(TestApiUsername, self).setUp() - - def test_forbidden_methods(self): - r = self.user_client_1.post( - reverse('api:username-list')) - self.assertEqual(r.status_code, 405) - - r = self.user_client_1.put( - reverse( - 'api:username-detail', - args=[auth.get_user(self.user_client_1).pk]) - ) - self.assertEqual(r.status_code, 405) - - r = self.user_client_1.delete( - reverse( - 'api:username-detail', - args=[auth.get_user(self.user_client_1).pk] - ) - ) - self.assertEqual(r.status_code, 405) - - def test_username_list(self): - self.batch_requests( - [ - (self.anonymous_client, 403), - (self.guest_client_1, 200), - (self.user_client_1, 200), - (self.admin_client_1, 200), - (self.superuser_client, 200) - ], - reverse('api:username-list') - ) diff --git a/cookbook/tests/pytest/api/test_api_food.py b/cookbook/tests/pytest/api/test_api_food.py index 4427eaac1..6619d8b3e 100644 --- a/cookbook/tests/pytest/api/test_api_food.py +++ b/cookbook/tests/pytest/api/test_api_food.py @@ -43,7 +43,6 @@ def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): def test_list_filter(obj_1, obj_2, u1_s1): - # verify storage is returned r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) diff --git a/cookbook/tests/pytest/api/test_api_keyword.py b/cookbook/tests/pytest/api/test_api_keyword.py index 7319bcf2a..650ac14c6 100644 --- a/cookbook/tests/pytest/api/test_api_keyword.py +++ b/cookbook/tests/pytest/api/test_api_keyword.py @@ -43,7 +43,6 @@ def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): def test_list_filter(obj_1, obj_2, u1_s1): - # verify storage is returned r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) diff --git a/cookbook/tests/pytest/api/test_api_unit.py b/cookbook/tests/pytest/api/test_api_unit.py index 8e35a4272..f0a131ed4 100644 --- a/cookbook/tests/pytest/api/test_api_unit.py +++ b/cookbook/tests/pytest/api/test_api_unit.py @@ -43,7 +43,6 @@ def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): def test_list_filter(obj_1, obj_2, u1_s1): - # verify storage is returned r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) diff --git a/cookbook/tests/pytest/api/test_api_username.py b/cookbook/tests/pytest/api/test_api_username.py new file mode 100644 index 000000000..0e4b137d8 --- /dev/null +++ b/cookbook/tests/pytest/api/test_api_username.py @@ -0,0 +1,70 @@ +import json + +import pytest + +from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse + +LIST_URL = 'api:username-list' +DETAIL_URL = 'api:username-detail' + + +def test_forbidden_methods(u1_s1): + r = u1_s1.post( + reverse(LIST_URL)) + assert r.status_code == 405 + + r = u1_s1.put( + reverse( + DETAIL_URL, + args=[auth.get_user(u1_s1).pk]) + ) + assert r.status_code == 405 + + r = u1_s1.delete( + reverse( + DETAIL_URL, + args=[auth.get_user(u1_s1).pk] + ) + ) + assert r.status_code == 405 + + +@pytest.mark.parametrize("arg", [ + ['a_u', 403], + ['g1_s1', 200], + ['u1_s1', 200], + ['a1_s1', 200], +]) +def test_list(arg, request): + c = request.getfixturevalue(arg[0]) + assert c.get(reverse(LIST_URL)).status_code == arg[1] + + +def test_list_filter(u1_s1, u2_s1, u1_s2, u2_s2): + r = u1_s1.get(reverse(LIST_URL)) + assert r.status_code == 200 + response = json.loads(r.content) + assert len(response) == 2 + + obj_u2_s1 = auth.get_user(u2_s1) + obj_u2_s2 = auth.get_user(u2_s2) + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?filter_list=[{obj_u2_s1.pk},{obj_u2_s2.pk}]').content) + assert len(response) == 1 + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?filter_list=[]').content) + assert len(response) == 0 + + +def test_list_space(u1_s1, u2_s1, u1_s2, space_2): + assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 + assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 1 + + u = auth.get_user(u2_s1) + u.userpreference.space = space_2 + u.userpreference.save() + + assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 + assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 2 diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 884f0e1e4..5ede3fb25 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -97,9 +97,7 @@ class UserNameViewSet(viewsets.ReadOnlyModelViewSet): if filter_list is not None: queryset = queryset.filter(pk__in=json.loads(filter_list)) except ValueError: - raise APIException( - _('Parameter filter_list incorrectly formatted') - ) + raise APIException(_('Parameter filter_list incorrectly formatted')) return queryset