🚧 WIP
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user