Source code for tests.integration_tests.network.test_network_db
"""Test the main :class: `yawning_titan.networks.network_db.NetworkDB`."""
import copy
import os
from unittest.mock import patch
import pytest
from tests.yawning_titan_db_patch import yawning_titan_db_init_patch
from yawning_titan.db.doc_metadata import DocMetadataSchema
from yawning_titan.db.yawning_titan_db import YawningTitanDB
from yawning_titan.exceptions import YawningTitanDBError
from yawning_titan.networks.network_db import NetworkDB, NetworkSchema
[docs]@pytest.mark.integration_test
def test_db_file_exists():
"""Test the creation of the network db."""
with patch.object(YawningTitanDB, "__init__", yawning_titan_db_init_patch):
db = NetworkDB()
assert os.path.isfile(db._db._path)
db._db.close_and_delete_temp_db()
[docs]@pytest.mark.integration_test
def test_delete_default_network_delete_fails():
"""Test attempted deletion of locked network fails."""
with patch.object(YawningTitanDB, "__init__", yawning_titan_db_init_patch):
db = NetworkDB()
db.rebuild_db()
config = db.search(DocMetadataSchema.LOCKED == True)[0]
with pytest.raises(YawningTitanDBError):
db.remove(config)
db._db.close_and_delete_temp_db()
[docs]@pytest.mark.integration_test
def test_reset_default_networks():
"""Test resetting network to default removes modifications."""
with patch.object(YawningTitanDB, "__init__", yawning_titan_db_init_patch):
db = NetworkDB()
db.rebuild_db()
networks_copy = copy.deepcopy(db.all())
network_copy = networks_copy[0]
# Update the object locally
network_copy.set_random_entry_nodes = False
# Hack an update to the locked network in the db
db._db.db.update(
network_copy.to_dict(json_serializable=True),
DocMetadataSchema.UUID == network_copy.doc_metadata.uuid,
)
# Perform the default network reset
db.reset_default_networks_in_db()
assert db.all() == networks_copy
db._db.close_and_delete_temp_db()
[docs]@pytest.mark.integration_test
def test_network_schema():
"""Test querying the network DB using NetworkSchema."""
with patch.object(YawningTitanDB, "__init__", yawning_titan_db_init_patch):
db = NetworkDB()
db.rebuild_db()
results = db.search(NetworkSchema.SET_RANDOM_ENTRY_NODES == True)
assert len(results) == 2
assert results[0].doc_metadata.uuid == "b3cd9dfd-b178-415d-93f0-c9e279b3c511"
db._db.close_and_delete_temp_db()