v0.2.6-pre.007

This commit is contained in:
2026-08-21 10:50:36 +02:00
parent 4c9086e2f0
commit f11f0921b0
25 changed files with 871 additions and 42 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-wallet-desk/tests/config_composition.rs
// version: 4
// version: 5
//! Config composition contracts introduced for Wallet Desk pre.003.
@@ -119,3 +119,51 @@ fn assert_component(composite: &ksp_config_lib::ResolvedConfigComposite, compone
assert_eq!(component.resolved().selection_source(), ksp_config_lib::ConfigProfileSelectionSource::Composite);
}
}
#[test]
fn wallet_desk_composite_transport_profile_builds_get_balance_pool() {
let engine = workspace_engine();
assert!(engine.is_ok(), "workspace Config engine should be constructible: {engine:?}");
let engine = match engine {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let file_id = ksp_config_lib::ConfigFileId::new(ksp_config_lib::FILE_ID_COMPOSITE_KSP_APP_WALLET_DESK);
assert!(file_id.is_ok());
let file_id = match file_id {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let composite = engine.load_resolved_composite(&file_id, std::option::Option::None);
assert!(composite.is_ok(), "committed Wallet Desk composite should resolve: {composite:?}");
let composite = match composite {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let component = composite.component("transport");
assert!(component.is_some());
let component = match component {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let environment = ksp_config_lib::ConfigEnvironment::from_maps(std::collections::BTreeMap::new(), std::collections::BTreeMap::new());
let resolved = engine.resolve_transport_config_profile(component.resolved(), &environment);
assert!(resolved.is_ok(), "composite-selected Transport should map: {resolved:?}");
let resolved = match resolved {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
assert_eq!(resolved.selection_source(), ksp_config_lib::ConfigProfileSelectionSource::Composite);
let pool = ksp_onchain_transport_lib::HttpTransportPool::new(resolved.into_settings());
assert!(pool.is_ok(), "mapped Transport settings should construct a pool");
let pool = match pool {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let descriptor = ksp_onchain_transport_lib::find_http_rpc_method("getBalance");
assert!(descriptor.is_some());
if let std::option::Option::Some(descriptor) = descriptor {
let selection = pool.select_for_method(&ksp_onchain_transport_lib::HttpRoleName::new("default"), descriptor);
assert!(selection.is_ok(), "getBalance should route through the composite-selected Transport pool: {selection:?}");
}
}