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."
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
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
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
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
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()
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." )