Example #1
0
def test_protocol_with_name():
    proto = protocols.protocol_with_name('ip4')
    assert proto.name == 'ip4'
    assert proto.code == protocols.P_IP4

    with pytest.raises(ValueError):
        proto = protocols.protocol_with_name('foo')
Example #2
0
def test_protocol_equality():
    proto1 = protocols.protocol_with_name('ip4')
    proto2 = protocols.protocol_with_code(protocols.P_IP4)
    proto3 = protocols.protocol_with_name('onion')

    assert proto1 == proto2
    assert proto1 != proto3
Example #3
0
def test_protocol_with_name():
    proto = protocols.protocol_with_name('ip4')
    assert proto.name == 'ip4'
    assert proto.code == protocols.P_IP4
    assert proto.size == 32
    assert proto.vcode == varint.encode(protocols.P_IP4)
    assert hash(proto) == protocols.P_IP4

    with pytest.raises(exceptions.ProtocolNotFoundError):
        proto = protocols.protocol_with_name('foo')
Example #4
0
def test_protocol_equality():
    proto1 = protocols.protocol_with_name('ip4')
    proto2 = protocols.protocol_with_code(protocols.P_IP4)
    proto3 = protocols.protocol_with_name('onion')
    proto4 = protocols.protocol_with_name('onion3')

    assert proto1 == proto2
    assert proto1 != proto3
    assert proto3 != proto4
    assert proto1 is not None
    assert proto2 != str(proto2)
Example #5
0
def test_get_value():
    ma = Multiaddr(
        "/ip4/127.0.0.1/utp/tcp/5555/udp/1234/utp/"
        "p2p/bafzbeigalb34xlqdtvyklzqa5ibmn6pssqsdskc4ty2e4jxy2kamquh22y")

    assert_value_for_proto(ma, P_IP4, "127.0.0.1")
    assert_value_for_proto(ma, P_UTP, None)
    assert_value_for_proto(ma, P_TCP, "5555")
    assert_value_for_proto(ma, P_UDP, "1234")
    assert_value_for_proto(ma, P_P2P,
                           "QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP")
    assert_value_for_proto(ma, "ip4", "127.0.0.1")
    assert_value_for_proto(ma, "utp", None)
    assert_value_for_proto(ma, "tcp", "5555")
    assert_value_for_proto(ma, "udp", "1234")
    assert_value_for_proto(ma, protocol_with_name("ip4"), "127.0.0.1")
    assert_value_for_proto(ma, protocol_with_name("utp"), None)
    assert_value_for_proto(ma, protocol_with_name("tcp"), "5555")
    assert_value_for_proto(ma, protocol_with_name("udp"), "1234")

    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol(P_IP6)
    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol("ip6")
    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol(protocol_with_name("ip6"))

    a = Multiaddr(b"\x35\x03a:b")  # invalid protocol value
    with pytest.raises(BinaryParseError):
        a.value_for_protocol(P_DNS)

    a = Multiaddr("/ip4/0.0.0.0")  # only one addr
    assert_value_for_proto(a, P_IP4, "0.0.0.0")

    a = Multiaddr("/ip4/0.0.0.0/ip4/0.0.0.0/ip4/0.0.0.0")  # same sub-addr
    assert_value_for_proto(a, P_IP4, "0.0.0.0")

    a = Multiaddr("/ip4/0.0.0.0/udp/12345/utp")  # ending in a no-value one.
    assert_value_for_proto(a, P_IP4, "0.0.0.0")
    assert_value_for_proto(a, P_UDP, "12345")
    assert_value_for_proto(a, P_UTP, None)

    a = Multiaddr("/ip4/0.0.0.0/unix/a/b/c/d")  # ending in a path one.
    assert_value_for_proto(a, P_IP4, "0.0.0.0")
    assert_value_for_proto(a, P_UNIX, "/a/b/c/d")

    a = Multiaddr("/unix/studio")
    assert_value_for_proto(a, P_UNIX, "/studio")  # only a path.
Example #6
0
def test_get_value():
    ma = Multiaddr(
        "/ip4/127.0.0.1/utp/tcp/5555/udp/1234/utp/"
        "p2p/QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP")

    assert_value_for_proto(ma, P_IP4, "127.0.0.1")
    assert_value_for_proto(ma, P_UTP, "")
    assert_value_for_proto(ma, P_TCP, "5555")
    assert_value_for_proto(ma, P_UDP, "1234")
    assert_value_for_proto(
        ma, P_P2P, "QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP")
    assert_value_for_proto(ma, "ip4", "127.0.0.1")
    assert_value_for_proto(ma, "utp", "")
    assert_value_for_proto(ma, "tcp", "5555")
    assert_value_for_proto(ma, "udp", "1234")
    assert_value_for_proto(ma, protocol_with_name("ip4"), "127.0.0.1")
    assert_value_for_proto(ma, protocol_with_name("utp"), "")
    assert_value_for_proto(ma, protocol_with_name("tcp"), "5555")
    assert_value_for_proto(ma, protocol_with_name("udp"), "1234")

    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol(P_IP6)
    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol("ip6")
    with pytest.raises(ProtocolLookupError):
        ma.value_for_protocol(protocol_with_name("ip6"))

    a = Multiaddr(b"\x35\x03a:b")  # invalid protocol value
    with pytest.raises(BinaryParseError):
        a.value_for_protocol(P_DNS)

    a = Multiaddr("/ip4/0.0.0.0")  # only one addr
    assert_value_for_proto(a, P_IP4, "0.0.0.0")

    a = Multiaddr("/ip4/0.0.0.0/ip4/0.0.0.0/ip4/0.0.0.0")  # same sub-addr
    assert_value_for_proto(a, P_IP4, "0.0.0.0")

    a = Multiaddr("/ip4/0.0.0.0/udp/12345/utp")  # ending in a no-value one.
    assert_value_for_proto(a, P_IP4, "0.0.0.0")
    assert_value_for_proto(a, P_UDP, "12345")
    assert_value_for_proto(a, P_UTP, "")

    a = Multiaddr("/ip4/0.0.0.0/unix/a/b/c/d")  # ending in a path one.
    assert_value_for_proto(a, P_IP4, "0.0.0.0")
    assert_value_for_proto(a, P_UNIX, "/a/b/c/d")

    a = Multiaddr("/unix/studio")
    assert_value_for_proto(a, P_UNIX, "/studio")  # only a path.
Example #7
0
def test_protocols():
    ma = Multiaddr("/ip4/127.0.0.1/udp/1234")
    protos = ma.protocols()
    assert protos[0].code == protocol_with_name("ip4").code
    assert protos[1].code == protocol_with_name("udp").code
Example #8
0
    split_m = split(mm)
    for i, addr in enumerate(split_m):
        assert str(addr) == expected[i]
    joined = join(split_m)
    assert mm == joined


def test_protocols():
    ma = Multiaddr("/ip4/127.0.0.1/udp/1234")
    protos = ma.protocols()
    assert protos[0].code == protocol_with_name("ip4").code
    assert protos[1].code == protocol_with_name("udp").code


@pytest.mark.parametrize('proto_string,expected', [
    ("/ip4", [protocol_with_name("ip4")]),
    ("/ip4/tcp", [protocol_with_name("ip4"),
                  protocol_with_name("tcp")]),
    ("ip4/tcp/udp/ip6", [
        protocol_with_name("ip4"),
        protocol_with_name("tcp"),
        protocol_with_name("udp"),
        protocol_with_name("ip6")
    ]),
    ("////////ip4/tcp", [protocol_with_name("ip4"),
                         protocol_with_name("tcp")]),
    ("ip4/udp/////////",
     [protocol_with_name("ip4"),
      protocol_with_name("udp")]),
    ("////////ip4/tcp////////",
     [protocol_with_name("ip4"),
Example #9
0
def test_protocols_with_string(names):
    expected = [protocols.protocol_with_name(name) for name in names]
    ins = "/".join(names)
    assert protocols.protocols_with_string(ins) == expected
    assert protocols.protocols_with_string("/" + ins) == expected
    assert protocols.protocols_with_string("/" + ins + "/") == expected
Example #10
0
def test_protocol_repr():
    proto = protocols.protocol_with_name('ip4')
    assert "Protocol(code=4, name='ip4', size=32)" == repr(proto)
Example #11
0
def test_protocols():
    ma = Multiaddr("/ip4/127.0.0.1/udp/1234")
    protos = ma.protocols()
    assert protos[0].code == protocol_with_name("ip4").code
    assert protos[1].code == protocol_with_name("udp").code
Example #12
0
    assert m2 == m4
    assert m4 == m2
    assert m3 == m4
    assert m4 == m3


def test_protocols():
    ma = Multiaddr("/ip4/127.0.0.1/udp/1234")
    protos = ma.protocols()
    assert protos[0].code == protocol_with_name("ip4").code
    assert protos[1].code == protocol_with_name("udp").code


@pytest.mark.parametrize(
    'proto_string,expected',
    [("/ip4", [protocol_with_name("ip4")]),
     ("/ip4/tcp", [protocol_with_name("ip4"), protocol_with_name("tcp")]),
     ("ip4/tcp/udp/ip6",
      [protocol_with_name("ip4"),
       protocol_with_name("tcp"),
       protocol_with_name("udp"),
       protocol_with_name("ip6")]),
     ("////////ip4/tcp",
      [protocol_with_name("ip4"), protocol_with_name("tcp")]),
     ("ip4/udp/////////",
      [protocol_with_name("ip4"), protocol_with_name("udp")]),
     ("////////ip4/tcp////////",
      [protocol_with_name("ip4"), protocol_with_name("tcp")]),
     ("////////ip4/////////tcp////////",
      [protocol_with_name("ip4"), protocol_with_name("tcp")])])
def test_protocols_with_string(proto_string, expected):