feat: Add unit tests for CLI and MasterConnector, including certificate extraction and validation
This commit is contained in:
@@ -79,3 +79,84 @@ pub enum Commands {
|
||||
ca_cert: Option<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use clap::Parser;
|
||||
|
||||
use super::{Cli, Commands};
|
||||
|
||||
#[test]
|
||||
fn parses_serve_flag_without_subcommand() {
|
||||
let parsed = Cli::try_parse_from(["nxmesh-agent", "--serve"]);
|
||||
assert!(parsed.is_ok());
|
||||
|
||||
let parsed = parsed.ok();
|
||||
assert!(parsed.is_some());
|
||||
let parsed = parsed.unwrap_or_else(|| unreachable!());
|
||||
|
||||
assert!(parsed.serve);
|
||||
assert!(parsed.command.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_import_certs_with_zip_defaults() {
|
||||
let parsed = Cli::try_parse_from(["nxmesh-agent", "import-certs", "bundle.zip"]);
|
||||
assert!(parsed.is_ok());
|
||||
|
||||
let parsed = parsed.ok();
|
||||
assert!(parsed.is_some());
|
||||
let parsed = parsed.unwrap_or_else(|| unreachable!());
|
||||
|
||||
match parsed.command {
|
||||
Some(Commands::ImportCerts {
|
||||
zip,
|
||||
cert_name,
|
||||
key_name,
|
||||
ca_name,
|
||||
cert,
|
||||
key,
|
||||
ca_cert,
|
||||
}) => {
|
||||
assert_eq!(zip.as_deref(), Some("bundle.zip"));
|
||||
assert_eq!(cert_name.as_deref(), Some("cert.pem"));
|
||||
assert_eq!(key_name.as_deref(), Some("key.pem"));
|
||||
assert_eq!(ca_name.as_deref(), Some("ca.pem"));
|
||||
assert!(cert.is_none());
|
||||
assert!(key.is_none());
|
||||
assert!(ca_cert.is_none());
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rejects_import_certs_with_separate_files() {
|
||||
let parsed = Cli::try_parse_from([
|
||||
"nxmesh-agent",
|
||||
"import-certs",
|
||||
"--cert",
|
||||
"agent.crt",
|
||||
"--key",
|
||||
"agent.key",
|
||||
"--ca-cert",
|
||||
"ca.crt",
|
||||
]);
|
||||
assert!(parsed.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rejects_conflicting_zip_and_separate_inputs() {
|
||||
let parsed = Cli::try_parse_from([
|
||||
"nxmesh-agent",
|
||||
"import-certs",
|
||||
"bundle.zip",
|
||||
"--cert",
|
||||
"agent.crt",
|
||||
"--key",
|
||||
"agent.key",
|
||||
]);
|
||||
|
||||
assert!(parsed.is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user