Compare full native bucket policies independent of array order

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a17f16-d99c-7ea3-95f0-8212897fba6b
This commit is contained in:
codex 2026-10-29 21:56:10 +01:00
parent 61a82ac74c
commit ccc0f8b578
2 changed files with 25 additions and 2 deletions

View file

@ -1,3 +1,4 @@
import copy
import importlib.util
import sys
import unittest
@ -69,6 +70,17 @@ class ResourcesTests(unittest.TestCase):
{"application_id:" + self.apps[r] for r in ("reader", "custodian", "publisher")})
self.assertTrue(all(a.startswith("s3:Get") and "Object" not in a for a in shared["Action"]))
def test_provider_policy_reordering_allowed_but_extra_permission_refused(self):
original = m.policy("b", "archives", self.apps, "o")
returned = copy.deepcopy(original)
returned["Statement"].reverse()
for row in returned["Statement"]:
if isinstance(row["Action"], list):
row["Action"].reverse()
self.assertEqual(m.canonical_policy(original), m.canonical_policy(returned))
returned["Statement"][0]["Action"].append("s3:DeleteObject")
self.assertNotEqual(m.canonical_policy(original), m.canonical_policy(returned))
if __name__ == "__main__":
unittest.main()