#![allow(clippy::expect_used, clippy::unwrap_used)]
use super::{escape_json_string, print_verify_report_json};
#[test]
fn hostile_input_is_escaped_correctly() {
let hostile = "quote\"back\\slash\nnewline\ttab\u{1}control";
let escaped = escape_json_string(hostile);
assert_eq!(
escaped,
r#""quote\"back\\slash\nnewline\ttab\u0001control""#
);
}
#[test]
fn missing_stage_outcome_is_refused_not_panicked() {
let root = std::env::temp_dir().join(format!(
"prikk-cli-rfc121-json-panic-{}-{}",
std::process::id(),
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_nanos()
));
std::fs::create_dir_all(&root).unwrap();
let layout = prikk_store::RepositoryLayout::init(root.clone()).expect("init");
let mut report =
prikk_store::verify_repository_with_options(&layout, prikk_store::VerifyOptions::default())
.expect("a freshly initialized repository verifies");
let _ = std::fs::remove_dir_all(&root);
assert!(
!report.stage_outcomes.is_empty(),
"a real report must cover at least one stage"
);
report.stage_outcomes.pop();
let err = print_verify_report_json(&report)
.expect_err("a report missing a declared stage outcome must be refused, not panic");
assert!(err.contains("missing an outcome"), "{err}");
}