diff --git a/tests/test_permissions.py b/tests/test_permissions.py
index 7fffb273fc40bec37202d445c32330d2792188a5..17c5d2d07e9fc7a6ab89916305e3548ac5296885 100644
--- a/tests/test_permissions.py
+++ b/tests/test_permissions.py
@@ -1350,3 +1350,33 @@ def test_select_query_with_invisible_reference():
     values = select_results.get_property_values(*value_args)[0]
     assert values[0] is None
     assert values[1] is None
+
+
+def test_update_acl_with_unique():
+
+    rt = db.RecordType(name="TestType").insert()
+    # Name duplicate
+    rec1 = db.Record(name="TestRec").add_parent(rt).insert()
+    # This should be invisible to test at first:
+    rec1.retrieve(flags={"ACL": None})
+    rec1.deny(username=test_user, priority=False, permission="RETRIEVE:*")
+    rec1.update_acl()
+    rec2 = db.Record(name="TestRec").add_parent(rt).insert(unique=False)
+    switch_to_test_user()
+    with raises(db.TransactionError):
+        # Should be invisible to test user here
+        rec = db.Record(id=rec1.id).retrieve()
+    switch_to_admin_user()
+    rec1.retrieve(flags={"ACL": None})
+    rec1.grant(username=test_user, priority=True, permission="RETRIEVE:*")
+    with raises(db.TransactionError):
+        # This should fail due to name collision
+        rec1.update_acl()
+    # This shouldn't
+    rec1.update_acl(unique=False)
+
+    # test user should be able to see this
+    switch_to_test_user()
+    rec = db.Record(id=rec1.id).retrieve()
+    assert rec.name == rec1.name
+    assert rec.name == rec2.name