v0.2.11-pre.006

This commit is contained in:
2026-08-25 23:06:26 +02:00
parent 4021d08541
commit 98093d859b
12 changed files with 1079 additions and 48 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-offchain-transport-lib/tests/dependency_boundary.rs
// version: 6
// version: 7
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -68,3 +68,22 @@ fn pre_005_provider_modules_are_market_price_scoped_and_fixed_origin() {
assert!(!coinpaprika.contains("std::env"));
assert!(!kraken.contains("std::env"));
}
#[test]
fn pre_006_jupiter_and_dexscreener_stay_market_price_scoped_fixed_origin_and_discovery_free() {
let crate_root = include_str!("../src/lib.rs");
assert!(crate_root.contains("mod market_price_dexscreener;"));
assert!(crate_root.contains("mod market_price_jupiter;"));
let dexscreener = include_str!("../src/market_price_dexscreener.rs");
let jupiter = include_str!("../src/market_price_jupiter.rs");
assert!(dexscreener.contains("https://api.dexscreener.com/latest/dex/pairs/solana"));
assert!(dexscreener.contains("Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE") || dexscreener.contains("pair_address"));
assert!(!dexscreener.contains("latest/dex/search"));
assert!(!dexscreener.contains("token-pairs/v1"));
assert!(!dexscreener.contains("tokens/v1"));
assert!(jupiter.contains("https://api.jup.ag/price/v3"));
assert!(jupiter.contains("So11111111111111111111111111111111111111112"));
assert!(!jupiter.contains("/quote"));
assert!(!dexscreener.contains("std::env"));
assert!(!jupiter.contains("std::env"));
}

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-offchain-transport-lib/tests/public_api.rs
// version: 6
// version: 7
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -122,6 +122,31 @@ fn public_pre_005_exchange_settings_and_adapters_are_available_from_crate_root()
return std::result::Result::Ok(());
}
#[test]
fn public_pre_006_jupiter_and_dexscreener_settings_and_adapters_are_available_from_crate_root() -> ksp_core_lib::Result<()> {
let jupiter = match ksp_offchain_transport_lib::MarketPriceJupiterSettings::keyless(false) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
let jupiter_provider = match ksp_offchain_transport_lib::MarketPriceJupiterProvider::new(jupiter) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
assert_eq!(jupiter_provider.descriptor().id().as_str(), "jupiter");
assert_eq!(jupiter_provider.descriptor().semantics(), ksp_offchain_transport_lib::MarketPriceSemantics::SolanaHeuristic);
let dexscreener = match ksp_offchain_transport_lib::MarketPriceDexScreenerSettings::new(false, "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
let dexscreener_provider = match ksp_offchain_transport_lib::MarketPriceDexScreenerProvider::new(dexscreener) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
assert_eq!(dexscreener_provider.descriptor().id().as_str(), "dexscreener");
assert_eq!(dexscreener_provider.descriptor().semantics(), ksp_offchain_transport_lib::MarketPriceSemantics::DexPairUsd);
return std::result::Result::Ok(());
}
#[test]
fn offchain_error_codes_use_owned_domain() {
let codes = [