59 lines
1.7 KiB
Rust
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"));
|
|
}
|