diff --git a/tests/backend/localmongodb/test_connection.py b/tests/backend/localmongodb/test_connection.py index a76f5b85..77692abe 100644 --- a/tests/backend/localmongodb/test_connection.py +++ b/tests/backend/localmongodb/test_connection.py @@ -55,10 +55,8 @@ def test_get_connection_returns_the_correct_instance(db_host, db_port): assert conn.conn._topology_settings.replica_set_name == config['replicaset'] -@mock.patch('bigchaindb.backend.localmongodb.connection.initialize_replica_set') @mock.patch('pymongo.MongoClient.__init__') -@mock.patch('time.sleep') -def test_connection_error(mock_sleep, mock_client, mock_init_repl_set): +def test_connection_error(mock_client): from bigchaindb.backend import connect from bigchaindb.backend.exceptions import ConnectionError @@ -74,9 +72,7 @@ def test_connection_error(mock_sleep, mock_client, mock_init_repl_set): assert mock_client.call_count == 3 -@mock.patch('bigchaindb.backend.localmongodb.connection.initialize_replica_set') -@mock.patch('pymongo.MongoClient') -def test_connection_run_errors(mock_client, mock_init_repl_set): +def test_connection_run_errors(): from bigchaindb.backend import connect from bigchaindb.backend.exceptions import (DuplicateKeyError, OperationError, diff --git a/tests/backend/localmongodb/test_queries.py b/tests/backend/localmongodb/test_queries.py index 4d1d7bdf..363d02a1 100644 --- a/tests/backend/localmongodb/test_queries.py +++ b/tests/backend/localmongodb/test_queries.py @@ -7,7 +7,7 @@ from copy import deepcopy import pytest import pymongo -pytestmark = [pytest.mark.tendermint, pytest.mark.localmongodb, pytest.mark.bdb] +pytestmark = [pytest.mark.tendermint, pytest.mark.bdb] def test_get_txids_filtered(signed_create_tx, signed_transfer_tx): diff --git a/tests/commands/conftest.py b/tests/commands/conftest.py index 025d5708..ce09ff24 100644 --- a/tests/commands/conftest.py +++ b/tests/commands/conftest.py @@ -27,8 +27,8 @@ def mock_db_init_with_existing_db(monkeypatch): @pytest.fixture def mock_processes_start(monkeypatch): - from bigchaindb import processes - monkeypatch.setattr(processes, 'start', lambda *args: None) + from bigchaindb.utils import Process + monkeypatch.setattr(Process, 'run', lambda *args: None) @pytest.fixture diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index d834ae6b..a0c070d8 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -179,7 +179,7 @@ def test_run_configure_when_config_does_exist(monkeypatch, mock_bigchaindb_backup_config): value = {} - def mock_write_config(newconfig, filename=None): + def mock_write_config(newconfig): value['return'] = newconfig from bigchaindb.commands.bigchaindb import run_configure @@ -244,11 +244,8 @@ def test_run_start_when_db_already_exists(mocker, @pytest.mark.tendermint -@patch('argparse.ArgumentParser.parse_args') -@patch('bigchaindb.commands.utils.base_parser') @patch('bigchaindb.commands.utils.start') -def test_calling_main(start_mock, base_parser_mock, parse_args_mock, - monkeypatch): +def test_calling_main(start_mock, monkeypatch): from bigchaindb.commands.bigchaindb import main argparser_mock = Mock() @@ -280,8 +277,7 @@ def test_calling_main(start_mock, base_parser_mock, parse_args_mock, @patch('bigchaindb.config_utils.autoconfigure') @patch('bigchaindb.commands.bigchaindb.run_recover') @patch('bigchaindb.start.start') -def test_recover_db_on_start(mock_autoconfigure, - mock_run_recover, +def test_recover_db_on_start(mock_run_recover, mock_start, mocked_setup_logging): from bigchaindb.commands.bigchaindb import run_start diff --git a/tests/conftest.py b/tests/conftest.py index c5dabd2d..65d248ce 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -37,13 +37,6 @@ USER_PRIVATE_KEY = '8eJ8q9ZQpReWyQT5aFCiwtZ5wDZC4eDnCen88p3tQ6ie' USER_PUBLIC_KEY = 'JEAkEJqLbbgDRAtMm8YAjGp759Aq2qTn9eaEHUj2XePE' -def pytest_runtest_setup(item): - if isinstance(item, item.Function): - backend = item.session.config.getoption('--database-backend') - if (item.get_marker('localmongodb') and backend != 'localmongodb'): - pytest.skip('Skip tendermint specific tests if not using localmongodb') - - def pytest_addoption(parser): from bigchaindb.backend.connection import BACKENDS @@ -56,19 +49,6 @@ def pytest_addoption(parser): ) -def pytest_ignore_collect(path, config): - from bigchaindb.backend.connection import BACKENDS - path = str(path) - - supported_backends = BACKENDS.keys() - - if os.path.isdir(path): - dirname = os.path.split(path)[1] - if dirname in supported_backends and dirname != config.getoption('--database-backend'): - print('Ignoring unrequested backend test dir: ', path) - return True - - def pytest_configure(config): config.addinivalue_line( 'markers', @@ -282,12 +262,6 @@ def b(): return BigchainDB() -@pytest.fixture -def tb(): - from bigchaindb import BigchainDB - return BigchainDB() - - @pytest.fixture def create_tx(alice, user_pk): from bigchaindb.models import Transaction @@ -349,24 +323,6 @@ def inputs(user_pk, b, alice): b.store_bulk_transactions(transactions) -@pytest.fixture -def inputs_shared(user_pk, user2_pk, alice): - from bigchaindb.models import Transaction - - # create blocks with transactions for `USER` to spend - for block in range(4): - transactions = [ - Transaction.create( - [alice.public_key], - [user_pk, user2_pk], - metadata={'msg': random.random()}, - ).sign([alice.private_key]).to_dict() - for _ in range(10) - ] - block = Block(app_hash='', height=_get_height(b), transaction=transactions) - b.store_block(block._asdict()) - - @pytest.fixture def dummy_db(request): from bigchaindb.backend import connect, schema @@ -389,26 +345,6 @@ def dummy_db(request): pass -@pytest.fixture -def not_yet_created_db(request): - from bigchaindb.backend import connect, schema - from bigchaindb.common.exceptions import DatabaseDoesNotExist - conn = connect() - dbname = request.fixturename - xdist_suffix = getattr(request.config, 'slaveinput', {}).get('slaveid') - if xdist_suffix: - dbname = '{}_{}'.format(dbname, xdist_suffix) - try: - schema.drop_database(conn, dbname) - except DatabaseDoesNotExist: - pass - yield dbname - try: - schema.drop_database(conn, dbname) - except DatabaseDoesNotExist: - pass - - @pytest.fixture def db_config(): from bigchaindb import config @@ -464,29 +400,6 @@ def tendermint_ws_url(tendermint_host, tendermint_port): return 'ws://{}:{}/websocket'.format(tendermint_host, tendermint_port) -@pytest.fixture -def tendermint_context(tendermint_host, tendermint_port, tendermint_ws_url): - TendermintContext = namedtuple( - 'TendermintContext', ('host', 'port', 'ws_url')) - return TendermintContext( - host=tendermint_host, - port=tendermint_port, - ws_url=tendermint_ws_url, - ) - - -@pytest.fixture -def mocked_setup_pub_logger(mocker): - return mocker.patch( - 'bigchaindb.log.setup.setup_pub_logger', autospec=True, spec_set=True) - - -@pytest.fixture -def mocked_setup_sub_logger(mocker): - return mocker.patch( - 'bigchaindb.log.setup.setup_sub_logger', autospec=True, spec_set=True) - - @pytest.fixture(autouse=True) def _abci_http(request): if request.keywords.get('abci', None): @@ -513,7 +426,7 @@ def abci_http(_setup_database, _configure_bigchaindb, abci_server, @pytest.yield_fixture(scope='session') -def event_loop(request): +def event_loop(): import asyncio loop = asyncio.get_event_loop_policy().new_event_loop() diff --git a/tests/tendermint/conftest.py b/tests/tendermint/conftest.py index 22dec41c..8efa8e76 100644 --- a/tests/tendermint/conftest.py +++ b/tests/tendermint/conftest.py @@ -8,12 +8,6 @@ import codecs import abci.types_pb2 as types -@pytest.fixture -def b(): - from bigchaindb import BigchainDB - return BigchainDB() - - @pytest.fixture def validator_pub_key(): return 'B0E42D2589A455EAD339A035D6CE1C8C3E25863F268120AA0162AD7D003A4014' diff --git a/tests/tendermint/test_integration.py b/tests/tendermint/test_integration.py index 1a8250bd..683404bc 100644 --- a/tests/tendermint/test_integration.py +++ b/tests/tendermint/test_integration.py @@ -16,13 +16,12 @@ from io import BytesIO @pytest.mark.tendermint @pytest.mark.bdb -def test_app(tb, init_chain_request): +def test_app(b, init_chain_request): from bigchaindb import App from bigchaindb.tendermint_utils import calculate_hash from bigchaindb.common.crypto import generate_key_pair from bigchaindb.models import Transaction - b = tb app = App(b) p = ProtocolHandler(app) diff --git a/tests/tendermint/test_lib.py b/tests/tendermint/test_lib.py index cc511b3a..d8223a25 100644 --- a/tests/tendermint/test_lib.py +++ b/tests/tendermint/test_lib.py @@ -57,10 +57,9 @@ def test_asset_is_separated_from_transaciton(b): @pytest.mark.bdb -def test_get_latest_block(tb): +def test_get_latest_block(b): from bigchaindb.lib import Block - b = tb for i in range(10): app_hash = os.urandom(16).hex() txn_id = os.urandom(16).hex() @@ -75,8 +74,8 @@ def test_get_latest_block(tb): @pytest.mark.bdb @patch('bigchaindb.backend.query.get_block', return_value=None) @patch('bigchaindb.BigchainDB.get_latest_block', return_value={'height': 10}) -def test_get_empty_block(_0, _1, tb): - assert tb.get_block(5) == {'height': 5, 'transactions': []} +def test_get_empty_block(_0, _1, b): + assert b.get_block(5) == {'height': 5, 'transactions': []} def test_validation_error(b): @@ -172,15 +171,15 @@ def test_validator_updates(b, validator_pub_key): @pytest.mark.bdb -def test_update_utxoset(tb, signed_create_tx, signed_transfer_tx, db_context): +def test_update_utxoset(b, signed_create_tx, signed_transfer_tx, db_context): mongo_client = MongoClient(host=db_context.host, port=db_context.port) - tb.update_utxoset(signed_create_tx) + b.update_utxoset(signed_create_tx) utxoset = mongo_client[db_context.name]['utxos'] assert utxoset.count() == 1 utxo = utxoset.find_one() assert utxo['transaction_id'] == signed_create_tx.id assert utxo['output_index'] == 0 - tb.update_utxoset(signed_transfer_tx) + b.update_utxoset(signed_transfer_tx) assert utxoset.count() == 1 utxo = utxoset.find_one() assert utxo['transaction_id'] == signed_transfer_tx.id @@ -188,14 +187,14 @@ def test_update_utxoset(tb, signed_create_tx, signed_transfer_tx, db_context): @pytest.mark.bdb -def test_store_transaction(mocker, tb, signed_create_tx, +def test_store_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context): mocked_store_asset = mocker.patch('bigchaindb.backend.query.store_assets') mocked_store_metadata = mocker.patch( 'bigchaindb.backend.query.store_metadatas') mocked_store_transaction = mocker.patch( 'bigchaindb.backend.query.store_transactions') - tb.store_bulk_transactions([signed_create_tx]) + b.store_bulk_transactions([signed_create_tx]) # mongo_client = MongoClient(host=db_context.host, port=db_context.port) # utxoset = mongo_client[db_context.name]['utxos'] # assert utxoset.count() == 1 @@ -204,40 +203,40 @@ def test_store_transaction(mocker, tb, signed_create_tx, # assert utxo['output_index'] == 0 mocked_store_asset.assert_called_once_with( - tb.connection, + b.connection, [{'id': signed_create_tx.id, 'data': signed_create_tx.asset['data']}], ) mocked_store_metadata.assert_called_once_with( - tb.connection, + b.connection, [{'id': signed_create_tx.id, 'metadata': signed_create_tx.metadata}], ) mocked_store_transaction.assert_called_once_with( - tb.connection, + b.connection, [{k: v for k, v in signed_create_tx.to_dict().items() if k not in ('asset', 'metadata')}], ) mocked_store_asset.reset_mock() mocked_store_metadata.reset_mock() mocked_store_transaction.reset_mock() - tb.store_bulk_transactions([signed_transfer_tx]) + b.store_bulk_transactions([signed_transfer_tx]) # assert utxoset.count() == 1 # utxo = utxoset.find_one() # assert utxo['transaction_id'] == signed_transfer_tx.id # assert utxo['output_index'] == 0 assert not mocked_store_asset.called mocked_store_metadata.asser_called_once_with( - tb.connection, + b.connection, [{'id': signed_transfer_tx.id, 'metadata': signed_transfer_tx.metadata}], ) mocked_store_transaction.assert_called_once_with( - tb.connection, + b.connection, [{k: v for k, v in signed_transfer_tx.to_dict().items() if k != 'metadata'}], ) @pytest.mark.bdb -def test_store_bulk_transaction(mocker, tb, signed_create_tx, +def test_store_bulk_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context): mocked_store_assets = mocker.patch( 'bigchaindb.backend.query.store_assets') @@ -245,7 +244,7 @@ def test_store_bulk_transaction(mocker, tb, signed_create_tx, 'bigchaindb.backend.query.store_metadatas') mocked_store_transactions = mocker.patch( 'bigchaindb.backend.query.store_transactions') - tb.store_bulk_transactions((signed_create_tx,)) + b.store_bulk_transactions((signed_create_tx,)) # mongo_client = MongoClient(host=db_context.host, port=db_context.port) # utxoset = mongo_client[db_context.name]['utxos'] # assert utxoset.count() == 1 @@ -253,34 +252,34 @@ def test_store_bulk_transaction(mocker, tb, signed_create_tx, # assert utxo['transaction_id'] == signed_create_tx.id # assert utxo['output_index'] == 0 mocked_store_assets.assert_called_once_with( - tb.connection, + b.connection, [{'id': signed_create_tx.id, 'data': signed_create_tx.asset['data']}], ) mocked_store_metadata.assert_called_once_with( - tb.connection, + b.connection, [{'id': signed_create_tx.id, 'metadata': signed_create_tx.metadata}], ) mocked_store_transactions.assert_called_once_with( - tb.connection, + b.connection, [{k: v for k, v in signed_create_tx.to_dict().items() if k not in ('asset', 'metadata')}], ) mocked_store_assets.reset_mock() mocked_store_metadata.reset_mock() mocked_store_transactions.reset_mock() - tb.store_bulk_transactions((signed_transfer_tx,)) + b.store_bulk_transactions((signed_transfer_tx,)) # assert utxoset.count() == 1 # utxo = utxoset.find_one() # assert utxo['transaction_id'] == signed_transfer_tx.id # assert utxo['output_index'] == 0 assert not mocked_store_assets.called mocked_store_metadata.asser_called_once_with( - tb.connection, + b.connection, [{'id': signed_transfer_tx.id, 'metadata': signed_transfer_tx.metadata}], ) mocked_store_transactions.assert_called_once_with( - tb.connection, + b.connection, [{k: v for k, v in signed_transfer_tx.to_dict().items() if k != 'metadata'}], ) diff --git a/tests/test_config_utils.py b/tests/test_config_utils.py index 05a5ad83..35f0e486 100644 --- a/tests/test_config_utils.py +++ b/tests/test_config_utils.py @@ -24,7 +24,7 @@ def clean_config(monkeypatch, request): monkeypatch.setattr('bigchaindb.config', original_config) -def test_bigchain_instance_is_initialized_when_conf_provided(request): +def test_bigchain_instance_is_initialized_when_conf_provided(): import bigchaindb from bigchaindb import config_utils assert 'CONFIGURED' not in bigchaindb.config diff --git a/tests/test_core.py b/tests/test_core.py index 0e3a2f12..03701267 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -66,7 +66,6 @@ def test_bigchain_class_initialization_with_parameters(): assert bigchain.consensus == BaseConsensusRules -@pytest.mark.genesis def test_get_spent_issue_1271(b, alice, bob, carol): from bigchaindb.models import Transaction diff --git a/tests/web/test_assets.py b/tests/web/test_assets.py index 800537ba..2c658cdc 100644 --- a/tests/web/test_assets.py +++ b/tests/web/test_assets.py @@ -23,8 +23,7 @@ def test_get_assets_with_missing_text_search(client): @pytest.mark.bdb @pytest.mark.tendermint -@pytest.mark.localmongodb -def test_get_assets_tendermint(client, tb, alice): +def test_get_assets_tendermint(client, b, alice): from bigchaindb.models import Transaction # test returns empty list when no assets are found @@ -37,7 +36,7 @@ def test_get_assets_tendermint(client, tb, alice): tx = Transaction.create([alice.public_key], [([alice.public_key], 1)], asset=asset).sign([alice.private_key]) - tb.store_bulk_transactions([tx]) + b.store_bulk_transactions([tx]) # test that asset is returned res = client.get(ASSETS_ENDPOINT + '?search=abc') @@ -51,11 +50,9 @@ def test_get_assets_tendermint(client, tb, alice): @pytest.mark.bdb @pytest.mark.tendermint -@pytest.mark.localmongodb -def test_get_assets_limit_tendermint(client, tb, alice): +def test_get_assets_limit_tendermint(client, b, alice): from bigchaindb.models import Transaction - b = tb # create two assets asset1 = {'msg': 'abc 1'} asset2 = {'msg': 'abc 2'} diff --git a/tests/web/test_block_tendermint.py b/tests/web/test_block_tendermint.py index a726a117..a92822c4 100644 --- a/tests/web/test_block_tendermint.py +++ b/tests/web/test_block_tendermint.py @@ -14,9 +14,8 @@ pytestmark = pytest.mark.tendermint @pytest.mark.bdb @pytest.mark.usefixtures('inputs') -def test_get_block_endpoint(tb, client, alice): +def test_get_block_endpoint(b, client, alice): import copy - b = tb tx = Transaction.create([alice.public_key], [([alice.public_key], 1)], asset={'cycle': 'hero'}) tx = tx.sign([alice.private_key]) @@ -49,8 +48,7 @@ def test_get_block_returns_404_if_not_found(client): @pytest.mark.bdb -def test_get_block_containing_transaction(tb, client, alice): - b = tb +def test_get_block_containing_transaction(b, client, alice): tx = Transaction.create([alice.public_key], [([alice.public_key], 1)], asset={'cycle': 'hero'}) tx = tx.sign([alice.private_key]) b.store_bulk_transactions([tx]) diff --git a/tests/web/test_metadata.py b/tests/web/test_metadata.py index aa0a2382..248ef946 100644 --- a/tests/web/test_metadata.py +++ b/tests/web/test_metadata.py @@ -23,11 +23,9 @@ def test_get_metadata_with_missing_text_search(client): @pytest.mark.bdb @pytest.mark.tendermint -def test_get_metadata_tendermint(client, tb, alice): +def test_get_metadata_tendermint(client, b, alice): from bigchaindb.models import Transaction - b = tb - # test returns empty list when no assets are found res = client.get(METADATA_ENDPOINT + '?search=abc') assert res.json == [] @@ -53,11 +51,9 @@ def test_get_metadata_tendermint(client, tb, alice): @pytest.mark.bdb @pytest.mark.tendermint -def test_get_metadata_limit_tendermint(client, tb, alice): +def test_get_metadata_limit_tendermint(client, b, alice): from bigchaindb.models import Transaction - b = tb - # create two assets asset1 = {'msg': 'abc 1'} meta1 = {'key': 'meta 1'} diff --git a/tests/web/test_parameters.py b/tests/web/test_parameters.py index ccf3119b..3eb8ab2a 100644 --- a/tests/web/test_parameters.py +++ b/tests/web/test_parameters.py @@ -4,6 +4,8 @@ import pytest +pytestmark = pytest.mark.tendermint + def test_valid_txid(): from bigchaindb.web.views.parameters import valid_txid diff --git a/tests/web/test_server.py b/tests/web/test_server.py index 215aa980..5fce3629 100644 --- a/tests/web/test_server.py +++ b/tests/web/test_server.py @@ -2,6 +2,10 @@ # SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0) # Code is Apache-2.0 and docs are CC-BY-4.0 +import pytest + +pytestmark = pytest.mark.tendermint + def test_settings(): import bigchaindb diff --git a/tests/web/test_validators.py b/tests/web/test_validators.py index d26d8cf1..714ceee4 100644 --- a/tests/web/test_validators.py +++ b/tests/web/test_validators.py @@ -9,7 +9,7 @@ pytestmark = pytest.mark.tendermint VALIDATORS_ENDPOINT = '/api/v1/validators/' -def test_get_validators_endpoint(b, client, monkeypatch): +def test_get_validators_endpoint(b, client): validator_set = [{'address': 'F5426F0980E36E03044F74DD414248D29ABCBDB2', 'pub_key': {'data': '4E2685D9016126864733225BE00F005515200727FBAB1312FC78C8B76831255A', 'type': 'ed25519'}, diff --git a/tests/web/test_websocket_server.py b/tests/web/test_websocket_server.py index 64309137..1a2b55af 100644 --- a/tests/web/test_websocket_server.py +++ b/tests/web/test_websocket_server.py @@ -136,7 +136,6 @@ def test_websocket_block_event(b, test_client, loop): @pytest.mark.skip('Processes are not stopping properly, and the whole test suite would hang') -@pytest.mark.genesis def test_integration_from_webapi_to_websocket(monkeypatch, client, loop): # XXX: I think that the `pytest-aiohttp` plugin is sparkling too much # magic in the `asyncio` module: running this test without monkey-patching @@ -152,6 +151,8 @@ def test_integration_from_webapi_to_websocket(monkeypatch, client, loop): import aiohttp from bigchaindb.common import crypto + # TODO processes does not exist anymore, when reactivating this test it + # will fail because of this from bigchaindb import processes from bigchaindb.models import Transaction