Files
khadhroony-bot3/kb-pipeline-demo-scenarios/tests/external_metadata_solana_program_scenarios_api.rs
2026-08-06 06:45:18 +02:00

58 lines
2.4 KiB
Rust

// file: kb-pipeline-demo-scenarios/tests/external_metadata_solana_program_scenarios_api.rs
// version: 2
//! Public API regression test for Solana Program Metadata Devnet scenarios.
#[test]
fn external_consumers_use_only_public_solana_program_metadata_scenario_exports() {
let scenarios = kb_pipeline_demo_scenarios::solana_program_metadata_devnet_scenarios();
assert_eq!(scenarios.len(), 2);
let matrix = match kb_pipeline_demo_scenarios::load_solana_program_metadata_validation_matrix()
{
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => {
panic!("unable to load Solana Program Metadata validation matrix: {error}");
},
};
assert_eq!(matrix.operations.len(), 9);
let wallet = kb_lib::MdPubkey(solana_pubkey::Pubkey::new_from_array([3_u8; 32]).to_string());
let operation = kb_lib::ExMetadataSpmOperation::Extend {
account: wallet.clone(),
authority: wallet.clone(),
length: 1,
program_context: std::option::Option::None,
};
let mut request = kb_pipeline_demo_scenarios::DevnetSolanaProgramMetadataExecutionRequest::new(
"external-spm",
operation.clone(),
);
request
.preflight_reads
.push(kb_pipeline::SolanaProgramMetadataStatefulReadRequest {
query_role: "http_queries".to_string(),
account: wallet.clone(),
expected_state: kb_pipeline::SolanaProgramMetadataExpectedAccountState::Buffer,
min_context_slot: std::option::Option::None,
max_data_bytes: kb_pipeline::MAX_SOLANA_PROGRAM_METADATA_STATEFUL_ACCOUNT_BYTES,
});
assert!(request.validate().is_ok());
let step = kb_pipeline_demo_scenarios::SolanaProgramMetadataPreparedStep {
scenario_id: "external".to_string(),
step_id: "extend".to_string(),
step_index: 0,
operation,
preflight_reads: request.preflight_reads.clone(),
rent_observations: std::vec::Vec::new(),
postcondition_reads: std::vec::Vec::new(),
allow_destructive_operation: false,
};
assert_eq!(step.execution_request("prepared").intent_id, "prepared");
let fixture_options =
kb_pipeline_demo_scenarios::SolanaProgramMetadataFixturePreparationOptions::new();
assert_eq!(fixture_options.query_role, "http_queries");
assert_eq!(
kb_pipeline_demo_scenarios::SOLANA_PROGRAM_METADATA_FIXTURE_BUFFER_DATA_BYTES,
128
);
}