Skip to content

Commit 54fd52d

Browse files
committed
Add test coverage for validate_merkle_proof
1 parent fe33e19 commit 54fd52d

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

src/raw_client.rs

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,8 @@ impl<T: Read + Write> ElectrumApi for RawClient<T> {
10791079
mod test {
10801080
use std::str::FromStr;
10811081

1082+
use crate::utils;
1083+
10821084
use super::RawClient;
10831085
use api::ElectrumApi;
10841086

@@ -1300,23 +1302,43 @@ mod test {
13001302

13011303
let client = RawClient::new(get_test_server(), None).unwrap();
13021304

1303-
let resp = client
1304-
.transaction_get_merkle(
1305-
&Txid::from_str("cc2ca076fd04c2aeed6d02151c447ced3d09be6fb4d4ef36cb5ed4e7a3260566")
1306-
.unwrap(),
1307-
630000,
1308-
)
1309-
.unwrap();
1305+
let txid =
1306+
Txid::from_str("1f7ff3c407f33eabc8bec7d2cc230948f2249ec8e591bcf6f971ca9366c8788d")
1307+
.unwrap();
1308+
let resp = client.transaction_get_merkle(&txid, 630000).unwrap();
13101309
assert_eq!(resp.block_height, 630000);
1311-
assert_eq!(resp.pos, 0);
1310+
assert_eq!(resp.pos, 68);
13121311
assert_eq!(resp.merkle.len(), 12);
13131312
assert_eq!(
13141313
resp.merkle[0],
13151314
[
1316-
30, 10, 161, 245, 132, 125, 136, 198, 186, 138, 107, 216, 92, 22, 145, 81, 130,
1317-
126, 200, 65, 121, 158, 105, 111, 38, 151, 38, 147, 144, 224, 5, 218
1315+
34, 65, 51, 64, 49, 139, 115, 189, 185, 246, 70, 225, 168, 193, 217, 195, 47, 66,
1316+
179, 240, 153, 24, 114, 215, 144, 196, 212, 41, 39, 155, 246, 25
13181317
]
13191318
);
1319+
1320+
// Check we can verify the merkle proof validity, but fail if we supply wrong data.
1321+
let block_header = client.block_header(resp.block_height).unwrap();
1322+
assert!(utils::validate_merkle_proof(
1323+
&txid,
1324+
&block_header.merkle_root,
1325+
&resp
1326+
));
1327+
1328+
let mut fail_resp = resp.clone();
1329+
fail_resp.pos = 13;
1330+
assert!(!utils::validate_merkle_proof(
1331+
&txid,
1332+
&block_header.merkle_root,
1333+
&fail_resp
1334+
));
1335+
1336+
let fail_block_header = client.block_header(resp.block_height + 1).unwrap();
1337+
assert!(!utils::validate_merkle_proof(
1338+
&txid,
1339+
&fail_block_header.merkle_root,
1340+
&resp
1341+
));
13201342
}
13211343

13221344
#[test]

0 commit comments

Comments
 (0)