Skip to content

fix(idempotency): TypeError when calling is_missing_idempotency_key with an int #315

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,9 @@ def _get_hashed_idempotency_key(self, lambda_event: Dict[str, Any]) -> str:

@staticmethod
def is_missing_idempotency_key(data) -> bool:
return data is None or not data or all(x is None for x in data)
if type(data).__name__ in ("tuple", "list", "dict"):
return all(x is None for x in data)
return not data

def _get_hashed_payload(self, lambda_event: Dict[str, Any]) -> str:
"""
Expand Down
38 changes: 27 additions & 11 deletions tests/functional/idempotency/test_idempotency.py
Original file line number Diff line number Diff line change
Expand Up @@ -677,22 +677,38 @@ def test_delete_from_cache_when_empty(


def test_is_missing_idempotency_key():
# GIVEN an empty tuple THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key(())
# GIVEN an empty list THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key([])
# GIVEN an empty dictionary THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key({})
# GIVEN an empty str THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key("")
# GIVEN False THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key(False)
# GIVEN number 0 THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key(0)

# GIVEN None THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key(None)
# GIVEN a list of Nones THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key([None, None])
# GIVEN a list of all not None THEN is_missing_idempotency_key is false
assert BasePersistenceLayer.is_missing_idempotency_key([None, "Value"]) is False
# GIVEN a str THEN is_missing_idempotency_key is false
# GIVEN a tuples of Nones THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key((None, None))
# GIVEN a dict of Nones THEN is_missing_idempotency_key is True
assert BasePersistenceLayer.is_missing_idempotency_key({None: None})

# GIVEN a str THEN is_missing_idempotency_key is False
assert BasePersistenceLayer.is_missing_idempotency_key("Value") is False
# GIVEN an empty tuple THEN is_missing_idempotency_key is false
assert BasePersistenceLayer.is_missing_idempotency_key(())
# GIVEN an empty list THEN is_missing_idempotency_key is false
assert BasePersistenceLayer.is_missing_idempotency_key([])
# GIVEN an empty dictionary THEN is_missing_idempotency_key is false
assert BasePersistenceLayer.is_missing_idempotency_key({})
# GIVEN an empty str THEN is_missing_idempotency_key is false
assert BasePersistenceLayer.is_missing_idempotency_key("")
# GIVEN str "False" THEN is_missing_idempotency_key is False
assert BasePersistenceLayer.is_missing_idempotency_key("False") is False
# GIVEN an number THEN is_missing_idempotency_key is False
assert BasePersistenceLayer.is_missing_idempotency_key(1000) is False
# GIVEN a float THEN is_missing_idempotency_key is False
assert BasePersistenceLayer.is_missing_idempotency_key(10.01) is False
# GIVEN a list of all not None THEN is_missing_idempotency_key is False
assert BasePersistenceLayer.is_missing_idempotency_key([None, "Value"]) is False


@pytest.mark.parametrize(
Expand Down