v0.4.8-pre.009
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
// 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
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user