v0.3.8-pre.010
This commit is contained in:
47
crates/ksp-app-store-desk/unit_tests/dto_observation.rs
Normal file
47
crates/ksp-app-store-desk/unit_tests/dto_observation.rs
Normal file
@@ -0,0 +1,47 @@
|
||||
// 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}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user