Skip to content

Commit 95852e1

Browse files
committed
fix: add back test coverage on parsing and split methods in handlers
1 parent 43007b6 commit 95852e1

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

common/src/rest_error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ impl RESTError {
4747

4848
/// Invalid parameter error
4949
pub fn invalid_param(param_name: &str, reason: &str) -> Self {
50-
RESTError::BadRequest(format!("Invalid {}: {}", param_name, reason))
50+
RESTError::BadRequest(format!("Invalid {} parameter: {}", param_name, reason))
5151
}
5252

5353
/// Invalid hex string error

modules/rest_blockfrost/src/handlers/assets.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,13 +467,22 @@ mod tests {
467467
fn invalid_hex_string() {
468468
let result = split_policy_and_asset("zzzz");
469469
assert!(result.is_err());
470+
let err = result.unwrap_err();
471+
assert_eq!(err.status_code(), 400);
472+
assert_eq!(
473+
err.message(),
474+
"Invalid hex string: Invalid character 'z' at position 0"
475+
);
470476
}
471477

472478
#[test]
473479
fn too_short_input() {
474480
let hex_str = hex::encode([1u8, 2, 3]);
475481
let result = split_policy_and_asset(&hex_str);
476482
assert!(result.is_err());
483+
let err = result.unwrap_err();
484+
assert_eq!(err.status_code(), 400);
485+
assert_eq!(err.message(), "Asset identifier must be at least 28 bytes");
477486
}
478487

479488
#[test]
@@ -483,6 +492,9 @@ mod tests {
483492
let hex_str = hex::encode(bytes);
484493
let result = split_policy_and_asset(&hex_str);
485494
assert!(result.is_err());
495+
let err = result.unwrap_err();
496+
assert_eq!(err.status_code(), 400);
497+
assert_eq!(err.message(), "Asset name must be less than 32 bytes");
486498
}
487499

488500
#[test]

modules/rest_blockfrost/src/handlers/blocks.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,3 +535,54 @@ pub async fn handle_blocks_hash_number_addresses_blockfrost(
535535
)
536536
.await
537537
}
538+
539+
#[cfg(test)]
540+
mod tests {
541+
use super::*;
542+
543+
#[test]
544+
fn test_valid_block_hash() {
545+
let valid_hash = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef";
546+
let result = parse_block_key(valid_hash);
547+
548+
let expected_bytes: [u8; 32] = [
549+
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
550+
0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67,
551+
0x89, 0xab, 0xcd, 0xef,
552+
];
553+
554+
match result.unwrap() {
555+
BlockKey::Hash(hash) => assert_eq!(hash, BlockHash::from(expected_bytes)),
556+
BlockKey::Number(_) => panic!("Expected BlockKey::Hash"),
557+
}
558+
}
559+
560+
#[test]
561+
fn test_invalid_hex_format() {
562+
let invalid_hex = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
563+
let result = parse_block_key(invalid_hex);
564+
assert!(result.is_err());
565+
let err = result.unwrap_err();
566+
assert_eq!(err.status_code(), 400);
567+
assert!(err.message().contains("invalid hex format"));
568+
}
569+
570+
#[test]
571+
fn test_valid_block_number() {
572+
let result = parse_block_key("12345");
573+
assert!(result.is_ok());
574+
match result.unwrap() {
575+
BlockKey::Number(n) => assert_eq!(n, 12345),
576+
_ => panic!("Expected BlockKey::Number"),
577+
}
578+
}
579+
580+
#[test]
581+
fn test_invalid_block_number() {
582+
let result = parse_block_key("not_a_number");
583+
assert!(result.is_err());
584+
let err = result.unwrap_err();
585+
assert_eq!(err.status_code(), 400);
586+
assert!(err.message().contains("must be a valid block number or 64-character hex hash"));
587+
}
588+
}

0 commit comments

Comments
 (0)