"""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 def test_the_build_starts_at_all(wynik): assert wynik["dziala"]["/"] == 200 def test_every_astrological_screen_works(wynik): assert all(k == 200 for k in wynik["dziala"].values()), wynik["dziala"] def test_what_it_lacks_does_not_exist_rather_than_being_refused(wynik): """404, nie 403 i nie 500. Odmowa z powodem jest informacją, że coś tam jest.""" assert all(k == 404 for k in wynik["nie_ma"].values()), wynik["nie_ma"] def test_the_catalogue_describes_this_product(wynik): assert set(wynik["ekrany"]) == {"Horoskop", "Interpretacje", "Kalendarz", "Synastria", "Sygnifikatory", "Pliki"} def test_no_account_can_hold_a_permission_this_product_does_not_have(wynik): """Uprawnienia liczą się z KATALOGU, więc opisują ten obraz. Gdyby była tu lista wpisana ręcznie, zostałaby po usuniętych funkcjach.""" assert "ai" not in wynik["uprawnienia"] assert "export" not in wynik["uprawnienia"] assert "admin" not in wynik["uprawnienia"] assert "chart" in wynik["uprawnienia"] and "significators" in wynik["uprawnienia"] def test_navigation_has_no_dead_links(wynik): assert wynik["nawigacja"] == len(wynik["ekrany"]) def test_login_still_tells_right_password_from_wrong(wynik): assert wynik["logowanie_dziala"] and wynik["zle_haslo_odmowa"] def test_the_pool_comes_from_the_session_not_from_the_form(wynik): """Pula jedzie z zalogowanego konta. Gdyby brała się z żądania, wystarczyłoby podstawić cudzy login, żeby czytać cudze pliki — sonda właśnie to próbuje.""" assert wynik["pula"] == "klient"