コード例 #1
0
def test_get_root_no_leaves_exception():
    tree = MerkleTree()

    with pytest.raises(MerkleException) as e:
        tree.get_root()
    assert 'No leaves found' in str(e.value)

    with pytest.raises(MerkleException) as e:
        tree.get_root_str()
    assert 'No leaves found' in str(e.value)
コード例 #2
0
def test_get_root_not_grown_exception():
    tree = MerkleTree()

    for user, perm in permission_json.items():
        tree.add_leaf(json.dumps(perm))

    with pytest.raises(MerkleException) as e:
        tree.get_root()
    assert 'No tree stored. Grow from seed, or generate new tree' in str(e.value)

    with pytest.raises(MerkleException) as e:
        tree.get_root_str()
    assert 'No tree stored. Grow from seed, or generate new tree' in str(e.value)
コード例 #3
0
def test_load_from_seed_json():
    tree = MerkleTree()

    for user, perm in permission_json.items():
        for schema_id, schema_perm in perm.items():
            tree.add_leaf(json.dumps(schema_perm))

    tree.grow_tree()

    seed_json = tree.get_seed(as_json=True)
    original_root = tree.get_root_str()

    new_tree = MerkleTree(seed_json)

    assert original_root == new_tree.get_root_str()
コード例 #4
0
    def __generate_merkle(self, perms):
        tree = MerkleTree()
        for user, perm in perms.items():
            for schema_id, schema_perm in perm.items():
                tree.add_leaf(json.dumps(schema_perm))

        tree.grow_tree()

        return tree.get_root_str()
コード例 #5
0
def test_three_leaves():
    tree = MerkleTree()
    for user, perm in permission_json_three.items():
        tree.add_leaf(json.dumps(perm))

    tree.grow_tree()

    for user, perm in permission_json_three.items():
        requested_leaf = json.dumps(permission_json_three[user])
        proof = tree.get_proof(requested_leaf, is_hashed=False)
        is_good = tree.verify_leaf(requested_leaf, tree.get_root_str(),
                                   proof, is_hashed=False)

        assert is_good
コード例 #6
0
def test_proof_all():
    tree = MerkleTree()

    for user, perm in permission_json.items():
        for schema_id, schema_perm in perm.items():
            tree.add_leaf(json.dumps(schema_perm))

    tree.grow_tree()

    for user, perm in permission_json.items():
        for schema_id, schema_perm in perm.items():
            requested_leaf = json.dumps(permission_json[user][schema_id])
            proof = tree.get_proof(requested_leaf, is_hashed=False)
            is_good = tree.verify_leaf(requested_leaf, tree.get_root_str(),
                                   proof, is_hashed=False)

        assert is_good
コード例 #7
0
def test_merkle_root():

    target_root = '7102ecb1c3412a29997744c8e18d848c4f668d5563325ada204a453dc694308f'

    tree = MerkleTree()

    for user, perm in permission_json.items():
        for schema_id, schema_perm in perm.items():
            tree.add_leaf(json.dumps(schema_perm))

    tree.grow_tree()

    m_root = tree.get_root_str()

    print(m_root)

    assert m_root == target_root
コード例 #8
0
def test_proof_from_new_seeded_tree():
    tree = MerkleTree()

    for user, perm in permission_json.items():
        for schema_id, schema_perm in perm.items():
            tree.add_leaf(json.dumps(schema_perm))

    tree.grow_tree()
    original_root = tree.get_root_str()

    seed_json = tree.get_seed(as_json=True)

    seeded_tree = MerkleTree(seed_json)

    proof_from_new = seeded_tree.get_proof(json.dumps(permission_json['user2']['0']), is_hashed=False)

    is_good = seeded_tree.verify_leaf(json.dumps(permission_json['user2']['0']),
                                      original_root,
                                      proof_from_new, is_hashed=False)

    assert is_good