102 lines
4.6 KiB
Rust
102 lines
4.6 KiB
Rust
// file: crates/ksp-raw-transaction-lib/tests/public_api.rs
|
|
// version: 3
|
|
|
|
//! 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;
|
|
}
|