Skip to content

Commit 0e8effc

Browse files
committed
Fix player removed from backend bug
* If the player is removed from the backend the player should be re created * Return json response to handler
1 parent 0508d7e commit 0e8effc

File tree

3 files changed

+76
-3
lines changed

3 files changed

+76
-3
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalRestClient.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,16 +223,17 @@ private static Thread startHTTPConnection(String url, String method, JSONObject
223223
if (inputStream == null)
224224
inputStream = con.getInputStream();
225225

226+
String jsonResponse = null;
226227
if (inputStream != null) {
227228
scanner = new Scanner(inputStream, "UTF-8");
228-
json = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
229+
jsonResponse = scanner.useDelimiter("\\A").hasNext() ? scanner.next() : "";
229230
scanner.close();
230-
OneSignal.Log(OneSignal.LOG_LEVEL.WARN, "OneSignalRestClient: " + method + " RECEIVED JSON: " + json);
231+
OneSignal.Log(OneSignal.LOG_LEVEL.WARN, "OneSignalRestClient: " + method + " RECEIVED JSON: " + jsonResponse);
231232
}
232233
else
233234
OneSignal.Log(OneSignal.LOG_LEVEL.WARN, "OneSignalRestClient: " + method + " HTTP Code: " + httpResponse + " No response body!");
234235

235-
callbackThread = callResponseHandlerOnFailure(responseHandler, httpResponse, null, null);
236+
callbackThread = callResponseHandlerOnFailure(responseHandler, httpResponse, jsonResponse, null);
236237
}
237238
} catch (Throwable t) {
238239
if (t instanceof java.net.ConnectException || t instanceof java.net.UnknownHostException)

OneSignalSDK/unittest/src/test/java/com/onesignal/MockHttpURLConnection.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public boolean getDidInterruptMockHang() {
4545

4646
public static class MockResponse {
4747
public String responseBody;
48+
public String errorResponseBody;
4849
public boolean mockThreadHang;
4950
public int status;
5051
public Map<String, String> mockProps = new HashMap<>();
@@ -95,4 +96,13 @@ public int getResponseCode() throws IOException {
9596
public InputStream getInputStream() throws IOException {
9697
return new ByteArrayInputStream(StandardCharsets.UTF_8.encode(mockResponse.responseBody).array());
9798
}
99+
100+
@Override
101+
public InputStream getErrorStream() {
102+
if (mockResponse.errorResponseBody == null)
103+
return null;
104+
105+
byte[] bytes = mockResponse.errorResponseBody.getBytes();
106+
return new ByteArrayInputStream(bytes);
107+
}
98108
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/RESTClientRunner.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,68 @@ public void onSuccess(String response) {
191191
assertEquals(newMockResponse, secondResponse);
192192
}
193193

194+
@Test
195+
public void testApiCall400Response() throws Exception {
196+
final String newMockResponse = "{\"errors\":[\"test response\"]}";
197+
final int statusCode = 400;
198+
199+
ShadowOneSignalRestClientWithMockConnection.mockResponse = new MockHttpURLConnection.MockResponse() {{
200+
status = statusCode;
201+
errorResponseBody = newMockResponse;
202+
}};
203+
204+
final String[] failResponse = {null};
205+
final int[] statusCodeResponse = {0};
206+
OneSignalRestClient.postSync("URL", null, new OneSignalRestClient.ResponseHandler() {
207+
@Override
208+
public void onSuccess(String response) {
209+
super.onSuccess(response);
210+
}
211+
212+
@Override
213+
public void onFailure(int statusCode, String response, Throwable throwable) {
214+
super.onFailure(statusCode, response, throwable);
215+
failResponse[0] = response;
216+
statusCodeResponse[0] = statusCode;
217+
}
218+
});
219+
220+
threadAndTaskWait();
221+
assertEquals(newMockResponse, failResponse[0]);
222+
assertEquals(statusCode, statusCodeResponse[0]);
223+
}
224+
225+
@Test
226+
public void testApiCall400EmptyResponse() throws Exception {
227+
final String newMockResponse = "";
228+
final int statusCode = 400;
229+
230+
ShadowOneSignalRestClientWithMockConnection.mockResponse = new MockHttpURLConnection.MockResponse() {{
231+
status = statusCode;
232+
responseBody = newMockResponse;
233+
}};
234+
235+
final String[] failResponse = {null};
236+
final int[] statusCodeResponse = {0};
237+
OneSignalRestClient.postSync("URL", null, new OneSignalRestClient.ResponseHandler() {
238+
@Override
239+
public void onSuccess(String response) {
240+
super.onSuccess(response);
241+
}
242+
243+
@Override
244+
public void onFailure(int statusCode, String response, Throwable throwable) {
245+
super.onFailure(statusCode, response, throwable);
246+
failResponse[0] = response;
247+
statusCodeResponse[0] = statusCode;
248+
}
249+
});
250+
251+
threadAndTaskWait();
252+
assertEquals(newMockResponse, failResponse[0]);
253+
assertEquals(statusCode, statusCodeResponse[0]);
254+
}
255+
194256
private static String getLastHTTPHeaderProp(String prop) {
195257
return ShadowOneSignalRestClientWithMockConnection.lastConnection.getRequestProperty(prop);
196258
}

0 commit comments

Comments
 (0)