teleo-infrastructure/tests/test_private_receipt_io.py

29 lines
1,015 B
Python

from __future__ import annotations
import json
from pathlib import Path
from ops.private_receipt_io import print_private_receipt_summary, write_private_json
def test_stdout_summary_never_replays_private_receipt_payload(tmp_path: Path, capsys) -> None:
output = tmp_path / "private" / "receipt.json"
payload = {
"artifact": "private_test_receipt",
"status": "pass",
"private_claim_body": "must-not-appear-on-stdout",
"database_password": "must-not-appear-on-stdout-either",
}
write_private_json(output, payload)
print_private_receipt_summary(output, payload)
stdout = capsys.readouterr().out
summary = json.loads(stdout)
assert "must-not-appear" not in stdout
assert summary["artifact"] == "private_test_receipt"
assert summary["status"] == "pass"
assert summary["output_name"] == output.name
assert str(output.parent) not in stdout
assert len(summary["output_sha256"]) == 64
assert output.stat().st_mode & 0o777 == 0o600