diff --git a/app/api/tests/functional/test_functional_common_viewset.py b/app/api/tests/functional/test_functional_common_viewset.py index 239381c89..965578d71 100644 --- a/app/api/tests/functional/test_functional_common_viewset.py +++ b/app/api/tests/functional/test_functional_common_viewset.py @@ -241,13 +241,14 @@ def viewset_mock_request(self, django_db_blocker, viewset, # parmeterize to view action - def test_function_get_queryset_filtered_results_action_list(self, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, viewset_mock_request, organization_one, organization_two, model, api_request_permissions, ): """Test class function Ensure that when function `get_queryset` returns values that are filtered + to the users tenancies only. """ viewset = viewset_mock_request @@ -412,7 +413,7 @@ class CommonViewSetPyTest( def viewset(self): return CommonViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -449,7 +450,7 @@ class CommonModelViewSetBasePyTest( def viewset(self): return ModelViewSetBase - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -488,7 +489,7 @@ class CommonModelViewSetPyTest( def viewset(self): return CommonModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -522,7 +523,7 @@ class CommonSubModelViewSetPyTest( def viewset(self): return CommonSubModelViewSet_ReWrite - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -558,7 +559,7 @@ class CommonModelCreateViewSetPyTest( def viewset(self): return CommonModelCreateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -596,7 +597,7 @@ class CommonModelListRetrieveDeleteViewSetPyTest( def viewset(self): return CommonModelListRetrieveDeleteViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -633,7 +634,7 @@ class CommonModelRetrieveUpdateViewSetPyTest( def viewset(self): return CommonModelRetrieveUpdateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -670,7 +671,7 @@ class CommonReadOnlyModelViewSetPyTest( def viewset(self): return CommonReadOnlyModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -705,7 +706,7 @@ class CommonReadOnlyListModelViewSetPyTest( def viewset(self): return CommonReadOnlyListModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): diff --git a/app/api/tests/functional/viewset/test_functional_super_user_viewset.py b/app/api/tests/functional/viewset/test_functional_super_user_viewset.py index 1d315d7dc..cd3a12d59 100644 --- a/app/api/tests/functional/viewset/test_functional_super_user_viewset.py +++ b/app/api/tests/functional/viewset/test_functional_super_user_viewset.py @@ -15,7 +15,7 @@ class ModelRetrieveUpdateViewSetTestCases( CommonModelRetrieveUpdateViewSetInheritedCases, ): - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'No filtering conducted when super user is used. test is n/a.' ) def test_function_get_meta_urls_self_url(self): diff --git a/app/api/tests/functional/viewset/test_functional_tenancy_viewset.py b/app/api/tests/functional/viewset/test_functional_tenancy_viewset.py index b8efee72a..0d7342396 100644 --- a/app/api/tests/functional/viewset/test_functional_tenancy_viewset.py +++ b/app/api/tests/functional/viewset/test_functional_tenancy_viewset.py @@ -43,7 +43,7 @@ class TenancyPermissionsModelViewSetPyTest( def viewset(self): return ModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -85,7 +85,7 @@ class TenancyPermissionsModelCreateViewSetPyTest( def viewset(self): return ModelCreateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -127,7 +127,7 @@ class TenancyPermissionsModelListRetrieveDeleteViewSetPyTest( def viewset(self): return ModelListRetrieveDeleteViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -169,7 +169,7 @@ class TenancyPermissionsModelRetrieveUpdateViewSetPyTest( def viewset(self): return ModelRetrieveUpdateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -210,7 +210,7 @@ class TenancyPermissionsSubModelViewSetPyTest( def viewset(self): return SubModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -250,7 +250,7 @@ class TenancyPermissionsReadOnlyModelViewSetPyTest( def viewset(self): return ReadOnlyModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -290,7 +290,7 @@ class TenancyPermissionsReadOnlyListModelViewSetPyTest( def viewset(self): return ReadOnlyListModelViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): diff --git a/app/api/tests/functional/viewset/test_functional_user_viewset.py b/app/api/tests/functional/viewset/test_functional_user_viewset.py index 6dc6421a7..942493b1a 100644 --- a/app/api/tests/functional/viewset/test_functional_user_viewset.py +++ b/app/api/tests/functional/viewset/test_functional_user_viewset.py @@ -20,7 +20,7 @@ class ModelCreateViewSetTestCases( ): # parmeterize to view action - def test_function_get_queryset_filtered_results_action_list(self, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, viewset_mock_request, organization_one, model ): """Test class function @@ -62,7 +62,7 @@ class UserPermissionsModelCreateViewSetPyTest( def viewset(self): yield ModelCreateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -89,7 +89,7 @@ class ModelListRetrieveDeleteViewSetTestCases( ): # parmeterize to view action - def test_function_get_queryset_filtered_results_action_list(self, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, viewset_mock_request, organization_one, model ): """Test class function @@ -131,7 +131,7 @@ class UserPermissionsModelListRetrieveDeleteViewSetPyTest( def viewset(self): yield ModelListRetrieveDeleteViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): @@ -158,7 +158,7 @@ class ModelRetrieveUpdateViewSetTestCases( ): # parmeterize to view action - def test_function_get_queryset_filtered_results_action_list(self, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, viewset_mock_request, organization_one, model ): """Test class function @@ -200,7 +200,7 @@ class UserPermissionsModelRetrieveUpdateViewSetPyTest( def viewset(self): yield ModelRetrieveUpdateViewSet - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'Base class does not require test' ) def test_function_get_meta_urls_self_url(self): diff --git a/app/core/tests/functional/model_tickets/test_functional_model_tickets_viewset.py b/app/core/tests/functional/model_tickets/test_functional_model_tickets_viewset.py index 444d7120b..fa678f2ff 100644 --- a/app/core/tests/functional/model_tickets/test_functional_model_tickets_viewset.py +++ b/app/core/tests/functional/model_tickets/test_functional_model_tickets_viewset.py @@ -257,7 +257,7 @@ class ModelTicketViewsetPyTest( ): - def test_function_get_queryset_filtered_results_action_list(self): + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self): pytest.xfail( reason = 'test n/a as model does not have `model` field' ) def test_function_get_meta_urls_self_url(self): diff --git a/app/core/tests/functional/ticket_comment_base/test_functional_ticket_comment_base_viewset.py b/app/core/tests/functional/ticket_comment_base/test_functional_ticket_comment_base_viewset.py index a4f9d6208..4b52d5845 100644 --- a/app/core/tests/functional/ticket_comment_base/test_functional_ticket_comment_base_viewset.py +++ b/app/core/tests/functional/ticket_comment_base/test_functional_ticket_comment_base_viewset.py @@ -23,7 +23,7 @@ def viewset(self): - def test_function_get_queryset_filtered_results_action_list(self, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, viewset_mock_request, organization_one, organization_two, model ): diff --git a/app/core/tests/functional/ticket_comment_solution/test_functional_ticket_comment_solution_viewset.py b/app/core/tests/functional/ticket_comment_solution/test_functional_ticket_comment_solution_viewset.py index 3cb95e8f5..cab688283 100644 --- a/app/core/tests/functional/ticket_comment_solution/test_functional_ticket_comment_solution_viewset.py +++ b/app/core/tests/functional/ticket_comment_solution/test_functional_ticket_comment_solution_viewset.py @@ -18,7 +18,7 @@ class ViewsetTestCases( ): - def test_function_get_queryset_filtered_results_action_list(self, mocker, + def test_function_get_queryset_filtered_results_action_list_user_tenancies_only(self, mocker, viewset_mock_request, organization_one, organization_two, model ): diff --git a/app/core/tests/functional/ticket_dependency/test_functional_ticket_dependency_viewset.py b/app/core/tests/functional/ticket_dependency/test_functional_ticket_dependency_viewset.py index 6db36f8cd..a43914ff8 100644 --- a/app/core/tests/functional/ticket_dependency/test_functional_ticket_dependency_viewset.py +++ b/app/core/tests/functional/ticket_dependency/test_functional_ticket_dependency_viewset.py @@ -1,6 +1,6 @@ import pytest - +from rest_framework.test import APIClient from api.tests.functional.viewset.test_functional_tenancy_viewset import ( ModelViewSetInheritedCases @@ -22,25 +22,103 @@ class ViewsetTestCases( def viewset(self): return ViewSet + @pytest.fixture( scope = 'function' ) + def viewset_mock_request(self, django_db_blocker, viewset, + clean_model_from_db, api_request_permissions, + organization_one, organization_two, + model_instance, model_kwargs, model_ticketcommentbase, + settings + ): + + with django_db_blocker.unblock(): + + user = api_request_permissions['user']['view'] + + user2 = api_request_permissions['user']['change'] + + self.user = user + + kwargs = model_kwargs() + kwargs['user'] = user.employee + kwargs['ticket'].organization = organization_one + kwargs['ticket'].save() + + user_tenancy_item = model_instance( kwargs_create = kwargs ) + + kwargs = model_kwargs() + kwargs['ticket'].organization = organization_two + kwargs['ticket'].save() + kwargs['user'] = user2.employee + + other_tenancy_item = model_instance( kwargs_create = kwargs ) + + + settings.SITE_URL = 'http://testserver' + + client = APIClient() + client.force_authenticate(user=user) + + response = client.get(user_tenancy_item.get_url(many = True)) + + view_set = response.renderer_context['view'] + + + yield view_set + + del view_set.request + del view_set + del self.user + + + + def test_function_get_queryset_filtered_results_action_list_ticket(self, + viewset_mock_request, model, api_request_permissions, + ): + """Test class function + + Ensure that when function `get_queryset` returns values that are filtered + to the ticket in question. + """ + + viewset = viewset_mock_request + + viewset.action = 'list' + + viewset.allowed_methods = [ 'GET' ] + + queryset = viewset.get_queryset() + + assert len( + model.objects.all() + ) >= 2, 'multiple objects must exist for test to work' + + assert len( queryset ) > 0, 'Empty queryset returned. Test not possible' + + test_obj = model.objects.filter( + organization = api_request_permissions['tenancy']['user'] + ) - def test_function_get_queryset_filtered_results_action_list(self): - pytest.xfail( reason = 'model is not multi-tenancy capable, test is N/A.' ) + assert len( + test_obj + ) > 0, 'objects in user org required for test to work.' - def test_function_get_meta_urls_self_url(self): - pytest.xfail( reason = 'Base class does not require test' ) + assert len( + model.objects.filter( + organization = api_request_permissions['tenancy']['different'] + ) + ) > 0, 'objects in different org required for test to work.' - def test_function_get_meta_urls_no_sub_models_key(self): - pytest.xfail( reason = 'Base class does not require test' ) + only_user_results_returned = True + for result in queryset: - def test_function_get_meta_urls_sub_models_keys(self): - pytest.xfail( reason = 'Base class does not require test' ) + if result.ticket.id != test_obj[0].ticket.id: + only_user_results_returned = False - def test_function_get_meta_urls_sub_models_values(self,): - pytest.xfail( reason = 'Base class does not require test' ) + assert only_user_results_returned