Пример #1
0
def test_setting_incorrect_request_strategy_raises_runtime_error():
    client = client_factory()
    with pytest.raises(RuntimeError) as exc_info:
        client.set_request_strategy("not a strategy")
    assert str(
        exc_info.value
    ) == "provided request_strategy must be an instance of BaseRequestStrategy."
Пример #2
0
def request_strategy_factory(strategy_class,
                             build_client_with="json",
                             **kwargs):
    """Helper method to build a strategy with a client."""
    client = client_factory(build_with=build_client_with)
    strategy = strategy_class(**kwargs)
    strategy.set_client(client)
    return strategy
Пример #3
0
def test_set_strategy_changes_strategy_on_copy_of_client_when_in_context():
    client = client_factory()
    original_strategy = client.get_request_strategy()
    new_strategy = Mock(spec=BaseRequestStrategy)

    with set_strategy(client, new_strategy) as temporary_client:
        assert client.get_request_strategy() == original_strategy
        assert temporary_client.get_request_strategy() == new_strategy

    assert client.get_request_strategy() == original_strategy
Пример #4
0
def test_context_manager_resets_request_strategy_when_error():
    client = client_factory()
    original_strategy = client.get_request_strategy()
    new_strategy = Mock(spec=BaseRequestStrategy)
    raises_when_called = Mock(side_effect=ValueError("Something went wrong"))

    with pytest.raises(ValueError):
        with set_strategy(client, new_strategy):
            raises_when_called()

    assert client.get_request_strategy() == original_strategy
Пример #5
0
def test_put_method_delegates_to_request_strategy():
    mock_request_strategy = Mock(spec=BaseRequestStrategy)
    mock_request_strategy.put.return_value = sentinel.response
    client = client_factory()
    client.set_request_strategy(mock_request_strategy)

    response = client.put(sentinel.url, data=sentinel.data, params=sentinel.params, headers=sentinel.headers)

    mock_request_strategy.put.assert_called_once_with(
        sentinel.url, data=sentinel.data, params=sentinel.params, headers=sentinel.headers
    )
    assert response == sentinel.response
Пример #6
0
def test_client_clone_method():
    client = client_factory(build_with="json")
    client.set_session(sentinel.session)
    new_client = client.clone()
    assert new_client.get_session() is client.get_session()
Пример #7
0
        sentinel.url, params=sentinel.params, headers=sentinel.headers
    )
    assert response == sentinel.response


def test_setting_incorrect_request_strategy_raises_runtime_error():
    client = client_factory()
    with pytest.raises(RuntimeError) as exc_info:
        client.set_request_strategy("not a strategy")
    assert str(exc_info.value) == "provided request_strategy must be an instance of BaseRequestStrategy."


@pytest.mark.parametrize(
    "client_method,kwargs",
    [
        (client_factory(request_strategy=NoOpRequestStrategy()).create, {"data": sentinel.data}),
        (client_factory(request_strategy=NoOpRequestStrategy()).read, {}),
        (client_factory(request_strategy=NoOpRequestStrategy()).replace, {"data": sentinel.data}),
        (client_factory(request_strategy=NoOpRequestStrategy()).update, {"data": sentinel.data}),
    ],
)
def test_deprecation_warnings(client_method, kwargs):
    with pytest.warns(DeprecationWarning, match="will be deprecated in version 1.2."):
        client_method(sentinel.url, **kwargs)


def test_client_initialization_deprecation_warning_when_using_baseclient():
    expected = (
        "`BaseClient` has been deprecated in version 1.1.4 and will be removed in version 1.2.0, "
        "please use `APIClient` instead."
    )