xref: /aosp_15_r20/tools/security/remote_provisioning/hwtrust/tests/hwtrust_cli.rs (revision d9ecfb0f4d734c9ce41cde8ac4d585b094fd4222)
1 use std::process::Command;
2 
3 /// Gets the path of the `hwtrust` binary that works with `atest` and `Cargo`.
hwtrust_bin() -> &'static str4 fn hwtrust_bin() -> &'static str {
5     option_env!("CARGO_BIN_EXE_hwtrust").unwrap_or("./hwtrust")
6 }
7 
8 #[test]
exit_code_for_good_chain()9 fn 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()18 fn 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()27 fn 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()36 fn 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()46 fn 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()55 fn 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()62 fn 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