29 lines
1,015 B
Python
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
|