// file: ks-pipeline-demo-scenarios/tests/external_metadata_solana_program_scenarios_api.rs // version: 3 //! Public API regression test for Solana Program Metadata Devnet scenarios. #[test] fn external_consumers_use_only_public_solana_program_metadata_scenario_exports() { let scenarios = ks_pipeline_demo_scenarios::solana_program_metadata_devnet_scenarios(); assert_eq!(scenarios.len(), 2); let matrix = match ks_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 = ks_lib::MdPubkey(solana_pubkey::Pubkey::new_from_array([3_u8; 32]).to_string()); let operation = ks_lib::ExMetadataSpmOperation::Extend { account: wallet.clone(), authority: wallet.clone(), length: 1, program_context: std::option::Option::None, }; let mut request = ks_pipeline_demo_scenarios::DevnetSolanaProgramMetadataExecutionRequest::new( "external-spm", operation.clone(), ); request .preflight_reads .push(ks_pipeline::SolanaProgramMetadataStatefulReadRequest { query_role: "http_queries".to_string(), account: wallet.clone(), expected_state: ks_pipeline::SolanaProgramMetadataExpectedAccountState::Buffer, min_context_slot: std::option::Option::None, max_data_bytes: ks_pipeline::MAX_SOLANA_PROGRAM_METADATA_STATEFUL_ACCOUNT_BYTES, }); assert!(request.validate().is_ok()); let step = ks_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 = ks_pipeline_demo_scenarios::SolanaProgramMetadataFixturePreparationOptions::new(); assert_eq!(fixture_options.query_role, "http_queries"); assert_eq!( ks_pipeline_demo_scenarios::SOLANA_PROGRAM_METADATA_FIXTURE_BUFFER_DATA_BYTES, 128 ); }