v0.3.7-pre.005

This commit is contained in:
2026-09-02 12:01:35 +02:00
parent 46a4ad7487
commit 500b87ef57
19 changed files with 686 additions and 29 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-backfill-desk/unit_tests/dto_common.rs
// version: 2
// version: 3
#[test]
fn command_error_projection_excludes_arbitrary_context_and_source_values() {
@@ -17,7 +17,12 @@ fn command_error_projection_excludes_arbitrary_context_and_source_values() {
fn transport_options_projection_contains_only_safe_transport_metadata() {
let dto = crate::BackfillDeskOptionsDto {
compatible_roles: vec!["default".to_owned()],
composition_ready: true,
configured_networks: vec!["devnet".to_owned()],
network_coherent: true,
store_diagnostic: std::option::Option::None,
store_network: std::option::Option::Some("devnet".to_owned()),
store_ready: true,
transport_diagnostic: std::option::Option::None,
transport_ready: true,
};
@@ -30,5 +35,8 @@ fn transport_options_projection_contains_only_safe_transport_metadata() {
assert!(!serialized.contains("provider"));
assert!(!serialized.contains("url"));
assert!(!serialized.contains("endpoint"));
assert!(!serialized.contains("postgres"));
assert!(!serialized.contains("connection"));
assert!(!serialized.contains("database"));
}
}

View File

@@ -0,0 +1,18 @@
// file: crates/ksp-app-backfill-desk/unit_tests/store_runtime.rs
// version: 1
#[test]
fn store_health_mapping_is_explicit_and_conservative() {
assert!(super::store_health_ready(ksp_store_lib::StoreHealthState::Ready));
assert!(!super::store_health_ready(ksp_store_lib::StoreHealthState::NotReady));
}
#[test]
fn store_transport_network_coherence_requires_exact_logical_identity() {
assert!(super::validate_network_coherence("devnet", "devnet").is_ok());
let mismatch = super::validate_network_coherence("mainnet-beta", "devnet");
assert!(mismatch.is_err());
if let std::result::Result::Err(error) = mismatch {
assert_eq!(error.code(), crate::ERROR_CODE_STORE_NETWORK_MISMATCH);
}
}

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-backfill-desk/unit_tests/transport_runtime.rs
// version: 1
// version: 2
fn endpoint(
name: &str,
@@ -99,3 +99,30 @@ fn configured_networks_are_safe_sorted_and_deduplicated() {
assert_eq!(values, vec!["devnet".to_owned(), "testnet".to_owned()]);
}
}
#[test]
fn coherent_network_requires_exactly_one_enabled_http_cluster() {
let one = endpoint("one", "devnet", "default", vec![ksp_onchain_transport_lib::HttpRequestKind::wildcard()]);
let one = match one {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let one_pool = pool(vec![one]);
assert!(one_pool.is_ok());
if let std::result::Result::Ok(one_pool) = one_pool {
let runtime = crate::TransportRuntime { pool: one_pool, profile_id: "fixture".to_owned() };
assert_eq!(runtime.coherent_network(), std::option::Option::Some("devnet".to_owned()));
}
let two = endpoint("two", "devnet", "default", vec![ksp_onchain_transport_lib::HttpRequestKind::wildcard()]);
let three = endpoint("three", "testnet", "default", vec![ksp_onchain_transport_lib::HttpRequestKind::wildcard()]);
let (two, three) = match (two, three) {
(std::result::Result::Ok(two), std::result::Result::Ok(three)) => (two, three),
_ => return,
};
let multi_pool = pool(vec![two, three]);
assert!(multi_pool.is_ok());
if let std::result::Result::Ok(multi_pool) = multi_pool {
let runtime = crate::TransportRuntime { pool: multi_pool, profile_id: "fixture".to_owned() };
assert_eq!(runtime.coherent_network(), std::option::Option::None);
}
}