rpki/tests/test_pipeline.rs
2026-04-15 15:43:59 +08:00

44 lines
1.3 KiB
Rust

use std::fs;
use std::path::PathBuf;
use rpki::source::pipeline::{PayloadLoadConfig, load_payloads_from_latest_sources};
use tempfile::tempdir;
fn data_dir() -> String {
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("data")
.to_string_lossy()
.to_string()
}
#[test]
fn load_payloads_rejects_entire_slurm_set_when_any_file_is_invalid() {
let slurm_dir = tempdir().expect("create temp slurm dir");
let valid = r#"{
"slurmVersion": 1,
"validationOutputFilters": {
"prefixFilters": [],
"bgpsecFilters": []
},
"locallyAddedAssertions": {
"prefixAssertions": [],
"bgpsecAssertions": []
}
}"#;
fs::write(slurm_dir.path().join("01-valid.slurm"), valid).expect("write valid slurm");
fs::write(slurm_dir.path().join("02-invalid.slurm"), "{").expect("write invalid slurm");
let config = PayloadLoadConfig {
ccr_dir: data_dir(),
slurm_dir: Some(slurm_dir.path().to_string_lossy().to_string()),
strict_ccr_validation: false,
};
let err = load_payloads_from_latest_sources(&config).unwrap_err();
let text = err.to_string();
assert!(text.contains("failed to parse SLURM file"));
assert!(text.contains("02-invalid.slurm"));
}