"""Astroklient jest produktem, a nie pełną aplikacją z wyłączonymi kawałkami. Sprawdzamy trzy rzeczy, i wszystkie na ZŁOŻONYM drzewie, nie na kodzie w repo: czego w nim nie ma, że to, co zostało, działa, i że nie zostało po niczym słowo. """ from __future__ import annotations import json import re import subprocess import sys import pytest SONDA = ''' import json, os, hashlib, secrets, re sol = secrets.token_bytes(16) dk = hashlib.scrypt(b"tajne", salt=sol, n=2**14, r=8, p=1, dklen=32) os.environ.update(ASTROKLIENT_USERS="klient:scrypt$%s$%s" % (sol.hex(), dk.hex()), SESSION_SECRET="t"*64, COOKIES_INSECURE="1", RATE_LIMIT_PER_MIN="0") from starlette.testclient import TestClient from app.main import app from app import security, session, features from app.clients import logic_client c = TestClient(app, follow_redirects=False) H = {"Cookie": f"{session.COOKIE}={security.issue_session('klient')}"} strona = c.get("/", headers=H).text zebrane = [] logic_client.link_crypto.call_json = lambda *a, **kw: (zebrane.append(kw.get("payload")), {})[1] c.post("/interpret", headers=H, data={"date":"1984-04-30","time":"11:20", "tz_offset":"2","lat":"50","lon":"19","tenant":"ktos-inny"}) print("WYNIK:" + json.dumps({ "ekrany": [f.label for f in features.SCREENS], "uprawnienia": sorted(security._uprawnienia()), "dziala": {a: c.get(a, headers=H).status_code for a in ("/", "/interpret", "/timeline", "/synastry", "/significators", "/pliki")}, "nie_ma": {a: c.get(a, headers=H).status_code for a in ("/compile", "/settings", "/accounts", "/files", "/horoscope/stream", "/compile/pdf")}, "nawigacja": re.findall(r"", strona, re.S)[0].count('