from unittest import TestCase
from mythril . ethereum . interface . rpc . client import EthJsonRpc
class RpcTest ( TestCase ) :
client = None
def setUp ( self ) :
self . client = EthJsonRpc ( )
def tearDown ( self ) :
self . client . close ( )
def test_eth_coinbase ( self ) :
coinbase = self . client . eth_coinbase ( )
self . assertTrue ( coinbase . startswith ( " 0x " ) , " coinbase should be a hex string " )
self . assertEqual ( len ( coinbase ) , 42 , " coinbase is a string with length of 42 " )
def test_eth_blockNumber ( self ) :
block_number = self . client . eth_blockNumber ( )
self . assertGreater (
block_number , 0 , " we have made sure the blockNumber is > 0 for testing "
)
def test_eth_getBalance ( self ) :
balance = self . client . eth_getBalance (
address = " 0x0000000000000000000000000000000000000000 "
)
self . assertGreater (
balance , 10000000 , " specified address should have a lot of balance "
)
def test_eth_getStorageAt ( self ) :
storage = self . client . eth_getStorageAt (
address = " 0x0000000000000000000000000000000000000000 "
)
self . assertEqual (
storage ,
" 0x0000000000000000000000000000000000000000000000000000000000000000 " ,
)
def test_eth_getBlockByNumber ( self ) :
block = self . client . eth_getBlockByNumber ( 0 )
self . assertEqual (
block [ " extraData " ] ,
" 0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa " ,
" the data of the first block should be right " ,
)
def test_eth_getCode ( self ) :
# TODO: can't find a proper address for getting code
code = self . client . eth_getCode (
address = " 0x0000000000000000000000000000000000000001 "
)
self . assertEqual ( code , " 0x " )
def test_eth_getTransactionReceipt ( self ) :
transaction = self . client . eth_getTransactionReceipt (
tx_hash = " 0xe363505adc6b2996111f8bd774f8653a61d244cc6567b5372c2e781c6c63b737 "
)
self . assertEqual (
transaction [ " from " ] , " 0x22f2dcff5ad78c3eb6850b5cb951127b659522e6 "
)
self . assertEqual (
transaction [ " to " ] , " 0x0000000000000000000000000000000000000000 "
)