47 lines
1.6 KiB
Rust
47 lines
1.6 KiB
Rust
use rpki::data_model::roa::{RoaDecodeError, RoaObject, RoaProfileError};
|
|
use rpki::data_model::signed_object::RpkiSignedObject;
|
|
|
|
#[test]
|
|
fn decode_roa_fixture_smoke() {
|
|
let der = std::fs::read("tests/fixtures/repository/rpki.cernet.net/repo/cernet/0/AS4538.roa")
|
|
.expect("read ROA fixture");
|
|
let roa = RoaObject::decode_der(&der).expect("decode roa");
|
|
roa.validate_profile().expect("validate ROA profile");
|
|
assert_eq!(
|
|
roa.econtent_type,
|
|
rpki::data_model::oid::OID_CT_ROUTE_ORIGIN_AUTHZ
|
|
);
|
|
assert_eq!(roa.roa.version, 0);
|
|
assert_eq!(roa.roa.as_id, 4538);
|
|
assert!(!roa.roa.ip_addr_blocks.is_empty());
|
|
assert!(
|
|
roa.roa
|
|
.ip_addr_blocks
|
|
.iter()
|
|
.all(|f| !f.addresses.is_empty())
|
|
);
|
|
println!("{roa:#?}");
|
|
}
|
|
|
|
#[test]
|
|
fn from_signed_object_accepts_roa_fixture() {
|
|
let der = std::fs::read("tests/fixtures/repository/rpki.cernet.net/repo/cernet/0/AS4538.roa")
|
|
.expect("read ROA fixture");
|
|
let so = RpkiSignedObject::decode_der(&der).expect("decode signed object");
|
|
let roa = RoaObject::from_signed_object(so).expect("from_signed_object");
|
|
roa.validate_profile().expect("validate ROA profile");
|
|
}
|
|
|
|
#[test]
|
|
fn decode_rejects_non_roa_econtent_type() {
|
|
let der = std::fs::read(
|
|
"tests/fixtures/repository/rpki.cernet.net/repo/cernet/0/05FC9C5B88506F7C0D3F862C8895BED67E9F8EBA.mft",
|
|
)
|
|
.expect("read MFT fixture");
|
|
let err = RoaObject::decode_der(&der).unwrap_err();
|
|
assert!(matches!(
|
|
err,
|
|
RoaDecodeError::Validate(RoaProfileError::InvalidEContentType(_))
|
|
));
|
|
}
|