blob: 8136a7da9b1c675f615e8c82176b2bc9fba39649 [file] [log] [blame]
use std::process::Command;
/// Gets the path of the `hwtrust` binary that works with `atest` and `Cargo`.
fn hwtrust_bin() -> &'static str {
option_env!("CARGO_BIN_EXE_hwtrust").unwrap_or("./hwtrust")
}
#[test]
fn exit_code_for_good_chain() {
let output = Command::new(hwtrust_bin())
.args(["dice-chain", "testdata/dice/valid_ed25519.chain"])
.output()
.unwrap();
assert!(output.status.success());
}
#[test]
fn exit_code_for_bad_chain() {
let output = Command::new(hwtrust_bin())
.args(["dice-chain", "testdata/dice/bad_p256.chain"])
.output()
.unwrap();
assert!(!output.status.success());
}
#[test]
fn factory_csr_empty_input_fails() {
let output = Command::new(hwtrust_bin())
.args(["dice-chain", "testdata/dice/bad_p256.chain"])
.output()
.unwrap();
assert!(!output.status.success());
}
#[test]
fn factory_csr_multiple_valid_csrs_succeeds() {
// Input file intentionally has some blank lines, ensuring we skip over them expectedly
let output = Command::new(hwtrust_bin())
.args(["factory-csr", "testdata/factory_csr/all_versions_valid.json"])
.output()
.unwrap();
assert!(output.status.success());
}
#[test]
fn factory_csr_one_invalid_csr_of_multiple_fails() {
let output = Command::new(hwtrust_bin())
.args(["factory-csr", "testdata/factory_csr/all_versions_invalid.json"])
.output()
.unwrap();
assert!(!output.status.success());
}
#[test]
fn exit_code_for_good_csr() {
let output =
Command::new(hwtrust_bin()).args(["csr", "testdata/csr/valid_csr.cbor"]).output().unwrap();
assert!(output.status.success());
}
#[test]
fn exit_code_for_bad_csr() {
let output =
Command::new(hwtrust_bin()).args(["csr", "testdata/csr/bad_csr.cbor"]).output().unwrap();
assert!(!output.status.success());
}