60 lines
2.7 KiB
Python
60 lines
2.7 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
|
|
from scripts import collect_vedastro_official_parity_raw as collector
|
|
|
|
|
|
def test_collect_chart_core_writes_secret_free_hashed_packet(tmp_path, monkeypatch) -> None:
|
|
monkeypatch.setenv("VEDASTRO_API_ENDPOINT", "https://api.vedastro.org/api")
|
|
monkeypatch.setenv("VEDASTRO_API_KEY", "must-not-leak")
|
|
|
|
def fake_post(endpoint, request_item):
|
|
if request_item["section"] == "shadbala_chesta":
|
|
return {"Status": "Pass", "Payload": {"PlanetChestaBala": "12.5"}}, 1, []
|
|
if request_item["section"] == "shadbala":
|
|
return {"Status": "Pass", "Payload": {"AllPlanetStrength": "(400, Sun)"}}, 1, []
|
|
if request_item["section"] == "ashtakavarga_sav":
|
|
return {"Status": "Pass", "Payload": {"AshtakvargaLifeMap": {"TotalBindus": 337}}}, 1, []
|
|
if request_item["section"] == "ashtakavarga_bav":
|
|
return {"Status": "Pass", "Payload": {"BhinnashtakavargaChart": {"Sun": {"Rows": [1] * 12}}}}, 1, []
|
|
if request_item["section"] == "ashtakavarga_sav_chart":
|
|
return {"Status": "Pass", "Payload": {"SarvashtakavargaChart": {"Sarvashtakavarga": {"Rows": [28] * 12}}}}, 1, []
|
|
planet = request_item["fanout_value"]
|
|
return {
|
|
"Status": "Pass",
|
|
"Payload": {
|
|
"AllPlanetData": {
|
|
"PlanetHoraD2Signs": {"Name": f"{planet}-D2"},
|
|
"PlanetChaturthamshaD4Sign": {"Name": f"{planet}-D4"},
|
|
"PlanetNavamshaD9Sign": {"Name": f"{planet}-D9"},
|
|
"PlanetDashamamshaD10Sign": {"Name": f"{planet}-D10"},
|
|
}
|
|
},
|
|
}, 1, []
|
|
|
|
monkeypatch.setattr(collector.adapter, "_post_official_snapshot_section", fake_post)
|
|
output = tmp_path / "packet.json"
|
|
report = collector.collect_chart_core(
|
|
collector.adapter.PARITY_CASES["beijing_first_use_demo"],
|
|
case_id="beijing_first_use_demo",
|
|
planets=["Sun", "Moon"],
|
|
output_path=output,
|
|
)
|
|
|
|
stored = json.loads(output.read_text(encoding="utf-8"))
|
|
assert report["status"] == "ok"
|
|
assert stored["coverage"]["sections"] == [
|
|
"D2", "D4", "D9", "D10", "shadbala_total", "shadbala_components", "ashtakavarga_bav", "ashtakavarga_sav"
|
|
]
|
|
assert stored["fanout_statuses"] == {"Moon": "ok", "Sun": "ok"}
|
|
assert stored["scalar_statuses"] == {
|
|
"ashtakavarga_bav": "ok",
|
|
"ashtakavarga_sav": "ok",
|
|
"ashtakavarga_sav_chart": "ok",
|
|
"shadbala": "ok",
|
|
}
|
|
assert stored["component_statuses"] == {"Moon.chesta": "ok", "Sun.chesta": "ok"}
|
|
assert len(stored["response_hash"]) == 64
|
|
assert "must-not-leak" not in output.read_text(encoding="utf-8")
|