accounts-index

Accounts index evm contract tooling with permissioned writes
Log | Files | Refs

commit 3264007c570c2a9434b8394af9c0417cb29503bf
parent 3c4992fbbbcfc34085f508ec319882d7b3c99c15
Author: nolash <dev@holbrook.no>
Date:   Mon, 16 Nov 2020 19:37:09 +0100

Add solidity test file

Diffstat:
Asolidity/test.py | 49+++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+), 0 deletions(-)

diff --git a/solidity/test.py b/solidity/test.py @@ -0,0 +1,49 @@ +import web3 +import eth_tester +import json + + +eth_params = eth_tester.backends.pyevm.main.get_default_genesis_params({ + 'gas_limit': 9000000, + }) +backend = eth_tester.PyEVMBackend(eth_params) +instance = eth_tester.EthereumTester(backend) +provider = web3.Web3.EthereumTesterProvider(instance) +w3 = web3.Web3(provider) + + +f = open('registry.bin', 'r') +bytecode = f.read() +f.close() + +f = open('registry.abi.json', 'r') +abi = json.load(f) +f.close() + +c = w3.eth.contract(abi=abi, bytecode=bytecode) +tx_hash = c.constructor().transact({'from': w3.eth.accounts[0]}) + +r = w3.eth.getTransactionReceipt(tx_hash) + +c = w3.eth.contract(abi=abi, address=r.contractAddress) +fail = False +try: + c.functions.add(w3.eth.accounts[2]).transact({'from': w3.eth.accounts[1]}) +except: + fail = True +assert fail + +c.functions.addWriter(w3.eth.accounts[1]).transact({'from': w3.eth.accounts[0]}) +c.functions.add(w3.eth.accounts[2]).transact({'from': w3.eth.accounts[1]}) +c.functions.add(w3.eth.accounts[3]).transact({'from': w3.eth.accounts[1]}) + +assert c.functions.count().call() == 3 +assert c.functions.accountsIndex(w3.eth.accounts[3]).call() == 2 +assert c.functions.accounts(2).call() == w3.eth.accounts[3] + +fail = False +try: + c.functions.add(w3.eth.accounts[3]).transact({'from': w3.eth.accounts[1]}) +except: + fail = True +assert fail