51
51
PydanticSerializer ,
52
52
)
53
53
from aws_lambda_powertools .utilities .validation import envelopes , validator
54
+ from aws_lambda_powertools .warnings import PowertoolsUserWarning
54
55
from tests .functional .idempotency .utils import (
55
56
build_idempotency_put_item_response_stub ,
56
57
build_idempotency_put_item_stub ,
@@ -1667,13 +1668,20 @@ def dummy(payload):
1667
1668
dummy (payload = data_two )
1668
1669
1669
1670
1670
- def test_idempotency_disabled_envvar (monkeypatch , lambda_context , persistence_store : DynamoDBPersistenceLayer ):
1671
+ @pytest .mark .parametrize ("idempotency_disabled_value" , ["1" , "y" , "yes" , "t" , "true" , "on" ])
1672
+ def test_idempotency_enabled_envvar_in_dev_environment (
1673
+ monkeypatch ,
1674
+ lambda_context ,
1675
+ persistence_store : DynamoDBPersistenceLayer ,
1676
+ idempotency_disabled_value ,
1677
+ ):
1671
1678
# Scenario to validate no requests sent to dynamodb table when 'POWERTOOLS_IDEMPOTENCY_DISABLED' is set
1672
1679
mock_event = {"data" : "value" }
1673
1680
1674
1681
persistence_store .client = MagicMock ()
1675
1682
1676
- monkeypatch .setenv ("POWERTOOLS_IDEMPOTENCY_DISABLED" , "1" )
1683
+ monkeypatch .setenv ("POWERTOOLS_IDEMPOTENCY_DISABLED" , str (idempotency_disabled_value ))
1684
+ monkeypatch .setenv ("POWERTOOLS_DEV" , "true" )
1677
1685
1678
1686
@idempotent_function (data_keyword_argument = "data" , persistence_store = persistence_store )
1679
1687
def dummy (data ):
@@ -1689,6 +1697,63 @@ def dummy_handler(event, context):
1689
1697
assert len (persistence_store .client .method_calls ) == 0
1690
1698
1691
1699
1700
+ @pytest .mark .parametrize ("idempotency_disabled_value" , ["1" , "y" , "yes" , "t" , "true" , "on" ])
1701
+ def test_idempotency_enabled_envvar_in_non_dev_environment (
1702
+ monkeypatch ,
1703
+ lambda_context ,
1704
+ persistence_store : DynamoDBPersistenceLayer ,
1705
+ idempotency_disabled_value ,
1706
+ ):
1707
+ # Scenario to validate no requests sent to dynamodb table when 'POWERTOOLS_IDEMPOTENCY_DISABLED' is set
1708
+ mock_event = {"data" : "value" }
1709
+
1710
+ persistence_store .client = MagicMock ()
1711
+
1712
+ monkeypatch .setenv ("POWERTOOLS_IDEMPOTENCY_DISABLED" , str (idempotency_disabled_value ))
1713
+
1714
+ @idempotent_function (data_keyword_argument = "data" , persistence_store = persistence_store )
1715
+ def dummy (data ):
1716
+ return {"message" : "hello" }
1717
+
1718
+ @idempotent (persistence_store = persistence_store )
1719
+ def dummy_handler (event , context ):
1720
+ return {"message" : "hi" }
1721
+
1722
+ with pytest .warns (PowertoolsUserWarning , match = "Disabling idempotency is intended for development environments*" ):
1723
+ dummy (data = mock_event )
1724
+ dummy_handler (mock_event , lambda_context )
1725
+
1726
+ assert len (persistence_store .client .method_calls ) == 0
1727
+
1728
+
1729
+ @pytest .mark .parametrize ("idempotency_disabled_value" , ["0" , "n" , "no" , "f" , "false" , "off" ])
1730
+ def test_idempotency_disabled_envvar (
1731
+ monkeypatch ,
1732
+ lambda_context ,
1733
+ persistence_store : DynamoDBPersistenceLayer ,
1734
+ idempotency_disabled_value ,
1735
+ ):
1736
+ # Scenario to validate no requests sent to dynamodb table when 'POWERTOOLS_IDEMPOTENCY_DISABLED' is false
1737
+ mock_event = {"data" : "value" }
1738
+
1739
+ persistence_store .client = MagicMock ()
1740
+
1741
+ monkeypatch .setenv ("POWERTOOLS_IDEMPOTENCY_DISABLED" , str (idempotency_disabled_value ))
1742
+
1743
+ @idempotent_function (data_keyword_argument = "data" , persistence_store = persistence_store )
1744
+ def dummy (data ):
1745
+ return {"message" : "hello" }
1746
+
1747
+ @idempotent (persistence_store = persistence_store )
1748
+ def dummy_handler (event , context ):
1749
+ return {"message" : "hi" }
1750
+
1751
+ dummy (data = mock_event )
1752
+ dummy_handler (mock_event , lambda_context )
1753
+
1754
+ assert len (persistence_store .client .method_calls ) == 4
1755
+
1756
+
1692
1757
@pytest .mark .parametrize ("idempotency_config" , [{"use_local_cache" : True }], indirect = True )
1693
1758
def test_idempotent_function_duplicates (
1694
1759
idempotency_config : IdempotencyConfig ,
0 commit comments