nucypher/tests/blockchain/eth/conftest.py

70 lines
2.1 KiB
Python

import pytest
from eth_tester import EthereumTester
from web3 import Web3
from web3.providers.eth_tester import EthereumTesterProvider
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent, MinerAgent, PolicyAgent
from nkms.blockchain.eth.blockchain import TheBlockchain
from nkms.blockchain.eth.deployers import PolicyManagerDeployer
from nkms.blockchain.eth.utilities import TesterBlockchain, MockNuCypherKMSTokenDeployer, MockMinerEscrowDeployer
from nkms.config.configs import EthereumConfig
@pytest.fixture(scope='session')
def testerchain():
tester = EthereumTester()
test_provider = EthereumTesterProvider(ethereum_tester=tester)
web3_provider = Web3(providers=test_provider)
ethconfig = EthereumConfig(provider=web3_provider)
testerchain = TesterBlockchain(eth_config=ethconfig)
yield testerchain
del testerchain
TheBlockchain._TheBlockchain__instance = None
@pytest.fixture()
def mock_token_deployer(testerchain):
token_deployer = MockNuCypherKMSTokenDeployer(blockchain=testerchain)
token_deployer.arm()
token_deployer.deploy()
yield token_deployer
@pytest.fixture()
def mock_miner_escrow_deployer(token_agent):
escrow = MockMinerEscrowDeployer(token_agent=token_agent)
escrow.arm()
escrow.deploy()
yield escrow
@pytest.fixture()
def mock_policy_manager_deployer(mock_token_deployer):
policy_manager_deployer = PolicyManagerDeployer(token_deployer=mock_token_deployer)
policy_manager_deployer.arm()
policy_manager_deployer.deploy()
yield policy_manager_deployer
#
# Unused args preserve fixture dependency order #
#
@pytest.fixture()
def token_agent(testerchain, mock_token_deployer):
token = NuCypherKMSTokenAgent(blockchain=testerchain)
yield token
@pytest.fixture()
def mock_miner_agent(token_agent, mock_token_deployer, mock_miner_escrow_deployer):
miner_agent = MinerAgent(token_agent=token_agent)
yield miner_agent
@pytest.fixture()
def mock_policy_agent(mock_miner_agent, token_agent, mock_token_deployer, mock_miner_escrow_deployer):
policy_agent = PolicyAgent(miner_agent=mock_miner_agent)
yield policy_agent