Files
khadhroony-solana-project/crates/ksp-raw-transaction-lib/tests/public_api.rs
2026-09-09 11:44:36 +02:00

136 lines
6.1 KiB
Rust

// file: crates/ksp-raw-transaction-lib/tests/public_api.rs
// version: 5
//! Integration canaries for the public common RAW Transaction crate-root surface.
#[test]
fn pre_002_common_raw_contract_is_consumable_from_crate_root() {
assert_eq!(ksp_raw_transaction_lib::RAW_TRANSACTION_FORMAT_ID, "ksp.solana.raw_transaction");
assert_eq!(ksp_raw_transaction_lib::RAW_TRANSACTION_FORMAT_VERSION, 1);
assert_eq!(ksp_raw_transaction_lib::MIN_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES, 64);
assert_eq!(ksp_raw_transaction_lib::MAX_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES, 88);
let network = match ksp_store_api::RawNetworkId::new("devnet") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let signature = match ksp_raw_transaction_lib::parse_raw_transaction_signature("1".repeat(64).as_str()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let material = ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64(
network,
signature,
5,
std::option::Option::None,
"AQID",
ksp_raw_transaction_lib::RawTransactionWireField::Null,
ksp_raw_transaction_lib::RawTransactionWireField::Value(ksp_raw_transaction_lib::RawTransactionVersion::Legacy),
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
);
let transaction = ksp_raw_transaction_lib::canonicalize_raw_transaction(material);
assert!(transaction.is_ok());
return;
}
#[test]
fn pre_002_acquisition_assembly_accepts_store_api_producer_owned_metadata() {
let network = match ksp_store_api::RawNetworkId::new("devnet") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let signature = match ksp_raw_transaction_lib::parse_raw_transaction_signature("1".repeat(64).as_str()) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let material = ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64(
network,
signature,
5,
std::option::Option::None,
"AQID",
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
);
let transaction = match ksp_raw_transaction_lib::canonicalize_raw_transaction(material) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let provider = match ksp_store_api::RawProvenanceCode::new("fixture") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let protocol = match ksp_store_api::RawProvenanceCode::new("fixture.protocol") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let method = match ksp_store_api::RawProvenanceCode::new("fixture.method") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let received_at = match ksp_store_api::RawTimestamp::from_unix_millis(1) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let provenance = ksp_store_api::RawAcquisitionProvenance::new(provider, protocol, method, ksp_store_api::RawAcquisitionOrigin::Import, received_at);
let acquisition = ksp_raw_transaction_lib::assemble_raw_transaction_acquisition(transaction, ksp_store_api::RawObservationKey::new([9_u8; 32]), provenance);
assert_eq!(acquisition.transaction().reference(), acquisition.observation().transaction());
return;
}
#[test]
fn pre_004_embedded_signature_and_block_material_contract_are_available_from_crate_root() {
let encoded = "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
let signature = ksp_raw_transaction_lib::extract_raw_transaction_signature_from_binary_base64(encoded);
assert!(signature.is_ok());
let network = ksp_store_api::RawNetworkId::new("devnet");
assert!(network.is_ok());
if let std::result::Result::Ok(network) = network {
let material = ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64_with_embedded_signature(
network,
1,
std::option::Option::None,
encoded,
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
ksp_raw_transaction_lib::RawTransactionWireField::Omitted,
ksp_raw_transaction_lib::RawTransactionWireField::Value(0),
);
assert!(material.is_ok());
}
return;
}
#[test]
fn pre_006_source_neutral_wire_contract_is_available_from_crate_root() {
let message = ksp_raw_transaction_lib::RawSolanaTransactionMessage::new(
ksp_raw_transaction_lib::RawSolanaMessageVersion::V1,
ksp_raw_transaction_lib::RawSolanaMessageHeader::new(1, 0, 0),
vec![[1_u8; 32]],
[2_u8; 32],
vec![ksp_raw_transaction_lib::RawSolanaCompiledInstruction::new(0, vec![0], vec![3])],
vec![],
std::option::Option::Some(ksp_raw_transaction_lib::RawSolanaTransactionConfig::default()),
);
let wire = ksp_raw_transaction_lib::RawSolanaTransactionWire::new(vec![[4_u8; 64]], message);
let encoded = ksp_raw_transaction_lib::serialize_solana_transaction_wire_base64(&wire);
assert!(encoded.is_ok());
if let std::result::Result::Ok(encoded) = encoded {
assert!(encoded.starts_with("gQ"));
assert!(ksp_raw_transaction_lib::extract_raw_transaction_signature_from_binary_base64(encoded.as_str()).is_ok());
}
return;
}
#[test]
fn pre_004_signature_formatter_is_consumable_from_crate_root() {
let signature = ksp_store_api::RawTransactionSignature::new([0_u8; 64]);
let text = ksp_raw_transaction_lib::format_raw_transaction_signature(&signature);
assert_eq!(text, "1".repeat(64));
let parsed = ksp_raw_transaction_lib::parse_raw_transaction_signature(text.as_str());
assert!(parsed.is_ok());
if let std::result::Result::Ok(parsed) = parsed {
assert_eq!(parsed, signature);
}
return;
}