fix(boto3): pass config to clients (#10944)

This commit is contained in:
Pepe Fagoaga
2026-04-30 14:11:29 +02:00
committed by GitHub
parent e821e07d7d
commit 36b8aa1b79
17 changed files with 153 additions and 76 deletions
+7
View File
@@ -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()
+3 -3
View File
@@ -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