Add a test for object covering also proofofwork
This commit is contained in:
parent
e4887734a0
commit
218905739c
|
@ -1,9 +1,10 @@
|
||||||
"""Tests for structures"""
|
"""Tests for structures"""
|
||||||
import unittest
|
import unittest
|
||||||
import struct
|
import struct
|
||||||
|
import time
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
|
|
||||||
from minode import structure
|
from minode import message, proofofwork, shared, structure
|
||||||
|
|
||||||
|
|
||||||
# host pregenerated by pybitmessage.protocol.encodeHost()
|
# host pregenerated by pybitmessage.protocol.encodeHost()
|
||||||
|
@ -13,6 +14,12 @@ sample_addr_data = unhexlify(
|
||||||
'0000000060f420b3000000010000000000000001'
|
'0000000060f420b3000000010000000000000001'
|
||||||
'260753000201300000000000000057ae1f90')
|
'260753000201300000000000000057ae1f90')
|
||||||
|
|
||||||
|
# data for an object with expires_time 1697063939
|
||||||
|
# structure.Object(
|
||||||
|
# b'\x00' * 8, expires_time, 42, 1, 2, b'HELLO').to_bytes()
|
||||||
|
sample_object_data = unhexlify(
|
||||||
|
'000000000000000000000000652724030000002a010248454c4c4f')
|
||||||
|
|
||||||
|
|
||||||
class TestStructure(unittest.TestCase):
|
class TestStructure(unittest.TestCase):
|
||||||
"""Testing structures serializing and deserializing"""
|
"""Testing structures serializing and deserializing"""
|
||||||
|
@ -85,3 +92,33 @@ class TestStructure(unittest.TestCase):
|
||||||
|
|
||||||
addr = structure.NetAddr(1, '2607:5300:201:3000::57ae', 8080, 1)
|
addr = structure.NetAddr(1, '2607:5300:201:3000::57ae', 8080, 1)
|
||||||
self.assertEqual(addr.to_bytes()[8:], sample_addr_data[8:])
|
self.assertEqual(addr.to_bytes()[8:], sample_addr_data[8:])
|
||||||
|
|
||||||
|
def test_object(self):
|
||||||
|
"""Create and check objects"""
|
||||||
|
obj = structure.Object.from_message(
|
||||||
|
message.Message(b'object', sample_object_data))
|
||||||
|
self.assertEqual(obj.object_type, 42)
|
||||||
|
self.assertEqual(obj.stream_number, 2)
|
||||||
|
self.assertEqual(obj.expires_time, 1697063939)
|
||||||
|
self.assertEqual(obj.object_payload, b'HELLO')
|
||||||
|
|
||||||
|
obj = structure.Object(
|
||||||
|
b'\x00' * 8, int(time.time() + 3000000), 42, 1, 1, b'HELLO')
|
||||||
|
self.assertFalse(obj.is_valid())
|
||||||
|
obj.expires_time = int(time.time() - 11000)
|
||||||
|
self.assertFalse(obj.is_valid())
|
||||||
|
|
||||||
|
obj = structure.Object(
|
||||||
|
b'\x00' * 8, int(time.time() + 300), 42, 1, 2, b'HELLO')
|
||||||
|
vector = obj.vector
|
||||||
|
proofofwork._worker(obj) # pylint: disable=protected-access
|
||||||
|
obj = shared.objects.popitem()[1]
|
||||||
|
self.assertNotEqual(obj.vector, vector)
|
||||||
|
self.assertFalse(obj.is_expired())
|
||||||
|
self.assertFalse(obj.is_valid())
|
||||||
|
shared.stream = 2
|
||||||
|
self.assertTrue(obj.is_valid())
|
||||||
|
|
||||||
|
obj.object_payload = \
|
||||||
|
b'TIGER, tiger, burning bright. In the forests of the night'
|
||||||
|
self.assertFalse(obj.is_valid())
|
||||||
|
|
Loading…
Reference in New Issue
Block a user