65 lines
1.9 KiB
Rust
65 lines
1.9 KiB
Rust
use std::process::Command;
|
|
|
|
fn command() -> Command {
|
|
let mut cmd = Command::new(env!("CARGO_BIN_EXE_panda-rpki"));
|
|
cmd.env_remove("PANDA_RPKI_LOG_LEVEL")
|
|
.env_remove("PANDA_RPKI_LOG_FORMAT");
|
|
cmd
|
|
}
|
|
|
|
#[test]
|
|
fn help_is_successful_and_goes_to_stdout() {
|
|
for args in [vec![], vec!["--help"], vec!["-h"]] {
|
|
let result = command().args(args).output().unwrap();
|
|
assert!(result.status.success());
|
|
assert!(String::from_utf8_lossy(&result.stdout).contains("panda-rpki"));
|
|
assert!(result.stderr.is_empty());
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_command_returns_two_without_stdout() {
|
|
let result = command().arg("not-a-command").output().unwrap();
|
|
assert_eq!(result.status.code(), Some(2));
|
|
assert!(result.stdout.is_empty());
|
|
assert!(String::from_utf8_lossy(&result.stderr).contains("unknown command"));
|
|
}
|
|
|
|
#[test]
|
|
fn malformed_validation_arguments_do_not_create_outputs() {
|
|
let directory = tempfile::tempdir().unwrap();
|
|
for args in [
|
|
vec!["validate", "--out", "output"],
|
|
vec!["validate", "--unknown", "value"],
|
|
vec!["validate", "--out"],
|
|
] {
|
|
let result = command()
|
|
.current_dir(directory.path())
|
|
.args(args)
|
|
.output()
|
|
.unwrap();
|
|
assert_eq!(result.status.code(), Some(2));
|
|
assert!(result.stdout.is_empty());
|
|
assert_eq!(std::fs::read_dir(directory.path()).unwrap().count(), 0);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn missing_daemon_state_root_fails_without_creating_state() {
|
|
let directory = tempfile::tempdir().unwrap();
|
|
let result = command()
|
|
.current_dir(directory.path())
|
|
.args([
|
|
"daemon",
|
|
"--",
|
|
"--tal",
|
|
"missing.tal",
|
|
"--ta",
|
|
"missing.cer",
|
|
])
|
|
.output()
|
|
.unwrap();
|
|
assert_eq!(result.status.code(), Some(2));
|
|
assert_eq!(std::fs::read_dir(directory.path()).unwrap().count(), 0);
|
|
}
|