99 lines
4.3 KiB
Rust
99 lines
4.3 KiB
Rust
// file: crates/ksp-job-backfill-lib/tests/public_api.rs
|
|
// version: 3
|
|
|
|
//! Public API canaries for bounded Backfill discovery, RAW v1 conversion and Store persistence.
|
|
|
|
#[test]
|
|
fn pre_005_request_scope_and_discovery_contracts_are_available_from_crate_root() {
|
|
let _discover = ksp_job_backfill_lib::discover_backfill_candidates;
|
|
let address = ksp_core_lib::Pubkey::new_from_array([21_u8; 32]);
|
|
let scope = ksp_job_backfill_lib::BackfillScope::latest_address(address);
|
|
let network = ksp_store_lib::RawNetworkId::new("devnet");
|
|
assert!(network.is_ok());
|
|
let network = match network {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let job_id = ksp_job_api::JobId::new("backfill:public-api");
|
|
assert!(job_id.is_ok());
|
|
let job_id = match job_id {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let request = ksp_job_backfill_lib::BackfillRequest::new(
|
|
job_id,
|
|
network,
|
|
ksp_onchain_transport_lib::HttpRoleName::new("history"),
|
|
ksp_job_backfill_lib::BackfillCommitment::Confirmed,
|
|
scope,
|
|
100,
|
|
10,
|
|
500,
|
|
8,
|
|
std::option::Option::Some(100),
|
|
);
|
|
assert!(request.is_ok());
|
|
let request = match request {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
assert_eq!(request.scope().kind(), ksp_job_backfill_lib::BackfillScopeKind::LatestAddress);
|
|
assert_eq!(request.page_size(), 100);
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_005_candidate_identity_is_network_plus_signature_not_transport_source() {
|
|
let signature = ksp_job_backfill_lib::BackfillSignature::new("1".repeat(ksp_job_backfill_lib::MIN_BACKFILL_SIGNATURE_TEXT_BYTES));
|
|
let signature = match signature {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let mainnet = ksp_store_lib::RawNetworkId::new("mainnet");
|
|
let devnet = ksp_store_lib::RawNetworkId::new("devnet");
|
|
let mainnet = match mainnet {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let devnet = match devnet {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let mainnet_identity = ksp_job_backfill_lib::BackfillCandidateIdentity::new(mainnet, signature.clone());
|
|
let devnet_identity = ksp_job_backfill_lib::BackfillCandidateIdentity::new(devnet, signature);
|
|
assert_ne!(mainnet_identity, devnet_identity);
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_006_raw_conversion_contract_is_available_from_crate_root() {
|
|
assert_eq!(ksp_job_backfill_lib::RAW_TRANSACTION_FORMAT_ID, "ksp.solana.raw_transaction");
|
|
assert_eq!(ksp_job_backfill_lib::RAW_TRANSACTION_FORMAT_VERSION, 1);
|
|
let signature = ksp_job_backfill_lib::BackfillSignature::new("1".repeat(64));
|
|
assert!(signature.is_ok());
|
|
let signature = match signature {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let decoded = signature.to_raw_transaction_signature();
|
|
assert!(decoded.is_ok());
|
|
if let std::result::Result::Ok(decoded) = decoded {
|
|
assert_eq!(decoded.as_bytes(), &[0_u8; 64]);
|
|
}
|
|
let _hydrate = ksp_job_backfill_lib::hydrate_backfill_candidate;
|
|
let _outcome: std::option::Option<ksp_job_backfill_lib::BackfillHydrationOutcome> = std::option::Option::None;
|
|
let _acquisition: std::option::Option<ksp_job_backfill_lib::BackfillRawAcquisition> = std::option::Option::None;
|
|
assert_eq!(ksp_job_backfill_lib::ERROR_CODE_BACKFILL_RAW_CONVERSION_INVALID, ksp_core_lib::ErrorCode::new("job_backfill", "raw_conversion_invalid"));
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_007_store_persistence_contract_is_available_from_crate_root() {
|
|
let _persist = ksp_job_backfill_lib::persist_backfill_hydration;
|
|
let _outcome: std::option::Option<ksp_job_backfill_lib::BackfillPersistenceOutcome> = std::option::Option::None;
|
|
let _entity = ksp_job_backfill_lib::BackfillEntityPersistence::AlreadyPresent;
|
|
let _observation = ksp_job_backfill_lib::BackfillObservationPersistence::AlreadyPresent;
|
|
assert_eq!(ksp_job_backfill_lib::ERROR_CODE_BACKFILL_PERSISTENCE_INVALID, ksp_core_lib::ErrorCode::new("job_backfill", "persistence_invalid"));
|
|
return;
|
|
}
|