4102039447
Testy / Testy warstwy logicznej (silnik) (push) Successful in 11m1s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m30s
Testy / Testy warstwy bazodanowej (ochrona baz) (push) Successful in 9m25s
Testy / Testy astrodemo (push) Successful in 9m25s
Testy / Testy astroklient (push) Successful in 9m24s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 21s
Testy / Kontrola składni wszystkich warstw (push) Successful in 5s
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m25s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m29s
Testy / Testy warstwy bazodanowej (ochrona baz) (pull_request) Successful in 9m25s
Testy / Testy astrodemo (pull_request) Successful in 9m25s
Testy / Testy astroklient (pull_request) Successful in 9m25s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 7s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 5s
_post dokłada pulę z kontekstu sesji do każdego żądania, ale strumień (używany przez /chart/horoscope/stream) szedł obok niego i wysyłał payload bez zmian. Generowania w tym obrazie dziś nie ma, ale most modułów zostaje celowo — po dołożeniu modułu horoskop strumieniowany szukałby w całym udziale, a pole tenant podsunięte w payloadzie przeszłoby dalej. Sonda w osobnym procesie przepuszcza prawdziwe żądanie przez bramkę sesji do trasy w miejscu modułu (prompt, horoskop, strumień konsumowany leniwie) i podsuwa cudzy login w payloadzie. Przed poprawką strumień wysyłał „ktos-inny", po — konto z sesji. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
"""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"
|
|
|
|
|
|
def test_module_transport_carries_the_session_pool_too(wynik_modulu):
|
|
"""Prompt i horoskop idą mostem modułów, a strumień horoskopu obok `_post` —
|
|
i właśnie tam pula ginęła, więc horoskop szukałby w całym udziale. Sonda
|
|
podsuwa cudzy login w payloadzie; ma wygrać konto z sesji."""
|
|
assert wynik_modulu["status"] == 200
|
|
assert wynik_modulu["pule"] == {"prompt": "klient", "horoscope": "klient",
|
|
"horoscope/stream": "klient"}
|