// file: crates/ksp-worker-raw-transaction-ingest-lib/tests/cross_layer_completeness.rs // version: 1 //! Cross-layer completeness and security canaries for `0.3.12-pre.010`. fn dependency_names(manifest: &str) -> std::vec::Vec<&str> { let mut section = ""; let mut names = std::vec::Vec::new(); for line in manifest.lines() { let trimmed = line.trim(); if trimmed.starts_with('[') && trimmed.ends_with(']') { section = trimmed; continue; } if section != "[dependencies]" || trimmed.is_empty() || trimmed.starts_with('#') { continue; } let name = match trimmed.split_once('=') { std::option::Option::Some((name, _)) => name.trim().trim_end_matches(".workspace"), std::option::Option::None => continue, }; names.push(name); } names.sort_unstable(); return names; } #[test] fn v0_3_12_pre_010_dependency_firewall_is_exact_across_transport_worker_common_raw_store() { let transport = dependency_names(include_str!("../../ksp-onchain-transport-lib/Cargo.toml")); let worker = dependency_names(include_str!("../Cargo.toml")); let common_raw = dependency_names(include_str!("../../ksp-raw-transaction-lib/Cargo.toml")); let store_api = dependency_names(include_str!("../../ksp-store-api/Cargo.toml")); let store = dependency_names(include_str!("../../ksp-store-lib/Cargo.toml")); assert_eq!( transport, std::vec![ "futures-util", "http", "ksp-core-lib", "ksp-logging-lib", "reqwest", "serde", "serde_json", "tokio", "tokio-tungstenite", "tonic", "tonic-prost", "yellowstone-grpc-proto", ] ); assert_eq!( worker, std::vec![ "ksp-core-lib", "ksp-logging-lib", "ksp-onchain-transport-lib", "ksp-raw-transaction-lib", "ksp-store-lib", "ksp-worker-api", "sha2", "tokio", ] ); assert_eq!(common_raw, std::vec!["base64", "ksp-core-lib", "ksp-store-api", "serde_json", "sha2"]); assert_eq!(store_api, std::vec!["ksp-core-lib"]); assert_eq!(store, std::vec!["ksp-logging-lib", "ksp-store-api", "ksp-store-postgres-lib"]); for forbidden in ["ksp-config-lib", "ksp-job-api", "ksp-job-backfill-lib", "ksp-store-lib", "ksp-worker-api", "ksp-worker-raw-transaction-ingest-lib"] { assert!(!transport.contains(&forbidden), "Transport crossed upward dependency boundary: {forbidden}"); } for forbidden in [ "ksp-config-lib", "ksp-job-api", "ksp-job-backfill-lib", "ksp-store-api", "ksp-store-postgres-lib", "reqwest", "tonic", "yellowstone-grpc-proto", ] { assert!(!worker.contains(&forbidden), "Worker crossed direct lower/backend dependency boundary: {forbidden}"); } for forbidden in [ "ksp-config-lib", "ksp-job-api", "ksp-job-backfill-lib", "ksp-onchain-transport-lib", "ksp-store-lib", "ksp-store-postgres-lib", "ksp-worker-api", ] { assert!(!common_raw.contains(&forbidden), "Common RAW crossed dependency boundary: {forbidden}"); } for forbidden in ["ksp-config-lib", "ksp-onchain-transport-lib", "ksp-raw-transaction-lib", "ksp-store-lib", "ksp-store-postgres-lib", "ksp-worker-api"] { assert!(!store_api.contains(&forbidden), "Store API crossed dependency boundary: {forbidden}"); } for forbidden in ["ksp-config-lib", "ksp-job-api", "ksp-job-backfill-lib", "ksp-onchain-transport-lib", "ksp-raw-transaction-lib", "ksp-worker-api"] { assert!(!store.contains(&forbidden), "Store facade crossed dependency boundary: {forbidden}"); } return; } #[test] fn v0_3_12_pre_010_legacy_v0_fixture_matrix_is_exact_across_transport_worker_and_common_raw() { let worker = include_str!("../unit_tests/runtime_resources.rs"); let common_raw_wire = include_str!("../../ksp-raw-transaction-lib/unit_tests/wire.rs"); let transport = include_str!("../../ksp-onchain-transport-lib/unit_tests/rpc_transactions.rs"); for required in [ "pre_004_observed_get_transaction_closes_signal_to_common_raw_ingress_with_composite_provenance", "pre_004_finalized_hydration_preserves_request_and_provenance_commitment", "pre_004_v0_null_and_omitted_wire_fields_preserve_common_raw_semantics", r#"\"version\":\"legacy\""#, r#"\"version\":0"#, ] { assert!(worker.contains(required), "Worker Legacy/V0 fixture missing: {required}"); } for required in [ "LEGACY_GOLDEN_BASE64", "V0_GOLDEN_BASE64", "pre_006_legacy_v0_and_v1_wire_goldens_are_exact", "RawSolanaMessageVersion::Legacy", "RawSolanaMessageVersion::V0", ] { assert!(common_raw_wire.contains(required), "Common RAW Legacy/V0 golden missing: {required}"); } for required in [ "confirmed_transaction_fixture_preserves_meta_version_and_transaction_index_states", "typed_get_transaction_modern_covers_all_agave_v4_2_1_encoding_labels_and_response_shapes", "SolanaTransactionVersion::Legacy", ] { assert!(transport.contains(required), "Transport getTransaction fixture missing: {required}"); } return; } #[test] fn v0_3_12_pre_010_redaction_scanner_matrix_is_present_across_all_layers() { let transport_subscribe = include_str!("../../ksp-onchain-transport-lib/unit_tests/grpc_subscribe.rs"); let transport_unary = include_str!("../../ksp-onchain-transport-lib/unit_tests/grpc_unary.rs"); let worker = include_str!("hardening.rs"); let common_raw = include_str!("../../ksp-raw-transaction-lib/unit_tests/canonical.rs"); let store_api = include_str!("../../ksp-store-api/tests/security_hardening.rs"); let store = include_str!("../../ksp-store-lib/tests/hardening_completeness.rs"); assert!(transport_subscribe.contains("yellowstone_subscribe_debug_omits_filter_names_and_future_payloads")); assert!(transport_unary.contains("yellowstone_remote_status_does_not_copy_message_details_or_metadata")); for required in [ "pre_010_debug_and_settings_errors_redact_worker_identity_and_invalid_values", "v0_3_12_pre_003_private_signal_debug_and_shape_do_not_expose_signature_filters_or_payload", "v0_3_12_pre_004_hydration_provenance_and_remote_material_are_bounded_and_redacted", "v0_3_12_pre_008_reconnect_projection_is_source_neutral_bounded_and_contains_no_replay_material", "v0_3_12_pre_009_hydration_retry_ownership_and_no_orphan_cleanup_are_explicit", ] { assert!(worker.contains(required), "Worker security scanner missing: {required}"); } assert!(common_raw.contains("pre_002_material_and_wire_debug_do_not_render_transaction_or_meta_material")); assert!(store_api.contains("pre_007_raw_debug_surfaces_do_not_render_payload_hash_signature_or_account_bytes")); assert!(store.contains("pre_009_secret_canary_never_crosses_settings_or_pre_io_error_debug")); return; } #[test] fn v0_3_12_pre_010_public_roots_keep_implementation_modules_private() { let roots = [ ("transport", include_str!("../../ksp-onchain-transport-lib/src/lib.rs")), ("worker", include_str!("../src/lib.rs")), ("common_raw", include_str!("../../ksp-raw-transaction-lib/src/lib.rs")), ("store_api", include_str!("../../ksp-store-api/src/lib.rs")), ("store", include_str!("../../ksp-store-lib/src/lib.rs")), ]; for (layer, root) in roots { assert!(!root.contains("pub mod "), "public implementation module leaked from {layer}"); } let worker = include_str!("../src/lib.rs"); for line in worker.lines() { let trimmed = line.trim(); if !trimmed.starts_with("pub use ") { continue; } for forbidden in [ "RawTransactionAdmission", "RawTransactionIngress", "RawTransactionIngestPersistencePort", "JoinHandle", "JoinSet", "HttpTransportPool", "SolanaYellowstoneGrpcSubscribeSession", ] { assert!(!trimmed.contains(forbidden), "Worker implementation type leaked publicly: {forbidden}"); } } return; }