From f08d3357d042bbc3b9f6ca7678d0912b08c7cf0f Mon Sep 17 00:00:00 2001 From: Jon Date: Sat, 18 Jan 2025 19:22:08 +0930 Subject: [PATCH] test: update to cater for tenancy object in request ref: #473 #474 --- .../functional/team/test_team_serializer.py | 57 +++++-- app/app/tests/abstract/mock_view.py | 49 ++++++ .../test_knowledge_base_serializer.py | 35 ++++- ...test_knowledge_base_category_serializer.py | 59 ++++++-- .../test_config_groups_serializer.py | 21 ++- app/core/serializers/ticket_comment.py | 2 +- .../tests/abstract/test_ticket_serializer.py | 139 +++++++++++------- .../test_related_ticket_serializer.py | 39 +++++ .../test_notes/test_notes_serializer.py | 13 +- .../test_ticket_category_serializer.py | 25 +++- .../test_ticket_comment_serializer.py | 79 ++++++---- ...test_ticket_comment_category_serializer.py | 25 +++- .../device/test_device_serializer.py | 65 +++++++- .../test_device_model_serializer.py | 13 +- ...test_device_operating_system_serializer.py | 45 +++++- .../test_device_software_serializer.py | 45 +++++- .../test_device_type_serializer.py | 13 +- .../test_software_installs_serializer.py | 45 +++++- .../test_operating_system_serializer.py | 13 +- ...est_operating_system_version_serializer.py | 13 +- .../software/test_software_serializer.py | 13 +- .../test_software_category_serializer.py | 13 +- .../test_software_version_serializer.py | 13 +- .../cluster/test_cluster_serializer.py | 17 ++- .../functional/port/test_port_serializer.py | 27 +++- .../service/test_service_serializer.py | 79 ++++++++-- .../test_project_state_serializer.py | 14 ++ .../test_project_type_serializer.py | 14 ++ .../test_external_links_serializer.py | 19 +++ .../centurion_erp/development/index.md | 3 + 30 files changed, 854 insertions(+), 153 deletions(-) create mode 100644 app/app/tests/abstract/mock_view.py diff --git a/app/access/tests/functional/team/test_team_serializer.py b/app/access/tests/functional/team/test_team_serializer.py index 3250fbb5..8700af84 100644 --- a/app/access/tests/functional/team/test_team_serializer.py +++ b/app/access/tests/functional/team/test_team_serializer.py @@ -6,6 +6,7 @@ from django.test import TestCase from rest_framework.exceptions import ValidationError +from access.middleware.auth import Tenancy from access.models import Organization, Permission from access.serializers.teams import ( @@ -13,6 +14,8 @@ from access.serializers.teams import ( TeamModelSerializer ) +from settings.models.app_settings import AppSettings + class MockView: @@ -21,12 +24,36 @@ class MockView: kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + class MockRequest: + tenancy: Tenancy = None + user = None + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) + class TeamValidationAPI( @@ -82,21 +109,21 @@ class TeamValidationAPI( """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.action = 'create' mock_view.kwargs: dict = { 'organization_id': self.organization.id } - mock_request = MockRequest() - mock_request.user = self.user + # mock_request = MockRequest() + # mock_request.user = self.user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = TeamModelSerializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.valid_data @@ -113,16 +140,16 @@ class TeamValidationAPI( """ - mock_view = MockView() + mock_view = MockView( user = self.user) mock_view.action = 'create' mock_view.kwargs: dict = { 'organization_id': self.organization.id } - mock_request = MockRequest() - mock_request.user = self.user + # mock_request = MockRequest() + # mock_request.user = self.user - mock_view.request = mock_request + # mock_view.request = mock_request data = self.valid_data.copy() @@ -133,7 +160,7 @@ class TeamValidationAPI( serializer = TeamModelSerializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data @@ -153,16 +180,16 @@ class TeamValidationAPI( """ - mock_view = MockView() + mock_view = MockView( user = self.user) mock_view.action = 'create' mock_view.kwargs: dict = { 'organization_id': self.organization.id } - mock_request = MockRequest() - mock_request.user = self.user + # mock_request = MockRequest() + # mock_request.user = self.user - mock_view.request = mock_request + # mock_view.request = mock_request data = self.valid_data.copy() @@ -171,7 +198,7 @@ class TeamValidationAPI( serializer = TeamModelSerializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data diff --git a/app/app/tests/abstract/mock_view.py b/app/app/tests/abstract/mock_view.py new file mode 100644 index 00000000..927b87a1 --- /dev/null +++ b/app/app/tests/abstract/mock_view.py @@ -0,0 +1,49 @@ + +from django.contrib.auth.models import User + +from access.middleware.auth import Tenancy +from access.models import Organization + +from access.models import Organization + +from settings.models.app_settings import AppSettings + + + +class MockView: + + action: str = None + + app_settings: AppSettings = None + + kwargs: dict = {} + + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + + + +class MockRequest: + + tenancy: Tenancy = None + + user = None + + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) diff --git a/app/assistance/tests/functional/knowledge_base/test_knowledge_base_serializer.py b/app/assistance/tests/functional/knowledge_base/test_knowledge_base_serializer.py index 2de29d39..75b1399a 100644 --- a/app/assistance/tests/functional/knowledge_base/test_knowledge_base_serializer.py +++ b/app/assistance/tests/functional/knowledge_base/test_knowledge_base_serializer.py @@ -8,6 +8,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization, Team +from app.tests.abstract.mock_view import MockView + from assistance.models.knowledge_base import KnowledgeBase from assistance.serializers.knowledge_base import KnowledgeBaseModelSerializer @@ -34,6 +36,10 @@ class KnowledgeBaseValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.add_team = Team.objects.create( @@ -77,7 +83,12 @@ class KnowledgeBaseValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseModelSerializer(data={ + serializer = KnowledgeBaseModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "content": "random note", "target_user": self.add_user.id, @@ -101,7 +112,12 @@ class KnowledgeBaseValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseModelSerializer(data={ + serializer = KnowledgeBaseModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "title": "teamone", "content": "random note", @@ -127,7 +143,12 @@ class KnowledgeBaseValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseModelSerializer(data={ + serializer = KnowledgeBaseModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "title": 'teamone', "content": 'random note', @@ -151,6 +172,10 @@ class KnowledgeBaseValidationAPI( serializer = KnowledgeBaseModelSerializer( self.item_has_target_user, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "target_team": [ self.add_team.id ] }, @@ -173,6 +198,10 @@ class KnowledgeBaseValidationAPI( serializer = KnowledgeBaseModelSerializer( self.item_has_target_team, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "target_user": self.add_user.id }, diff --git a/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_serializer.py b/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_serializer.py index 34ec5049..c94a76ad 100644 --- a/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_serializer.py +++ b/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_serializer.py @@ -8,6 +8,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization, Team +from app.tests.abstract.mock_view import MockView, User + from assistance.serializers.knowledge_base_category import KnowledgeBaseCategory, KnowledgeBaseCategoryModelSerializer @@ -43,6 +45,8 @@ class KnowledgeBaseCategoryValidationAPI( self.add_user = User.objects.create_user(username="test_user_add", password="password") + self.mock_view = MockView( user = self.add_user ) + self.item_has_target_user = self.model.objects.create( organization=organization, name = 'random title', @@ -66,12 +70,17 @@ class KnowledgeBaseCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseCategoryModelSerializer(data={ - "organization": self.organization.id, - "target_user": self.add_user.id, - "target_team": [ - self.add_team.id - ] + serializer = KnowledgeBaseCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ + "organization": self.organization.id, + "target_user": self.add_user.id, + "target_team": [ + self.add_team.id + ] }) serializer.is_valid(raise_exception = True) @@ -90,6 +99,10 @@ class KnowledgeBaseCategoryValidationAPI( serializer = KnowledgeBaseCategoryModelSerializer( self.item_has_target_user, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "parent_category": self.item_has_target_user.id }, @@ -110,13 +123,18 @@ class KnowledgeBaseCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseCategoryModelSerializer(data={ - "organization": self.organization.id, - "name": "teamone", - "target_user": self.add_user.id, - "target_team": [ - self.add_team.id - ] + serializer = KnowledgeBaseCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ + "organization": self.organization.id, + "name": "teamone", + "target_user": self.add_user.id, + "target_team": [ + self.add_team.id + ] }) serializer.is_valid(raise_exception = True) @@ -133,7 +151,12 @@ class KnowledgeBaseCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = KnowledgeBaseCategoryModelSerializer(data={ + serializer = KnowledgeBaseCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "name": 'teamone' }) @@ -155,6 +178,10 @@ class KnowledgeBaseCategoryValidationAPI( serializer = KnowledgeBaseCategoryModelSerializer( self.item_has_target_user, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "target_team": [ self.add_team.id ] }, @@ -177,6 +204,10 @@ class KnowledgeBaseCategoryValidationAPI( serializer = KnowledgeBaseCategoryModelSerializer( self.item_has_target_team, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "target_user": self.add_user.id }, diff --git a/app/config_management/tests/functional/config_groups/test_config_groups_serializer.py b/app/config_management/tests/functional/config_groups/test_config_groups_serializer.py index 3950cfbe..03cb8271 100644 --- a/app/config_management/tests/functional/config_groups/test_config_groups_serializer.py +++ b/app/config_management/tests/functional/config_groups/test_config_groups_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from config_management.serializers.config_group import ConfigGroups, ConfigGroupModelSerializer @@ -26,6 +28,10 @@ class ConfigGroupsValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item_no_parent = self.model.objects.create( @@ -50,7 +56,12 @@ class ConfigGroupsValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ConfigGroupModelSerializer(data={ + serializer = ConfigGroupModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) @@ -71,6 +82,10 @@ class ConfigGroupsValidationAPI( serializer = ConfigGroupModelSerializer( self.item_has_parent, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "parent": self.item_has_parent.id }, @@ -96,6 +111,10 @@ class ConfigGroupsValidationAPI( serializer = ConfigGroupModelSerializer( self.item_no_parent, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "config": invalid_config }, diff --git a/app/core/serializers/ticket_comment.py b/app/core/serializers/ticket_comment.py index 3e335ff5..3546ad96 100644 --- a/app/core/serializers/ticket_comment.py +++ b/app/core/serializers/ticket_comment.py @@ -242,7 +242,7 @@ class TicketCommentModelSerializer( if self._context['view'].action == 'create': - self.validated_data['user'] = self.request._user + self.validated_data['user'] = self.request.user if 'ticket_id' in self._kwargs['context']['view'].kwargs: diff --git a/app/core/tests/abstract/test_ticket_serializer.py b/app/core/tests/abstract/test_ticket_serializer.py index 98af4989..f162d965 100644 --- a/app/core/tests/abstract/test_ticket_serializer.py +++ b/app/core/tests/abstract/test_ticket_serializer.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.test import TestCase +from access.middleware.auth import Tenancy from access.models import Organization, Team, TeamUsers, Permission from rest_framework.exceptions import ValidationError @@ -17,6 +18,8 @@ from core.models.ticket.ticket_category import TicketCategory from project_management.models.projects import Project from project_management.models.project_milestone import ProjectMilestone +from settings.models.app_settings import AppSettings + class MockView: @@ -27,14 +30,40 @@ class MockView: action: str = None + app_settings: AppSettings = None + kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + class MockRequest: + tenancy: Tenancy = None + user = None + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) + class TicketValidationAPI( @@ -254,7 +283,7 @@ class TicketValidationAPI( # - mock_view = MockView() + mock_view = MockView( user = self.add_user ) mock_view.action = 'create' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -265,15 +294,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.add_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.all_fields_data @@ -313,7 +342,7 @@ class TicketValidationAPI( del self.all_fields_data_change['organization'] # ToDo: Test seperatly - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'partial_update' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -324,15 +353,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.change_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.all_fields_data_change, @@ -359,7 +388,7 @@ class TicketValidationAPI( }) - mock_view = MockView() + mock_view = MockView( user = self.add_user ) mock_view.action = 'create' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -370,15 +399,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.triage_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.all_fields_data_triage, @@ -417,7 +446,7 @@ class TicketValidationAPI( del self.all_fields_data_triage_change['organization'] # ToDo: Test seperatly - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'partial_update' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -428,15 +457,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.triage_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.all_fields_data_triage_change, @@ -465,7 +494,7 @@ class TicketValidationAPI( }) - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'create' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -476,15 +505,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.import_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.all_fields_data_import, @@ -521,7 +550,7 @@ class TicketValidationAPI( Ensure that valid data has no validation errors. """ - mock_view = MockView() + mock_view = MockView( user = self.add_user ) mock_view.action = 'create' mock_view._ticket_type_id = self.ticket_type_enum mock_view._ticket_type = self.ticket_type @@ -532,15 +561,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.add_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = self.add_data @@ -557,7 +586,7 @@ class TicketValidationAPI( Ensure that valid data has no validation errors. """ - mock_view = MockView() + mock_view = MockView( user = self.change_user) mock_view.action = 'partial_update' mock_view._ticket_type = self.ticket_type @@ -567,16 +596,16 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.change_user + # mock_request = MockRequest() + # mock_request.user = self.change_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.change_serializer( instance = self.ticket, context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = { @@ -601,7 +630,7 @@ class TicketValidationAPI( 'opened_by': self.add_user.id, }) - mock_view = MockView() + mock_view = MockView( user = self.import_user) mock_view.action = 'create' mock_view._ticket_type = self.ticket_type @@ -611,15 +640,15 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.import_user + # mock_request = MockRequest() + # mock_request.user = self.import_user - mock_view.request = mock_request + # mock_view.request = mock_request serializer = self.import_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data @@ -640,7 +669,7 @@ class TicketValidationAPI( del data['title'] - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'create' mock_view._ticket_type = self.ticket_type @@ -650,17 +679,17 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request with pytest.raises(ValidationError) as err: serializer = self.add_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data @@ -684,7 +713,7 @@ class TicketValidationAPI( del data['description'] - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'create' mock_view._ticket_type = self.ticket_type @@ -694,17 +723,17 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request with pytest.raises(ValidationError) as err: serializer = self.add_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data @@ -728,7 +757,7 @@ class TicketValidationAPI( del data['organization'] - mock_view = MockView() + mock_view = MockView( user = self.add_user) mock_view.action = 'create' mock_view._ticket_type = self.ticket_type @@ -738,17 +767,17 @@ class TicketValidationAPI( 'project_id': self.project.id } - mock_request = MockRequest() - mock_request.user = self.add_user + # mock_request = MockRequest() + # mock_request.user = self.add_user - mock_view.request = mock_request + # mock_view.request = mock_request with pytest.raises(ValidationError) as err: serializer = self.add_serializer( context = { - 'request': mock_request, + 'request': mock_view.request, 'view': mock_view, }, data = data diff --git a/app/core/tests/functional/related_ticket/test_related_ticket_serializer.py b/app/core/tests/functional/related_ticket/test_related_ticket_serializer.py index 660ad457..db6e1640 100644 --- a/app/core/tests/functional/related_ticket/test_related_ticket_serializer.py +++ b/app/core/tests/functional/related_ticket/test_related_ticket_serializer.py @@ -7,6 +7,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView + from core.serializers.ticket_related import ( Ticket, RelatedTickets, @@ -35,6 +37,7 @@ class RelatedTicketsValidationAPI( user = User.objects.create_user(username="test_user_view", password="password") + self.user = user self.ticket_one = Ticket.objects.create( organization = self.organization, @@ -79,7 +82,13 @@ class RelatedTicketsValidationAPI( Ensure that a valid item is created and no validation error occurs """ + mock_view = MockView( user = self.user ) + serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_one.id, @@ -101,7 +110,13 @@ class RelatedTicketsValidationAPI( with pytest.raises(ValidationError) as err: + mock_view = MockView( user = self.user ) + serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_one.id, @@ -123,9 +138,15 @@ class RelatedTicketsValidationAPI( it raises a validation error """ + mock_view = MockView( user = self.user ) + with pytest.raises(ValidationError) as err: serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_two.id, @@ -147,9 +168,15 @@ class RelatedTicketsValidationAPI( error is thrown """ + mock_view = MockView( user = self.user ) + with pytest.raises(ValidationError) as err: serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_two.id, @@ -171,9 +198,15 @@ class RelatedTicketsValidationAPI( error is thrown """ + mock_view = MockView( user = self.user ) + with pytest.raises(ValidationError) as err: serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_two.id, @@ -195,9 +228,15 @@ class RelatedTicketsValidationAPI( error is thrown """ + mock_view = MockView( user = self.user ) + with pytest.raises(ValidationError) as err: serializer = RelatedTicketModelSerializer( + context = { + 'request': mock_view.request, + 'view': mock_view, + }, data={ 'organization': self.organization.id, 'from_ticket_id': self.ticket_two.id, diff --git a/app/core/tests/functional/test_notes/test_notes_serializer.py b/app/core/tests/functional/test_notes/test_notes_serializer.py index 4b47ac67..c31bfffc 100644 --- a/app/core/tests/functional/test_notes/test_notes_serializer.py +++ b/app/core/tests/functional/test_notes/test_notes_serializer.py @@ -8,6 +8,8 @@ from access.models import Organization from core.serializers.notes import Notes, NoteModelSerializer +from app.tests.abstract.mock_view import MockView + from itam.models.device import Device @@ -28,6 +30,10 @@ class NotesValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.device = Device.objects.create( @@ -57,7 +63,12 @@ class NotesValidationAPI( with pytest.raises(ValidationError) as err: - serializer = NoteModelSerializer(data={ + serializer = NoteModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/core/tests/functional/ticket_category/test_ticket_category_serializer.py b/app/core/tests/functional/ticket_category/test_ticket_category_serializer.py index d7b2602e..d5c0cab8 100644 --- a/app/core/tests/functional/ticket_category/test_ticket_category_serializer.py +++ b/app/core/tests/functional/ticket_category/test_ticket_category_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from core.serializers.ticket_category import TicketCategory, TicketCategoryModelSerializer @@ -26,6 +28,10 @@ class TicketCategoryValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item = self.model.objects.create( @@ -42,6 +48,10 @@ class TicketCategoryValidationAPI( """ serializer = TicketCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": 'new category' @@ -63,6 +73,10 @@ class TicketCategoryValidationAPI( serializer = TicketCategoryModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "parent": self.item.id, }, @@ -83,7 +97,12 @@ class TicketCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = TicketCategoryModelSerializer(data={ + serializer = TicketCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) @@ -100,6 +119,10 @@ class TicketCategoryValidationAPI( """ serializer = TicketCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": self.item.name diff --git a/app/core/tests/functional/ticket_comment/test_ticket_comment_serializer.py b/app/core/tests/functional/ticket_comment/test_ticket_comment_serializer.py index 622ff067..2c689322 100644 --- a/app/core/tests/functional/ticket_comment/test_ticket_comment_serializer.py +++ b/app/core/tests/functional/ticket_comment/test_ticket_comment_serializer.py @@ -5,6 +5,7 @@ from django.contrib.auth.models import User from rest_framework.exceptions import ValidationError +from access.middleware.auth import Tenancy from access.models import Organization from core.serializers.ticket_comment import ( @@ -20,6 +21,8 @@ from core.serializers.ticket_comment import ( TicketCommentITILTaskTriageModelSerializer, ) +from settings.models.app_settings import AppSettings + class MockView: @@ -27,11 +30,35 @@ class MockView: kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + class MockRequest: - _user = None + tenancy: Tenancy = None + + user = None + + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) @@ -94,11 +121,11 @@ class TicketCommentValidationAPI: Ensure that a valid item it does not raise a validation error """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.action = 'create' - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user mock_view.kwargs: dict = { @@ -108,7 +135,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = self.serializer_data ) @@ -122,16 +149,16 @@ class TicketCommentValidationAPI: Ensure that no specified ticket raises a validation error """ - mock_view = MockView() + mock_view = MockView( user = self.user) mock_view.action = 'create' - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = self.serializer_data ) @@ -141,7 +168,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = self.serializer_data ) @@ -157,15 +184,15 @@ class TicketCommentValidationAPI: Ensure that if no body specified a validation error is raised """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.action = 'create' mock_view.kwargs: dict = { 'ticket_id': int(self.ticket.id) } - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user serializer_data:dict = self.serializer_data.copy() @@ -177,7 +204,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = serializer_data ) @@ -193,7 +220,7 @@ class TicketCommentValidationAPI: Ensure that if no comment_type specified a validation error is raised """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.action = 'create' mock_view.kwargs: dict = { 'ticket_id': int(self.ticket.id) @@ -203,8 +230,8 @@ class TicketCommentValidationAPI: serializer_data:dict = self.serializer_data.copy() del serializer_data['comment_type'] - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user with pytest.raises(ValidationError) as err: @@ -212,7 +239,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = serializer_data ) @@ -229,14 +256,14 @@ class TicketCommentValidationAPI: a comment (a discussion), then a reply can be made. """ - mock_view = MockView() + mock_view = MockView( user = self.user) mock_view.action = 'create' mock_view.kwargs: dict = { 'ticket_id': int(self.ticket.id), } - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user serializer_data:dict = self.serializer_data.copy() @@ -245,7 +272,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = serializer_data ) @@ -260,15 +287,15 @@ class TicketCommentValidationAPI: discussion, that you can't reply to it. """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.action = 'create' mock_view.kwargs: dict = { 'ticket_id': int(self.ticket.id), 'parent_id': int(self.item_reply.id) } - mock_request = MockRequest() - mock_request._user = self.user + # mock_request = MockRequest() + # mock_request._user = self.user serializer_data:dict = self.serializer_data.copy() @@ -280,7 +307,7 @@ class TicketCommentValidationAPI: serializer = self.serializer( context = { 'view': mock_view, - 'request': mock_request + 'request': mock_view.request }, data = serializer_data ) diff --git a/app/core/tests/functional/ticket_comment_category/test_ticket_comment_category_serializer.py b/app/core/tests/functional/ticket_comment_category/test_ticket_comment_category_serializer.py index 2dc9d5ea..5d2ad351 100644 --- a/app/core/tests/functional/ticket_comment_category/test_ticket_comment_category_serializer.py +++ b/app/core/tests/functional/ticket_comment_category/test_ticket_comment_category_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from core.serializers.ticket_comment_category import TicketCommentCategory, TicketCommentCategoryModelSerializer @@ -26,6 +28,10 @@ class TicketCommentCategoryValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item = self.model.objects.create( @@ -42,6 +48,10 @@ class TicketCommentCategoryValidationAPI( """ serializer = TicketCommentCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": 'new category' @@ -63,6 +73,10 @@ class TicketCommentCategoryValidationAPI( serializer = TicketCommentCategoryModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "parent": self.item.id, }, @@ -83,7 +97,12 @@ class TicketCommentCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = TicketCommentCategoryModelSerializer(data={ + serializer = TicketCommentCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) @@ -100,6 +119,10 @@ class TicketCommentCategoryValidationAPI( """ serializer = TicketCommentCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": self.item.name diff --git a/app/itam/tests/functional/device/test_device_serializer.py b/app/itam/tests/functional/device/test_device_serializer.py index 0e602976..e2263e42 100644 --- a/app/itam/tests/functional/device/test_device_serializer.py +++ b/app/itam/tests/functional/device/test_device_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.device import Device, DeviceModelSerializer @@ -26,6 +28,10 @@ class DeviceValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item = self.model.objects.create( @@ -43,7 +49,12 @@ class DeviceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = DeviceModelSerializer(data={ + serializer = DeviceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) @@ -64,6 +75,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "name": '0-start-with-number' }, @@ -87,6 +102,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "name": 'has_a_hyphon' }, @@ -110,6 +129,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "name": 'ends-with-dash-' }, @@ -133,6 +156,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": 'g0000000-0000-0000-0000-000000000000' }, @@ -156,6 +183,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '0000000-0000-0000-0000-000000000000' }, @@ -179,6 +210,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-g000-0000-0000-000000000000' }, @@ -201,6 +236,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-000-0000-0000-000000000000' }, @@ -224,6 +263,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-g000-0000-000000000000' }, @@ -246,6 +289,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-000-0000-000000000000' }, @@ -269,6 +316,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-0000-g000-000000000000' }, @@ -291,6 +342,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-0000-000-000000000000' }, @@ -314,6 +369,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-0000-0000-g00000000000' }, @@ -336,6 +395,10 @@ class DeviceValidationAPI( serializer = DeviceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "uuid": '00000000-0000-0000-0000-00000000000' }, diff --git a/app/itam/tests/functional/device_model/test_device_model_serializer.py b/app/itam/tests/functional/device_model/test_device_model_serializer.py index ba06decc..33e150c5 100644 --- a/app/itam/tests/functional/device_model/test_device_model_serializer.py +++ b/app/itam/tests/functional/device_model/test_device_model_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView + from itam.serializers.device_model import DeviceModel, DeviceModelModelSerializer @@ -26,6 +28,10 @@ class DeviceModelValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization @@ -37,7 +43,12 @@ class DeviceModelValidationAPI( with pytest.raises(ValidationError) as err: - serializer = DeviceModelModelSerializer(data={ + serializer = DeviceModelModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/device_operating_system/test_device_operating_system_serializer.py b/app/itam/tests/functional/device_operating_system/test_device_operating_system_serializer.py index 42294935..c2ad65ce 100644 --- a/app/itam/tests/functional/device_operating_system/test_device_operating_system_serializer.py +++ b/app/itam/tests/functional/device_operating_system/test_device_operating_system_serializer.py @@ -1,14 +1,18 @@ import pytest +from django.contrib.auth.models import User from django.test import TestCase from rest_framework.exceptions import ValidationError +from access.middleware.auth import Tenancy from access.models import Organization from itam.serializers.device_operating_system import Device, DeviceOperatingSystem, DeviceOperatingSystemModelSerializer from itam.models.operating_system import OperatingSystem, OperatingSystemVersion +from settings.models.app_settings import AppSettings + class MockView: @@ -17,6 +21,36 @@ class MockView: kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + + + +class MockRequest: + + tenancy: Tenancy = None + + user = None + + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) + class DeviceOperatingSystemValidationAPI( @@ -37,6 +71,8 @@ class DeviceOperatingSystemValidationAPI( self.organization = organization + self.user = User.objects.create(username = 'org_user', password='random password') + self.operating_system = OperatingSystem.objects.create( organization=organization, name = '12', @@ -81,7 +117,7 @@ class DeviceOperatingSystemValidationAPI( Ensure that an item can be created """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -89,6 +125,7 @@ class DeviceOperatingSystemValidationAPI( serializer = DeviceOperatingSystemModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = self.valid_data @@ -108,7 +145,7 @@ class DeviceOperatingSystemValidationAPI( del data['device'] - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -116,6 +153,7 @@ class DeviceOperatingSystemValidationAPI( serializer = DeviceOperatingSystemModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data @@ -134,7 +172,7 @@ class DeviceOperatingSystemValidationAPI( del data['operating_system_version'] - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -144,6 +182,7 @@ class DeviceOperatingSystemValidationAPI( serializer = DeviceOperatingSystemModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data diff --git a/app/itam/tests/functional/device_software/test_device_software_serializer.py b/app/itam/tests/functional/device_software/test_device_software_serializer.py index 21e852ac..ed1bbf98 100644 --- a/app/itam/tests/functional/device_software/test_device_software_serializer.py +++ b/app/itam/tests/functional/device_software/test_device_software_serializer.py @@ -1,21 +1,53 @@ import pytest +from django.contrib.auth.models import User from django.test import TestCase from rest_framework.exceptions import ValidationError +from access.middleware.auth import Tenancy from access.models import Organization from itam.serializers.device_software import Device, DeviceSoftware, DeviceSoftwareModelSerializer from itam.models.software import Software, SoftwareCategory, SoftwareVersion +from settings.models.app_settings import AppSettings + class MockView: action: str = None - kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + + + +class MockRequest: + + tenancy: Tenancy = None + + user = None + + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) @@ -37,6 +69,8 @@ class DeviceInstallsValidationAPI( self.organization = organization + self.user = User.objects.create(username = 'org_user', password='random password') + self.software_category = SoftwareCategory.objects.create( organization=organization, name = 'category' @@ -83,7 +117,7 @@ class DeviceInstallsValidationAPI( """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -94,6 +128,7 @@ class DeviceInstallsValidationAPI( serializer = DeviceSoftwareModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data @@ -109,7 +144,7 @@ class DeviceInstallsValidationAPI( occurs as the serializer provides the device from the view. """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -121,6 +156,7 @@ class DeviceInstallsValidationAPI( serializer = DeviceSoftwareModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data @@ -135,7 +171,7 @@ class DeviceInstallsValidationAPI( Ensure that if creating and no device is provided a validation exception is thrown """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'device_id': self.valid_data['device'] @@ -149,6 +185,7 @@ class DeviceInstallsValidationAPI( serializer = DeviceSoftwareModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data diff --git a/app/itam/tests/functional/device_type/test_device_type_serializer.py b/app/itam/tests/functional/device_type/test_device_type_serializer.py index 1cb96acb..e74c54e4 100644 --- a/app/itam/tests/functional/device_type/test_device_type_serializer.py +++ b/app/itam/tests/functional/device_type/test_device_type_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.device_type import DeviceType, DeviceTypeModelSerializer @@ -26,6 +28,10 @@ class DeviceTypeValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item = self.model.objects.create( @@ -43,7 +49,12 @@ class DeviceTypeValidationAPI( with pytest.raises(ValidationError) as err: - serializer = DeviceTypeModelSerializer(data={ + serializer = DeviceTypeModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/endpoint_software_installs/test_software_installs_serializer.py b/app/itam/tests/functional/endpoint_software_installs/test_software_installs_serializer.py index 8c1ea35e..7782867c 100644 --- a/app/itam/tests/functional/endpoint_software_installs/test_software_installs_serializer.py +++ b/app/itam/tests/functional/endpoint_software_installs/test_software_installs_serializer.py @@ -1,14 +1,18 @@ import pytest +from django.contrib.auth.models import User from django.test import TestCase from rest_framework.exceptions import ValidationError +from access.middleware.auth import Tenancy from access.models import Organization from itam.serializers.device_software import Device, DeviceSoftware, DeviceSoftwareModelSerializer, SoftwareInstallsModelSerializer from itam.models.software import Software, SoftwareCategory, SoftwareVersion +from settings.models.app_settings import AppSettings + class MockView: @@ -17,6 +21,36 @@ class MockView: kwargs: dict = {} + request = None + + + def __init__(self, user: User): + + app_settings = AppSettings.objects.select_related('global_organization').get( + owner_organization = None + ) + + self.request = MockRequest( user = user, app_settings = app_settings) + + + +class MockRequest: + + tenancy: Tenancy = None + + user = None + + def __init__(self, user: User, app_settings): + + self.user = user + + self.app_settings = app_settings + + self.tenancy = Tenancy( + user = user, + app_settings = app_settings + ) + class SoftwareInstallsValidationAPI( @@ -37,6 +71,8 @@ class SoftwareInstallsValidationAPI( self.organization = organization + self.user = User.objects.create(username = 'org_user', password='random password') + self.software_category = SoftwareCategory.objects.create( organization=organization, name = 'category' @@ -82,7 +118,7 @@ class SoftwareInstallsValidationAPI( """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'software_id': self.software.pk @@ -93,6 +129,7 @@ class SoftwareInstallsValidationAPI( serializer = SoftwareInstallsModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data @@ -108,7 +145,7 @@ class SoftwareInstallsValidationAPI( Ensure that if creating and no device is provided a validation exception is thrown """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'software_id': self.software.pk @@ -122,6 +159,7 @@ class SoftwareInstallsValidationAPI( serializer = SoftwareInstallsModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data @@ -140,7 +178,7 @@ class SoftwareInstallsValidationAPI( occurs as the serializer provides the device from the view. """ - mock_view = MockView() + mock_view = MockView( user = self.user ) mock_view.kwargs = { 'software_id': self.software.pk @@ -152,6 +190,7 @@ class SoftwareInstallsValidationAPI( serializer = SoftwareInstallsModelSerializer( context = { + 'request': mock_view.request, 'view': mock_view }, data = data diff --git a/app/itam/tests/functional/operating_system/test_operating_system_serializer.py b/app/itam/tests/functional/operating_system/test_operating_system_serializer.py index bd9f766d..fe4d6a79 100644 --- a/app/itam/tests/functional/operating_system/test_operating_system_serializer.py +++ b/app/itam/tests/functional/operating_system/test_operating_system_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.operating_system import OperatingSystem, OperatingSystemModelSerializer @@ -26,6 +28,10 @@ class OperatingSystemValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization self.item = self.model.objects.create( @@ -43,7 +49,12 @@ class OperatingSystemValidationAPI( with pytest.raises(ValidationError) as err: - serializer = OperatingSystemModelSerializer(data={ + serializer = OperatingSystemModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/operating_system_version/test_operating_system_version_serializer.py b/app/itam/tests/functional/operating_system_version/test_operating_system_version_serializer.py index 4f61b927..4a395926 100644 --- a/app/itam/tests/functional/operating_system_version/test_operating_system_version_serializer.py +++ b/app/itam/tests/functional/operating_system_version/test_operating_system_version_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.operating_system_version import OperatingSystem, OperatingSystemVersion, OperatingSystemVersionModelSerializer @@ -26,6 +28,10 @@ class OperatingSystemVersionValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + + self.mock_view = MockView( user = self.user ) + self.organization = organization os = OperatingSystem.objects.create( @@ -49,7 +55,12 @@ class OperatingSystemVersionValidationAPI( with pytest.raises(ValidationError) as err: - serializer = OperatingSystemVersionModelSerializer(data={ + serializer = OperatingSystemVersionModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/software/test_software_serializer.py b/app/itam/tests/functional/software/test_software_serializer.py index 22ac745e..0ce8c6e0 100644 --- a/app/itam/tests/functional/software/test_software_serializer.py +++ b/app/itam/tests/functional/software/test_software_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.software import Software, SoftwareModelSerializer @@ -26,6 +28,8 @@ class SoftwareValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization self.item = self.model.objects.create( @@ -33,6 +37,8 @@ class SoftwareValidationAPI( name = 'os name', ) + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_no_name(self): @@ -43,7 +49,12 @@ class SoftwareValidationAPI( with pytest.raises(ValidationError) as err: - serializer = SoftwareModelSerializer(data={ + serializer = SoftwareModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/software_category/test_software_category_serializer.py b/app/itam/tests/functional/software_category/test_software_category_serializer.py index 1c435309..54e6e9e0 100644 --- a/app/itam/tests/functional/software_category/test_software_category_serializer.py +++ b/app/itam/tests/functional/software_category/test_software_category_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.software_category import SoftwareCategory, SoftwareCategoryModelSerializer @@ -26,6 +28,8 @@ class SoftwareCategoryValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization self.item = self.model.objects.create( @@ -33,6 +37,8 @@ class SoftwareCategoryValidationAPI( name = 'os name', ) + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_no_name(self): @@ -43,7 +49,12 @@ class SoftwareCategoryValidationAPI( with pytest.raises(ValidationError) as err: - serializer = SoftwareCategoryModelSerializer(data={ + serializer = SoftwareCategoryModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) diff --git a/app/itam/tests/functional/software_version/test_software_version_serializer.py b/app/itam/tests/functional/software_version/test_software_version_serializer.py index 0b64fb3f..0a593da8 100644 --- a/app/itam/tests/functional/software_version/test_software_version_serializer.py +++ b/app/itam/tests/functional/software_version/test_software_version_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.serializers.software_version import Software, SoftwareVersion, SoftwareVersionModelSerializer @@ -24,6 +26,8 @@ class SoftwareVersionValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization self.software = Software.objects.create( @@ -31,6 +35,8 @@ class SoftwareVersionValidationAPI( name = 'os name', ) + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_no_name(self): @@ -41,7 +47,12 @@ class SoftwareVersionValidationAPI( with pytest.raises(ValidationError) as err: - serializer = SoftwareVersionModelSerializer(data={ + serializer = SoftwareVersionModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "software": self.software.id }) diff --git a/app/itim/tests/functional/cluster/test_cluster_serializer.py b/app/itim/tests/functional/cluster/test_cluster_serializer.py index ff107559..299cf90c 100644 --- a/app/itim/tests/functional/cluster/test_cluster_serializer.py +++ b/app/itim/tests/functional/cluster/test_cluster_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itim.serializers.cluster import Cluster, ClusterModelSerializer @@ -26,6 +28,8 @@ class ClusterValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization self.item = self.model.objects.create( @@ -33,6 +37,8 @@ class ClusterValidationAPI( name = 'os name', ) + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_no_name(self): @@ -43,7 +49,12 @@ class ClusterValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ClusterModelSerializer(data={ + serializer = ClusterModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, }) @@ -63,6 +74,10 @@ class ClusterValidationAPI( serializer = ClusterModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "parent_cluster": self.item.id, }, diff --git a/app/itim/tests/functional/port/test_port_serializer.py b/app/itim/tests/functional/port/test_port_serializer.py index 39f11b01..aaa77e34 100644 --- a/app/itim/tests/functional/port/test_port_serializer.py +++ b/app/itim/tests/functional/port/test_port_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itim.serializers.port import Port, PortModelSerializer @@ -26,6 +28,8 @@ class PortValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization # self.item = self.model.objects.create( @@ -33,6 +37,8 @@ class PortValidationAPI( # number = 'os name', # ) + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_can_create(self): @@ -41,7 +47,12 @@ class PortValidationAPI( Ensure that a valid item has no validation errors """ - serializer = PortModelSerializer(data={ + serializer = PortModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "number": 80, "protocol": Port.Protocol.TCP @@ -59,7 +70,12 @@ class PortValidationAPI( with pytest.raises(ValidationError) as err: - serializer = PortModelSerializer(data={ + serializer = PortModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, # "number": 80, "protocol": Port.Protocol.TCP @@ -79,7 +95,12 @@ class PortValidationAPI( with pytest.raises(ValidationError) as err: - serializer = PortModelSerializer(data={ + serializer = PortModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ "organization": self.organization.id, "number": 80, # "protocol": Port.Protocol.TCP diff --git a/app/itim/tests/functional/service/test_service_serializer.py b/app/itim/tests/functional/service/test_service_serializer.py index da3e1952..66dd2b8d 100644 --- a/app/itim/tests/functional/service/test_service_serializer.py +++ b/app/itim/tests/functional/service/test_service_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from itam.models.device import Device from itim.models.services import Port @@ -31,8 +33,12 @@ class ServiceValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization + self.mock_view = MockView( user = self.user ) + self.port = Port.objects.create( organization = self.organization, @@ -92,6 +98,10 @@ class ServiceValidationAPI( """ serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ 'organization': self.organization.id, 'name': 'service', @@ -114,6 +124,10 @@ class ServiceValidationAPI( """ serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ 'organization': self.organization.id, 'name': 'service', @@ -137,13 +151,18 @@ class ServiceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ServiceModelSerializer(data={ - 'organization': self.organization.id, - 'port': [ - self.port.id - ], - 'config_key_variable': 'a_key', - 'device': self.device.id + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ + 'organization': self.organization.id, + 'port': [ + self.port.id + ], + 'config_key_variable': 'a_key', + 'device': self.device.id }) serializer.is_valid(raise_exception = True) @@ -160,7 +179,12 @@ class ServiceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'config_key_variable': 'a_key', @@ -180,7 +204,12 @@ class ServiceValidationAPI( no validation error occurs """ - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'config_key_variable': 'a_key', @@ -199,7 +228,12 @@ class ServiceValidationAPI( no validation error occurs """ - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'port': [ @@ -223,7 +257,12 @@ class ServiceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'config_key_variable': 'a_key', @@ -245,7 +284,12 @@ class ServiceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'port': [ @@ -269,7 +313,12 @@ class ServiceValidationAPI( with pytest.raises(ValidationError) as err: - serializer = ServiceModelSerializer(data={ + serializer = ServiceModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, + data={ 'organization': self.organization.id, 'name': 'service', 'port': [ @@ -297,6 +346,10 @@ class ServiceValidationAPI( serializer = ServiceModelSerializer( self.item, + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ 'dependent_service': [ self.item_two.id diff --git a/app/project_management/tests/functional/project_state/test_project_state_serializer.py b/app/project_management/tests/functional/project_state/test_project_state_serializer.py index aae0cefe..e983b4e4 100644 --- a/app/project_management/tests/functional/project_state/test_project_state_serializer.py +++ b/app/project_management/tests/functional/project_state/test_project_state_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from project_management.serializers.project_states import ( ProjectState, ProjectStateModelSerializer @@ -29,8 +31,12 @@ class ProjectStateValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_can_create(self): @@ -40,6 +46,10 @@ class ProjectStateValidationAPI( """ serializer = ProjectStateModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": 'a project' @@ -59,6 +69,10 @@ class ProjectStateValidationAPI( with pytest.raises(ValidationError) as err: serializer = ProjectStateModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, }, diff --git a/app/project_management/tests/functional/project_type/test_project_type_serializer.py b/app/project_management/tests/functional/project_type/test_project_type_serializer.py index a8e53989..40ad6200 100644 --- a/app/project_management/tests/functional/project_type/test_project_type_serializer.py +++ b/app/project_management/tests/functional/project_type/test_project_type_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from project_management.serializers.project_type import ( ProjectType, ProjectTypeModelSerializer @@ -29,8 +31,12 @@ class ProjectTypeValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization + self.mock_view = MockView( user = self.user ) + def test_serializer_validation_can_create(self): @@ -40,6 +46,10 @@ class ProjectTypeValidationAPI( """ serializer = ProjectTypeModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, "name": 'a project' @@ -59,6 +69,10 @@ class ProjectTypeValidationAPI( with pytest.raises(ValidationError) as err: serializer = ProjectTypeModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data={ "organization": self.organization.id, }, diff --git a/app/settings/tests/functional/external_links/test_external_links_serializer.py b/app/settings/tests/functional/external_links/test_external_links_serializer.py index fb588b50..bce11c0b 100644 --- a/app/settings/tests/functional/external_links/test_external_links_serializer.py +++ b/app/settings/tests/functional/external_links/test_external_links_serializer.py @@ -6,6 +6,8 @@ from rest_framework.exceptions import ValidationError from access.models import Organization +from app.tests.abstract.mock_view import MockView, User + from settings.serializers.external_links import ( ExternalLink, ExternalLinkModelSerializer @@ -29,6 +31,8 @@ class ExternalLinkValidationAPI( organization = Organization.objects.create(name='test_org') + self.user = User.objects.create_user(username="test_user_view", password="password") + self.organization = organization self.valid_data: dict = { @@ -37,6 +41,9 @@ class ExternalLinkValidationAPI( 'template': 'http://example.com/{{ val }}' } + self.mock_view = MockView( user = self.user ) + + def test_serializer_valid_data(self): @@ -47,6 +54,10 @@ class ExternalLinkValidationAPI( """ serializer = ExternalLinkModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data = self.valid_data ) @@ -67,6 +78,10 @@ class ExternalLinkValidationAPI( with pytest.raises(ValidationError) as err: serializer = ExternalLinkModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data = data ) @@ -90,6 +105,10 @@ class ExternalLinkValidationAPI( with pytest.raises(ValidationError) as err: serializer = ExternalLinkModelSerializer( + context = { + 'request': self.mock_view.request, + 'view': self.mock_view, + }, data = data ) diff --git a/docs/projects/centurion_erp/development/index.md b/docs/projects/centurion_erp/development/index.md index 12cc01b0..e37ce553 100644 --- a/docs/projects/centurion_erp/development/index.md +++ b/docs/projects/centurion_erp/development/index.md @@ -10,6 +10,9 @@ This section of the documentation contains different items related to the develo Centurion ERP is a Django Application. We have added a lot of little tid bits that aid in the development process. i.e. abstract classes, tests etc. This allows for decreased development times as items that are common are what could easily be considered templated with the only additional requirement is to add that objests differences. +!!! note + The development documentation does require a rewrite to cater for the application changes introduced in v1.4. Specifically that the direction of Centurion ERP being an API application with a seperate UI. Some of theses development docs do cover post v1.4 changes. + ## Areas of the code