// file: crates/ksp-job-backfill-lib/tests/dependency_boundary.rs // version: 2 //! Dependency firewall canaries for Backfill discovery and RAW v1 conversion. #[test] fn pre_006_manifest_uses_only_planned_ksp_edges_and_backend_neutral_store() { let manifest = include_str!("../Cargo.toml"); for required in [ "ksp-core-lib = { path = \"../ksp-core-lib\" }", "ksp-job-api = { path = \"../ksp-job-api\" }", "ksp-logging-lib = { path = \"../ksp-logging-lib\" }", "ksp-onchain-transport-lib = { path = \"../ksp-onchain-transport-lib\" }", "ksp-store-lib = { path = \"../ksp-store-lib\", default-features = false }", "serde_json.workspace = true", "sha2.workspace = true", ] { assert!(manifest.contains(required), "required Backfill dependency missing: {required}"); } for forbidden in [ "ksp-config-lib", "ksp-interface-lib", "ksp-program-api", "ksp-store-api", "ksp-store-postgres-lib", "ksp-wallet-lib", "solana-", "reqwest", "serde.workspace = true", "serde = {", "tonic", ] { assert!(!manifest.contains(forbidden), "forbidden Backfill dependency present: {forbidden}"); } return; } #[test] fn pre_006_production_sources_keep_transport_and_store_in_their_owned_layers() { let non_conversion_sources = [ include_str!("../src/constants.rs"), include_str!("../src/discovery.rs"), include_str!("../src/error.rs"), include_str!("../src/lib.rs"), include_str!("../src/request.rs"), ]; for source in non_conversion_sources { for forbidden in ["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "serde_json::", "std::env", "tonic::"] { assert!(!source.contains(forbidden), "forbidden concrete Backfill path detected: {forbidden}"); } } let conversion = include_str!("../src/conversion.rs"); assert!(conversion.contains("serde_json::")); assert!(conversion.contains("get_transaction_observed")); assert!(conversion.contains("SolanaTransactionEncoding::Base64")); assert!(conversion.contains("std::option::Option::Some(0)")); assert!(conversion.contains("BackfillHydrationOutcome::Missing(reference)")); assert!(!conversion.contains("execute_standard_rpc")); assert!(!conversion.contains("persist_raw_transaction_acquisition")); for forbidden in ["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "std::env", "tonic::"] { assert!(!conversion.contains(forbidden), "forbidden RAW conversion path detected: {forbidden}"); } let discovery = include_str!("../src/discovery.rs"); assert!(discovery.contains("get_signatures_for_address")); assert!(!discovery.contains("execute_standard_rpc")); assert!(!discovery.contains("retry")); assert!(!discovery.contains("endpoint_name")); assert!(!discovery.contains("HttpEndpoint")); return; }