Beispiel #1
0
def test_fee_utils_indirectly(
    w3, fee_history_rewards, expected_max_prio_calc
) -> None:
    fail_max_prio_middleware = construct_error_generator_middleware(
        {RPCEndpoint("eth_maxPriorityFeePerGas"): lambda *_: ''}
    )
    fee_history_result_middleware = construct_result_generator_middleware(
        {RPCEndpoint('eth_feeHistory'): lambda *_: {'reward': fee_history_rewards}}
    )

    w3.middleware_onion.add(fail_max_prio_middleware, 'fail_max_prio')
    w3.middleware_onion.inject(fee_history_result_middleware, 'fee_history_result', layer=0)

    with pytest.warns(
        UserWarning,
        match="There was an issue with the method eth_maxPriorityFeePerGas. Calculating using "
              "eth_feeHistory."
    ):
        max_priority_fee = w3.eth.max_priority_fee
        assert is_integer(max_priority_fee)
        assert max_priority_fee == expected_max_prio_calc

    # clean up
    w3.middleware_onion.remove('fail_max_prio')
    w3.middleware_onion.remove('fee_history_result')
def test_error_middleware(w3, method, expected):
    def _callback(method, params):
        return params[0]

    w3.middleware_stack.add(construct_error_generator_middleware({
        'test_endpoint': _callback,
    }))

    if isinstance(expected, type) and issubclass(expected, Exception):
        with pytest.raises(expected):
            w3.manager.request_blocking(method, [expected])
    else:
        with pytest.raises(ValueError) as err:
            w3.manager.request_blocking(method, [expected])
        assert expected in str(err)
def test_error_middleware(w3, method, expected):
    def _callback(method, params):
        return params[0]

    w3.middleware_stack.add(construct_error_generator_middleware({
        'test_endpoint': _callback,
    }))

    if isinstance(expected, type) and issubclass(expected, Exception):
        with pytest.raises(expected):
            w3.manager.request_blocking(method, [expected])
    else:
        with pytest.raises(ValueError) as err:
            w3.manager.request_blocking(method, [expected])
        assert expected in str(err)
def test_simple_cache_middleware_does_not_cache_error_responses(w3_base):
    w3 = w3_base
    w3.middleware_stack.add(construct_error_generator_middleware({
        'fake_endpoint': lambda *_: 'msg-{0}'.format(str(uuid.uuid4())),
    }))

    w3.middleware_stack.add(construct_simple_cache_middleware(
        cache_class=dict,
        rpc_whitelist={'fake_endpoint'},
    ))

    with pytest.raises(ValueError) as err_a:
        w3.manager.request_blocking('fake_endpoint', [])
    with pytest.raises(ValueError) as err_b:
        w3.manager.request_blocking('fake_endpoint', [])

    assert str(err_a) != str(err_b)
def test_simple_cache_middleware_does_not_cache_error_responses(w3_base):
    w3 = w3_base
    w3.middleware_onion.add(construct_error_generator_middleware({
        'fake_endpoint': lambda *_: f'msg-{uuid.uuid4()}',
    }))

    w3.middleware_onion.add(construct_simple_cache_middleware(
        cache_class=dict,
        rpc_whitelist={'fake_endpoint'},
    ))

    with pytest.raises(ValueError) as err_a:
        w3.manager.request_blocking('fake_endpoint', [])
    with pytest.raises(ValueError) as err_b:
        w3.manager.request_blocking('fake_endpoint', [])

    assert str(err_a) != str(err_b)
Beispiel #6
0
def test_time_based_cache_middleware_does_not_cache_error_response(
        w3_base,
        time_cache_middleware):
    w3 = w3_base
    counter = itertools.count()

    def mk_error(method, params):
        return "error-number-{0}".format(next(counter))

    w3.middleware_stack.add(construct_error_generator_middleware({
        'fake_endpoint': mk_error,
    }))
    w3.middleware_stack.add(time_cache_middleware)

    with pytest.raises(ValueError) as err:
        w3.manager.request_blocking('fake_endpoint', [])
    assert 'error-number-0' in str(err)

    with pytest.raises(ValueError) as err:
        w3.manager.request_blocking('fake_endpoint', [])
    assert 'error-number-1' in str(err)
def test_time_based_cache_middleware_does_not_cache_error_response(
        w3_base,
        time_cache_middleware):
    w3 = w3_base
    counter = itertools.count()

    def mk_error(method, params):
        return "error-number-{0}".format(next(counter))

    w3.middleware_stack.add(construct_error_generator_middleware({
        'fake_endpoint': mk_error,
    }))
    w3.middleware_stack.add(time_cache_middleware)

    with pytest.raises(ValueError) as err:
        w3.manager.request_blocking('fake_endpoint', [])
    assert 'error-number-0' in str(err)

    with pytest.raises(ValueError) as err:
        w3.manager.request_blocking('fake_endpoint', [])
    assert 'error-number-1' in str(err)
def test_latest_block_cache_middleware_does_not_cache_error_response(
        w3_base, block_data_middleware, latest_block_based_cache_middleware):
    counter = itertools.count()
    w3 = w3_base

    def error_cb(method, params):
        next(counter)
        return "the error message"

    w3.middleware_stack.add(block_data_middleware)
    w3.middleware_stack.add(
        construct_error_generator_middleware({
            'fake_endpoint': error_cb,
        }))
    w3.middleware_stack.add(latest_block_based_cache_middleware)

    with pytest.raises(ValueError):
        w3.manager.request_blocking('fake_endpoint', [])
    with pytest.raises(ValueError):
        w3.manager.request_blocking('fake_endpoint', [])

    assert next(counter) == 2
def test_latest_block_cache_middleware_does_not_cache_error_response(
        w3_base,
        block_data_middleware,
        latest_block_based_cache_middleware):
    counter = itertools.count()
    w3 = w3_base

    def error_cb(method, params):
        next(counter)
        return "the error message"

    w3.middleware_stack.add(block_data_middleware)
    w3.middleware_stack.add(construct_error_generator_middleware({
        'fake_endpoint': error_cb,
    }))
    w3.middleware_stack.add(latest_block_based_cache_middleware)

    with pytest.raises(ValueError):
        w3.manager.request_blocking('fake_endpoint', [])
    with pytest.raises(ValueError):
        w3.manager.request_blocking('fake_endpoint', [])

    assert next(counter) == 2