Files
khadhroony-solana-project/crates/ksp-app-store-desk/unit_tests/dto_observation.rs
2026-09-03 21:36:34 +02:00

48 lines
2.3 KiB
Rust

// 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}");
}
}