// file: crates/ksp-app-store-desk/unit_tests/dto_observation.rs // version: 1 //! Unit tests for Store Desk observation DTO safety and request boundaries. #[test] fn pre_010_observation_requests_expose_only_random_access_and_exact_entity_identity() { let source = include_str!("../src/dto_observation.rs"); for forbidden in ["draw:", "search:", "order:", "columns:", "cursor:", "network:", "payload_preview", "data_preview"] { assert!(!source.contains(forbidden), "observation request/row contract leaked forbidden field: {forbidden}"); } } #[test] fn pre_010_observation_rows_keep_source_bytes_out_and_preserve_safe_provenance_metadata() { let provenance = crate::StoreObservationProvenanceDto { acquisition_method: "subscribe".to_owned(), capture_session_id: std::option::Option::Some("session-1".to_owned()), commitment: std::option::Option::Some("confirmed".to_owned()), endpoint_id: std::option::Option::Some("mainnet-primary".to_owned()), filter_id: std::option::Option::Some("wallet-filter".to_owned()), observed_at_unix_millis_decimal: std::option::Option::Some("10".to_owned()), origin: "live".to_owned(), protocol: "yellowstone-grpc".to_owned(), provider: "publicnode".to_owned(), received_at_unix_millis_decimal: "11".to_owned(), source_payload_hash: std::option::Option::Some("12".repeat(32)), source_payload_size_decimal: std::option::Option::Some("2048".to_owned()), }; let row = crate::StoreAccountObservationRowDto { is_startup: std::option::Option::Some(false), observation_key: "34".repeat(32), provenance, transaction_signature: std::option::Option::Some("56".repeat(64)), write_version_decimal: std::option::Option::Some("9".to_owned()), }; let json = serde_json::to_string(&row); let json = match json { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("observation DTO serialization failed: {error}"), }; assert!(json.contains("sourcePayloadHash")); assert!(json.contains("sourcePayloadSizeDecimal")); for forbidden in ["payloadPreview", "dataPreview", "rawBytes", "sourcePayloadBytes"] { assert!(!json.contains(forbidden), "observation DTO serialized forbidden source material: {forbidden}"); } }