Skip to content

Commit 82caad6

Browse files
committed
Introduce test to verify compatibility and remove ignore - ported from JS PR
1 parent 2bc0460 commit 82caad6

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

tests/compat.rs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::io::Read;
99
use std::path::{Path, PathBuf};
1010

1111
use data_encoding::HEXLOWER;
12-
use ed25519_dalek::Keypair;
12+
use ed25519_dalek::{Keypair, Signature};
1313
use hypercore::Feed;
1414
use hypercore::{Storage, Store};
1515
use random_access_disk::RandomAccessDisk;
@@ -56,22 +56,31 @@ fn deterministic_data_and_tree_after_replication() {
5656
}
5757

5858
#[async_std::test]
59-
#[ignore]
6059
async fn deterministic_signatures() {
6160
let key = hex_bytes("9718a1ff1c4ca79feac551c0c7212a65e4091278ec886b88be01ee4039682238");
6261
let keypair_bytes = hex_bytes(concat!(
6362
"53729c0311846cca9cc0eded07aaf9e6689705b6a0b1bb8c3a2a839b72fda383",
6463
"9718a1ff1c4ca79feac551c0c7212a65e4091278ec886b88be01ee4039682238"
6564
));
6665

67-
let expected_signatures = hex_bytes(concat!(
66+
let compat_v9_expected_signatures = hex_bytes(concat!(
6867
"050257010000400745643235353139000000000000000000000000000000000084684e8dd76c339",
6968
"d6f5754e813204906ee818e6c6cdc6a816a2ac785a3e0d926ac08641a904013194fe6121847b7da",
7069
"d4e361965d47715428eb0a0ededbdd5909d037ff3c3614fa0100ed9264a712d3b77cbe7a4f6eadd",
7170
"8f342809be99dfb9154a19e278d7a5de7d2b4d890f7701a38b006469f6bab1aff66ac6125d48baf",
7271
"dc0711057675ed57d445ce7ed4613881be37ebc56bb40556b822e431bb4dc3517421f9a5e3ed124",
7372
"eb5c4db8367386d9ce12b2408613b9fec2837022772a635ffd807",
7473
));
74+
let compat_signatures_len = compat_v9_expected_signatures.len();
75+
let compat_signature_struct = compat_v9_expected_signatures
76+
.into_iter()
77+
.skip(compat_signatures_len - 64)
78+
.collect::<Vec<_>>();
79+
80+
let expected_signatures = hex_bytes(concat!(
81+
"42e057f2c225b4c5b97876a15959324931ad84646a8bf2e4d14487c0f117966a585edcdda54670d",
82+
"d5def829ca85924ce44ae307835e57d5729aef8cd91678b06",
83+
));
7584

7685
for _ in 0..5 {
7786
let (dir, storage) = mk_storage().await;
@@ -87,12 +96,28 @@ async fn deterministic_signatures() {
8796
}
8897

8998
assert_eq!(read_bytes(&dir, Store::Data), data);
90-
assert_eq!(read_bytes(&dir, Store::Signatures), expected_signatures);
99+
let actual_signatures = read_bytes(&dir, Store::Signatures);
100+
let actual_signatures_len = actual_signatures.len();
101+
assert_eq!(
102+
actual_signatures
103+
.into_iter()
104+
.skip(actual_signatures_len - 64)
105+
.collect::<Vec<_>>(),
106+
expected_signatures
107+
);
108+
109+
let compat_signature = Signature::from_bytes(&compat_signature_struct).unwrap();
110+
feed.verify(feed.len() - 1, &compat_signature)
111+
.await
112+
.expect("Could not verify compat signature of hypercore v9");
91113

92114
remove_dir_all(dir).unwrap()
93115
}
94116
}
95117

118+
#[test]
119+
fn verify_older_signature_on_read() {}
120+
96121
#[test]
97122
#[ignore]
98123
fn deterministic_signatures_after_replication() {

0 commit comments

Comments
 (0)