rpki/tests/test_aspa_validate_ee_resources.rs
2026-02-02 15:42:30 +08:00

85 lines
2.5 KiB
Rust

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