46 lines
1.4 KiB
Rust
46 lines
1.4 KiB
Rust
use der_parser::der::parse_der;
|
|
use rpki::data_model::tal::Tal;
|
|
|
|
#[test]
|
|
fn decode_tal_fixtures_smoke() {
|
|
let fixtures = [
|
|
"tests/fixtures/tal/afrinic.tal",
|
|
"tests/fixtures/tal/apnic-rfc7730-https.tal",
|
|
"tests/fixtures/tal/arin.tal",
|
|
"tests/fixtures/tal/lacnic.tal",
|
|
"tests/fixtures/tal/ripe-ncc.tal",
|
|
];
|
|
|
|
for path in fixtures {
|
|
let raw = std::fs::read(path).expect("read TAL fixture");
|
|
let tal = Tal::decode_bytes(&raw).expect("decode TAL fixture");
|
|
|
|
assert!(
|
|
!tal.ta_uris.is_empty(),
|
|
"TA URI list must be non-empty: {path}"
|
|
);
|
|
assert!(
|
|
!tal.subject_public_key_info_der.is_empty(),
|
|
"SPKI DER must be non-empty: {path}"
|
|
);
|
|
|
|
for u in &tal.ta_uris {
|
|
assert!(
|
|
matches!(u.scheme(), "rsync" | "https"),
|
|
"scheme must be allowed: {u}"
|
|
);
|
|
assert!(
|
|
!u.path().ends_with('/'),
|
|
"TA URI must not be a directory: {u}"
|
|
);
|
|
}
|
|
|
|
// SPKI DER must be parseable as a DER object (typically a SEQUENCE).
|
|
let (rem, _obj) = parse_der(&tal.subject_public_key_info_der).expect("parse spki DER");
|
|
assert!(
|
|
rem.is_empty(),
|
|
"SPKI DER must not have trailing bytes: {path}"
|
|
);
|
|
}
|
|
}
|