diff --git a/cookbook/tests/edits/test_edits_recipe.py b/cookbook/tests/edits/test_edits_recipe.py index 724023e4..fb0df726 100644 --- a/cookbook/tests/edits/test_edits_recipe.py +++ b/cookbook/tests/edits/test_edits_recipe.py @@ -11,66 +11,66 @@ class TestEditsRecipe(TestViews): internal_recipe = Recipe.objects.create( name='Test', internal=True, - created_by=auth.get_user(self.client) + created_by=auth.get_user(self.user_client_1) ) external_recipe = Recipe.objects.create( name='Test', internal=False, - created_by=auth.get_user(self.client) + created_by=auth.get_user(self.user_client_1) ) url = reverse('edit_recipe', args=[internal_recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 302) - r = self.client.get(r.url) + r = self.user_client_1.get(r.url) self.assertTemplateUsed(r, 'forms/edit_internal_recipe.html') url = reverse('edit_recipe', args=[external_recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 302) - r = self.client.get(r.url) + r = self.user_client_1.get(r.url) self.assertTemplateUsed(r, 'generic/edit_template.html') def test_convert_recipe(self): url = reverse('edit_convert_recipe', args=[42]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 404) external_recipe = Recipe.objects.create( name='Test', internal=False, - created_by=auth.get_user(self.client) + created_by=auth.get_user(self.user_client_1) ) url = reverse('edit_convert_recipe', args=[external_recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 302) recipe = Recipe.objects.get(pk=external_recipe.pk) self.assertTrue(recipe.internal) url = reverse('edit_convert_recipe', args=[recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 302) def test_internal_recipe_update(self): recipe = Recipe.objects.create( name='Test', - created_by=auth.get_user(self.client) + created_by=auth.get_user(self.user_client_1) ) url = reverse('edit_internal_recipe', args=[recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 200) r = self.anonymous_client.get(url) self.assertEqual(r.status_code, 302) - r = self.client.post(url, {'name': 'Changed', 'working_time': 15, 'waiting_time': 15, 'ingredients': '[]'}) + r = self.user_client_1.post(url, {'name': 'Changed', 'working_time': 15, 'waiting_time': 15, 'ingredients': '[]'}) self.assertEqual(r.status_code, 200) recipe = Recipe.objects.get(pk=recipe.pk) @@ -79,30 +79,30 @@ class TestEditsRecipe(TestViews): Ingredient.objects.create(name='Egg') Unit.objects.create(name='g') - r = self.client.post(url, + r = self.user_client_1.post(url, {'name': 'Changed', 'working_time': 15, 'waiting_time': 15, 'ingredients': '[{"ingredient__name":"Tomato","unit__name":"g","amount":100,"delete":false},{"ingredient__name":"Egg","unit__name":"Piece","amount":"2,5","delete":false}]'}) self.assertEqual(r.status_code, 200) self.assertEqual(2, RecipeIngredient.objects.filter(recipe=recipe).count()) - r = self.client.post(url, + r = self.user_client_1.post(url, {'name': "Test", 'working_time': "Test", 'waiting_time': 15, 'ingredients': '[{"ingredient__name":"Tomato","unit__name":"g","amount":100,"delete":false},{"ingredient__name":"Egg","unit__name":"Piece","amount":"2,5","delete":false}]'}) self.assertEqual(r.status_code, 403) with open('cookbook/tests/resources/image.jpg', 'rb') as file: - r = self.client.post(url, {'name': "Changed", 'working_time': 15, 'waiting_time': 15, 'image': file}) + r = self.user_client_1.post(url, {'name': "Changed", 'working_time': 15, 'waiting_time': 15, 'image': file}) self.assertEqual(r.status_code, 200) with open('cookbook/tests/resources/image.png', 'rb') as file: - r = self.client.post(url, {'name': "Changed", 'working_time': 15, 'waiting_time': 15, 'image': file}) + r = self.user_client_1.post(url, {'name': "Changed", 'working_time': 15, 'waiting_time': 15, 'image': file}) self.assertEqual(r.status_code, 200) def test_external_recipe_update(self): storage = Storage.objects.create( name='TestStorage', method=Storage.DROPBOX, - created_by=auth.get_user(self.client), + created_by=auth.get_user(self.user_client_1), token='test', username='test', password='test', @@ -110,19 +110,19 @@ class TestEditsRecipe(TestViews): recipe = Recipe.objects.create( name='Test', - created_by=auth.get_user(self.client), + created_by=auth.get_user(self.user_client_1), storage=storage, ) url = reverse('edit_external_recipe', args=[recipe.pk]) - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 200) r = self.anonymous_client.get(url) self.assertEqual(r.status_code, 302) - r = self.client.post(url, {'name': 'Test', 'working_time': 15, 'waiting_time': 15, }) + r = self.user_client_1.post(url, {'name': 'Test', 'working_time': 15, 'waiting_time': 15, }) recipe.refresh_from_db() self.assertEqual(recipe.working_time, 15) self.assertEqual(recipe.waiting_time, 15) diff --git a/cookbook/tests/edits/test_edits_storage.py b/cookbook/tests/edits/test_edits_storage.py index 1893d77f..d1fa8fd9 100644 --- a/cookbook/tests/edits/test_edits_storage.py +++ b/cookbook/tests/edits/test_edits_storage.py @@ -7,33 +7,40 @@ from cookbook.tests.views.test_views import TestViews class TestEditsRecipe(TestViews): - def test_edit_storage(self): - storage = Storage.objects.create( + def setUp(self): + super(TestEditsRecipe, self).setUp() + + self.storage = Storage.objects.create( name='TestStorage', method=Storage.DROPBOX, - created_by=auth.get_user(self.client), + created_by=auth.get_user(self.admin_client_1), token='test', username='test', password='test', ) + self.url = reverse('edit_storage', args=[self.storage.pk]) - url = reverse('edit_storage', args=[storage.pk]) - r = self.anonymous_client.get(url) - self.assertEqual(r.status_code, 302) + def test_edit_storage(self): + r = self.admin_client_1.post(self.url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': Storage.DROPBOX}) + self.storage.refresh_from_db() + self.assertEqual(self.storage.password, '1234_pw') + self.assertEqual(self.storage.token, '1234_token') - r = self.another_client.get(url) - self.assertEqual(r.status_code, 302) - - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - - r = self.superuser_client.get(url) - self.assertEqual(r.status_code, 200) - - r = self.client.post(url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': Storage.DROPBOX}) - storage.refresh_from_db() - self.assertEqual(storage.password, '1234_pw') - self.assertEqual(storage.token, '1234_token') - - r = self.client.post(url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': 'not_a_valid_method'}) + r = self.admin_client_1.post(self.url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': 'not_a_valid_method'}) self.assertFormError(r, 'form', 'method', ['Select a valid choice. not_a_valid_method is not one of the available choices.']) + + def test_edit_storage_permissions(self): + r = self.anonymous_client.get(self.url) + self.assertEqual(r.status_code, 302) + + r = self.guest_client_1.get(self.url) + self.assertEqual(r.status_code, 302) + + r = self.user_client_1.get(self.url) + self.assertEqual(r.status_code, 302) + + r = self.admin_client_1.get(self.url) + self.assertEqual(r.status_code, 200) + + r = self.superuser_client.get(self.url) + self.assertEqual(r.status_code, 200) diff --git a/cookbook/tests/test_setup.py b/cookbook/tests/test_setup.py index f09ca911..80e903f3 100644 --- a/cookbook/tests/test_setup.py +++ b/cookbook/tests/test_setup.py @@ -4,24 +4,35 @@ from django.test import TestCase, Client class TestBase(TestCase): + user_client_1 = None + user_client_2 = None + admin_client_1 = None + admin_client_2 = None + guest_client_1 = None + guest_client_2 = None + superuser_client = None + + def create_login_user(self, name, group): + client = Client() + setattr(self, name, client) + client.force_login(User.objects.get_or_create(username=name)[0]) + user = auth.get_user(getattr(self, name)) + user.groups.add(Group.objects.get(name=group)) + self.assertTrue(user.is_authenticated) + return user def setUp(self): + self.create_login_user('admin_client_1', 'admin') + self.create_login_user('admin_client_2', 'admin') + + self.create_login_user('user_client_1', 'user') + self.create_login_user('user_client_2', 'user') + + self.create_login_user('guest_client_1', 'guest') + self.create_login_user('guest_client_2', 'guest') + self.anonymous_client = Client() - self.client = Client() - self.client.force_login(User.objects.get_or_create(username='client')[0]) - user = auth.get_user(self.client) - user.groups.add(Group.objects.get(name='admin')) - self.assertTrue(user.is_authenticated) - - self.another_client = Client() - self.another_client.force_login(User.objects.get_or_create(username='another_client')[0]) - user = auth.get_user(self.another_client) - user.groups.add(Group.objects.get(name='admin')) - self.assertTrue(user.is_authenticated) - - self.superuser_client = Client() - self.superuser_client.force_login(User.objects.get_or_create(username='superuser_client', is_superuser=True)[0]) - user = auth.get_user(self.superuser_client) - user.groups.add(Group.objects.get(name='admin')) - self.assertTrue(user.is_authenticated) + user = self.create_login_user('superuser_client', 'admin') + user.is_superuser = True + user.save() diff --git a/cookbook/tests/views/test_views_general.py b/cookbook/tests/views/test_views_general.py index 79e3cdc8..c936ae75 100644 --- a/cookbook/tests/views/test_views_general.py +++ b/cookbook/tests/views/test_views_general.py @@ -6,7 +6,7 @@ from cookbook.tests.views.test_views import TestViews class TestViewsGeneral(TestViews): def test_index(self): - r = self.client.get(reverse('index')) + r = self.user_client_1.get(reverse('index')) self.assertEqual(r.status_code, 302) r = self.anonymous_client.get(reverse('index')) @@ -14,7 +14,7 @@ class TestViewsGeneral(TestViews): def test_books(self): url = reverse('view_books') - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 200) r = self.anonymous_client.get(url) @@ -22,7 +22,7 @@ class TestViewsGeneral(TestViews): def test_plan(self): url = reverse('view_plan') - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 200) r = self.anonymous_client.get(url) @@ -30,7 +30,7 @@ class TestViewsGeneral(TestViews): def test_shopping(self): url = reverse('view_shopping') - r = self.client.get(url) + r = self.user_client_1.get(url) self.assertEqual(r.status_code, 200) r = self.anonymous_client.get(url)