diff --git a/solidity/test.py b/solidity/test.py new file mode 100644 index 0000000..09945ce --- /dev/null +++ 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