Skip to content
Merged
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
23 changes: 23 additions & 0 deletions tests/test_adapters.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,29 @@ def test_opa_requires_object_labels(self):
"labels": labels})
self.assertEqual(str(caught.exception), "OPA labels must be an object")

def test_opa_rejects_invalid_ids_elements(self):
for ids in ([123], [""], ["valid", 123], ["valid", ""]):
with self.subTest(ids=ids):
with self.assertRaises(ValueError) as caught:
self.opa_event({"decision_id": "d-1", "result": True, "ids": ids})
self.assertEqual(str(caught.exception),
"OPA ids must be an array of non-empty strings")

def test_opa_preserves_challenge_and_error_mapper_results(self):
for decision in ("challenge", "error"):
with self.subTest(decision=decision):
event = self.opa_event(
{"decision_id": "d-1", "result": {}},
result_mapper=lambda value, decision=decision: decision,
)
self.assertEqual(event["decision"], decision)
self.assertNotIn("result", event)

def test_opa_missing_result_maps_to_not_applicable(self):
event = self.opa_event({"decision_id": "d-1"})
self.assertEqual(event["decision"], "not_applicable")
self.assertNotIn("result", event)

def test_opa_requires_version_when_not_supplied_explicitly(self):
for labels in ({}, {"version": ""}, {"version": 123}):
with self.subTest(labels=labels):
Expand Down
Loading