66 lines
3.0 KiB
Rust
66 lines
3.0 KiB
Rust
// file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_start.rs
|
|
// version: 1
|
|
|
|
#[test]
|
|
fn pre_007_stale_generation_is_rejected_before_config_or_transport_reconstruction() {
|
|
let management = crate::config_management(&[]);
|
|
assert!(management.is_ok());
|
|
let management = match management {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let request = crate::RawIngestRouteStartRequestDto {
|
|
commitment: crate::RawIngestCommitment::Confirmed,
|
|
inventory_generation: 3,
|
|
profile_id: "devnet".to_owned(),
|
|
route_id: crate::RawIngestRouteId::StandardBlockDirect,
|
|
};
|
|
let result = crate::validate_route_start(&management, 2, &request);
|
|
assert!(result.is_err());
|
|
if let std::result::Result::Err(error) = result {
|
|
assert_eq!(error.code(), crate::ERROR_CODE_ROUTE_START_STALE_INVENTORY);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn pre_007_commitments_are_bounded_to_confirmed_and_finalized() {
|
|
assert_eq!(crate::RawIngestCommitment::Confirmed.into_transport(), ksp_onchain_transport_lib::SolanaCommitment::Confirmed);
|
|
assert_eq!(crate::RawIngestCommitment::Finalized.into_transport(), ksp_onchain_transport_lib::SolanaCommitment::Finalized);
|
|
assert_eq!(crate::RawIngestCommitment::Confirmed.as_str(), "confirmed");
|
|
assert_eq!(crate::RawIngestCommitment::Finalized.as_str(), "finalized");
|
|
}
|
|
|
|
#[test]
|
|
fn pre_007_public_standard_profiles_reconstruct_block_and_http_sources_without_network_io() {
|
|
let management = crate::config_management(&[]);
|
|
assert!(management.is_ok());
|
|
let management = match management {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let inventory = crate::build_route_inventory(&management, 1);
|
|
assert!(inventory.is_ok());
|
|
let inventory = match inventory {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
for profile in inventory.profiles {
|
|
for route_id in [crate::RawIngestRouteId::StandardLogsHydrated, crate::RawIngestRouteId::StandardBlockDirect, crate::RawIngestRouteId::HttpBlockPolling]
|
|
{
|
|
let route = profile.routes.iter().find(|route| return route.route_id == route_id);
|
|
assert!(route.is_some(), "missing base route for {}", profile.profile_id);
|
|
if let std::option::Option::Some(route) = route {
|
|
assert_eq!(route.state, crate::RawIngestRouteState::Configured);
|
|
let request = crate::RawIngestRouteStartRequestDto {
|
|
commitment: crate::RawIngestCommitment::Confirmed,
|
|
inventory_generation: 1,
|
|
profile_id: profile.profile_id.clone(),
|
|
route_id,
|
|
};
|
|
let prepared = crate::validate_route_start(&management, 1, &request);
|
|
assert!(prepared.is_ok(), "failed Start-time reconstruction for {} / {}", profile.profile_id, route_id.as_str());
|
|
}
|
|
}
|
|
}
|
|
}
|