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); }