From 748bc803442d63b7899dd986841ab27676f740d7 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavliuchyk Date: Thu, 4 Jul 2019 00:12:54 +0300 Subject: [PATCH 1/4] PREBID_SERVER_ERROR was made as default error --- .../prebid/mobile/PrebidServerAdapter.java | 3 +++ .../mobile/PrebidServerAdapterTest.java | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/PrebidMobile/API1.0/src/main/java/org/prebid/mobile/PrebidServerAdapter.java b/PrebidMobile/API1.0/src/main/java/org/prebid/mobile/PrebidServerAdapter.java index 114364583..deb585d8b 100644 --- a/PrebidMobile/API1.0/src/main/java/org/prebid/mobile/PrebidServerAdapter.java +++ b/PrebidMobile/API1.0/src/main/java/org/prebid/mobile/PrebidServerAdapter.java @@ -231,6 +231,9 @@ protected void onPostExecute(AsyncTaskResult asyncTaskResult) { if (asyncTaskResult.getError() != null) { asyncTaskResult.getError().printStackTrace(); + //Default error + notifyDemandFailed(ResultCode.PREBID_SERVER_ERROR); + removeThisTask(); return; } else if (asyncTaskResult.getResultCode() != null) { diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java index 41cd431e1..1067c13c2 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java @@ -20,10 +20,12 @@ import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.commons.lang3.reflect.MethodUtils; +import org.hamcrest.Matchers; import org.json.JSONObject; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.prebid.mobile.testutils.BaseSetup; import org.prebid.mobile.testutils.MockPrebidServerResponses; import org.robolectric.Robolectric; @@ -49,6 +51,7 @@ import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; +import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -112,7 +115,13 @@ public void testInvalidPrebidServerAccountIdForRubiconHostedPrebidServer() { adapter.requestDemand(requestParams, mockListener, uuid); Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); - verify(mockListener).onDemandFailed(ResultCode.INVALID_ACCOUNT_ID, uuid); + + ArgumentCaptor resultCodeAC = ArgumentCaptor.forClass(ResultCode.class); + ArgumentCaptor uuidAC = ArgumentCaptor.forClass(String.class); + + verify(mockListener).onDemandFailed(resultCodeAC.capture(), uuidAC.capture()); + assertThat(resultCodeAC.getValue(), Matchers.either(Matchers.is(ResultCode.INVALID_ACCOUNT_ID)).or(Matchers.is(ResultCode.PREBID_SERVER_ERROR))); + } @Test @@ -148,7 +157,13 @@ public void testInvalidPrebidServerConfigIdForRubiconHostedPrebidServer() { adapter.requestDemand(requestParams, mockListener, uuid); Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); - verify(mockListener).onDemandFailed(ResultCode.INVALID_CONFIG_ID, uuid); + + ArgumentCaptor resultCodeAC = ArgumentCaptor.forClass(ResultCode.class); + ArgumentCaptor uuidAC = ArgumentCaptor.forClass(String.class); + + verify(mockListener).onDemandFailed(resultCodeAC.capture(), uuidAC.capture()); + assertThat(resultCodeAC.getValue(), Matchers.either(Matchers.is(ResultCode.INVALID_CONFIG_ID)).or(Matchers.is(ResultCode.PREBID_SERVER_ERROR))); + } @Test From 9abcd777b18687d1f278902800271042e7e3b46e Mon Sep 17 00:00:00 2001 From: Oleksandr Pavliuchyk Date: Fri, 12 Jul 2019 20:08:24 +0300 Subject: [PATCH 2/4] Added a separate Unit test for testing default error --- .../mobile/PrebidServerAdapterTest.java | 25 +++++++++++++++++++ .../testutils/MockPrebidServerResponses.java | 4 +++ ...UnreachableFromRubiconInvalidResponse.html | 1 + 3 files changed, 30 insertions(+) create mode 100644 PrebidMobile/API1.0/src/test/resources/PrebidServerHtmlUnreachableFromRubiconInvalidResponse.html diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java index 1067c13c2..195191b4e 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java @@ -781,4 +781,29 @@ public void testTargetingParamsInPostData() throws Exception { assertTrue("Server failed to start, unable to test.", false); } } + + @Test + public void testRubiconDefaultError() { + if (!successfulMockServerStarted) { + fail("Server failed to start, unable to test."); + } + + server.enqueue(new MockResponse().setResponseCode(200).setBody(MockPrebidServerResponses.htmlUnreachableFromRubicon())); + HttpUrl hostUrl = server.url("/"); + Host.CUSTOM.setHostUrl(hostUrl.toString()); + PrebidMobile.setPrebidServerHost(Host.CUSTOM); + PrebidMobile.setPrebidServerAccountId("12345"); + PrebidMobile.setApplicationContext(activity.getApplicationContext()); + DemandAdapter.DemandAdapterListener mockListener = mock(DemandAdapter.DemandAdapterListener.class); + PrebidServerAdapter adapter = new PrebidServerAdapter(); + HashSet sizes = new HashSet<>(); + sizes.add(new AdSize(320, 50)); + RequestParams requestParams = new RequestParams("67890", AdType.BANNER, sizes, new ArrayList()); + String uuid = UUID.randomUUID().toString(); + adapter.requestDemand(requestParams, mockListener, uuid); + Robolectric.flushBackgroundThreadScheduler(); + Robolectric.flushForegroundThreadScheduler(); + verify(mockListener).onDemandFailed(ResultCode.PREBID_SERVER_ERROR, uuid); + + } } diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java index 3cf4559c3..ae637a408 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java @@ -81,6 +81,10 @@ public static String noBidResponseTmaxTooLarge() { return inputStreamToString(in); } + public static String htmlUnreachableFromRubicon() { + InputStream in = MockPrebidServerResponses.class.getClassLoader().getResourceAsStream("PrebidServerHtmlUnreachableFromRubiconInvalidResponse.html"); + return inputStreamToString(in); + } public static String inputStreamToString(InputStream is) { try { diff --git a/PrebidMobile/API1.0/src/test/resources/PrebidServerHtmlUnreachableFromRubiconInvalidResponse.html b/PrebidMobile/API1.0/src/test/resources/PrebidServerHtmlUnreachableFromRubiconInvalidResponse.html new file mode 100644 index 000000000..f7e7b0f65 --- /dev/null +++ b/PrebidMobile/API1.0/src/test/resources/PrebidServerHtmlUnreachableFromRubiconInvalidResponse.html @@ -0,0 +1 @@ +Temporarily UnreachableTemporarily Unreachable \ No newline at end of file From ff6b54bc76556a69432197759e405fe6cae04659 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavliuchyk Date: Mon, 29 Jul 2019 14:59:44 +0300 Subject: [PATCH 3/4] integration tests were improved --- .../mobile/PrebidServerAdapterTest.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java index e3e2fe6cd..d0834448e 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java @@ -20,12 +20,10 @@ import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.commons.lang3.reflect.MethodUtils; -import org.hamcrest.Matchers; import org.json.JSONObject; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; import org.prebid.mobile.testutils.BaseSetup; import org.prebid.mobile.testutils.MockPrebidServerResponses; import org.robolectric.Robolectric; @@ -51,7 +49,6 @@ import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; -import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -102,7 +99,14 @@ public void testInvalidPrebidServerAccountIdForAppNexusHostedPrebidServer() { @Test public void testInvalidPrebidServerAccountIdForRubiconHostedPrebidServer() { - PrebidMobile.setPrebidServerHost(Host.RUBICON); + if (!successfulMockServerStarted) { + fail("Mock server was not started"); + } + server.enqueue(new MockResponse().setResponseCode(400).setBody("Invalid request format: No stored request found for id: 1001_INVALID_ACCOUNT_ID")); + HttpUrl hostUrl = server.url("/"); + Host.CUSTOM.setHostUrl(hostUrl.toString()); + PrebidMobile.setPrebidServerHost(Host.CUSTOM); + PrebidMobile.setPrebidServerAccountId("1001_INVALID_ACCOUNT_ID"); PrebidMobile.setShareGeoLocation(true); PrebidMobile.setApplicationContext(activity.getApplicationContext()); @@ -116,11 +120,7 @@ public void testInvalidPrebidServerAccountIdForRubiconHostedPrebidServer() { Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); - ArgumentCaptor resultCodeAC = ArgumentCaptor.forClass(ResultCode.class); - ArgumentCaptor uuidAC = ArgumentCaptor.forClass(String.class); - - verify(mockListener).onDemandFailed(resultCodeAC.capture(), uuidAC.capture()); - assertThat(resultCodeAC.getValue(), Matchers.either(Matchers.is(ResultCode.INVALID_ACCOUNT_ID)).or(Matchers.is(ResultCode.PREBID_SERVER_ERROR))); + verify(mockListener).onDemandFailed(ResultCode.INVALID_ACCOUNT_ID, uuid); } @@ -144,7 +144,15 @@ public void testInvalidPrebidServerConfigIdForAppNexusHostedPrebidServer() { @Test public void testInvalidPrebidServerConfigIdForRubiconHostedPrebidServer() { - PrebidMobile.setPrebidServerHost(Host.RUBICON); + + if (!successfulMockServerStarted) { + fail("Mock server was not started"); + } + server.enqueue(new MockResponse().setResponseCode(400).setBody("Invalid request format: No stored imp found for id: 1001-1_INVALID_CONFIG_ID")); + HttpUrl hostUrl = server.url("/"); + Host.CUSTOM.setHostUrl(hostUrl.toString()); + PrebidMobile.setPrebidServerHost(Host.CUSTOM); + PrebidMobile.setPrebidServerAccountId("1001"); PrebidMobile.setShareGeoLocation(true); PrebidMobile.setApplicationContext(activity.getApplicationContext()); @@ -158,12 +166,7 @@ public void testInvalidPrebidServerConfigIdForRubiconHostedPrebidServer() { Robolectric.flushBackgroundThreadScheduler(); Robolectric.flushForegroundThreadScheduler(); - ArgumentCaptor resultCodeAC = ArgumentCaptor.forClass(ResultCode.class); - ArgumentCaptor uuidAC = ArgumentCaptor.forClass(String.class); - - verify(mockListener).onDemandFailed(resultCodeAC.capture(), uuidAC.capture()); - assertThat(resultCodeAC.getValue(), Matchers.either(Matchers.is(ResultCode.INVALID_CONFIG_ID)).or(Matchers.is(ResultCode.PREBID_SERVER_ERROR))); - + verify(mockListener).onDemandFailed(ResultCode.INVALID_CONFIG_ID, uuid); } @Test From 80e13fd8f455a1177e2bba5c8133093c29e4dd6e Mon Sep 17 00:00:00 2001 From: Oleksandr Pavliuchyk Date: Tue, 30 Jul 2019 14:49:44 +0300 Subject: [PATCH 4/4] integration tests were improved --- .../org/prebid/mobile/PrebidServerAdapterTest.java | 4 ++-- .../mobile/testutils/MockPrebidServerResponses.java | 10 ++++++++++ .../PrebidServerInvalidAccountIdFromRubicon.json | 1 + .../PrebidServerInvalidConfigIdFromRubicon.json | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidAccountIdFromRubicon.json create mode 100644 PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidConfigIdFromRubicon.json diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java index d0834448e..0c1b8056f 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/PrebidServerAdapterTest.java @@ -102,7 +102,7 @@ public void testInvalidPrebidServerAccountIdForRubiconHostedPrebidServer() { if (!successfulMockServerStarted) { fail("Mock server was not started"); } - server.enqueue(new MockResponse().setResponseCode(400).setBody("Invalid request format: No stored request found for id: 1001_INVALID_ACCOUNT_ID")); + server.enqueue(new MockResponse().setResponseCode(400).setBody(MockPrebidServerResponses.invalidAccountIdFromRubicon())); HttpUrl hostUrl = server.url("/"); Host.CUSTOM.setHostUrl(hostUrl.toString()); PrebidMobile.setPrebidServerHost(Host.CUSTOM); @@ -148,7 +148,7 @@ public void testInvalidPrebidServerConfigIdForRubiconHostedPrebidServer() { if (!successfulMockServerStarted) { fail("Mock server was not started"); } - server.enqueue(new MockResponse().setResponseCode(400).setBody("Invalid request format: No stored imp found for id: 1001-1_INVALID_CONFIG_ID")); + server.enqueue(new MockResponse().setResponseCode(400).setBody(MockPrebidServerResponses.invalidConfigIdFromRubicon())); HttpUrl hostUrl = server.url("/"); Host.CUSTOM.setHostUrl(hostUrl.toString()); PrebidMobile.setPrebidServerHost(Host.CUSTOM); diff --git a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java index ae637a408..0611e415c 100644 --- a/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java +++ b/PrebidMobile/API1.0/src/test/java/org/prebid/mobile/testutils/MockPrebidServerResponses.java @@ -86,6 +86,16 @@ public static String htmlUnreachableFromRubicon() { return inputStreamToString(in); } + public static String invalidAccountIdFromRubicon() { + InputStream in = MockPrebidServerResponses.class.getClassLoader().getResourceAsStream("PrebidServerInvalidAccountIdFromRubicon.json"); + return inputStreamToString(in); + } + + public static String invalidConfigIdFromRubicon() { + InputStream in = MockPrebidServerResponses.class.getClassLoader().getResourceAsStream("PrebidServerInvalidConfigIdFromRubicon.json"); + return inputStreamToString(in); + } + public static String inputStreamToString(InputStream is) { try { StringBuilder builder = new StringBuilder(); diff --git a/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidAccountIdFromRubicon.json b/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidAccountIdFromRubicon.json new file mode 100644 index 000000000..897664cdc --- /dev/null +++ b/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidAccountIdFromRubicon.json @@ -0,0 +1 @@ +Invalid request format: No stored request found for id: 1001_INVALID_ACCOUNT_ID \ No newline at end of file diff --git a/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidConfigIdFromRubicon.json b/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidConfigIdFromRubicon.json new file mode 100644 index 000000000..4b5159474 --- /dev/null +++ b/PrebidMobile/API1.0/src/test/resources/PrebidServerInvalidConfigIdFromRubicon.json @@ -0,0 +1 @@ +Invalid request format: No stored imp found for id: 1001-1_INVALID_CONFIG_ID \ No newline at end of file