Files
Jyotisha/tests/test_collect_vedastro_official_parity_raw.py

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")