mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-21 16:14:23 +01:00
pytest: Add tests for the sphinx onion generation and processing
These just run the test vectors and add a test for the devtools/onion tool so we don't accidentally break them.
This commit is contained in:
committed by
Rusty Russell
parent
06e9a9f31f
commit
bc74e49534
60
tests/test_onion.py
Normal file
60
tests/test_onion.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import subprocess
|
||||
import pytest
|
||||
import os
|
||||
from fixtures import * # noqa: F401,F403
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def oniontool():
|
||||
path = os.path.join(os.path.dirname(__file__), "..", "devtools", "onion")
|
||||
return path
|
||||
|
||||
|
||||
privkeys = [
|
||||
'4141414141414141414141414141414141414141414141414141414141414141',
|
||||
'4242424242424242424242424242424242424242424242424242424242424242',
|
||||
'4343434343434343434343434343434343434343434343434343434343434343',
|
||||
'4444444444444444444444444444444444444444444444444444444444444444',
|
||||
'4545454545454545454545454545454545454545454545454545454545454545'
|
||||
]
|
||||
|
||||
pubkeys = [
|
||||
'02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619',
|
||||
'0324653eac434488002cc06bbfb7f10fe18991e35f9fe4302dbea6d2353dc0ab1c',
|
||||
'027f31ebc5462c1fdce1b737ecff52d37d75dea43ce11c74d25aa297165faa2007',
|
||||
'032c0b7cf95324a07d05398b240174dc0c2be444d96b159aa6c7f7b1e668680991',
|
||||
'02edabbd16b41c8371b92ef2f04c1185b4f03b6dcd52ba9b78d9d7c89c8f221145'
|
||||
]
|
||||
|
||||
|
||||
def test_onion(directory, oniontool):
|
||||
""" Generate a 5 hop onion and then decode it.
|
||||
"""
|
||||
os.makedirs(directory)
|
||||
tempfile = os.path.join(directory, 'onion')
|
||||
out = subprocess.check_output(
|
||||
[oniontool, 'generate'] + pubkeys
|
||||
).decode('ASCII').strip().split('\n')
|
||||
assert(len(out) == 1)
|
||||
|
||||
def store_onion(o):
|
||||
with open(tempfile, 'w') as f:
|
||||
f.write(o)
|
||||
|
||||
store_onion(out[0])
|
||||
|
||||
for i, pk in enumerate(privkeys):
|
||||
out = subprocess.check_output([oniontool, 'decode', tempfile, pk]).decode('ASCII').strip().split('\n')
|
||||
store_onion(out[-1][5:])
|
||||
|
||||
assert(out == ['payload=000000000000000000000000000000000400000004000000000000000000000000'])
|
||||
|
||||
|
||||
def test_onion_vectors(oniontool):
|
||||
tests = [
|
||||
'onion-test-multi-frame.json',
|
||||
'onion-test-v0.json']
|
||||
|
||||
for t in tests:
|
||||
p = os.path.join(os.path.dirname(__file__), 'vectors', t)
|
||||
print(subprocess.check_output([oniontool, 'runtest', p]).decode('ASCII'))
|
||||
Reference in New Issue
Block a user