don't use global s3 client

This commit is contained in:
Kenneth Kehl
2025-06-27 11:51:58 -07:00
parent fae0a3bbd8
commit e7d9d02a34

View File

@@ -605,37 +605,45 @@ def test_get_s3_files_handles_exception(mocker):
def test_get_s3_client_default_credentials(): def test_get_s3_client_default_credentials():
with patch.dict(os.environ, {}, clear=True): with patch.dict(os.environ, {}, clear=True):
with patch("boto3.session.Session") as mock_session:
mock_client = MagicMock(_client_config=MagicMock(region_name="us-north-1"))
mock_session.return_value.client.return_value = mock_client
client = get_s3_client() client = get_s3_client()
assert client is not None, "Client should be created with default credentials" assert client is not None
assert client._client_config.region_name, "Client should have a region" mock_session.return_value.client.assert_called_with(
"s3",
aws_access_key=None,
aws_secret_access_key=None, # pragma: allowlist secret
region_name="us-north-1",
)
# def test_get_s3_client_invalid_credentials(): def test_get_s3_client_invalid_credentials():
# with patch.dict( with patch.dict(
# os.environ, os.environ,
# { {
# "AWS_ACCESS_KEY_ID": "invalid-key", "AWS_ACCESS_KEY_ID": "invalid-key",
# "AWS_SECRET_ACCESS_KEY": "invalid-secret", # pragma: allowlist secret "AWS_SECRET_ACCESS_KEY": "invalid-secret", # pragma: allowlist secret
# "AWS_DEFAULT_REGION": "us-north-1", "AWS_DEFAULT_REGION": "us-north-1",
# }, },
# ): ):
# with patch( with patch("boto3.session.Session") as mock_session:
# "boto3.client", mock_session.return_value.client.side_effect = (
# side_effect=botocore.exceptions.ClientError( botocore.exceptions.ClientError(
# { {
# "Error": { "Error": {
# "Code": "InvalidClientTokenId", "Code": "InvalidClientTokenId",
# "Message": "Invalid credentials", "Message": "Invalid credentials",
# } }
# }, },
# "HeadBucket", "HeadBucket",
# ), )
# ): )
# try: try:
# get_s3_client() get_s3_client()
# assert 1 == 0, "Should raise ClientError for invalid credentials" assert 1 == 0
# except botocore.exceptions.ClientError as e: except botocore.exceptions.ClientError as e:
# assert e.response["Error"]["Code"] == "InvalidClientTokenId" assert e.response["Error"]["Code"] == "InvalidClientTokenId"
def test_get_s3_client_no_region(): def test_get_s3_client_no_region():
@@ -647,13 +655,12 @@ def test_get_s3_client_no_region():
}, },
clear=True, clear=True,
): ):
with patch("boto3.client") as mock_client: with patch("boto3.session.Session") as mock_session:
mock_client.return_value = MagicMock( mock_client = MagicMock(_client_config=MagicMock(region_name="us-north-1"))
_client_config=MagicMock(region_name="us-north-1") mock_session.return_value.client.return_value = mock_client
)
client = get_s3_client() client = get_s3_client()
assert client is not None assert client is not None
mock_client.assert_called_with( mock_session.return_value.client.assert_called_with(
"s3", "s3",
aws_access_key_id="test-key", aws_access_key_id="test-key",
aws_secret_access_key="test-secret", # pragma: allowlist secret aws_secret_access_key="test-secret", # pragma: allowlist secret