tests/api
This commit is contained in:
parent
bc1f28eda6
commit
67581c7fa4
@ -1,9 +1,8 @@
|
||||
import json
|
||||
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Food
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiUnit(TestViews):
|
||||
@ -19,8 +18,16 @@ class TestApiUnit(TestViews):
|
||||
|
||||
def test_keyword_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:food-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 200),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:food-list')
|
||||
)
|
||||
|
||||
# verify storage is returned
|
||||
r = self.user_client_1.get(reverse('api:food-list'))
|
||||
@ -42,12 +49,21 @@ class TestApiUnit(TestViews):
|
||||
self.assertEqual(len(response), 1)
|
||||
|
||||
def test_keyword_update(self):
|
||||
r = self.user_client_1.patch(reverse('api:food-detail', args={self.food_1.id}), {'name': 'new'}, content_type='application/json')
|
||||
r = self.user_client_1.patch(
|
||||
reverse(
|
||||
'api:food-detail',
|
||||
args={self.food_1.id}
|
||||
),
|
||||
{'name': 'new'},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['name'], 'new')
|
||||
|
||||
def test_keyword_delete(self):
|
||||
r = self.user_client_1.delete(reverse('api:food-detail', args={self.food_1.id}))
|
||||
r = self.user_client_1.delete(
|
||||
reverse('api:food-detail', args={self.food_1.id})
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(Food.objects.count(), 1)
|
||||
|
@ -1,11 +1,8 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync, Keyword
|
||||
from cookbook.models import Keyword
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiKeyword(TestViews):
|
||||
@ -21,8 +18,16 @@ class TestApiKeyword(TestViews):
|
||||
|
||||
def test_keyword_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:keyword-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 200),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:keyword-list')
|
||||
)
|
||||
|
||||
# verify storage is returned
|
||||
r = self.user_client_1.get(reverse('api:keyword-list'))
|
||||
@ -35,7 +40,9 @@ class TestApiKeyword(TestViews):
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(len(response), 1)
|
||||
|
||||
r = self.user_client_1.get(f'{reverse("api:keyword-list")}?query=chicken')
|
||||
r = self.user_client_1.get(
|
||||
f'{reverse("api:keyword-list")}?query=chicken'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(len(response), 0)
|
||||
|
||||
@ -44,12 +51,24 @@ class TestApiKeyword(TestViews):
|
||||
self.assertEqual(len(response), 1)
|
||||
|
||||
def test_keyword_update(self):
|
||||
r = self.user_client_1.patch(reverse('api:keyword-detail', args={self.keyword_1.id}), {'name': 'new'}, content_type='application/json')
|
||||
r = self.user_client_1.patch(
|
||||
reverse(
|
||||
'api:keyword-detail',
|
||||
args={self.keyword_1.id}
|
||||
),
|
||||
{'name': 'new'},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['name'], 'new')
|
||||
|
||||
def test_keyword_delete(self):
|
||||
r = self.user_client_1.delete(reverse('api:keyword-detail', args={self.keyword_1.id}))
|
||||
r = self.user_client_1.delete(
|
||||
reverse(
|
||||
'api:keyword-detail',
|
||||
args={self.keyword_1.id}
|
||||
)
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(Keyword.objects.count(), 1)
|
||||
|
@ -1,11 +1,7 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync, Keyword, ShoppingList, Recipe
|
||||
from cookbook.models import Recipe
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiShopping(TestViews):
|
||||
@ -19,8 +15,17 @@ class TestApiShopping(TestViews):
|
||||
)
|
||||
|
||||
def test_shopping_view_permissions(self):
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 200), (self.user_client_1, 200),
|
||||
(self.user_client_2, 200), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:recipe-detail', args={self.internal_recipe.id}))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 200),
|
||||
(self.user_client_1, 200),
|
||||
(self.user_client_2, 200),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse(
|
||||
'api:recipe-detail', args={self.internal_recipe.id})
|
||||
)
|
||||
|
||||
# TODO add tests for editing
|
||||
|
@ -1,27 +1,48 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync, Keyword, ShoppingList
|
||||
from cookbook.models import ShoppingList
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiShopping(TestViews):
|
||||
|
||||
def setUp(self):
|
||||
super(TestApiShopping, self).setUp()
|
||||
self.list_1 = ShoppingList.objects.create(created_by=auth.get_user(self.user_client_1))
|
||||
self.list_2 = ShoppingList.objects.create(created_by=auth.get_user(self.user_client_2))
|
||||
self.list_1 = ShoppingList.objects.create(
|
||||
created_by=auth.get_user(self.user_client_1)
|
||||
)
|
||||
self.list_2 = ShoppingList.objects.create(
|
||||
created_by=auth.get_user(self.user_client_2)
|
||||
)
|
||||
|
||||
def test_shopping_view_permissions(self):
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 404), (self.admin_client_1, 404), (self.superuser_client, 200)],
|
||||
reverse('api:shoppinglist-detail', args={self.list_1.id}))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 404),
|
||||
(self.user_client_1, 200),
|
||||
(self.user_client_2, 404),
|
||||
(self.admin_client_1, 404),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse(
|
||||
'api:shoppinglist-detail', args={self.list_1.id}
|
||||
)
|
||||
)
|
||||
|
||||
self.list_1.shared.add(auth.get_user(self.user_client_2))
|
||||
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 200), (self.admin_client_1, 404), (self.superuser_client, 200)],
|
||||
reverse('api:shoppinglist-detail', args={self.list_1.id}))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 404),
|
||||
(self.user_client_1, 200),
|
||||
(self.user_client_2, 200),
|
||||
(self.admin_client_1, 404),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse(
|
||||
'api:shoppinglist-detail', args={self.list_1.id})
|
||||
)
|
||||
|
||||
# TODO add tests for editing
|
||||
|
@ -1,11 +1,10 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiStorage(TestViews):
|
||||
@ -23,8 +22,16 @@ class TestApiStorage(TestViews):
|
||||
|
||||
def test_storage_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:storage-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 403),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:storage-list')
|
||||
)
|
||||
|
||||
# verify storage is returned
|
||||
r = self.admin_client_1.get(reverse('api:storage-list'))
|
||||
@ -38,7 +45,14 @@ class TestApiStorage(TestViews):
|
||||
|
||||
def test_storage_update(self):
|
||||
# can update storage as admin
|
||||
r = self.admin_client_1.patch(reverse('api:storage-detail', args={self.storage.id}), {'name': 'new', 'password': 'new_password'}, content_type='application/json')
|
||||
r = self.admin_client_1.patch(
|
||||
reverse(
|
||||
'api:storage-detail',
|
||||
args={self.storage.id}
|
||||
),
|
||||
{'name': 'new', 'password': 'new_password'},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['name'], 'new')
|
||||
@ -49,13 +63,20 @@ class TestApiStorage(TestViews):
|
||||
|
||||
def test_storage_delete(self):
|
||||
# can delete storage as admin
|
||||
r = self.admin_client_1.delete(reverse('api:storage-detail', args={self.storage.id}))
|
||||
r = self.admin_client_1.delete(
|
||||
reverse('api:storage-detail', args={self.storage.id})
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(Storage.objects.count(), 0)
|
||||
|
||||
self.storage = Storage.objects.create(created_by=auth.get_user(self.admin_client_1), name='test protect')
|
||||
self.storage = Storage.objects.create(
|
||||
created_by=auth.get_user(self.admin_client_1), name='test protect'
|
||||
)
|
||||
Sync.objects.create(storage=self.storage, )
|
||||
|
||||
# test if deleting a storage with existing sync fails (as sync protects storage)
|
||||
# test if deleting a storage with existing
|
||||
# sync fails (as sync protects storage)
|
||||
with self.assertRaises(ProtectedError):
|
||||
self.admin_client_1.delete(reverse('api:storage-detail', args={self.storage.id}))
|
||||
self.admin_client_1.delete(
|
||||
reverse('api:storage-detail', args={self.storage.id})
|
||||
)
|
||||
|
@ -1,11 +1,9 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync, SyncLog
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiSyncLog(TestViews):
|
||||
@ -26,12 +24,22 @@ class TestApiSyncLog(TestViews):
|
||||
path='path'
|
||||
)
|
||||
|
||||
self.sync_log = SyncLog.objects.create(sync=self.sync, status='success')
|
||||
self.sync_log = SyncLog.objects.create(
|
||||
sync=self.sync, status='success'
|
||||
)
|
||||
|
||||
def test_sync_log_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:synclog-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 403),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:synclog-list')
|
||||
)
|
||||
|
||||
# verify log entry is returned
|
||||
r = self.admin_client_1.get(reverse('api:synclog-list'))
|
||||
@ -42,10 +50,21 @@ class TestApiSyncLog(TestViews):
|
||||
|
||||
def test_sync_log_update(self):
|
||||
# read only view
|
||||
r = self.admin_client_1.patch(reverse('api:synclog-detail', args={self.sync.id}), {'path': 'new'}, content_type='application/json')
|
||||
r = self.admin_client_1.patch(
|
||||
reverse(
|
||||
'api:synclog-detail',
|
||||
args={self.sync.id}
|
||||
),
|
||||
{'path': 'new'},
|
||||
content_type='application/json'
|
||||
)
|
||||
self.assertEqual(r.status_code, 405)
|
||||
|
||||
def test_sync_log_delete(self):
|
||||
# read only view
|
||||
r = self.admin_client_1.delete(reverse('api:synclog-detail', args={self.sync.id}))
|
||||
r = self.admin_client_1.delete(
|
||||
reverse(
|
||||
'api:synclog-detail',
|
||||
args={self.sync.id})
|
||||
)
|
||||
self.assertEqual(r.status_code, 405)
|
||||
|
@ -1,11 +1,9 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.db.models import ProtectedError
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Storage, Sync
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiSync(TestViews):
|
||||
@ -28,8 +26,16 @@ class TestApiSync(TestViews):
|
||||
|
||||
def test_sync_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:sync-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 403),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:sync-list')
|
||||
)
|
||||
|
||||
# verify sync is returned
|
||||
r = self.admin_client_1.get(reverse('api:sync-list'))
|
||||
@ -41,13 +47,22 @@ class TestApiSync(TestViews):
|
||||
|
||||
def test_sync_update(self):
|
||||
# can update sync as admin
|
||||
r = self.admin_client_1.patch(reverse('api:sync-detail', args={self.sync.id}), {'path': 'new'}, content_type='application/json')
|
||||
r = self.admin_client_1.patch(
|
||||
reverse(
|
||||
'api:sync-detail',
|
||||
args={self.sync.id}
|
||||
),
|
||||
{'path': 'new'},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['path'], 'new')
|
||||
|
||||
def test_sync_delete(self):
|
||||
# can delete sync as admin
|
||||
r = self.admin_client_1.delete(reverse('api:sync-detail', args={self.sync.id}))
|
||||
r = self.admin_client_1.delete(
|
||||
reverse('api:sync-detail', args={self.sync.id})
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(Sync.objects.count(), 0)
|
||||
|
@ -1,9 +1,8 @@
|
||||
import json
|
||||
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import Unit
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiUnit(TestViews):
|
||||
@ -19,8 +18,16 @@ class TestApiUnit(TestViews):
|
||||
|
||||
def test_keyword_list(self):
|
||||
# verify view permissions are applied accordingly
|
||||
self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)],
|
||||
reverse('api:unit-list'))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.anonymous_client, 403),
|
||||
(self.guest_client_1, 403),
|
||||
(self.user_client_1, 200),
|
||||
(self.admin_client_1, 200),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse('api:unit-list')
|
||||
)
|
||||
|
||||
# verify storage is returned
|
||||
r = self.user_client_1.get(reverse('api:unit-list'))
|
||||
@ -42,12 +49,21 @@ class TestApiUnit(TestViews):
|
||||
self.assertEqual(len(response), 1)
|
||||
|
||||
def test_keyword_update(self):
|
||||
r = self.user_client_1.patch(reverse('api:unit-detail', args={self.unit_1.id}), {'name': 'new'}, content_type='application/json')
|
||||
r = self.user_client_1.patch(
|
||||
reverse(
|
||||
'api:unit-detail',
|
||||
args={self.unit_1.id}
|
||||
),
|
||||
{'name': 'new'},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['name'], 'new')
|
||||
|
||||
def test_keyword_delete(self):
|
||||
r = self.user_client_1.delete(reverse('api:unit-detail', args={self.unit_1.id}))
|
||||
r = self.user_client_1.delete(
|
||||
reverse('api:unit-detail', args={self.unit_1.id})
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(Unit.objects.count(), 1)
|
||||
|
@ -1,11 +1,7 @@
|
||||
import json
|
||||
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import UserPreference
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
|
||||
|
||||
class TestApiUsername(TestViews):
|
||||
|
||||
@ -13,15 +9,33 @@ class TestApiUsername(TestViews):
|
||||
super(TestApiUsername, self).setUp()
|
||||
|
||||
def test_forbidden_methods(self):
|
||||
r = self.user_client_1.post(reverse('api:username-list'))
|
||||
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]))
|
||||
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]))
|
||||
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'))
|
||||
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')
|
||||
)
|
||||
|
@ -1,10 +1,9 @@
|
||||
import json
|
||||
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
from cookbook.models import UserPreference
|
||||
from cookbook.tests.views.test_views import TestViews
|
||||
from django.contrib import auth
|
||||
from django.urls import reverse
|
||||
|
||||
|
||||
class TestApiUserPreference(TestViews):
|
||||
@ -16,8 +15,13 @@ class TestApiUserPreference(TestViews):
|
||||
r = self.user_client_1.post(reverse('api:userpreference-list'))
|
||||
self.assertEqual(r.status_code, 201)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(response['user'], auth.get_user(self.user_client_1).id)
|
||||
self.assertEqual(response['theme'], UserPreference._meta.get_field('theme').get_default())
|
||||
self.assertEqual(
|
||||
response['user'], auth.get_user(self.user_client_1).id
|
||||
)
|
||||
self.assertEqual(
|
||||
response['theme'],
|
||||
UserPreference._meta.get_field('theme').get_default()
|
||||
)
|
||||
|
||||
def test_preference_list(self):
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1))
|
||||
@ -28,7 +32,9 @@ class TestApiUserPreference(TestViews):
|
||||
self.assertEqual(r.status_code, 200)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(len(response), 1)
|
||||
self.assertEqual(response[0]['user'], auth.get_user(self.user_client_1).id)
|
||||
self.assertEqual(
|
||||
response[0]['user'], auth.get_user(self.user_client_1).id
|
||||
)
|
||||
|
||||
# superusers can see all user prefs in list
|
||||
r = self.superuser_client.get(reverse('api:userpreference-list'))
|
||||
@ -40,47 +46,104 @@ class TestApiUserPreference(TestViews):
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1))
|
||||
UserPreference.objects.create(user=auth.get_user(self.guest_client_1))
|
||||
|
||||
self.batch_requests([(self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 404), (self.anonymous_client, 403), (self.admin_client_1, 404), (self.superuser_client, 200)],
|
||||
reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}))
|
||||
self.batch_requests(
|
||||
[
|
||||
(self.guest_client_1, 404),
|
||||
(self.user_client_1, 200),
|
||||
(self.user_client_2, 404),
|
||||
(self.anonymous_client, 403),
|
||||
(self.admin_client_1, 404),
|
||||
(self.superuser_client, 200)
|
||||
],
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
)
|
||||
)
|
||||
|
||||
def test_preference_update(self):
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1))
|
||||
UserPreference.objects.create(user=auth.get_user(self.guest_client_1))
|
||||
|
||||
# can update users preference
|
||||
r = self.user_client_1.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.DARKLY}, content_type='application/json')
|
||||
r = self.user_client_1.put(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
),
|
||||
{'theme': UserPreference.DARKLY},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertEqual(response['theme'], UserPreference.DARKLY)
|
||||
|
||||
# cant set another users non existent pref
|
||||
r = self.user_client_1.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_2).id}), {'theme': UserPreference.DARKLY}, content_type='application/json')
|
||||
r = self.user_client_1.put(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_2).id}
|
||||
),
|
||||
{'theme': UserPreference.DARKLY},
|
||||
content_type='application/json'
|
||||
)
|
||||
self.assertEqual(r.status_code, 404)
|
||||
|
||||
# cant set another users existent pref
|
||||
r = self.user_client_2.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.FLATLY}, content_type='application/json')
|
||||
r = self.user_client_2.put(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
),
|
||||
{'theme': UserPreference.FLATLY},
|
||||
content_type='application/json'
|
||||
)
|
||||
self.assertEqual(r.status_code, 404)
|
||||
|
||||
# can set pref as superuser
|
||||
r = self.superuser_client.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.FLATLY}, content_type='application/json')
|
||||
r = self.superuser_client.put(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
),
|
||||
{'theme': UserPreference.FLATLY},
|
||||
content_type='application/json'
|
||||
)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_preference_delete(self):
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1))
|
||||
|
||||
# can delete own preference
|
||||
r = self.user_client_1.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}))
|
||||
r = self.user_client_1.delete(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
)
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(UserPreference.objects.count(), 0)
|
||||
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1))
|
||||
UserPreference.objects.create(user=auth.get_user(self.user_client_1
|
||||
)
|
||||
)
|
||||
|
||||
# cant delete other preference
|
||||
r = self.user_client_2.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}))
|
||||
r = self.user_client_2.delete(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
)
|
||||
)
|
||||
self.assertEqual(r.status_code, 404)
|
||||
self.assertEqual(UserPreference.objects.count(), 1)
|
||||
|
||||
# superuser can delete everything
|
||||
r = self.superuser_client.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}))
|
||||
r = self.superuser_client.delete(
|
||||
reverse(
|
||||
'api:userpreference-detail',
|
||||
args={auth.get_user(self.user_client_1).id}
|
||||
)
|
||||
)
|
||||
self.assertEqual(r.status_code, 204)
|
||||
self.assertEqual(UserPreference.objects.count(), 0)
|
||||
|
Loading…
Reference in New Issue
Block a user