Skip to content

Commit 638f3fc

Browse files
committed
add: tests of compatibility
1 parent 58c5b04 commit 638f3fc

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from merkly.mtree import MerkleTree
2+
from pytest import mark
3+
import subprocess
4+
import hashlib
5+
import json
6+
7+
from merkly.node import Node, Side
8+
9+
10+
@mark.merkletreejs
11+
def test_merkle_proof_verify_compatibility_between_merkletreejs_and_merkly():
12+
result = subprocess.run(["yarn"], check=False)
13+
14+
assert result.returncode == 0, result.stderr
15+
16+
result_js = subprocess.run(
17+
["node", "./test/merkletreejs/merkle_proof/merkle_proof_test.js"],
18+
capture_output=True,
19+
text=True,
20+
check=True,
21+
)
22+
assert result_js.returncode == 0, result_js.stderr
23+
data_js = json.loads(result_js.stdout)
24+
25+
def sha256(x, y):
26+
data = x + y
27+
return hashlib.sha256(data).digest()
28+
29+
proof_py = []
30+
for node in data_js["proof"]:
31+
side = Side.RIGHT if node['position'] == 'right' else Side.LEFT
32+
data = bytes.fromhex(node['data'])
33+
proof_py.append(Node(data=data, side=side))
34+
35+
36+
leaves = ["a", "b", "c", "d", "e", "f", "g", "h"]
37+
mtree = MerkleTree(leaves, sha256)
38+
leaf = "a"
39+
40+
assert mtree.verify(proof_py, leaf)

0 commit comments

Comments
 (0)