Files

52 lines
1.9 KiB
Rust

use crank_config::{field_registry, render};
#[test]
fn generated_contract_is_deterministic_complete_and_redacted() {
assert_eq!(render::schema_json(), render::schema_json());
let schema: serde_json::Value = serde_json::from_str(&render::schema_json()).unwrap();
assert_eq!(
schema["fields"].as_array().unwrap().len(),
field_registry().len()
);
for section in [render::env_section(false), render::env_section(true)] {
assert!(!section.contains("change-me"));
assert!(!section.contains("CRANK_RUNTIME_MAX_CONCURRENT_WINDOW"));
assert!(!section.contains("CRANK_RUNTIME_MAX_CONCURRENT_JOBS"));
assert!(!section.contains("CRANK_CACHE_DEFAULT_TTL_MS"));
}
}
#[test]
fn generated_reference_distinguishes_required_and_optional_fields() {
let reference = render::reference_section();
assert!(reference.contains(
"| `CRANK_MASTER_KEY` | `runtime.master_key` | `Shared` | `secret/-` | `required/blank` | `>=32` |"
));
assert!(
reference
.contains("| `CRANK_DATABASE_URL` | `database.url` | `Shared` | `url/-` | `blank` |")
);
assert!(reference.contains(
"| `CRANK_LOG_LEVEL` | `observability.log_filter` | `Shared` | `string/-` | `blank` |"
));
assert!(reference.contains(
"| `CRANK_IMPORT_EXTERNAL_REFERENCE_ALLOWED_URL_PREFIXES` | `import.external_references.allowed_url_prefixes` | `AdminApi` | `url_prefix_list/-` | `` |"
));
}
#[test]
fn marker_replacement_is_bounded_to_the_generated_region() {
let input = "before\n# BEGIN GENERATED CRANK RUNTIME CONFIG\nstale\n# END GENERATED CRANK RUNTIME CONFIG\nafter\n";
let output = render::replace_marked(
input,
render::BEGIN_MARKER,
render::END_MARKER,
&render::env_section(false),
)
.unwrap();
assert!(output.starts_with("before\n"));
assert!(output.ends_with("\nafter\n"));
assert!(!output.contains("stale"));
}