use super::super::{ELSEWHERE, KEPT, enroll};
use super::{CA, CERT, KEY, minted, spent, tree};
use crate::cli::Stream;
use crate::test_support::{Scratch, wire};
#[test]
fn the_symbol_and_the_line_it_encodes_are_both_said() {
let (verdict, ..) = spent(vec![minted()]);
assert_eq!(verdict.stream, Stream::Out);
assert_eq!(verdict.code, 0, "{}", verdict.text);
let envelope = crate::reply::enrolled::Enrolled {
grade: "foot".to_owned(),
name: "phone-1".to_owned(),
address: "engine.invalid:7737".to_owned(),
ca: CA.to_owned(),
cert: CERT.to_owned(),
key: KEY.to_owned(),
}
.envelope();
assert!(envelope.contains(r#""yog-enroll":1"#), "{envelope}");
for absent in [r#""ok""#, r#""kind""#] {
assert!(!envelope.contains(absent), "{absent} travelled: {envelope}");
}
assert!(
verdict.text.contains(&envelope),
"the envelope was not said:\n{}",
verdict.text
);
assert!(
verdict.text.lines().any(|line| line == envelope),
"the envelope was said across more than one line"
);
assert!(verdict.text.contains("phone-1"), "{}", verdict.text);
assert!(
verdict.text.contains("engine.invalid:7737"),
"{}",
verdict.text
);
assert!(verdict.text.contains(KEPT), "{}", verdict.text);
assert!(
verdict.text.contains('\u{2588}') || verdict.text.contains('\u{2580}'),
"no symbol was drawn:\n{}",
verdict.text
);
}
#[test]
fn a_named_destination_gets_the_four_files_and_the_material_is_not_said() {
let scratch = Scratch::new();
let _engine = wire::wired(&scratch, &wire::flat(), vec![vec![minted()]]);
let into = scratch.path().join("carry");
let verdict = enroll(scratch.path(), "home", "phone-1", "foot", Some(&into));
assert_eq!(verdict.code, 0, "{}", verdict.text);
assert_eq!(verdict.stream, Stream::Out);
assert!(
verdict.text.contains("filed as an entry"),
"{}",
verdict.text
);
assert_eq!(
tree(&into),
vec![
format!("address ({})", "engine.invalid:7737\n".len()),
format!("ca.pem ({})", CA.len()),
format!("client.key ({})", KEY.len()),
format!("client.pem ({})", CERT.len()),
]
);
for withheld in [KEY, "notreal-key", "-----BEGIN", "yog-enroll"] {
assert!(
!verdict.text.contains(withheld),
"{withheld:?} reached stdout after the material was filed:\n{}",
verdict.text
);
}
for glyph in ['\u{2588}', '\u{2580}'] {
assert!(
!verdict.text.contains(glyph),
"the symbol was drawn beside the files:\n{}",
verdict.text
);
}
assert!(verdict.text.contains("phone-1"), "{}", verdict.text);
assert!(verdict.text.contains(ELSEWHERE), "{}", verdict.text);
assert!(!verdict.text.contains(KEPT), "{}", verdict.text);
}
#[test]
fn the_act_writes_no_file_at_all() {
let (verdict, before, after) = spent(vec![minted()]);
assert_eq!(verdict.code, 0, "{}", verdict.text);
assert_eq!(before, after, "the enrollment left something on the disk");
}
#[test]
fn the_gesture_that_crossed_is_the_verb_table_s_own() {
let scratch = Scratch::new();
let engine = wire::wired(&scratch, &wire::flat(), vec![vec![minted()]]);
let _ = enroll(scratch.path(), "home", "phone-1", "foot", None);
let heard = engine.heard();
let request = heard.last().expect("the engine was handed a request");
assert_eq!(
request,
&crate::verbs::enroll("home".to_owned(), "phone-1".to_owned(), "foot".to_owned())
);
}