diff --git a/tests/test_permissions.py b/tests/test_permissions.py index 17c5d2d07e9fc7a6ab89916305e3548ac5296885..d44264c9c4fbc950b782ab4e1c73f7090dd1df98 100644 --- a/tests/test_permissions.py +++ b/tests/test_permissions.py @@ -1353,6 +1353,10 @@ def test_select_query_with_invisible_reference(): def test_update_acl_with_unique(): + """Test that ACL can be updated despite name duplications with + ``unique=False``. + + """ rt = db.RecordType(name="TestType").insert() # Name duplicate @@ -1380,3 +1384,27 @@ def test_update_acl_with_unique(): rec = db.Record(id=rec1.id).retrieve() assert rec.name == rec1.name assert rec.name == rec2.name + + +def test_container_update_unique(): + """Test that ACL updates are performed correctly within a Container.""" + + # Both are visible to test at first + rt = db.RecordType(name="TestType").insert() + rec1 = db.Record(name="TestRec").add_parent(rt).insert() + rec2 = db.Record(name="TestRec").add_parent(rt).insert(unique=False) + + switch_to_test_user() + ents = db.execute_query("FIND ENTITY TestType") + assert len(ents) == 3 + + switch_to_admin_user() + cont = db.Container().extend([rt, rec1, rec2]) + cont.retrieve(flags={"ACL": None}) + for ent in cont: + ent.deny(username=test_user, priority=False, permission="RETRIEVE:*") + cont.update(unique=False) + + switch_to_test_user() + ents = db.execute_query("FIND ENTITY TestType") + assert len(ents) == 0