use color_eyre::eyre;
#[path = "common/chart_instances.rs"]
mod chart_instances;
#[path = "common/schema_roundtrip.rs"]
mod schema_roundtrip;
#[path = "common/values_yaml.rs"]
mod values_yaml;
#[test]
fn sealed_secrets_ranged_namespaces_domain_holds() -> eyre::Result<()> {
let schema = schema_roundtrip::generate_chart_schema_for_path("sealed-secrets")?;
let validator = jsonschema::validator_for(&schema).expect("schema validator");
let ranged = |value: serde_json::Value| {
chart_instances::with_override(
"sealed-secrets",
serde_json::json!({
"rbac": { "create": true, "namespacedRoles": true, "clusterRole": false },
"additionalNamespaces": value
}),
)
.expect("compose sealed-secrets instance")
};
for value in [
serde_json::json!(["ns-a"]),
serde_json::json!(2),
serde_json::json!(0),
serde_json::json!(-1),
serde_json::json!(null),
] {
assert!(
validator.is_valid(&ranged(value.clone())),
"range iterates {value} in the namespaced-roles branch"
);
}
for value in [serde_json::json!("ns-a"), serde_json::json!(2.5)] {
assert!(
!validator.is_valid(&ranged(value.clone())),
"range cannot iterate {value}"
);
}
assert!(
validator.is_valid(&chart_instances::with_override(
"sealed-secrets",
serde_json::json!({
"rbac": { "namespacedRoles": false },
"additionalNamespaces": "ns-a"
})
)?),
"outside the ranged branch only join consumes the value"
);
Ok(())
}