49 lines
1.7 KiB
Rust
49 lines
1.7 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` |"
|
|
));
|
|
assert!(
|
|
reference
|
|
.contains("| `CRANK_DATABASE_URL` | `database.url` | `Shared` | `url/-` | `blank` |")
|
|
);
|
|
assert!(reference.contains(
|
|
"| `CRANK_LOG_LEVEL` | `observability.log_filter` | `Shared` | `string/-` | `blank` |"
|
|
));
|
|
}
|
|
|
|
#[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"));
|
|
}
|