Files
rust-xmpp/tests/cli.rs
T
2026-10-20 15:59:55 +07:00

59 lines
1.7 KiB
Rust

use std::process::Command;
fn command() -> Command {
Command::new(env!("CARGO_BIN_EXE_rust-xmpp"))
}
#[test]
fn conversion_preserves_source_and_refuses_overwrite() {
let dir = tempfile::tempdir().unwrap();
let source = dir.path().join("config.lua");
let output = dir.path().join("config.yaml");
let input = "VirtualHost 'test.local'\npassword='TEST-SECRET'";
std::fs::write(&source, input).unwrap();
let result = command()
.args([
"convert",
source.to_str().unwrap(),
"yaml",
output.to_str().unwrap(),
])
.output()
.unwrap();
assert!(result.status.success());
assert!(!String::from_utf8_lossy(&result.stdout).contains("TEST-SECRET"));
assert!(
std::fs::read_to_string(&output)
.unwrap()
.contains("TEST-SECRET")
);
assert_eq!(std::fs::read_to_string(&source).unwrap(), input);
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;
assert_eq!(
std::fs::metadata(&output).unwrap().permissions().mode() & 0o777,
0o600
);
}
let bytes = std::fs::read(&output).unwrap();
assert!(
!command()
.args([
"convert",
source.to_str().unwrap(),
"yaml",
output.to_str().unwrap()
])
.output()
.unwrap()
.status
.success()
);
assert_eq!(std::fs::read(&output).unwrap(), bytes);
}
#[test]
fn server_cannot_be_mistaken_for_running_service() {
let output = command().arg("serve").output().unwrap();
assert!(!output.status.success());
assert!(String::from_utf8_lossy(&output.stderr).contains("not implemented"));
}