use liven::config::AppConfig;
use liven::storage::StorageEngine;
use tempfile::tempdir;
#[test]
fn test_auto_security_mode_development() {
let temp_dir = tempdir().unwrap();
let test_toml = temp_dir.path().join("liven.toml");
let config_content = r#"
[server]
environment = "development"
[storage]
data_directory = "./data"
"#;
std::fs::write(&test_toml, config_content).unwrap();
let config = AppConfig::load().unwrap();
assert!(config.security.mode == "auth_key" || config.security.mode == "none");
}
#[test]
fn test_auto_security_mode_production() {
let temp_dir = tempdir().unwrap();
let test_toml = temp_dir.path().join("liven.toml");
let config_content = r#"
[server]
environment = "production"
[storage]
data_directory = "./data"
"#;
std::fs::write(&test_toml, config_content).unwrap();
let config = AppConfig::load().unwrap();
assert_eq!(config.security.mode, "auth_key");
}
#[test]
fn test_index_ram_limit_error_message() {
let temp_dir = tempdir().unwrap();
let data_dir = temp_dir.path();
let mut engine = StorageEngine::new(data_dir, 16 * 1024 * 1024).unwrap();
engine.set_max_index_ram_bytes(1);
let result = engine.append(
"test_stream",
"test_key",
liven::types::DataValue::String("test_value".to_string()),
false,
);
assert!(result.is_err());
if let Err(e) = result {
let error_msg = e.to_string();
assert!(error_msg.contains("Index RAM limit reached"));
assert!(error_msg.contains("bytes used of"));
assert!(error_msg.contains("bytes"));
assert!(error_msg.contains("set max_index_ram_mb"));
assert!(error_msg.contains("liven.toml"));
}
}
#[test]
fn test_config_profiles_documentation_exists() {
let config_content = std::fs::read_to_string("liven.toml").unwrap();
assert!(config_content.contains("RECOMMENDED CONFIGURATION PROFILES"));
assert!(config_content.contains("Edge/Embedded Profile"));
assert!(config_content.contains("Development Profile"));
assert!(config_content.contains("Production Profile"));
assert!(config_content.contains("High-Volume Profile"));
assert!(config_content.contains("NOT active TOML sections"));
assert!(config_content.contains("examples only"));
}
#[test]
fn test_auto_ram_detection_formula() {
assert_eq!(liven::sysinfo::calculate_auto_budget(128), 32); assert_eq!(liven::sysinfo::calculate_auto_budget(256), 64); assert_eq!(liven::sysinfo::calculate_auto_budget(1024), 256); assert_eq!(liven::sysinfo::calculate_auto_budget(4096), 1024); assert_eq!(liven::sysinfo::calculate_auto_budget(16384), 4096); }