Skip to content

Commit b4a69b0

Browse files
committed
Disallow empty uuid as minfraud_id for transaction report
1 parent aabb36f commit b4a69b0

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

minfraud/validation.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,15 @@ def _uuid(s: str) -> str:
379379
raise ValueError
380380

381381

382+
NIL_UUID = str(uuid.UUID(int=0))
383+
384+
385+
def _non_empty_uuid(s: str) -> str:
386+
if _uuid(s) == NIL_UUID:
387+
raise ValueError
388+
return s
389+
390+
382391
def _transaction_id(s: Optional[str]) -> str:
383392
if isinstance(s, str) and len(s) > 0:
384393
return s
@@ -390,7 +399,7 @@ def _transaction_id(s: Optional[str]) -> str:
390399
"chargeback_code": str,
391400
"ip_address": _ip_address,
392401
"maxmind_id": _maxmind_id,
393-
"minfraud_id": _uuid,
402+
"minfraud_id": _non_empty_uuid,
394403
"notes": str,
395404
Required("tag"): _tag,
396405
"transaction_id": _transaction_id,
@@ -399,8 +408,8 @@ def _transaction_id(s: Optional[str]) -> str:
399408

400409

401410
def _validate_at_least_one_identifier_field(report):
402-
optional_fields = {"ip_address", "maxmind_id", "minfraud_id", "transaction_id"}
403-
if not optional_fields & report.keys():
411+
optional_fields = ["ip_address", "maxmind_id", "minfraud_id", "transaction_id"]
412+
if not any(field in report for field in optional_fields):
404413
# We return MultipleInvalid instead of ValueError to be consistent with what
405414
# voluptuous returns.
406415
raise MultipleInvalid(

tests/test_validation.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ def test_minfraud_id(self):
420420
"12345678-123412341234-12345678901",
421421
"12345678-1234-1234-1234-1234567890123",
422422
"12345678-1234-1234-1234-12345678901g",
423+
"00000000-0000-0000-0000-000000000000",
423424
"",
424425
):
425426
self.check_invalid_report({"minfraud_id": bad})

0 commit comments

Comments
 (0)