diff --git a/src/main/java/com/contentstack/sdk/CSHttpConnection.java b/src/main/java/com/contentstack/sdk/CSHttpConnection.java index 4a7c1b23..af215a69 100644 --- a/src/main/java/com/contentstack/sdk/CSHttpConnection.java +++ b/src/main/java/com/contentstack/sdk/CSHttpConnection.java @@ -305,7 +305,14 @@ void setError(String errResp) { responseJSON.put(ERROR_MESSAGE, responseJSON.optString(ERROR_MESSAGE)); responseJSON.put(ERROR_CODE, responseJSON.optString(ERROR_CODE)); responseJSON.put(ERRORS, responseJSON.optString(ERRORS)); - int errCode = Integer.parseInt(responseJSON.optString(ERROR_CODE)); + + int errCode = 0; + try { + errCode = Integer.parseInt(responseJSON.optString(ERROR_CODE)); + } catch (NumberFormatException e) { + // in case of missing error code, we keep it 0 + } + connectionRequest.onRequestFailed(responseJSON, errCode, callBackObject); } diff --git a/src/test/java/com/contentstack/sdk/CSHttpConnectionTest.java b/src/test/java/com/contentstack/sdk/CSHttpConnectionTest.java new file mode 100644 index 00000000..0570e20c --- /dev/null +++ b/src/test/java/com/contentstack/sdk/CSHttpConnectionTest.java @@ -0,0 +1,41 @@ +package com.contentstack.sdk; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.json.JSONObject; +import org.junit.jupiter.api.Test; + +class CSHttpConnectionTest { + + static class MockIRequestModelHTTP implements IRequestModelHTTP { + public JSONObject error; + public int statusCode; + + @Override + public void sendRequest() { + // Do nothing + } + + @Override + public void onRequestFailed(JSONObject error, int statusCode, ResultCallBack callBackObject) { + this.error = error; + this.statusCode = statusCode; + } + + @Override + public void onRequestFinished(CSHttpConnection request) { + // Do nothing + } + }; + + @Test + void setError() { + MockIRequestModelHTTP csConnectionRequest = new MockIRequestModelHTTP(); + + CSHttpConnection connection = new CSHttpConnection("https://www.example.com", csConnectionRequest); + connection.setError("Something bad"); + + assertEquals("Something bad", csConnectionRequest.error.getString("error_message")); + assertEquals(0, csConnectionRequest.statusCode); + } +} \ No newline at end of file