From 44458e2a9755535fd2d02fc12c8abdcc65a31583 Mon Sep 17 00:00:00 2001 From: Pepe Fagoaga Date: Fri, 14 Apr 2023 14:25:45 +0200 Subject: [PATCH] fix(test): Mock audit info codeartifact-config-ds (#2210) --- .../codeartifact/codeartifact_service_test.py | 37 +++++++++++--- ...onfig_recorder_all_regions_enabled_test.py | 48 +++++++++++++++---- .../directoryservice_service_test.py | 37 +++++++++++--- 3 files changed, 101 insertions(+), 21 deletions(-) diff --git a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py index 0985935c..31bc766e 100644 --- a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py +++ b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py @@ -1,9 +1,10 @@ from unittest.mock import patch import botocore +from boto3 import session from moto.core import DEFAULT_ACCOUNT_ID -from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info +from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.codeartifact.codeartifact_service import ( CodeArtifact, LatestPackageVersionStatus, @@ -13,6 +14,8 @@ from prowler.providers.aws.services.codeartifact.codeartifact_service import ( # Mock Test Region AWS_REGION = "eu-west-1" +AWS_ACCOUNT_NUMBER = "123456789012" + # Mocking Access Analyzer Calls make_api_call = botocore.client.BaseClient._make_api_call @@ -96,9 +99,32 @@ def mock_generate_regional_clients(service, audit_info): new=mock_generate_regional_clients, ) class Test_CodeArtifact_Service: + def set_mocked_audit_info(self): + audit_info = AWS_Audit_Info( + session_config=None, + original_session=None, + audit_session=session.Session( + profile_name=None, + botocore_session=None, + ), + audited_account=AWS_ACCOUNT_NUMBER, + audited_user_id=None, + audited_partition="aws", + audited_identity_arn=None, + profile=None, + profile_region=None, + credentials=None, + assumed_role_info=None, + audited_regions=["us-east-1", "eu-west-1"], + organizations_metadata=None, + audit_resources=None, + ) + + return audit_info + # Test CodeArtifact Client def test__get_client__(self): - codeartifact = CodeArtifact(current_audit_info) + codeartifact = CodeArtifact(self.set_mocked_audit_info()) assert ( codeartifact.regional_clients[AWS_REGION].__class__.__name__ == "CodeArtifact" @@ -106,18 +132,17 @@ class Test_CodeArtifact_Service: # Test CodeArtifact Session def test__get_session__(self): - codeartifact = CodeArtifact(current_audit_info) + codeartifact = CodeArtifact(self.set_mocked_audit_info()) assert codeartifact.session.__class__.__name__ == "Session" # Test CodeArtifact Service def test__get_service__(self): - codeartifact = CodeArtifact(current_audit_info) + codeartifact = CodeArtifact(self.set_mocked_audit_info()) assert codeartifact.service == "codeartifact" def test__list_repositories__(self): # Set partition for the service - current_audit_info.audited_partition = "aws" - codeartifact = CodeArtifact(current_audit_info) + codeartifact = CodeArtifact(self.set_mocked_audit_info()) assert len(codeartifact.repositories) == 1 assert codeartifact.repositories diff --git a/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py b/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py index 88ecf1f9..1179ff9f 100644 --- a/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py +++ b/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py @@ -1,22 +1,48 @@ from unittest import mock -from boto3 import client +from boto3 import client, session from moto import mock_config +from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info + AWS_REGION = "us-east-1" +AWS_ACCOUNT_NUMBER = "123456789012" class Test_config_recorder_all_regions_enabled: + def set_mocked_audit_info(self): + audit_info = AWS_Audit_Info( + session_config=None, + original_session=None, + audit_session=session.Session( + profile_name=None, + botocore_session=None, + ), + audited_account=AWS_ACCOUNT_NUMBER, + audited_user_id=None, + audited_partition="aws", + audited_identity_arn=None, + profile=None, + profile_region=None, + credentials=None, + assumed_role_info=None, + audited_regions=["us-east-1", "eu-west-1"], + organizations_metadata=None, + audit_resources=None, + ) + + return audit_info + @mock_config def test_config_no_recorders(self): - from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info from prowler.providers.aws.services.config.config_service import Config - current_audit_info.audited_partition = "aws" - current_audit_info.audited_account = "012345678912" - current_audit_info.audited_regions = ["eu-west-1", "us-east-1"] + current_audit_info = self.set_mocked_audit_info() with mock.patch( + "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info", + new=current_audit_info, + ), mock.patch( "prowler.providers.aws.services.config.config_recorder_all_regions_enabled.config_recorder_all_regions_enabled.config_client", new=Config(current_audit_info), ): @@ -41,13 +67,15 @@ class Test_config_recorder_all_regions_enabled: config_client.put_configuration_recorder( ConfigurationRecorder={"name": "default", "roleARN": "somearn"} ) - from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info from prowler.providers.aws.services.config.config_service import Config - current_audit_info.audited_partition = "aws" + current_audit_info = self.set_mocked_audit_info() current_audit_info.audited_regions = [AWS_REGION] with mock.patch( + "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info", + new=current_audit_info, + ), mock.patch( "prowler.providers.aws.services.config.config_recorder_all_regions_enabled.config_recorder_all_regions_enabled.config_client", new=Config(current_audit_info), ): @@ -82,13 +110,15 @@ class Test_config_recorder_all_regions_enabled: DeliveryChannel={"name": "testchannel", "s3BucketName": "somebucket"} ) config_client.start_configuration_recorder(ConfigurationRecorderName="default") - from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info from prowler.providers.aws.services.config.config_service import Config - current_audit_info.audited_partition = "aws" + current_audit_info = self.set_mocked_audit_info() current_audit_info.audited_regions = [AWS_REGION] with mock.patch( + "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info", + new=current_audit_info, + ), mock.patch( "prowler.providers.aws.services.config.config_recorder_all_regions_enabled.config_recorder_all_regions_enabled.config_client", new=Config(current_audit_info), ): diff --git a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py index 4481f21d..e63ebbe9 100644 --- a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py +++ b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py @@ -2,10 +2,11 @@ from datetime import datetime from unittest.mock import patch import botocore +from boto3 import session from moto import mock_ds from moto.core import DEFAULT_ACCOUNT_ID -from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info +from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.directoryservice.directoryservice_service import ( AuthenticationProtocol, CertificateState, @@ -18,6 +19,8 @@ from prowler.providers.aws.services.directoryservice.directoryservice_service im # Mock Test Region AWS_REGION = "eu-west-1" +AWS_ACCOUNT_NUMBER = "123456789012" + # Mocking Access Analyzer Calls make_api_call = botocore.client.BaseClient._make_api_call @@ -115,10 +118,33 @@ def mock_generate_regional_clients(service, audit_info): new=mock_generate_regional_clients, ) class Test_DirectoryService_Service: + def set_mocked_audit_info(self): + audit_info = AWS_Audit_Info( + session_config=None, + original_session=None, + audit_session=session.Session( + profile_name=None, + botocore_session=None, + ), + audited_account=AWS_ACCOUNT_NUMBER, + audited_user_id=None, + audited_partition="aws", + audited_identity_arn=None, + profile=None, + profile_region=None, + credentials=None, + assumed_role_info=None, + audited_regions=["us-east-1", "eu-west-1"], + organizations_metadata=None, + audit_resources=None, + ) + + return audit_info + # Test DirectoryService Client @mock_ds def test__get_client__(self): - directoryservice = DirectoryService(current_audit_info) + directoryservice = DirectoryService(self.set_mocked_audit_info()) assert ( directoryservice.regional_clients[AWS_REGION].__class__.__name__ == "DirectoryService" @@ -127,20 +153,19 @@ class Test_DirectoryService_Service: # Test DirectoryService Session @mock_ds def test__get_session__(self): - directoryservice = DirectoryService(current_audit_info) + directoryservice = DirectoryService(self.set_mocked_audit_info()) assert directoryservice.session.__class__.__name__ == "Session" # Test DirectoryService Service @mock_ds def test__get_service__(self): - directoryservice = DirectoryService(current_audit_info) + directoryservice = DirectoryService(self.set_mocked_audit_info()) assert directoryservice.service == "ds" @mock_ds def test__describe_directories__(self): # Set partition for the service - current_audit_info.audited_partition = "aws" - directoryservice = DirectoryService(current_audit_info) + directoryservice = DirectoryService(self.set_mocked_audit_info()) # __describe_directories__ assert directoryservice.directories["d-12345a1b2"].id == "d-12345a1b2"