mod common;
use std::time::{Duration, Instant};
use technitium::Client;
#[tokio::test]
#[ignore = "requires running Technitium server"]
async fn connect_timeout_fires() {
let client = Client::builder()
.base_url("http://192.0.2.1:5380")
.connect_timeout(Duration::from_secs(2))
.request_timeout(Duration::from_secs(5))
.build()
.expect("build client");
let start = Instant::now();
let result = client.login("admin", "admin").await;
let elapsed = start.elapsed();
assert!(result.is_err(), "should fail");
assert!(
elapsed < Duration::from_secs(5),
"should fail within ~2s connect timeout, took {elapsed:?}"
);
}
#[tokio::test]
#[ignore = "requires running Technitium server"]
async fn default_timeout_allows_normal_requests() {
let client = common::build_client();
client
.login(&common::admin_username(), &common::admin_password())
.await
.expect("login with default timeouts should succeed");
let zones = client.list_zones().await;
assert!(
zones.is_ok(),
"list_zones should succeed with default timeouts"
);
}
#[tokio::test]
#[ignore = "requires running Technitium server"]
async fn pool_settings_dont_break() {
let client = Client::builder()
.base_url(common::server_url())
.pool_max_idle(2)
.pool_idle_timeout(Duration::from_secs(5))
.build()
.expect("build client with pool settings");
client
.login(&common::admin_username(), &common::admin_password())
.await
.expect("login with pool settings should succeed");
for _ in 0..5 {
client
.list_zones()
.await
.expect("list_zones should succeed");
}
}