2023-08-01 23:15:00 +02:00
|
|
|
"""Tests for messages"""
|
2021-08-01 18:58:06 +02:00
|
|
|
import unittest
|
|
|
|
from binascii import unhexlify
|
|
|
|
|
|
|
|
from minode import message
|
|
|
|
|
|
|
|
|
2023-08-01 23:15:00 +02:00
|
|
|
MAGIC = 0xE9BEB4D9
|
2021-08-01 18:58:06 +02:00
|
|
|
|
|
|
|
# 500 identical peers:
|
|
|
|
# import ipaddress
|
|
|
|
# from hyperbit import net, packet
|
|
|
|
# [packet.Address(
|
|
|
|
# 1626611891, 1, 1, net.ipv6(ipaddress.ip_address('127.0.0.1')).packed,
|
|
|
|
# 8444
|
|
|
|
# ) for _ in range(1000)]
|
|
|
|
sample_data = unhexlify(
|
|
|
|
'fd01f4' + (
|
|
|
|
'0000000060f420b30000000'
|
|
|
|
'1000000000000000100000000000000000000ffff7f00000120fc'
|
|
|
|
) * 500
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class TestMessage(unittest.TestCase):
|
|
|
|
"""Test assembling and disassembling of network mesages"""
|
|
|
|
|
|
|
|
def test_packet(self):
|
|
|
|
"""Check the packet created by message.Message()"""
|
2023-08-01 23:15:00 +02:00
|
|
|
head = unhexlify(b'%x' % MAGIC)
|
2021-08-01 18:58:06 +02:00
|
|
|
self.assertEqual(
|
|
|
|
message.Message(b'ping', b'').to_bytes()[:len(head)], head)
|
|
|
|
|
|
|
|
def test_addr(self):
|
|
|
|
"""Test addr messages"""
|
|
|
|
msg = message.Message(b'addr', sample_data)
|
|
|
|
addr_packet = message.Addr.from_message(msg)
|
|
|
|
self.assertEqual(len(addr_packet.addresses), 500)
|
|
|
|
address = addr_packet.addresses.pop()
|
|
|
|
self.assertEqual(address.stream, 1)
|
|
|
|
self.assertEqual(address.services, 1)
|
|
|
|
self.assertEqual(address.port, 8444)
|
|
|
|
self.assertEqual(address.host, '127.0.0.1')
|