63 lines
2.6 KiB
Rust
63 lines
2.6 KiB
Rust
// file: crates/ksp-raw-transaction-lib/unit_tests/signature.rs
|
|
// version: 2
|
|
|
|
#[test]
|
|
fn pre_002_signature_parser_accepts_exact_sixty_four_zero_bytes() {
|
|
let text = "1".repeat(crate::MIN_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES);
|
|
let signature = crate::parse_raw_transaction_signature(text.as_str());
|
|
assert!(signature.is_ok());
|
|
if let std::result::Result::Ok(signature) = signature {
|
|
assert_eq!(signature.as_bytes(), &[0_u8; 64]);
|
|
}
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_002_signature_parser_rejects_text_bounds_invalid_base58_and_noncanonical_lengths() {
|
|
for text in [
|
|
"1".repeat(crate::MIN_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES - 1),
|
|
"1".repeat(crate::MAX_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES + 1),
|
|
format!("{}0", "1".repeat(crate::MIN_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES - 1)),
|
|
"1".repeat(65),
|
|
"z".repeat(crate::MAX_RAW_TRANSACTION_SIGNATURE_TEXT_BYTES),
|
|
] {
|
|
let result = crate::parse_raw_transaction_signature(text.as_str());
|
|
assert!(result.is_err());
|
|
if let std::result::Result::Err(error) = result {
|
|
assert_eq!(error.code(), crate::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID);
|
|
let debug = std::format!("{error:?}");
|
|
assert!(!debug.contains(text.as_str()));
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_004_embedded_signature_extracts_first_signature_from_canonical_transaction_base64() {
|
|
let encoded = "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
|
|
let signature = crate::extract_raw_transaction_signature_from_binary_base64(encoded);
|
|
assert!(signature.is_ok());
|
|
if let std::result::Result::Ok(signature) = signature {
|
|
assert_eq!(signature.as_bytes(), &[0_u8; 64]);
|
|
}
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_004_embedded_signature_rejects_invalid_base64_noncanonical_short_vec_and_truncation() {
|
|
for encoded in [
|
|
"not-base64",
|
|
"gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
|
"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
|
"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
|
] {
|
|
let result = crate::extract_raw_transaction_signature_from_binary_base64(encoded);
|
|
assert!(result.is_err());
|
|
if let std::result::Result::Err(error) = result {
|
|
assert_eq!(error.code(), crate::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID);
|
|
assert!(!error.to_string().contains(encoded));
|
|
}
|
|
}
|
|
return;
|
|
}
|