75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
# third-party imports
|
|
import pytest
|
|
from cic_registry.pytest import *
|
|
from erc20_single_shot_faucet import Faucet
|
|
from cic_registry import zero_address
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def faucet_amount():
|
|
return 50
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def faucet(
|
|
faucet_amount,
|
|
config,
|
|
default_chain_spec,
|
|
cic_registry,
|
|
bancor_tokens,
|
|
w3_account_roles,
|
|
w3_account_token_owners,
|
|
solidity_abis,
|
|
w3,
|
|
#accounts_registry,
|
|
):
|
|
|
|
|
|
abi = Faucet.abi('storage')
|
|
bytecode = Faucet.bytecode('storage')
|
|
|
|
cs = w3.eth.contract(abi=abi, bytecode=bytecode)
|
|
tx_hash = cs.constructor().transact({'from': w3_account_roles['eth_account_faucet_owner']})
|
|
rcpt = w3.eth.getTransactionReceipt(tx_hash)
|
|
cs_address = rcpt.contractAddress
|
|
|
|
abi = Faucet.abi()
|
|
bytecode = Faucet.bytecode()
|
|
cf = w3.eth.contract(abi=abi, bytecode=bytecode)
|
|
|
|
tx_hash = cf.constructor(
|
|
[
|
|
w3_account_roles['eth_account_faucet_owner']
|
|
],
|
|
bancor_tokens[0],
|
|
cs_address,
|
|
zero_address,
|
|
#accounts_registry,
|
|
).transact({
|
|
'from': w3_account_roles['eth_account_faucet_owner']
|
|
}
|
|
)
|
|
|
|
rcpt = w3.eth.getTransactionReceipt(tx_hash)
|
|
cf_address = rcpt.contractAddress
|
|
|
|
c = w3.eth.contract(abi=abi, address=cf_address)
|
|
c.functions.setAmount(50).transact({
|
|
'from': w3_account_roles['eth_account_faucet_owner']
|
|
}
|
|
)
|
|
|
|
logg.debug('foo {} bar {}'.format(cf_address, w3_account_roles))
|
|
|
|
# fund the faucet with token balance
|
|
token = w3.eth.contract(abi=solidity_abis['ERC20'], address=bancor_tokens[0])
|
|
token_symbol = token.functions.symbol().call()
|
|
tx_hash = token.functions.transfer(cf_address, 100000).transact({
|
|
'from': w3_account_token_owners[token_symbol],
|
|
})
|
|
|
|
CICRegistry.add_contract(default_chain_spec, c, 'Faucet')
|
|
|
|
return cf_address
|
|
|