feat: Add comprehensive unit tests for CLI and CertificateService, covering command parsing and certificate generation

This commit is contained in:
GW_MC
2026-03-21 03:42:47 +00:00
parent eba30f557e
commit 109d693d59
4 changed files with 707 additions and 0 deletions

View File

@@ -61,3 +61,73 @@ pub async fn handle_sub_command(
} => Ok(gen_agent_certs(settings, output, agent_id, zip).await?),
}
}
#[cfg(test)]
mod tests {
use clap::Parser;
use super::{Cli, Commands};
#[test]
fn parses_serve_mode() {
let parsed = Cli::try_parse_from(["nxmesh-master", "--serve"]);
assert!(parsed.is_ok());
let parsed = parsed.unwrap_or_else(|_| unreachable!());
assert!(parsed.serve);
assert!(!parsed.generate_ca);
assert!(parsed.command.is_none());
}
#[test]
fn parses_generate_ca_flag() {
let parsed = Cli::try_parse_from(["nxmesh-master", "--generate-ca", "--serve"]);
assert!(parsed.is_ok());
let parsed = parsed.unwrap_or_else(|_| unreachable!());
assert!(parsed.generate_ca);
assert!(parsed.serve);
}
#[test]
fn parses_gen_certs_with_default_output() {
let parsed = Cli::try_parse_from(["nxmesh-master", "gen-certs"]);
assert!(parsed.is_ok());
let parsed = parsed.unwrap_or_else(|_| unreachable!());
match parsed.command {
Some(Commands::GenCerts { output }) => {
assert_eq!(output, "./certs");
}
_ => unreachable!(),
}
}
#[test]
fn parses_gen_agent_certs_with_custom_values() {
let parsed = Cli::try_parse_from([
"nxmesh-master",
"gen-agent-certs",
"--output",
"./out",
"--agent-id",
"agent-123",
"--zip",
]);
assert!(parsed.is_ok());
let parsed = parsed.unwrap_or_else(|_| unreachable!());
match parsed.command {
Some(Commands::GenAgentCerts {
output,
agent_id,
zip,
}) => {
assert_eq!(output, "./out");
assert_eq!(agent_id, "agent-123");
assert!(zip);
}
_ => unreachable!(),
}
}
}