use super::*;
use crate::test_utils::{run_child_with_env as run_child, run_child_without_env};
#[test]
fn test_route_prefix_default_value() {
let prefix = &*O2P_ROUTE_PREFIX;
match std::env::var("O2P_ROUTE_PREFIX") {
Err(_) => assert_eq!(prefix, "/o2p"),
Ok(env_value) => assert_eq!(prefix, &env_value),
}
}
#[test]
fn test_route_prefix_validation() {
let prefix = &*O2P_ROUTE_PREFIX;
assert!(
prefix.starts_with('/'),
"Route prefix should start with '/'"
);
assert!(!prefix.is_empty(), "Route prefix should not be empty");
if prefix.len() > 1 {
assert!(
!prefix.ends_with('/'),
"Route prefix should not end with '/' unless it's root"
);
}
}
#[test]
fn test_demo_mode_rejects_invalid() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
let _ = *O2P_DEMO_MODE;
return;
}
let output = run_child(
"config::tests::test_demo_mode_rejects_invalid",
"O2P_DEMO_MODE",
"invalid",
);
assert!(!output.status.success());
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(stderr.contains("O2P_DEMO_MODE"));
}
#[test]
fn test_demo_mode_accepts_true() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
assert!(*O2P_DEMO_MODE);
return;
}
let output = run_child(
"config::tests::test_demo_mode_accepts_true",
"O2P_DEMO_MODE",
"true",
);
assert!(output.status.success(), "Should accept O2P_DEMO_MODE=true");
}
#[test]
fn test_demo_mode_accepts_false() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
assert!(!(*O2P_DEMO_MODE));
return;
}
let output = run_child(
"config::tests::test_demo_mode_accepts_false",
"O2P_DEMO_MODE",
"false",
);
assert!(output.status.success(), "Should accept O2P_DEMO_MODE=false");
}
#[test]
fn test_signal_api_mode_rejects_invalid() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
let _ = *PASSKEY_SIGNAL_API_MODE;
return;
}
let output = run_child(
"config::tests::test_signal_api_mode_rejects_invalid",
"PASSKEY_SIGNAL_API_MODE",
"invalid_mode",
);
assert!(!output.status.success());
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(stderr.contains("PASSKEY_SIGNAL_API_MODE"));
}
#[test]
fn test_signal_api_mode_accepts_valid() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
assert_eq!(*PASSKEY_SIGNAL_API_MODE, "direct+sync");
return;
}
let output = run_child(
"config::tests::test_signal_api_mode_accepts_valid",
"PASSKEY_SIGNAL_API_MODE",
"direct+sync",
);
assert!(
output.status.success(),
"Should accept PASSKEY_SIGNAL_API_MODE=direct+sync"
);
}
#[test]
fn test_demo_mode_defaults_to_false() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
assert!(!(*O2P_DEMO_MODE));
return;
}
let output = run_child_without_env(
"config::tests::test_demo_mode_defaults_to_false",
"O2P_DEMO_MODE",
);
assert!(output.status.success());
}
#[test]
fn test_signal_api_mode_defaults_to_direct() {
if std::env::var("__TEST_ENV_VAR_CHILD").is_ok() {
assert_eq!(*PASSKEY_SIGNAL_API_MODE, "direct");
return;
}
let output = run_child_without_env(
"config::tests::test_signal_api_mode_defaults_to_direct",
"PASSKEY_SIGNAL_API_MODE",
);
assert!(output.status.success());
}