Esempio n. 1
0
def test_pass_name_resolver(w3):
    return_chain_on_mainnet = construct_fixture_middleware({
        'net_version': '1',
    })
    return_balance = construct_fixture_middleware({'eth_getBalance': BALANCE})
    w3.middleware_onion.inject(return_chain_on_mainnet, layer=0)
    w3.middleware_onion.inject(return_balance, layer=0)
    assert w3.eth.get_balance(NAME) == BALANCE
def test_pass_name_resolver(w3):
    return_chain_on_mainnet = construct_fixture_middleware({
        'net_version': '1',
    })
    return_balance = construct_fixture_middleware({
        'eth_getBalance': BALANCE
    })
    w3.middleware_stack.inject(return_chain_on_mainnet, layer=0)
    w3.middleware_stack.inject(return_balance, layer=0)
    assert w3.eth.getBalance(NAME) == BALANCE
def test_fixture_middleware(method, params, expected):
    middleware = construct_fixture_middleware(FIXTURES)(_make_request, None)

    actual = middleware(method, params)
    assert is_dict(actual)
    assert 'result' in actual
    assert actual['result'] == expected
Esempio n. 4
0
def test_full_extra_data(w3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 32},
    })
    w3.middleware_onion.inject(return_block_with_long_extra_data, layer=0)
    block = w3.eth.get_block('latest')
    assert block.extraData == b'\xff' * 32
def test_fail_name_resolver(w3):
    return_chain_on_mainnet = construct_fixture_middleware({
        'net_version': '2',
    })
    w3.middleware_stack.inject(return_chain_on_mainnet, layer=0)
    with pytest.raises(InvalidAddress, match=r'.*ethereum\.eth.*'):
        w3.eth.getBalance("ethereum.eth")
Esempio n. 6
0
def test_fixture_middleware(method, params, expected):
    middleware = construct_fixture_middleware(FIXTURES)(_make_request, None)

    actual = middleware(method, params)
    assert is_dict(actual)
    assert 'result' in actual
    assert actual['result'] == expected
Esempio n. 7
0
def test_long_extra_data(web3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    web3.middleware_stack.inject(return_block_with_long_extra_data, layer=0)
    with pytest.raises(ValidationError):
        web3.eth.getBlock('latest')
Esempio n. 8
0
def test_full_extra_data(web3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 32},
    })
    web3.middleware_stack.inject(return_block_with_long_extra_data, layer=0)
    block = web3.eth.getBlock('latest')
    assert block.extraData == b'\xff' * 32
Esempio n. 9
0
def test_long_extra_data(w3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    w3.middleware_onion.inject(return_block_with_long_extra_data, layer=0)
    with pytest.raises(ExtraDataLengthError):
        w3.eth.get_block('latest')
def test_fail_name_resolver(w3):
    return_chain_on_mainnet = construct_fixture_middleware({
        'net_version': '2',
    })
    w3.middleware_onion.inject(return_chain_on_mainnet, layer=0)
    with pytest.raises(InvalidAddress, match=r'.*ethereum\.eth.*'):
        w3.eth.getBalance("ethereum.eth")
Esempio n. 11
0
def test_returns_none_response(w3):
    return_none_response = construct_fixture_middleware({
        'eth_getBlockByNumber': None,
    })
    w3.middleware_onion.inject(geth_poa_middleware, layer=0)
    w3.middleware_onion.inject(return_none_response, layer=0)
    with pytest.raises(BlockNotFound):
        w3.eth.get_block(100000000000)
def test_fixture_middleware(w3, method, expected):
    w3.middleware_stack.add(construct_fixture_middleware({'test_endpoint': 'value-a'}))

    if isinstance(expected, type) and issubclass(expected, Exception):
        with pytest.raises(expected):
            w3.manager.request_blocking(method, [])
    else:
        actual = w3.manager.request_blocking(method, [])
        assert actual == expected
Esempio n. 13
0
def test_geth_proof_of_authority(w3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    w3.middleware_onion.inject(geth_poa_middleware, layer=0)
    w3.middleware_onion.inject(return_block_with_long_extra_data, layer=0)
    block = w3.eth.get_block('latest')
    assert 'extraData' not in block
    assert block.proofOfAuthorityData == b'\xff' * 33
Esempio n. 14
0
def test_web3_auto_gethdev():
    assert isinstance(w3.provider, IPCProvider)
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    w3.middleware_onion.inject(return_block_with_long_extra_data, layer=0)
    block = w3.eth.getBlock('latest')
    assert 'extraData' not in block
    assert block.proofOfAuthorityData == b'\xff' * 33
Esempio n. 15
0
def test_geth_proof_of_authority(web3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    web3.middleware_stack.inject(geth_poa_middleware, layer=0)
    web3.middleware_stack.inject(return_block_with_long_extra_data, layer=0)
    block = web3.eth.getBlock('latest')
    assert 'extraData' not in block
    assert block.proofOfAuthorityData == b'\xff' * 33
Esempio n. 16
0
def test_long_extra_data(web3):
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {
            'extraData': '0x' + 'ff' * 33
        },
    })
    web3.middleware_stack.inject(return_block_with_long_extra_data, layer=0)
    with pytest.raises(ValidationError):
        web3.eth.getBlock('latest')
Esempio n. 17
0
def test_fixture_middleware(w3, method, expected):
    w3.middleware_stack.add(construct_fixture_middleware({'test_endpoint': 'value-a'}))

    if isinstance(expected, type) and issubclass(expected, Exception):
        with pytest.raises(expected):
            w3.manager.request_blocking(method, [])
    else:
        actual = w3.manager.request_blocking(method, [])
        assert actual == expected
Esempio n. 18
0
def test_web3_auto_gethdev():
    assert isinstance(w3.providers[0], IPCProvider)
    return_block_with_long_extra_data = construct_fixture_middleware({
        'eth_getBlockByNumber': {'extraData': '0x' + 'ff' * 33},
    })
    w3.middleware_stack.inject(return_block_with_long_extra_data, layer=0)
    block = w3.eth.getBlock('latest')
    assert 'extraData' not in block
    assert block.proofOfAuthorityData == b'\xff' * 33
Esempio n. 19
0
        # EVM
        'evm_snapshot':
        integer_to_hex,
    },
)

ethereum_tester_fixture_middleware = construct_fixture_middleware({
    # Eth
    'eth_protocolVersion':
    '63',
    'eth_hashrate':
    0,
    'eth_gasPrice':
    1,
    'eth_syncing':
    False,
    'eth_mining':
    False,
    # Net
    'net_version':
    '1',
    'net_listening':
    False,
    'net_peerCount':
    0,
})


def guess_from(web3, transaction):
    coinbase = web3.eth.coinbase
    if coinbase is not None:
        return coinbase
Esempio n. 20
0
        'eth_getFilterLogs': apply_formatter_if(
            is_array_of_dicts,
            apply_formatter_to_array(log_key_remapper),
        ),
        # EVM
        'evm_snapshot': integer_to_hex,
    },
)


ethereum_tester_fixture_middleware = construct_fixture_middleware({
    # Eth
    'eth_protocolVersion': '63',
    'eth_hashrate': 0,
    'eth_gasPrice': 1,
    'eth_syncing': False,
    'eth_mining': False,
    # Net
    'net_version': '1',
    'net_listening': False,
    'net_peerCount': 0,
})


def guess_from(web3, transaction):
    coinbase = web3.eth.coinbase
    if coinbase is not None:
        return coinbase

    try:
        return web3.eth.accounts[0]
    except KeyError as e: