use amp_rs::client::RetryConfig;
use std::env;
#[cfg(test)]
mod config_documentation_tests {
use super::*;
#[test]
fn test_documented_environment_variables() {
dotenvy::dotenv().ok();
env::remove_var("API_RETRY_MAX_ATTEMPTS");
env::remove_var("API_RETRY_BASE_DELAY_MS");
env::remove_var("API_RETRY_MAX_DELAY_MS");
env::remove_var("API_REQUEST_TIMEOUT_SECONDS");
env::set_var("API_RETRY_MAX_ATTEMPTS", "5");
env::set_var("API_RETRY_BASE_DELAY_MS", "2000");
env::set_var("API_RETRY_MAX_DELAY_MS", "60000");
env::set_var("API_REQUEST_TIMEOUT_SECONDS", "30");
let config =
RetryConfig::from_env().expect("Should create config from documented env vars");
assert_eq!(config.max_attempts, 5);
assert_eq!(config.base_delay_ms, 2000);
assert_eq!(config.max_delay_ms, 60000);
assert_eq!(config.timeout_seconds, 30);
env::remove_var("API_RETRY_MAX_ATTEMPTS");
env::remove_var("API_RETRY_BASE_DELAY_MS");
env::remove_var("API_RETRY_MAX_DELAY_MS");
env::remove_var("API_REQUEST_TIMEOUT_SECONDS");
}
#[test]
fn test_documented_defaults() {
env::remove_var("API_RETRY_MAX_ATTEMPTS");
env::remove_var("API_RETRY_BASE_DELAY_MS");
env::remove_var("API_RETRY_MAX_DELAY_MS");
env::remove_var("API_REQUEST_TIMEOUT_SECONDS");
let config = RetryConfig::from_env().expect("Should create config with defaults");
assert_eq!(config.max_attempts, 3, "Default max_attempts should be 3");
assert_eq!(
config.base_delay_ms, 1000,
"Default base_delay_ms should be 1000"
);
assert_eq!(
config.max_delay_ms, 30000,
"Default max_delay_ms should be 30000"
);
assert_eq!(
config.timeout_seconds, 10,
"Default timeout_seconds should be 10"
);
}
#[test]
fn test_security_dependencies_available() {
use secrecy::{ExposeSecret, Secret};
use zeroize::Zeroize;
let secret = Secret::new("test_secret".to_string());
assert_eq!(secret.expose_secret(), "test_secret");
let mut sensitive_data = "sensitive".to_string();
sensitive_data.zeroize();
assert_eq!(sensitive_data, "");
}
}