mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
Update tests for new logic
This commit is contained in:
@ -3,11 +3,11 @@ import asyncio
|
||||
from libp2p import new_node
|
||||
from libp2p.peer.peerinfo import info_from_p2p_addr
|
||||
from libp2p.protocol_muxer.multiselect_client import MultiselectClientError
|
||||
from libp2p.security.insecure.transport import InsecureTransport
|
||||
from libp2p.security.insecure.transport import InsecureSession, InsecureTransport
|
||||
from libp2p.security.simple.transport import SimpleSecurityTransport
|
||||
import multiaddr
|
||||
import pytest
|
||||
from tests.utils import cleanup, connect
|
||||
from tests.utils import cleanup, connect, generate_new_private_key
|
||||
|
||||
# TODO: Add tests for multiple streams being opened on different
|
||||
# protocols through the same connection
|
||||
@ -19,6 +19,15 @@ def peer_id_for_node(node):
|
||||
return info.peer_id
|
||||
|
||||
|
||||
initiator_private_key = generate_new_private_key()
|
||||
initiator_private_key_bytes = initiator_private_key.export_key("DER")
|
||||
initiator_public_key_bytes = initiator_private_key.publickey().export_key("DER")
|
||||
|
||||
noninitiator_private_key = generate_new_private_key()
|
||||
noninitiator_private_key_bytes = noninitiator_private_key.export_key("DER")
|
||||
noninitiator_public_key_bytes = noninitiator_private_key.publickey().export_key("DER")
|
||||
|
||||
|
||||
async def perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
):
|
||||
@ -49,8 +58,8 @@ async def perform_simple_test(
|
||||
node2_conn = node2.get_network().connections[peer_id_for_node(node1)]
|
||||
|
||||
# Perform assertion
|
||||
assertion_func(node1_conn.secured_conn.get_security_details())
|
||||
assertion_func(node2_conn.secured_conn.get_security_details())
|
||||
assertion_func(node1_conn.conn)
|
||||
assertion_func(node2_conn.conn)
|
||||
|
||||
# Success, terminate pending tasks.
|
||||
await cleanup()
|
||||
@ -58,11 +67,19 @@ async def perform_simple_test(
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_single_insecure_security_transport_succeeds():
|
||||
transports_for_initiator = {"foo": InsecureTransport("foo")}
|
||||
transports_for_noninitiator = {"foo": InsecureTransport("foo")}
|
||||
transports_for_initiator = {
|
||||
"foo": InsecureTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes
|
||||
)
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"foo": InsecureTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes
|
||||
)
|
||||
}
|
||||
|
||||
def assertion_func(details):
|
||||
assert details["id"] == "foo"
|
||||
def assertion_func(conn):
|
||||
assert isinstance(conn, InsecureSession)
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
@ -71,11 +88,19 @@ async def test_single_insecure_security_transport_succeeds():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_single_simple_test_security_transport_succeeds():
|
||||
transports_for_initiator = {"tacos": SimpleSecurityTransport("tacos")}
|
||||
transports_for_noninitiator = {"tacos": SimpleSecurityTransport("tacos")}
|
||||
transports_for_initiator = {
|
||||
"tacos": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "tacos"
|
||||
)
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"tacos": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "tacos"
|
||||
)
|
||||
}
|
||||
|
||||
def assertion_func(details):
|
||||
assert details["key_phrase"] == "tacos"
|
||||
def assertion_func(conn):
|
||||
assert conn.key_phrase == "tacos"
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
@ -85,13 +110,21 @@ async def test_single_simple_test_security_transport_succeeds():
|
||||
@pytest.mark.asyncio
|
||||
async def test_two_simple_test_security_transport_for_initiator_succeeds():
|
||||
transports_for_initiator = {
|
||||
"tacos": SimpleSecurityTransport("tacos"),
|
||||
"shleep": SimpleSecurityTransport("shleep"),
|
||||
"tacos": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "tacos"
|
||||
),
|
||||
"shleep": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "shleep"
|
||||
),
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"shleep": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "shleep"
|
||||
)
|
||||
}
|
||||
transports_for_noninitiator = {"shleep": SimpleSecurityTransport("shleep")}
|
||||
|
||||
def assertion_func(details):
|
||||
assert details["key_phrase"] == "shleep"
|
||||
def assertion_func(conn):
|
||||
assert conn.key_phrase == "shleep"
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
@ -100,14 +133,22 @@ async def test_two_simple_test_security_transport_for_initiator_succeeds():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_two_simple_test_security_transport_for_noninitiator_succeeds():
|
||||
transports_for_initiator = {"tacos": SimpleSecurityTransport("tacos")}
|
||||
transports_for_initiator = {
|
||||
"tacos": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "tacos"
|
||||
)
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"shleep": SimpleSecurityTransport("shleep"),
|
||||
"tacos": SimpleSecurityTransport("tacos"),
|
||||
"shleep": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "shleep"
|
||||
),
|
||||
"tacos": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "tacos"
|
||||
),
|
||||
}
|
||||
|
||||
def assertion_func(details):
|
||||
assert details["key_phrase"] == "tacos"
|
||||
def assertion_func(conn):
|
||||
assert conn.key_phrase == "tacos"
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
@ -117,16 +158,24 @@ async def test_two_simple_test_security_transport_for_noninitiator_succeeds():
|
||||
@pytest.mark.asyncio
|
||||
async def test_two_simple_test_security_transport_for_both_succeeds():
|
||||
transports_for_initiator = {
|
||||
"a": SimpleSecurityTransport("a"),
|
||||
"b": SimpleSecurityTransport("b"),
|
||||
"a": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "a"
|
||||
),
|
||||
"b": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "b"
|
||||
),
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"c": SimpleSecurityTransport("c"),
|
||||
"b": SimpleSecurityTransport("b"),
|
||||
"b": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "b"
|
||||
),
|
||||
"c": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "c"
|
||||
),
|
||||
}
|
||||
|
||||
def assertion_func(details):
|
||||
assert details["key_phrase"] == "b"
|
||||
def assertion_func(conn):
|
||||
assert conn.key_phrase == "b"
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
@ -136,12 +185,20 @@ async def test_two_simple_test_security_transport_for_both_succeeds():
|
||||
@pytest.mark.asyncio
|
||||
async def test_multiple_security_none_the_same_fails():
|
||||
transports_for_initiator = {
|
||||
"a": SimpleSecurityTransport("a"),
|
||||
"b": SimpleSecurityTransport("b"),
|
||||
"a": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "a"
|
||||
),
|
||||
"b": SimpleSecurityTransport(
|
||||
initiator_private_key_bytes, initiator_public_key_bytes, "b"
|
||||
),
|
||||
}
|
||||
transports_for_noninitiator = {
|
||||
"c": SimpleSecurityTransport("c"),
|
||||
"d": SimpleSecurityTransport("d"),
|
||||
"d": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "d"
|
||||
),
|
||||
"c": SimpleSecurityTransport(
|
||||
noninitiator_private_key_bytes, noninitiator_public_key_bytes, "c"
|
||||
),
|
||||
}
|
||||
|
||||
def assertion_func(_):
|
||||
@ -160,18 +217,18 @@ async def test_default_insecure_security():
|
||||
transports_for_initiator = None
|
||||
transports_for_noninitiator = None
|
||||
|
||||
details1 = None
|
||||
details2 = None
|
||||
conn1 = None
|
||||
conn2 = None
|
||||
|
||||
def assertion_func(details):
|
||||
nonlocal details1
|
||||
nonlocal details2
|
||||
if not details1:
|
||||
details1 = details
|
||||
elif not details2:
|
||||
details2 = details
|
||||
def assertion_func(conn):
|
||||
nonlocal conn1
|
||||
nonlocal conn2
|
||||
if not conn1:
|
||||
conn1 = conn
|
||||
elif not conn2:
|
||||
conn2 = conn
|
||||
else:
|
||||
assert details1 == details2
|
||||
assert conn1 == conn2
|
||||
|
||||
await perform_simple_test(
|
||||
assertion_func, transports_for_initiator, transports_for_noninitiator
|
||||
|
||||
Reference in New Issue
Block a user