Files
khadhroony-solana-project/crates/ksp-app-config-desk/unit_tests/environment.rs
2026-08-16 16:26:03 +02:00

92 lines
4.6 KiB
Rust

// file: crates/ksp-app-config-desk/unit_tests/environment.rs
// version: 2
#[test]
fn namespace_projection_distinguishes_ksp_and_kspb_sensitivity_families() {
assert_eq!(super::namespace_label("KSP_LOGS_DIRECTORY"), "KSP");
assert_eq!(super::namespace_label("KSP_PUBLIC_RPC_URL"), "KSP_PUBLIC");
assert_eq!(super::namespace_label("KSP_SECRET_API_KEY"), "KSP_SECRET");
assert_eq!(super::namespace_label("KSPB_WORKER_MODE"), "KSPB");
assert_eq!(super::namespace_label("KSPB_PUBLIC_ENDPOINT"), "KSPB_PUBLIC");
assert_eq!(super::namespace_label("KSPB_SECRET_TOKEN"), "KSPB_SECRET");
}
#[test]
fn environment_labels_cover_config_sources_and_sensitivities() {
assert_eq!(super::environment_source_label(std::option::Option::Some(ksp_config_lib::ConfigEnvironmentSource::Process)), "process");
assert_eq!(super::environment_source_label(std::option::Option::Some(ksp_config_lib::ConfigEnvironmentSource::DotEnv)), "dotenv");
assert_eq!(super::environment_source_label(std::option::Option::Some(ksp_config_lib::ConfigEnvironmentSource::Fallback)), "fallback");
assert_eq!(super::environment_source_label(std::option::Option::None), "none");
assert_eq!(super::sensitivity_label(ksp_config_lib::ConfigSensitivity::Public), "public");
assert_eq!(super::sensitivity_label(ksp_config_lib::ConfigSensitivity::Internal), "internal");
assert_eq!(super::sensitivity_label(ksp_config_lib::ConfigSensitivity::Secret), "secret");
}
#[test]
fn mutation_sensitivity_is_owned_by_config_namespace_rules() {
let public = super::mutation_sensitivity("KSP_PUBLIC_TEST_VALUE");
assert!(public.is_ok());
if let std::result::Result::Ok(value) = public {
assert_eq!(value, ksp_config_lib::ConfigSensitivity::Public);
}
let secret = super::mutation_sensitivity("KSP_SECRET_TEST_VALUE");
assert!(secret.is_ok());
if let std::result::Result::Ok(value) = secret {
assert_eq!(value, ksp_config_lib::ConfigSensitivity::Secret);
}
let internal = super::mutation_sensitivity("KSPB_TEST_VALUE");
assert!(internal.is_ok());
if let std::result::Result::Ok(value) = internal {
assert_eq!(value, ksp_config_lib::ConfigSensitivity::Internal);
}
assert!(super::mutation_sensitivity("EXTERNAL_TEST_VALUE").is_err());
}
#[test]
fn mutation_operation_labels_are_stable() {
assert_eq!(super::EnvironmentMutationOperation::Set.label(), "set");
assert_eq!(super::EnvironmentMutationOperation::Remove.label(), "remove");
}
#[test]
fn committed_environment_report_is_safe_and_deterministic_when_present() {
let management = committed_management();
assert!(management.is_ok(), "committed management should construct: {management:?}");
if let std::result::Result::Ok(management) = management {
let report = super::report_from_management(&management);
assert!(report.is_ok(), "environment report should project safely: {report:?}");
if let std::result::Result::Ok(report) = report {
let mut previous = std::option::Option::<&str>::None;
for entry in &report {
if let std::option::Option::Some(previous) = previous {
assert!(previous <= entry.variable_name.as_str());
}
if entry.sensitivity == "secret" {
if let std::option::Option::Some(value) = entry.desired_safe_value.as_deref() {
assert_eq!(value, ksp_config_lib::REDACTED_CONFIG_VALUE);
}
if let std::option::Option::Some(value) = entry.effective_safe_value.as_deref() {
assert_eq!(value, ksp_config_lib::REDACTED_CONFIG_VALUE);
}
}
previous = std::option::Option::Some(entry.variable_name.as_str());
}
}
}
}
fn committed_management() -> ksp_core_lib::Result<ksp_config_lib::ConfigManagement> {
let workspace = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../..");
let bootstrap = ksp_config_lib::ConfigBootstrapOptions::from_paths(workspace.join("config"), workspace.join("config/schemas"));
let bootstrap = match bootstrap {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
let registry = ksp_config_lib::ConfigFileRegistry::defaults();
let registry = match registry {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
return std::result::Result::Ok(ksp_config_lib::ConfigManagement::new(ksp_config_lib::ConfigDocumentEngine::new(bootstrap, registry)));
}