58 lines
2.4 KiB
Rust
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
|
|
);
|
|
}
|