46 lines
1.3 KiB
Rust
46 lines
1.3 KiB
Rust
#[path = "../src/control.rs"]
|
|
mod control;
|
|
|
|
use std::os::unix::fs::PermissionsExt;
|
|
use tempfile::tempdir;
|
|
use tokio::time::{sleep, Duration};
|
|
|
|
#[tokio::test]
|
|
async fn control_commands_and_socket_permissions() {
|
|
let dir = tempdir().unwrap();
|
|
let path = dir.path().join("control.sock");
|
|
let state = control::ControlState::default();
|
|
state.set_status("ready").await;
|
|
state.set_stats_json("{\"packets\":3}").await;
|
|
let server = control::ControlServer::bind(&path, state.clone())
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(
|
|
std::fs::metadata(&path).unwrap().permissions().mode() & 0o777,
|
|
0o600
|
|
);
|
|
let task = tokio::spawn(server.run());
|
|
sleep(Duration::from_millis(10)).await;
|
|
assert!(control::send_command(&path, "status")
|
|
.await
|
|
.unwrap()
|
|
.contains("ready"));
|
|
assert!(control::send_command(&path, "stats")
|
|
.await
|
|
.unwrap()
|
|
.contains("packets"));
|
|
assert!(control::send_command(&path, "reconnect")
|
|
.await
|
|
.unwrap()
|
|
.contains("true"));
|
|
assert!(control::send_command(&path, "reload")
|
|
.await
|
|
.unwrap()
|
|
.contains("true"));
|
|
assert!(control::send_command(&path, "shutdown")
|
|
.await
|
|
.unwrap()
|
|
.contains("true"));
|
|
task.await.unwrap().unwrap();
|
|
}
|