use trusty_review::service::DEFAULT_PORT;
#[allow(dead_code)]
pub fn daemon_base_url() -> String {
match trusty_common::read_daemon_addr("trusty-review") {
Ok(Some(addr)) if !addr.is_empty() => format!("http://{addr}"),
_ => format!("http://127.0.0.1:{DEFAULT_PORT}"),
}
}
#[allow(dead_code)]
pub fn read_http_addr() -> Option<String> {
trusty_common::read_daemon_addr("trusty-review")
.ok()
.flatten()
.filter(|s| !s.is_empty())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
#[serial_test::serial(trusty_data_dir)]
fn daemon_base_url_uses_default_when_file_absent() {
let tmp = tempfile::tempdir().expect("tempdir");
unsafe {
std::env::set_var("TRUSTY_DATA_DIR_OVERRIDE", tmp.path());
}
let url = daemon_base_url();
unsafe {
std::env::remove_var("TRUSTY_DATA_DIR_OVERRIDE");
}
assert!(
url.contains(&DEFAULT_PORT.to_string()),
"fallback URL must contain default port {DEFAULT_PORT}, got: {url}"
);
assert!(url.starts_with("http://"), "URL must start with http://");
}
#[test]
#[serial_test::serial(trusty_data_dir)]
fn read_http_addr_returns_none_when_file_absent() {
let tmp = tempfile::tempdir().expect("tempdir");
unsafe {
std::env::set_var("TRUSTY_DATA_DIR_OVERRIDE", tmp.path());
}
let result = read_http_addr();
unsafe {
std::env::remove_var("TRUSTY_DATA_DIR_OVERRIDE");
}
assert!(
result.is_none(),
"expected None when no discovery file is present, got: {result:?}"
);
}
#[test]
#[serial_test::serial(trusty_data_dir)]
fn daemon_base_url_prefers_file_over_default() {
let tmp = tempfile::tempdir().expect("tempdir");
let app_dir = tmp.path().join("trusty-review");
std::fs::create_dir_all(&app_dir).expect("create app dir");
let addr_file = app_dir.join("http_addr");
std::fs::write(&addr_file, "127.0.0.1:19999").expect("write addr file");
unsafe {
std::env::set_var("TRUSTY_DATA_DIR_OVERRIDE", tmp.path());
}
let url = daemon_base_url();
unsafe {
std::env::remove_var("TRUSTY_DATA_DIR_OVERRIDE");
}
assert_eq!(
url, "http://127.0.0.1:19999",
"daemon_base_url must prefer the discovery file; got: {url}"
);
}
#[test]
#[serial_test::serial(trusty_data_dir)]
fn read_http_addr_returns_addr_from_file() {
let tmp = tempfile::tempdir().expect("tempdir");
let app_dir = tmp.path().join("trusty-review");
std::fs::create_dir_all(&app_dir).expect("create app dir");
let addr_file = app_dir.join("http_addr");
std::fs::write(&addr_file, "127.0.0.1:19999").expect("write addr file");
unsafe {
std::env::set_var("TRUSTY_DATA_DIR_OVERRIDE", tmp.path());
}
let result = read_http_addr();
unsafe {
std::env::remove_var("TRUSTY_DATA_DIR_OVERRIDE");
}
assert_eq!(
result.as_deref(),
Some("127.0.0.1:19999"),
"expected addr from file; got: {result:?}"
);
}
}