use rpki::data_model::aspa::{AspaEContent, AspaValidateError, EeAspaResources}; fn test_aspa() -> AspaEContent { AspaEContent { version: 1, customer_as_id: 64496, provider_as_ids: vec![64497], } } #[test] fn validate_accepts_when_customer_matches_ee_asid() { let aspa = test_aspa(); let ee = EeAspaResources { as_id: Some(64496), as_resources_inherit: false, as_resources_range_present: false, ip_resources_present: false, }; aspa.validate_against_ee_resources(&ee) .expect("customer must match"); } #[test] fn validate_rejects_missing_as_resources() { let aspa = test_aspa(); let ee = EeAspaResources { as_id: None, as_resources_inherit: false, as_resources_range_present: false, ip_resources_present: false, }; let err = aspa.validate_against_ee_resources(&ee).unwrap_err(); assert!(matches!(err, AspaValidateError::EeAsResourcesMissing)); } #[test] fn validate_rejects_as_resources_inherit_or_ranges() { let aspa = test_aspa(); let ee = EeAspaResources { as_id: Some(64496), as_resources_inherit: true, as_resources_range_present: false, ip_resources_present: false, }; let err = aspa.validate_against_ee_resources(&ee).unwrap_err(); assert!(matches!(err, AspaValidateError::EeAsResourcesInherit)); let ee = EeAspaResources { as_id: Some(64496), as_resources_inherit: false, as_resources_range_present: true, ip_resources_present: false, }; let err = aspa.validate_against_ee_resources(&ee).unwrap_err(); assert!(matches!(err, AspaValidateError::EeAsResourcesRangePresent)); } #[test] fn validate_rejects_customer_mismatch() { let aspa = test_aspa(); let ee = EeAspaResources { as_id: Some(64511), as_resources_inherit: false, as_resources_range_present: false, ip_resources_present: false, }; let err = aspa.validate_against_ee_resources(&ee).unwrap_err(); assert!(matches!(err, AspaValidateError::CustomerAsIdMismatch { .. })); } #[test] fn validate_rejects_ip_resources_present() { let aspa = test_aspa(); let ee = EeAspaResources { as_id: Some(64496), as_resources_inherit: false, as_resources_range_present: false, ip_resources_present: true, }; let err = aspa.validate_against_ee_resources(&ee).unwrap_err(); assert!(matches!(err, AspaValidateError::EeIpResourcesPresent)); }