This repository has been archived on 2024-12-17. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-17/src/tests/test_inventory.py

59 lines
1.9 KiB
Python
Raw Normal View History

"""Tests for inventory"""
import os
import shutil
import struct
import tempfile
import time
import unittest
2021-07-29 21:16:37 +02:00
from pybitmessage import highlevelcrypto
from pybitmessage.storage import storage
from .partial import TestPartialRun
class TestFilesystemInventory(TestPartialRun):
"""A test case for the inventory using filesystem backend"""
@classmethod
def setUpClass(cls):
cls.home = os.environ['BITMESSAGE_HOME'] = tempfile.mkdtemp()
super(TestFilesystemInventory, cls).setUpClass()
from inventory import create_inventory_instance
cls.inventory = create_inventory_instance('filesystem')
def test_consistency(self):
"""Ensure the inventory is of proper class"""
if os.path.isfile(os.path.join(self.home, 'messages.dat')):
# this will likely never happen
self.fail("Failed to configure filesystem inventory!")
def test_appending(self):
"""Add a sample message to the inventory"""
TTL = 24 * 60 * 60
embedded_time = int(time.time() + TTL)
msg = struct.pack('>Q', embedded_time) + os.urandom(166)
2021-07-29 21:16:37 +02:00
invhash = highlevelcrypto.calculateInventoryHash(msg)
self.inventory[invhash] = (2, 1, msg, embedded_time, b'')
@classmethod
def tearDownClass(cls):
super(TestFilesystemInventory, cls).tearDownClass()
cls.inventory.flush()
shutil.rmtree(os.path.join(cls.home, cls.inventory.topDir))
class TestStorageAbstract(unittest.TestCase):
"""A test case for refactoring of the storage abstract classes"""
def test_inventory_storage(self):
"""Check inherited abstract methods"""
with self.assertRaisesRegexp(
TypeError, "^Can't instantiate abstract class.*"
"methods __contains__, __delitem__, __getitem__, __iter__,"
" __len__, __setitem__"
): # pylint: disable=abstract-class-instantiated
storage.InventoryStorage()