use serde_json::{Value, json};
use super::enroll;
use crate::test_support::{Scratch, wire};
const CA: &str = "-----BEGIN CERTIFICATE-----\nnotreal-ca\n-----END CERTIFICATE-----\n";
const CERT: &str = "-----BEGIN CERTIFICATE-----\nnotreal-leaf\n-----END CERTIFICATE-----\n";
const KEY: &str = "-----BEGIN notreal KEY-----\nnotreal-key\n-----END notreal KEY-----\n";
fn minted() -> Value {
json!({
"ok": true,
"kind": "enrolled",
"grade": "foot",
"name": "phone-1",
"address": "engine.invalid:7737",
"ca": CA,
"cert": CERT,
"key": KEY,
})
}
fn tree(at: &std::path::Path) -> Vec<String> {
let mut found = Vec::new();
walk(at, at, &mut found);
found.sort();
found
}
fn walk(root: &std::path::Path, at: &std::path::Path, out: &mut Vec<String>) {
let Ok(entries) = std::fs::read_dir(at) else {
return;
};
for entry in entries.flatten() {
let path = entry.path();
if path.is_dir() {
walk(root, &path, out);
} else {
let len = std::fs::metadata(&path).map_or(0, |held| held.len());
let shown = path.strip_prefix(root).unwrap_or(&path).display();
out.push(format!("{shown} ({len})"));
}
}
}
fn spent(answer: Vec<Value>) -> (crate::cli::Verdict, Vec<String>, Vec<String>) {
let scratch = Scratch::new();
let _engine = wire::wired(&scratch, &wire::flat(), vec![answer]);
let before = tree(scratch.path());
let verdict = enroll(scratch.path(), "home", "phone-1", "foot", None);
let after = tree(scratch.path());
(verdict, before, after)
}
mod faults;
mod said;