diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index 6419573d22e583e400eccad626bc8d4b143f92d1..b38faa580817a7055ecc9fb50eaa1f0e41c1cbcb 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -1176,3 +1176,38 @@ def test_192(): assert count6 == 1 assert count7 == 1 assert count8 == 1 + + +def test_196(): + """See https://gitlab.com/caosdb/caosdb-server/-/issues/196""" + admin._insert_role(name=CURATOR_ROLE, description="Desc") + + perms = admin._get_permissions(CURATOR_ROLE) + g = admin.PermissionRule(action="Grant", permission="TRANSACTION:*") + perms.add(g) + admin._set_permissions(CURATOR_ROLE, permission_rules=perms) + admin._insert_user(name="TestUser", password="Password1!", status="ACTIVE") + admin._set_roles(username="TestUser", roles=[CURATOR_ROLE]) + + db.configure_connection(username="TestUser", password_method="plain", + password="Password1!") + # works + db.RecordType(name="TestRT1").insert() + db.Property(name="TestProp1", datatype=db.TEXT).insert() + + # Deny TRANSACTION:INSERT:PROPERTY + db.configure_connection() + perms = admin._get_permissions(CURATOR_ROLE) + g = admin.PermissionRule(action="Deny", permission="TRANSACTION:INSERT:PROPERTY") + perms.add(g) + admin._set_permissions(CURATOR_ROLE, permission_rules=perms) + + db.configure_connection(username="TestUser", password_method="plain", + password="Password1!") + db.RecordType(name="TestRT2").insert() + + # fails + with pytest.raises(TransactionError) as cm: + # this should fail because the curator doesn't have TRANSACTION:INSERT:PROPERTY + db.Property(name="TestProp2", datatype=db.TEXT).insert() + assert cm.value.errors[0].msg == "You are not allowed to do this."