mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00

* Added replicaset name to bigchaindb config * changed travis replSet to match bigchaindb default * Updated initialize_replica_set It now initializes the replica set with the name provided by the bigchaindb config file. * initialize_replica_set is now called when creating a mongodb connection. This way we are sure that a replica set exists when we return a connection. * Moved the initialize replica set logic to the connection. * update the config documentation
105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
import pytest
|
|
|
|
|
|
pytestmark = pytest.mark.bdb
|
|
|
|
|
|
def test_init_creates_db_tables_and_indexes():
|
|
import bigchaindb
|
|
from bigchaindb import backend
|
|
from bigchaindb.backend.schema import init_database
|
|
|
|
conn = backend.connect()
|
|
dbname = bigchaindb.config['database']['name']
|
|
|
|
# the db is set up by the fixture so we need to remove it
|
|
conn.conn.drop_database(dbname)
|
|
|
|
init_database()
|
|
|
|
collection_names = conn.conn[dbname].collection_names()
|
|
assert sorted(collection_names) == ['backlog', 'bigchain', 'votes']
|
|
|
|
indexes = conn.conn[dbname]['bigchain'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'asset_id', 'block_timestamp',
|
|
'transaction_id']
|
|
|
|
indexes = conn.conn[dbname]['backlog'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'assignee__transaction_timestamp',
|
|
'transaction_id']
|
|
|
|
indexes = conn.conn[dbname]['votes'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'block_and_voter']
|
|
|
|
|
|
def test_init_database_fails_if_db_exists():
|
|
import bigchaindb
|
|
from bigchaindb import backend
|
|
from bigchaindb.backend.schema import init_database
|
|
from bigchaindb.common import exceptions
|
|
|
|
conn = backend.connect()
|
|
dbname = bigchaindb.config['database']['name']
|
|
|
|
# The db is set up by the fixtures
|
|
assert dbname in conn.conn.database_names()
|
|
|
|
with pytest.raises(exceptions.DatabaseAlreadyExists):
|
|
init_database()
|
|
|
|
|
|
def test_create_tables():
|
|
import bigchaindb
|
|
from bigchaindb import backend
|
|
from bigchaindb.backend import schema
|
|
|
|
conn = backend.connect()
|
|
dbname = bigchaindb.config['database']['name']
|
|
|
|
# The db is set up by the fixtures so we need to remove it
|
|
conn.conn.drop_database(dbname)
|
|
schema.create_database(conn, dbname)
|
|
schema.create_tables(conn, dbname)
|
|
|
|
collection_names = conn.conn[dbname].collection_names()
|
|
assert sorted(collection_names) == ['backlog', 'bigchain', 'votes']
|
|
|
|
|
|
def test_create_secondary_indexes():
|
|
import bigchaindb
|
|
from bigchaindb import backend
|
|
from bigchaindb.backend import schema
|
|
|
|
conn = backend.connect()
|
|
dbname = bigchaindb.config['database']['name']
|
|
|
|
# The db is set up by the fixtures so we need to remove it
|
|
conn.conn.drop_database(dbname)
|
|
schema.create_database(conn, dbname)
|
|
schema.create_tables(conn, dbname)
|
|
schema.create_indexes(conn, dbname)
|
|
|
|
# Bigchain table
|
|
indexes = conn.conn[dbname]['bigchain'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'asset_id', 'block_timestamp',
|
|
'transaction_id']
|
|
|
|
# Backlog table
|
|
indexes = conn.conn[dbname]['backlog'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'assignee__transaction_timestamp',
|
|
'transaction_id']
|
|
|
|
# Votes table
|
|
indexes = conn.conn[dbname]['votes'].index_information().keys()
|
|
assert sorted(indexes) == ['_id_', 'block_and_voter']
|
|
|
|
|
|
def test_drop(dummy_db):
|
|
from bigchaindb import backend
|
|
from bigchaindb.backend import schema
|
|
|
|
conn = backend.connect()
|
|
assert dummy_db in conn.conn.database_names()
|
|
schema.drop_database(conn, dummy_db)
|
|
assert dummy_db not in conn.conn.database_names()
|