68 lines
2.4 KiB
Rust
68 lines
2.4 KiB
Rust
use std::fs;
|
|
use std::path::PathBuf;
|
|
|
|
use rpki::rtr::loader::{ParsedAspa, ParsedVrp};
|
|
use tempfile::tempdir;
|
|
use rpki::source::ccr::{find_latest_ccr_file, load_ccr_snapshot_from_file,
|
|
snapshot_to_payloads_with_options, ParsedCcrSnapshot};
|
|
|
|
fn fixture_path(name: &str) -> PathBuf {
|
|
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("data").join(name)
|
|
}
|
|
|
|
#[test]
|
|
#[ignore = "manual CCR loader smoke test for local samples"]
|
|
fn ccr_loader_smoke() {
|
|
let snapshot = load_ccr_snapshot_from_file(fixture_path("20260324T000037Z-sng1.ccr"))
|
|
.expect("load CCR snapshot");
|
|
|
|
println!("content_type_oid: {}", snapshot.content_type_oid);
|
|
println!("produced_at : {:?}", snapshot.produced_at);
|
|
println!("vrp_count : {}", snapshot.vrps.len());
|
|
println!("vap_count : {}", snapshot.vaps.len());
|
|
println!("first_vrp : {:?}", snapshot.vrps.first());
|
|
println!("first_vap : {:?}", snapshot.vaps.first());
|
|
}
|
|
|
|
#[test]
|
|
fn find_latest_ccr_file_picks_latest_name() {
|
|
let dir = tempdir().expect("create temp dir");
|
|
let older = dir.path().join("20260324T000037Z-sng1.ccr");
|
|
let newer = dir.path().join("20260324T000138Z-zur1.ccr");
|
|
let ignored = dir.path().join("notes.txt");
|
|
|
|
fs::write(&older, b"older").expect("write older ccr");
|
|
fs::write(&newer, b"newer").expect("write newer ccr");
|
|
fs::write(&ignored, b"ignored").expect("write ignored file");
|
|
|
|
let latest = find_latest_ccr_file(dir.path()).expect("find latest ccr");
|
|
|
|
assert_eq!(latest, newer);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_to_payloads_with_options_skips_invalid_aspa_when_not_strict() {
|
|
let snapshot = ParsedCcrSnapshot {
|
|
content_type_oid: "1.2.840.113549.1.9.16.1.54".to_string(),
|
|
produced_at: Some("20260324000037Z".to_string()),
|
|
vrps: vec![ParsedVrp {
|
|
prefix_addr: "192.0.2.0".parse().expect("parse IPv4"),
|
|
prefix_len: 24,
|
|
max_len: 24,
|
|
asn: 64496,
|
|
}],
|
|
vaps: vec![ParsedAspa {
|
|
customer_asn: 174,
|
|
provider_asns: vec![0],
|
|
}],
|
|
};
|
|
|
|
let conversion =
|
|
snapshot_to_payloads_with_options(&snapshot, false).expect("non-strict conversion");
|
|
|
|
assert_eq!(conversion.payloads.len(), 1);
|
|
assert!(conversion.invalid_vrps.is_empty());
|
|
assert_eq!(conversion.invalid_vaps.len(), 1);
|
|
assert!(conversion.invalid_vaps[0].contains("provider list must not contain AS0"));
|
|
}
|