def test_api_request_error_without_json(): api_request = VxCubeApiRequest() response = mock.Mock(**{"ok": False, "json.side_effect": ValueError, "text": ""}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request with pytest.raises(VxCubeApiException, match="Unknown error"): api_request.request("GET", "http://test.url") send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None)
def test_api_request_not_json_content_and_empty_body(): api_request = VxCubeApiRequest() response = mock.Mock(**{"ok": True, "json.side_effect": ValueError, "text": ""}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request rs = api_request.request("GET", "http://test.url") assert rs is None send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None)
def test_api_request_error_json_message(): api_request = VxCubeApiRequest() dct = {"message": "test_message"} response = mock.Mock(**{"ok": False, "json.return_value": dct}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request with pytest.raises(VxCubeApiException, match="test_message"): api_request.request("GET", "http://test.url") send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None)
def test_api_request_basic_json(): api_request = VxCubeApiRequest() dct = {"test_key": "test_value"} response = mock.Mock(**{"ok": True, "json.return_value": dct}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request rs = api_request.request("GET", "http://test.url") assert rs is dct send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None)
def test_api_request_send_request_with_connection_error(): session = mock.Mock(**{"request.side_effect": requests.exceptions.ConnectionError}) session.close = mock.Mock() session.request = mock.Mock(side_effect=(requests.exceptions.ConnectionError, "test_response")) api_request = VxCubeApiRequest() api_request.session = session response = api_request.send_request("test_arg", test_kwarg="test_kwarg") assert session.close.assert_called_once() is None assert response == "test_response"
def test_api_request_default_parameters(): api_request = VxCubeApiRequest(default="value") dct = {"test_key": "test_value"} response = mock.Mock(**{"ok": True, "json.return_value": dct}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request rs = api_request.request("GET", "http://test.url", headers={"default": "value2"}) assert rs is dct send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, data=None, headers={"default": "value2"}, default="value")
def test_api_request_output_file_as_file(): api_request = VxCubeApiRequest() response = mock.Mock(**{"ok": True, "iter_content.return_value": [b"test_file_content"]}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request output_file = mock.Mock() rs = api_request.request("GET", "http://test.url", output_file=output_file) assert rs is None output_file.write.assert_called_with(b"test_file_content") send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None, stream=True)
def test_api_request_output_file_as_str(): api_request = VxCubeApiRequest() response = mock.Mock(**{"ok": True, "iter_content.return_value": [b"test_file_content"]}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request file = mock.mock_open() with mock.patch("vxcube_api.raw_api.open", file): rs = api_request.request("GET", "http://test.url", output_file="test_file") assert rs is None file.assert_called_with("test_file", "wb") file().write.assert_called_with(b"test_file_content") send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None, stream=True)
def test_api_request_error_request_parameters(): api_request = VxCubeApiRequest() dct = {"k1": "v1", "k2": ["v1", "v2"], "k3": {"bad": "value"}} response = mock.Mock(**{"ok": False, "json.return_value": dct, "status_code": 400}) send_request = mock.Mock(return_value=response) api_request.send_request = send_request with pytest.raises(VxCubeApiException) as exc_info: api_request.request("GET", "http://test.url") assert "[k1] v1" in str(exc_info.value) assert "[k2] v1; v2" in str(exc_info.value) assert "[k3] <UNKNOWN>" in str(exc_info.value) send_request.assert_called_once() send_request.assert_called_with("GET", "http://test.url", params=None, headers={}, data=None)
def test_api_request_send_request(): api_request = VxCubeApiRequest() request = mock.Mock() api_request.session.request = request api_request.send_request("test_arg", test_kwarg="test_kwarg") assert request.assert_called_with("test_arg", test_kwarg="test_kwarg") is None