Skip to content

Commit b952152

Browse files
committed
fix(tests): boto3 client side effect on super class
1 parent d205ca4 commit b952152

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

tests/functional/test_utilities_parameters.py

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,7 @@
2121
BaseProvider,
2222
ExpirableValue,
2323
)
24-
from aws_lambda_powertools.utilities.parameters.ssm import (
25-
DEFAULT_MAX_AGE_SECS,
26-
SSMProvider,
27-
)
28-
from aws_lambda_powertools.utilities.parameters.types import TransformOptions
24+
from aws_lambda_powertools.utilities.parameters.ssm import SSMProvider
2925

3026

3127
@pytest.fixture(scope="function")
@@ -1715,18 +1711,14 @@ def _get_multiple(self, path: str, **kwargs) -> Dict[str, str]:
17151711
assert value == mock_value
17161712

17171713

1718-
def test_get_parameters_by_name(monkeypatch, mock_name, mock_value):
1714+
def test_get_parameters_by_name(monkeypatch, mock_name, mock_value, config):
17191715
params = {mock_name: {}}
17201716

17211717
class TestProvider(SSMProvider):
1722-
def get_parameters_by_name(
1723-
self,
1724-
parameters: Dict[str, Dict],
1725-
transform: TransformOptions = None,
1726-
decrypt: bool = False,
1727-
max_age: int = DEFAULT_MAX_AGE_SECS,
1728-
raise_on_error: bool = True,
1729-
) -> Dict[str, str] | Dict[str, bytes] | Dict[str, dict]:
1718+
def __init__(self, config: Config = config, **kwargs):
1719+
super().__init__(config, **kwargs)
1720+
1721+
def get_parameters_by_name(self, *args, **kwargs) -> Dict[str, str] | Dict[str, bytes] | Dict[str, dict]:
17301722
return {mock_name: mock_value}
17311723

17321724
monkeypatch.setitem(parameters.base.DEFAULT_PROVIDERS, "ssm", TestProvider())
@@ -1737,7 +1729,7 @@ def get_parameters_by_name(
17371729
assert values[mock_name] == mock_value
17381730

17391731

1740-
def test_get_parameters_by_name_with_decrypt_override(monkeypatch, mock_name, mock_value):
1732+
def test_get_parameters_by_name_with_decrypt_override(monkeypatch, mock_name, mock_value, config):
17411733
# GIVEN 2 out of 3 parameters have decrypt override
17421734
decrypt_param = "/api_key"
17431735
decrypt_param_two = "/another/secret"
@@ -1746,15 +1738,16 @@ def test_get_parameters_by_name_with_decrypt_override(monkeypatch, mock_name, mo
17461738
params = {mock_name: {}, **decrypt_params}
17471739

17481740
class TestProvider(SSMProvider):
1741+
def __init__(self, config: Config = config, **kwargs):
1742+
super().__init__(config, **kwargs)
1743+
17491744
def _get(self, name: str, decrypt: bool = False, **sdk_options) -> str:
17501745
# THEN params with `decrypt` override should use GetParameter` (`_get`)
17511746
assert name in decrypt_params
17521747
assert decrypt
17531748
return decrypted_response
17541749

1755-
def _get_parameters_by_name(
1756-
self, parameters: Dict[str, Dict], raise_on_error: bool = True, decrypt: bool = False
1757-
) -> Tuple[Dict[str, Any], List[str]]:
1750+
def _get_parameters_by_name(self, *args, **kwargs) -> Tuple[Dict[str, Any], List[str]]:
17581751
return {mock_name: mock_value}, []
17591752

17601753
monkeypatch.setitem(parameters.base.DEFAULT_PROVIDERS, "ssm", TestProvider())
@@ -1769,12 +1762,15 @@ def _get_parameters_by_name(
17691762
assert values[decrypt_param_two] == decrypted_response
17701763

17711764

1772-
def test_get_parameters_by_name_with_override_and_explicit_global(monkeypatch, mock_name, mock_value):
1765+
def test_get_parameters_by_name_with_override_and_explicit_global(monkeypatch, mock_name, mock_value, config):
17731766
# GIVEN a parameter overrides a default setting
17741767
default_cache_period = 500
17751768
params = {mock_name: {"max_age": 0}, "no-override": {}}
17761769

17771770
class TestProvider(SSMProvider):
1771+
def __init__(self, config: Config = config, **kwargs):
1772+
super().__init__(config, **kwargs)
1773+
17781774
# NOTE: By convention, we check at `_get_parameters_by_name`
17791775
# as that's right before we call SSM, and when options have been merged
17801776
# def _get_parameters_by_name(self, parameters: Dict[str, Dict], raise_on_error: bool = True) -> Dict[str, Any]:
@@ -1793,11 +1789,14 @@ def _get_parameters_by_name(
17931789
parameters.get_parameters_by_name(parameters=params, max_age=default_cache_period)
17941790

17951791

1796-
def test_get_parameters_by_name_with_max_batch(monkeypatch, mock_value):
1792+
def test_get_parameters_by_name_with_max_batch(monkeypatch, config):
17971793
# GIVEN a batch of 20 parameters
17981794
params = {f"param_{i}": {} for i in range(20)}
17991795

18001796
class TestProvider(SSMProvider):
1797+
def __init__(self, config: Config = config, **kwargs):
1798+
super().__init__(config, **kwargs)
1799+
18011800
def _get_parameters_by_name(
18021801
self, parameters: Dict[str, Dict], raise_on_error: bool = True, decrypt: bool = False
18031802
) -> Tuple[Dict[str, Any], List[str]]:
@@ -1811,15 +1810,16 @@ def _get_parameters_by_name(
18111810
parameters.get_parameters_by_name(parameters=params)
18121811

18131812

1814-
def test_get_parameters_by_name_cache(monkeypatch, mock_name, mock_value):
1813+
def test_get_parameters_by_name_cache(monkeypatch, mock_name, mock_value, config):
18151814
# GIVEN we have a parameter to fetch but is already in cache
18161815
params = {mock_name: {}}
18171816
cache_key = (mock_name, None)
18181817

18191818
class TestProvider(SSMProvider):
1820-
def _get_parameters_by_name(
1821-
self, parameters: Dict[str, Dict], raise_on_error: bool = True, **kwargs
1822-
) -> Dict[str, Any]:
1819+
def __init__(self, config: Config = config, **kwargs):
1820+
super().__init__(config, **kwargs)
1821+
1822+
def _get_parameters_by_name(self, *args, **kwargs) -> Tuple[Dict[str, Any], List[str]]:
18231823
raise RuntimeError("Should not be called if it's in cache")
18241824

18251825
provider = TestProvider()
@@ -1834,12 +1834,13 @@ def _get_parameters_by_name(
18341834
assert provider.has_not_expired_in_cache(key=cache_key)
18351835

18361836

1837-
def test_get_parameters_by_name_empty_batch(monkeypatch, mock_name, mock_value):
1837+
def test_get_parameters_by_name_empty_batch(monkeypatch, config):
18381838
# GIVEN we have an empty dictionary
18391839
params = {}
18401840

18411841
class TestProvider(SSMProvider):
1842-
...
1842+
def __init__(self, config: Config = config, **kwargs):
1843+
super().__init__(config, **kwargs)
18431844

18441845
monkeypatch.setitem(parameters.base.DEFAULT_PROVIDERS, "ssm", TestProvider())
18451846

@@ -1937,13 +1938,16 @@ def _get_multiple(self, path: str, **kwargs) -> Dict[str, str]:
19371938
assert value == mock_value
19381939

19391940

1940-
def test_get_parameters_by_name_new(monkeypatch, mock_name, mock_value):
1941+
def test_get_parameters_by_name_new(monkeypatch, mock_name, mock_value, config):
19411942
"""
19421943
Test get_parameters_by_name() without a default provider
19431944
"""
19441945
params = {mock_name: {}}
19451946

19461947
class TestProvider(SSMProvider):
1948+
def __init__(self, config: Config = config, **kwargs):
1949+
super().__init__(config, **kwargs)
1950+
19471951
def get_parameters_by_name(self, *args, **kwargs) -> Dict[str, str] | Dict[str, bytes] | Dict[str, dict]:
19481952
return {mock_name: mock_value}
19491953

0 commit comments

Comments
 (0)