#!/usr/bin/env python3 """Lokaler Fake von login.onyva.dev /api/v1 – zum Ausprobieren des OIDC-Abgleichs ohne echtes Login-System. python scripts/fake_login_server.py # http://127.0.0.1:8399/api/v1, Key: onyva_testkey, Nutzer: anna@x.de, bob@x.de ONYVA_LOGIN_API_KEY=onyva_testkey OIDC_SYNC_LIVE=true uvicorn app.main:app --port 8300 → Einstellungen → „API-Basis“ = http://127.0.0.1:8399/api/v1 """ import json import sys from http.server import BaseHTTPRequestHandler, HTTPServer from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from tests.fakelogin import FakeLogin # noqa: E402 fake = FakeLogin() class H(BaseHTTPRequestHandler): def _do(self): n = int(self.headers.get("Content-Length") or 0) body = json.loads(self.rfile.read(n)) if n else None status, data, hdrs = fake(self.command, f"http://x{self.path}", {"Authorization": self.headers.get("Authorization", "")}, body) self.send_response(status) for k, v in hdrs.items(): self.send_header(k, v) self.send_header("Content-Type", "application/json") out = json.dumps(data).encode() if data is not None else b"" self.send_header("Content-Length", str(len(out))) self.end_headers() self.wfile.write(out) print(f"{self.command} {self.path} → {status}", flush=True) do_GET = do_POST = do_PUT = do_PATCH = do_DELETE = _do def log_message(self, *a): pass if __name__ == "__main__": print("Fake-Login auf http://127.0.0.1:8399/api/v1 (Key onyva_testkey)", flush=True) HTTPServer(("127.0.0.1", 8399), H).serve_forever()