mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-09 21:14:22 +00:00
fix(boto3): pass config to clients (#10944)
This commit is contained in:
@@ -21,6 +21,7 @@ from prowler.providers.aws.config import (
|
||||
AWS_STS_GLOBAL_ENDPOINT_REGION,
|
||||
BOTO3_USER_AGENT_EXTRA,
|
||||
ROLE_SESSION_NAME,
|
||||
get_default_session_config,
|
||||
)
|
||||
from prowler.providers.aws.exceptions.exceptions import (
|
||||
AWSArgumentTypeValidationError,
|
||||
@@ -2242,6 +2243,12 @@ aws:
|
||||
assert session_config.user_agent_extra == BOTO3_USER_AGENT_EXTRA
|
||||
assert session_config.retries == {"max_attempts": 10, "mode": "standard"}
|
||||
|
||||
def test_get_default_session_config(self):
|
||||
config = get_default_session_config()
|
||||
|
||||
assert config.user_agent_extra == BOTO3_USER_AGENT_EXTRA
|
||||
assert config.retries == {"max_attempts": 3, "mode": "standard"}
|
||||
|
||||
@mock_aws
|
||||
@patch(
|
||||
"prowler.lib.check.utils.recover_checks_from_provider",
|
||||
|
||||
@@ -4,6 +4,8 @@ import boto3
|
||||
from botocore.exceptions import ClientError
|
||||
from moto import mock_aws
|
||||
|
||||
from prowler.providers.aws.aws_provider import AwsProvider
|
||||
from prowler.providers.aws.config import BOTO3_USER_AGENT_EXTRA
|
||||
from prowler.providers.aws.lib.organizations.organizations import (
|
||||
_get_ou_metadata,
|
||||
get_organizations_metadata,
|
||||
@@ -222,6 +224,20 @@ class Test_AWS_Organizations:
|
||||
assert tags == {}
|
||||
assert ou_metadata == {}
|
||||
|
||||
def test_get_organizations_metadata_uses_user_agent_extra(self):
|
||||
real_session = boto3.Session()
|
||||
real_session._session.set_default_client_config(
|
||||
AwsProvider.set_session_config(None)
|
||||
)
|
||||
wrapper = MagicMock(wraps=real_session)
|
||||
|
||||
get_organizations_metadata("123456789012", wrapper)
|
||||
|
||||
wrapper.client.assert_called_once()
|
||||
default_config = real_session._session.get_default_client_config()
|
||||
assert default_config is not None
|
||||
assert BOTO3_USER_AGENT_EXTRA in default_config.user_agent_extra
|
||||
|
||||
def test_parse_organizations_metadata_with_empty_ou_metadata(self):
|
||||
tags = {"Tags": []}
|
||||
metadata = {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from mock import patch
|
||||
|
||||
from prowler.providers.aws.config import BOTO3_USER_AGENT_EXTRA
|
||||
from prowler.providers.aws.lib.service.service import AWSService
|
||||
from tests.providers.aws.utils import (
|
||||
AWS_ACCOUNT_ARN,
|
||||
@@ -189,6 +190,15 @@ class TestAWSService:
|
||||
== f"arn:{service.audited_partition}:{service_name}::{AWS_ACCOUNT_NUMBER}:bucket/unknown"
|
||||
)
|
||||
|
||||
def test_AWSService_clients_carry_user_agent_extra(self):
|
||||
provider = set_mocked_aws_provider()
|
||||
|
||||
service = AWSService("s3", provider)
|
||||
ad_hoc_client = service.session.client("ec2", AWS_REGION_US_EAST_1)
|
||||
|
||||
assert BOTO3_USER_AGENT_EXTRA in service.client._client_config.user_agent_extra
|
||||
assert BOTO3_USER_AGENT_EXTRA in ad_hoc_client._client_config.user_agent_extra
|
||||
|
||||
def test_AWSService_get_unknown_arn_resource_type_set_region(self):
|
||||
service_name = "s3"
|
||||
provider = set_mocked_aws_provider()
|
||||
|
||||
@@ -2,7 +2,6 @@ from argparse import Namespace
|
||||
from json import dumps
|
||||
|
||||
from boto3 import client, session
|
||||
from botocore.config import Config
|
||||
from moto import mock_aws
|
||||
|
||||
from prowler.config.config import (
|
||||
@@ -133,10 +132,11 @@ def set_mocked_aws_provider(
|
||||
provider = AwsProvider()
|
||||
|
||||
# Mock Session
|
||||
provider._session.session_config = None
|
||||
session_config = AwsProvider.set_session_config(None)
|
||||
provider._session.session_config = session_config
|
||||
provider._session.original_session = original_session
|
||||
provider._session.current_session = audit_session
|
||||
provider._session.session_config = Config()
|
||||
audit_session._session.set_default_client_config(session_config)
|
||||
# Mock Identity
|
||||
provider._identity.account = audited_account
|
||||
provider._identity.account_arn = audited_account_arn
|
||||
|
||||
Reference in New Issue
Block a user