Files
aza/AzA march 2026/_test_admin_control_shell.py

141 lines
5.5 KiB
Python
Raw Normal View History

2026-06-13 22:47:31 +02:00
# -*- coding: utf-8 -*-
"""Smoke-Tests für AZA Kontroll-Hülle (read-only Logik)."""
from __future__ import annotations
import os
import unittest
class TestAdminControlShell(unittest.TestCase):
def test_module_imports(self):
import aza_admin_control_shell as cs # noqa: F401
def test_license_user_match_by_key(self):
from aza_admin_control_shell import _enrich_license_rows_with_users
accounts = {
"u1": {
"user_id": "user_abc123",
"display_name": "Dr. Test",
"login_name": "dr.test@praxis.ch",
"email": "test@praxis.ch",
"practice_id": "prac_1",
"license_key": "AZA-AAAA-BBBB-CCCC-DDDD",
}
}
licenses = [{
"license_key_plain": "AZA-AAAA-BBBB-CCCC-DDDD",
"practice_id": "prac_1",
"customer_email_license": "billing@stripe.ch",
"status": "active",
"devices_per_user": "3",
"stripe_letzte_db_aenderung_utc": "2026-01-01",
"sources": "test",
}]
out = _enrich_license_rows_with_users(licenses, accounts, {})
self.assertEqual(len(out), 1)
self.assertEqual(out[0]["user_display_name"], "Dr. Test")
self.assertEqual(out[0]["user_login_name"], "dr.test@praxis.ch")
self.assertEqual(out[0]["user_email"], "test@praxis.ch")
self.assertEqual(out[0]["user_assignment_status"], "OK")
self.assertEqual(out[0]["user_assignment_source"], "license_key")
def test_license_email_practice_match_display_login(self):
from aza_admin_control_shell import _enrich_license_rows_with_users
accounts = {
"u1": {
"display_name": "André M. Surovy",
"login_name": "admin@aza-medwork.ch",
"email": "admin@aza-medwork.ch",
"practice_id": "prac_x",
}
}
licenses = [{
"license_key_plain": "",
"practice_id": "prac_x",
"customer_email_license": "admin@aza-medwork.ch",
"status": "active",
}]
out = _enrich_license_rows_with_users(licenses, accounts, {})
self.assertEqual(out[0]["user_display_name"], "André M. Surovy")
self.assertEqual(out[0]["user_login_name"], "admin@aza-medwork.ch")
self.assertEqual(out[0]["user_assignment_source"], "email+practice_id")
def test_login_name_fallback_to_email(self):
from aza_admin_control_shell import _resolve_account_login_name
ac = {"email": "fallback@praxis.ch"}
self.assertEqual(_resolve_account_login_name(ac), "fallback@praxis.ch")
def test_login_name_fallback_to_user_id(self):
from aza_admin_control_shell import _resolve_account_login_name
ac = {"user_id": "uid_99", "_uid": "uid_99"}
self.assertEqual(_resolve_account_login_name(ac), "uid_99")
def test_display_name_fallback_name_field(self):
from aza_admin_control_shell import _resolve_account_display_name
self.assertEqual(_resolve_account_display_name({"name": "Praxis Admin"}), "Praxis Admin")
def test_license_no_user_assigned(self):
from aza_admin_control_shell import _enrich_license_rows_with_users
out = _enrich_license_rows_with_users(
[{"license_key_plain": "AZA-UNKNOWN", "practice_id": "", "status": "active"}],
{},
{},
)
self.assertEqual(out[0]["user_assignment_status"], "Kein Benutzer zugeordnet")
self.assertEqual(out[0]["user_display_name"], "")
self.assertEqual(out[0]["user_login_name"], "")
def test_license_ambiguous_users(self):
from aza_admin_control_shell import _enrich_license_rows_with_users
accounts = {
"u1": {
"display_name": "A",
"login_name": "a@x.ch",
"email": "same@x.ch",
"practice_id": "p1",
"license_key": "KEY1",
},
"u2": {
"display_name": "B",
"login_name": "b@x.ch",
"email": "same@x.ch",
"practice_id": "p1",
"license_key": "KEY1",
},
}
licenses = [{"license_key_plain": "KEY1", "practice_id": "p1", "status": "active"}]
out = _enrich_license_rows_with_users(licenses, accounts, {})
self.assertEqual(out[0]["user_assignment_status"], "Mehrdeutige Zuordnung")
self.assertIn("A", out[0]["user_display_name"])
self.assertIn("B", out[0]["user_display_name"])
self.assertIn("a@x.ch", out[0]["user_login_name"])
self.assertIn("b@x.ch", out[0]["user_login_name"])
def test_license_tab_columns_include_login_name(self):
path = os.path.join(os.path.dirname(__file__), "aza_admin_control_shell.py")
with open(path, encoding="utf-8") as f:
src = f.read()
pop_block = src.split("def _populate_licenses", 1)[-1].split("\n def ", 1)[0]
self.assertIn('"user_login_name"', pop_block)
self.assertIn("Login Name:", src.split("def _on_license_select", 1)[-1])
def test_license_bg_colors_not_in_control_shell(self):
path = os.path.join(os.path.dirname(__file__), "aza_admin_control_shell.py")
with open(path, encoding="utf-8") as f:
src = f.read()
self.assertIn("_enrich_license_rows_with_users", src)
self.assertIn("Kein Benutzer zugeordnet", src)
self.assertNotIn("write(", src.split("def analyse_snapshot")[0])
if __name__ == "__main__":
unittest.main()