use assert_cmd::Command;
use predicates::prelude::*;
fn japanese_mnem_ms1() -> String {
let ja = bip39::Mnemonic::from_entropy_in(bip39::Language::Japanese, &[0xABu8; 16])
.unwrap()
.to_string();
let encode_out = Command::cargo_bin("ms")
.unwrap()
.args(["encode", "--language", "japanese", "--phrase", &ja])
.assert()
.success()
.get_output()
.stdout
.clone();
std::str::from_utf8(&encode_out)
.unwrap()
.lines()
.next()
.unwrap()
.to_string()
}
#[test]
fn inspect_mnem_string_text_mode_ok() {
let ms1 = japanese_mnem_ms1();
Command::cargo_bin("ms")
.unwrap()
.args(["inspect", &ms1])
.assert()
.success()
.stdout(predicate::str::starts_with("OK:"))
.stdout(predicate::str::contains("kind: mnem"))
.stdout(predicate::str::contains("language: japanese"))
.stdout(predicate::str::contains("non-zero-prefix").not())
.stdout(predicate::str::contains("unexpected-string-length").not())
.stdout(predicate::str::contains("payload-length-mismatch").not())
.stdout(predicate::str::contains("FAIL").not());
}
#[test]
fn inspect_mnem_string_json_mode_ok() {
let ms1 = japanese_mnem_ms1();
Command::cargo_bin("ms")
.unwrap()
.args(["inspect", "--json", &ms1])
.assert()
.success()
.stdout(predicate::str::contains("\"would_decode\":true"))
.stdout(predicate::str::contains("\"failure_reasons\":[]"))
.stdout(predicate::str::contains("\"kind\":\"mnem\""))
.stdout(predicate::str::contains("\"language\":\"japanese\""));
}
#[test]
fn inspect_entr_string_unchanged() {
Command::cargo_bin("ms")
.unwrap()
.args(["inspect", "ms10entrsqqqqqqqqqqqqqqqqqqqqqqqqqqqqcj9sxraq34v7f"])
.assert()
.success()
.stdout(predicate::str::starts_with("OK:"))
.stdout(predicate::str::contains("kind: entr"));
}