1 use std::process::Command; 2 3 /// Gets the path of the `hwtrust` binary that works with `atest` and `Cargo`. hwtrust_bin() -> &'static str4fn hwtrust_bin() -> &'static str { 5 option_env!("CARGO_BIN_EXE_hwtrust").unwrap_or("./hwtrust") 6 } 7 8 #[test] exit_code_for_good_chain()9fn exit_code_for_good_chain() { 10 let output = Command::new(hwtrust_bin()) 11 .args(["dice-chain", "--allow-any-mode", "testdata/dice/valid_ed25519.chain"]) 12 .output() 13 .unwrap(); 14 assert!(output.status.success()); 15 } 16 17 #[test] exit_code_for_bad_chain()18fn exit_code_for_bad_chain() { 19 let output = Command::new(hwtrust_bin()) 20 .args(["dice-chain", "testdata/dice/bad_p256.chain"]) 21 .output() 22 .unwrap(); 23 assert!(!output.status.success()); 24 } 25 26 #[test] factory_csr_empty_input_fails()27fn factory_csr_empty_input_fails() { 28 let output = Command::new(hwtrust_bin()) 29 .args(["dice-chain", "testdata/dice/bad_p256.chain"]) 30 .output() 31 .unwrap(); 32 assert!(!output.status.success()); 33 } 34 35 #[test] factory_csr_multiple_valid_csrs_succeeds()36fn factory_csr_multiple_valid_csrs_succeeds() { 37 // Input file intentionally has some blank lines, ensuring we skip over them expectedly 38 let output = Command::new(hwtrust_bin()) 39 .args(["factory-csr", "testdata/factory_csr/all_versions_valid.json"]) 40 .output() 41 .unwrap(); 42 assert!(output.status.success()); 43 } 44 45 #[test] factory_csr_one_invalid_csr_of_multiple_fails()46fn factory_csr_one_invalid_csr_of_multiple_fails() { 47 let output = Command::new(hwtrust_bin()) 48 .args(["factory-csr", "testdata/factory_csr/all_versions_invalid.json"]) 49 .output() 50 .unwrap(); 51 assert!(!output.status.success()); 52 } 53 54 #[test] exit_code_for_good_csr()55fn exit_code_for_good_csr() { 56 let output = 57 Command::new(hwtrust_bin()).args(["csr", "testdata/csr/valid_csr.cbor"]).output().unwrap(); 58 assert!(output.status.success()); 59 } 60 61 #[test] exit_code_for_bad_csr()62fn exit_code_for_bad_csr() { 63 let output = 64 Command::new(hwtrust_bin()).args(["csr", "testdata/csr/bad_csr.cbor"]).output().unwrap(); 65 assert!(!output.status.success()); 66 } 67