53 lines
2.4 KiB
Rust
53 lines
2.4 KiB
Rust
// file: crates/ksp-offchain-transport-lib/tests/dependency_boundary.rs
|
|
// version: 4
|
|
|
|
#![warn(missing_docs)]
|
|
#![deny(unreachable_pub)]
|
|
#![forbid(unsafe_code)]
|
|
|
|
//! Dependency, observability, hardened HTTP and module-taxonomy canaries for Off-chain Transport.
|
|
|
|
#[test]
|
|
fn pre_003_manifest_adds_only_shared_http_runtime_dependencies() {
|
|
let manifest = include_str!("../Cargo.toml");
|
|
assert!(manifest.contains("ksp-core-lib"));
|
|
assert!(manifest.contains("ksp-logging-lib"));
|
|
assert!(manifest.contains("reqwest = { workspace = true, features = [\"rustls\"] }"));
|
|
assert!(manifest.contains("serde"));
|
|
assert!(manifest.contains("serde_json.workspace = true"));
|
|
assert!(!manifest.contains("ksp-config-lib"));
|
|
assert!(!manifest.contains("coingecko"));
|
|
assert!(!manifest.contains("coinmarketcap"));
|
|
assert!(!manifest.contains("jupiter"));
|
|
assert!(!manifest.contains("birdeye"));
|
|
assert!(!manifest.contains("dexscreener"));
|
|
assert!(!manifest.lines().any(|line| return line.trim_start().starts_with("tracing =")));
|
|
let crate_root = include_str!("../src/lib.rs");
|
|
assert!(crate_root.contains("mod http_admission;"));
|
|
assert!(crate_root.contains("mod http_client;"));
|
|
assert!(crate_root.contains("mod http_settings;"));
|
|
assert!(crate_root.contains("mod market_price_decimal;"));
|
|
assert!(crate_root.contains("mod market_price_observation;"));
|
|
assert!(crate_root.contains("mod market_price_provider;"));
|
|
assert!(crate_root.contains("mod market_price_settings;"));
|
|
assert!(!crate_root.contains("pub use self::http_client::HttpRestClient"));
|
|
let constants = include_str!("../src/constants.rs");
|
|
assert!(constants.contains("pub(crate) const TRACING_TARGET: &str = \"ksp-offchain-transport-lib\";"));
|
|
}
|
|
|
|
#[test]
|
|
fn pre_003_http_client_hardening_is_explicit_and_provider_neutral() {
|
|
let client = include_str!("../src/http_client.rs");
|
|
assert!(client.contains(".redirect(reqwest::redirect::Policy::none())"));
|
|
assert!(client.contains(".referer(false)"));
|
|
assert!(client.contains(".retry(reqwest::retry::never())"));
|
|
assert!(client.contains(".no_proxy()"));
|
|
assert!(client.contains("error.without_url()"));
|
|
assert!(client.contains("response.chunk().await"));
|
|
assert!(!client.contains("coingecko"));
|
|
assert!(!client.contains("coinmarketcap"));
|
|
assert!(!client.contains("jupiter"));
|
|
assert!(!client.contains("birdeye"));
|
|
assert!(!client.contains("dexscreener"));
|
|
}
|