Page MenuHomePhabricator

D17784.diff
No OneTemporary

D17784.diff

diff --git a/modules/bitcoinsuite-chronik-client/src/lib.rs b/modules/bitcoinsuite-chronik-client/src/lib.rs
--- a/modules/bitcoinsuite-chronik-client/src/lib.rs
+++ b/modules/bitcoinsuite-chronik-client/src/lib.rs
@@ -465,3 +465,46 @@
Ok(())
}
}
+
+#[macro_export]
+macro_rules! assert_status_code_eq {
+ ($result:expr, $expected_status:expr) => {
+ match $result {
+ Ok(_) => {
+ panic!(
+ "Expected HTTP error response with status code {}, but \
+ the request succeeded",
+ $expected_status
+ );
+ }
+ Err(report) => {
+ let report_debug = format!("{:?}", report);
+
+ let err =
+ report.downcast::<ChronikClientError>().expect(&format!(
+ "Expected a Chronik client error but got a different \
+ error {}",
+ report_debug
+ ));
+
+ let status_code = match err {
+ ChronikClientError::ChronikError {
+ status_code, ..
+ } => status_code,
+ other => panic!(
+ "Expected a ChronikError with HTTP status code, but \
+ got different variant: {:?}",
+ other
+ ),
+ };
+
+ assert_eq!(
+ status_code, $expected_status,
+ "HTTP status code assertion failed: expected {}, received \
+ {}",
+ $expected_status, status_code
+ );
+ }
+ }
+ };
+}
diff --git a/modules/bitcoinsuite-chronik-client/tests/block_and_blocks.rs b/modules/bitcoinsuite-chronik-client/tests/block_and_blocks.rs
--- a/modules/bitcoinsuite-chronik-client/tests/block_and_blocks.rs
+++ b/modules/bitcoinsuite-chronik-client/tests/block_and_blocks.rs
@@ -10,6 +10,7 @@
use abc_rust_error::Result;
use async_trait::async_trait;
use bitcoinsuite_chronik_client::{
+ assert_status_code_eq,
handler::{IpcHandler, IpcReader},
test_runner::{handle_test_info, spin_child_process},
ChronikClient, ChronikClientError,
@@ -117,22 +118,7 @@
)
.await;
- let err = result
- .unwrap_err()
- .downcast::<ChronikClientError>()?;
-
- let status_code = match err {
- ChronikClientError::ChronikError {
- status_code: e,
- ..
- } => e,
- _ => panic!(
- "ChronikClientError should be raised, but
- hasn't"
- ),
- };
-
- assert_eq!(status_code, 400);
+ assert_status_code_eq!(result, 400);
}
// Gives us the block at 10 higher
@@ -238,22 +224,7 @@
)
.await;
- let err = result
- .unwrap_err()
- .downcast::<ChronikClientError>()?;
-
- let status_code = match err {
- ChronikClientError::ChronikError {
- status_code: e,
- ..
- } => e,
- _ => panic!(
- "ChronikClientError should be raised, but
- hasn't"
- ),
- };
-
- assert_eq!(status_code, 404);
+ assert_status_code_eq!(result, 404);
// blocks does not throw error if asked for parked
// block, but also does not return it
@@ -409,22 +380,7 @@
)
.await;
- let err = result
- .unwrap_err()
- .downcast::<ChronikClientError>()?;
-
- let status_code = match err {
- ChronikClientError::ChronikError {
- status_code: e,
- ..
- } => e,
- _ => panic!(
- "ChronikClientError should be raised, but
- hasn't"
- ),
- };
-
- assert_eq!(status_code, 404);
+ assert_status_code_eq!(result, 404);
// blocks does not throw error if asked for
// invalidated block, but also does not return it

File Metadata

Mime Type
text/plain
Expires
Wed, May 21, 00:23 (36 m, 12 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5866204
Default Alt Text
D17784.diff (5 KB)

Event Timeline