commit frequently please

This commit is contained in:
lda
2026-04-06 16:20:48 +07:00 Unverified
parent 9fcb191a8e
commit 0048d5938e
4 changed files with 226 additions and 17 deletions
+81
View File
@@ -0,0 +1,81 @@
use std::net::IpAddr;
use wakey::{broadcast_wake_targets, get_interface_summaries, get_status, get_status_for_input};
use wakey_core::{DeviceFilters, DeviceQuery};
#[tokio::test]
#[ignore = "runs against live router data; use on-device or via scripts/test_remote.ps1"]
async fn interfaces_real_router_prints_interface_summaries() -> anyhow::Result<()> {
let interfaces = get_interface_summaries().await?;
assert!(
!interfaces.is_empty(),
"expected at least one non-loopback interface summary"
);
println!("{}", serde_json::to_string_pretty(&interfaces)?);
Ok(())
}
#[tokio::test]
#[ignore = "runs against live router data; use on-device or via scripts/test_remote.ps1"]
async fn status_real_router_default_query_returns_rows_or_empty_cleanly() -> anyhow::Result<()> {
let status = get_status(DeviceQuery::default()).await?;
println!("{}", serde_json::to_string_pretty(&status)?);
Ok(())
}
#[tokio::test]
#[ignore = "runs against live router data; use on-device or via scripts/test_remote.ps1"]
async fn status_real_router_for_interface_filter_succeeds() -> anyhow::Result<()> {
let interfaces = get_interface_summaries().await?;
let first = interfaces
.first()
.map(|iface| iface.ifname.clone())
.expect("expected at least one interface");
let status = get_status(DeviceQuery {
name: None,
filter: DeviceFilters {
devs: vec![first.clone()],
..Default::default()
},
})
.await?;
println!("filtered dev: {first}");
println!("{}", serde_json::to_string_pretty(&status)?);
Ok(())
}
#[tokio::test]
#[ignore = "runs against live router data; use on-device or via scripts/test_remote.ps1"]
async fn status_real_router_string_input_for_interface_succeeds() -> anyhow::Result<()> {
let interfaces = get_interface_summaries().await?;
let first = interfaces
.first()
.map(|iface| iface.ifname.clone())
.expect("expected at least one interface");
let status = get_status_for_input(first.clone()).await?;
println!("selector: {first}");
println!("{}", serde_json::to_string_pretty(&status)?);
Ok(())
}
#[tokio::test]
#[ignore = "runs against live router data; use on-device or via scripts/test_remote.ps1"]
async fn broadcast_wake_targets_real_router_resolve_from_interfaces() -> anyhow::Result<()> {
let mac: macaddr::MacAddr = "aa:bb:cc:dd:ee:ff".parse()?;
let targets = broadcast_wake_targets(mac).await?;
assert!(
targets.iter().all(|target| target.mac == Some(mac)),
"all broadcast targets should preserve the requested MAC"
);
assert!(
targets.iter().all(|target| matches!(target.ip, Some(IpAddr::V4(_)))),
"broadcast targets should be IPv4 broadcast destinations"
);
println!("{}", serde_json::to_string_pretty(&targets)?);
Ok(())
}