From 58c6077925f2213d09afc1fd63f4e52feef07428 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 20 Feb 2021 22:56:29 +0100 Subject: [PATCH] basic test stuff --- cookbook/tests/api/test_api_cook_log.py | 0 cookbook/tests/api/test_api_ingredient.py | 0 cookbook/tests/api/test_api_meal_plan.py | 0 cookbook/tests/api/test_api_meal_type.py | 0 cookbook/tests/api/test_api_recipe_book.py | 0 .../tests/api/test_api_recipe_book_entry.py | 0 ..._shopping.py => test_api_shopping_list.py} | 0 .../tests/api/test_api_shopping_list_entry.py | 0 .../api/test_api_shopping_list_recipe.py | 0 cookbook/tests/api/test_api_step.py | 0 cookbook/tests/api/test_api_supermarket.py | 0 ...st_api_syn_log.py => test_api_sync_log.py} | 0 cookbook/tests/api/test_api_view_log.py | 0 cookbook/tests/test_setup.py | 53 +++++++++++++------ cookbook/views/api.py | 4 ++ 15 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 cookbook/tests/api/test_api_cook_log.py create mode 100644 cookbook/tests/api/test_api_ingredient.py create mode 100644 cookbook/tests/api/test_api_meal_plan.py create mode 100644 cookbook/tests/api/test_api_meal_type.py create mode 100644 cookbook/tests/api/test_api_recipe_book.py create mode 100644 cookbook/tests/api/test_api_recipe_book_entry.py rename cookbook/tests/api/{test_api_shopping.py => test_api_shopping_list.py} (100%) create mode 100644 cookbook/tests/api/test_api_shopping_list_entry.py create mode 100644 cookbook/tests/api/test_api_shopping_list_recipe.py create mode 100644 cookbook/tests/api/test_api_step.py create mode 100644 cookbook/tests/api/test_api_supermarket.py rename cookbook/tests/api/{test_api_syn_log.py => test_api_sync_log.py} (100%) create mode 100644 cookbook/tests/api/test_api_view_log.py diff --git a/cookbook/tests/api/test_api_cook_log.py b/cookbook/tests/api/test_api_cook_log.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_ingredient.py b/cookbook/tests/api/test_api_ingredient.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_meal_plan.py b/cookbook/tests/api/test_api_meal_plan.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_meal_type.py b/cookbook/tests/api/test_api_meal_type.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_recipe_book.py b/cookbook/tests/api/test_api_recipe_book.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_recipe_book_entry.py b/cookbook/tests/api/test_api_recipe_book_entry.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_shopping.py b/cookbook/tests/api/test_api_shopping_list.py similarity index 100% rename from cookbook/tests/api/test_api_shopping.py rename to cookbook/tests/api/test_api_shopping_list.py diff --git a/cookbook/tests/api/test_api_shopping_list_entry.py b/cookbook/tests/api/test_api_shopping_list_entry.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_shopping_list_recipe.py b/cookbook/tests/api/test_api_shopping_list_recipe.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_step.py b/cookbook/tests/api/test_api_step.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_supermarket.py b/cookbook/tests/api/test_api_supermarket.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/api/test_api_syn_log.py b/cookbook/tests/api/test_api_sync_log.py similarity index 100% rename from cookbook/tests/api/test_api_syn_log.py rename to cookbook/tests/api/test_api_sync_log.py diff --git a/cookbook/tests/api/test_api_view_log.py b/cookbook/tests/api/test_api_view_log.py new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/tests/test_setup.py b/cookbook/tests/test_setup.py index 7f9ba59c5..a540b66a3 100644 --- a/cookbook/tests/test_setup.py +++ b/cookbook/tests/test_setup.py @@ -2,45 +2,64 @@ from django.contrib import auth from django.contrib.auth.models import Group, User from django.test import Client, TestCase +from cookbook.models import Space + class TestBase(TestCase): + superuser_client = None + anonymous_client = None + + guest_client_1 = None + guest_client_2 = None 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 - anonymous_client = None - def create_login_user(self, name, group): + s2_guest_client_1 = None + s2_user_client_1 = None + s2_admin_client_1 = None + s2_superuser_client = None + + def create_login_user(self, name, group, space, superuser=False): 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) + if superuser: + user.is_superuser = True + + user.userpreference.space = space + user.save() return user def setUp(self): - self.create_login_user('admin_client_1', 'admin') - self.create_login_user('admin_client_2', 'admin') + # users for space 1 + space_1 = Space.objects.create(name='space 1') - self.create_login_user('user_client_1', 'user') - self.create_login_user('user_client_2', 'user') + self.create_login_user('admin_client_1', 'admin', space_1) + self.create_login_user('admin_client_2', 'admin', space_1) - self.create_login_user('guest_client_1', 'guest') - self.create_login_user('guest_client_2', 'guest') + self.create_login_user('user_client_1', 'user', space_1) + self.create_login_user('user_client_2', 'user', space_1) + + self.create_login_user('guest_client_1', 'guest', space_1) + self.create_login_user('guest_client_2', 'guest', space_1) self.anonymous_client = Client() - user = self.create_login_user('superuser_client', 'admin') - user.is_superuser = True - user.save() + self.create_login_user('superuser_client', 'admin', space_1, superuser=True) - def batch_requests( - self, clients, url, method='get', payload={}, content_type='' - ): + # users for space 2 + space_2 = Space.objects.create(name='space 2') + self.create_login_user('s2_admin_client_1', 'admin', space_2) + self.create_login_user('s2_user_client_1', 'user', space_2) + self.create_login_user('s2_guest_client_1', 'guest', space_2) + self.create_login_user('s2_superuser_client', 'admin', space_2, superuser=True) + + def batch_requests(self, clients, url, method='get', payload={}, content_type=''): for c in clients: if method == 'get': r = c[0].get(url) diff --git a/cookbook/views/api.py b/cookbook/views/api.py index eb111b50f..a4add1ccd 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -312,6 +312,10 @@ class RecipeViewSet(viewsets.ModelViewSet, StandardFilterMixin): ) def image(self, request, pk): obj = self.get_object() + + if obj.get_space() != request.space: + raise PermissionDenied(detail='You do not have the required permission to perform this action', code=403) + serializer = self.serializer_class( obj, data=request.data, partial=True )