36 lines
1.3 KiB
Rust
36 lines
1.3 KiB
Rust
use rpki::data_model::manifest::{ManifestEContent, ManifestObject};
|
|
|
|
#[test]
|
|
fn decode_manifest_fixture_smoke() {
|
|
let der = std::fs::read(
|
|
"tests/fixtures/repository/rpki.cernet.net/repo/cernet/0/05FC9C5B88506F7C0D3F862C8895BED67E9F8EBA.mft",
|
|
)
|
|
.expect("read MFT fixture");
|
|
let mft = ManifestObject::decode_der(&der).expect("decode manifest object");
|
|
|
|
assert_eq!(mft.manifest.version, 0);
|
|
assert_eq!(mft.manifest.file_hash_alg, rpki::data_model::oid::OID_SHA256);
|
|
assert!(mft.manifest.next_update > mft.manifest.this_update);
|
|
assert!(!mft.manifest.files.is_empty());
|
|
// The manifest file MUST NOT be listed in its own fileList.
|
|
assert!(mft
|
|
.manifest
|
|
.files
|
|
.iter()
|
|
.all(|f| !f.file_name.to_ascii_lowercase().ends_with(".mft")));
|
|
}
|
|
|
|
#[test]
|
|
fn decode_manifest_econtent_from_fixture_signed_object() {
|
|
let so_der = std::fs::read(
|
|
"tests/fixtures/repository/rpki.cernet.net/repo/cernet/0/05FC9C5B88506F7C0D3F862C8895BED67E9F8EBA.mft",
|
|
)
|
|
.expect("read MFT fixture");
|
|
let so = rpki::data_model::signed_object::RpkiSignedObject::decode_der(&so_der)
|
|
.expect("decode signed object");
|
|
let e = ManifestEContent::decode_der(&so.signed_data.encap_content_info.econtent)
|
|
.expect("decode manifest eContent");
|
|
assert_eq!(e.version, 0);
|
|
}
|
|
|