🚧 Add role deletion

This commit is contained in:
Jonas Bengtsson
2026-09-19 12:34:37 +02:00
parent 2b327320c2
commit fca27fa5fc
4 changed files with 72 additions and 2 deletions
+21 -1
View File
@@ -198,7 +198,27 @@ def test_group_role_assignment(admin_client):
)
def test_listener_management_and_preview(admin_client):
def test_role_deletion(admin_client):
"""deleteRole removes the role everywhere (spec section 13): the broker's
dynsec deleteRole strips it from every client and group that holds it."""
admin_client.post("/api/v1/mqtt/roles", json={"rolename": "obsolete"})
admin_client.post("/api/v1/mqtt/clients", json={"username": "ps042"})
admin_client.post("/api/v1/mqtt/clients/ps042/roles", json={"rolename": "obsolete"})
admin_client.post("/api/v1/mqtt/groups", json={"groupname": "legacy"})
admin_client.post("/api/v1/mqtt/groups/legacy/roles", json={"rolename": "obsolete"})
deleted = admin_client.delete("/api/v1/mqtt/roles/obsolete")
assert deleted.status_code == 204
# Role gone from the listing...
roles = {r["rolename"] for r in admin_client.get("/api/v1/mqtt/roles").json()}
assert "obsolete" not in roles
# ...and the broker's cleanup means clients/groups no longer hold it.
client = admin_client.get("/api/v1/mqtt/clients/ps042").json()
assert all(r["rolename"] != "obsolete" for r in client["roles"])
groups = admin_client.get("/api/v1/mqtt/groups").json()
legacy = next(g for g in groups if g["groupname"] == "legacy")
assert all(r["rolename"] != "obsolete" for r in legacy["roles"])
response = admin_client.post(
"/api/v1/broker/listeners",
json={"name": "Production MQTT", "port": 1883, "protocol": "mqtt"},