This commit is contained in:
Jonas Bengtsson
2026-09-17 06:23:29 +02:00
parent 8d2c54beae
commit ee4800993d
17 changed files with 1043 additions and 189 deletions
+44 -4
View File
@@ -87,16 +87,19 @@ def client(db_session, monkeypatch):
# Fake dynsec so no broker is needed for API tests.
class FakeDynsec:
"""Mirrors the corrected wire contract: _command returns the `data`
object; client objects use `disabled` (absent == enabled)."""
def __init__(self):
self.clients: dict[str, dict] = {}
self.roles: dict[str, dict] = {}
self.groups: dict[str, dict] = {}
def _command(self, command, **kwargs):
return {"success": True}
return {}
def create_client(self, username, password, **kwargs):
self.clients[username] = {"username": username, "enabled": True, **kwargs}
self.clients[username] = {"username": username, "disabled": False, **kwargs}
def list_clients(self):
return list(self.clients.values())
@@ -105,10 +108,10 @@ def client(db_session, monkeypatch):
self.clients.pop(username, None)
def disable_client(self, username):
self.clients[username]["enabled"] = False
self.clients[username]["disabled"] = True
def enable_client(self, username):
self.clients[username]["enabled"] = True
self.clients[username]["disabled"] = False
def set_client_password(self, username, password):
pass
@@ -140,6 +143,43 @@ def client(db_session, monkeypatch):
def get_role(self, rolename):
return self.roles[rolename]
def add_client_role(self, username, rolename, priority=-1):
client = self.clients.setdefault(username, {"username": username, "disabled": False})
client["roles"] = [
*client.get("roles", []),
{"rolename": rolename, "priority": priority},
]
def remove_client_role(self, username, rolename):
client = self.clients.get(username, {})
client["roles"] = [
r for r in client.get("roles", []) if r["rolename"] != rolename
]
def add_group_client(self, groupname, username, priority=1):
self.clients.setdefault(username, {}).setdefault("groups", []).append(
{"groupname": groupname, "priority": priority}
)
def remove_group_client(self, groupname, username):
client = self.clients.get(username, {})
client["groups"] = [
g for g in client.get("groups", []) if g["groupname"] != groupname
]
def add_group_role(self, groupname, rolename, priority=-1):
group = self.groups.setdefault(groupname, {"groupname": groupname, "roles": []})
group["roles"] = [
*group.get("roles", []),
{"rolename": rolename, "priority": priority},
]
def remove_group_role(self, groupname, rolename):
group = self.groups.get(groupname, {})
group["roles"] = [
r for r in group.get("roles", []) if r["rolename"] != rolename
]
def connect(self):
pass