Skip to content

Commit

Permalink
Allignment with iOS (#3)
Browse files Browse the repository at this point in the history
* integration tests
* change prebid server to be singleton
* update all the unit tests
* secure request
* check tid and status in response
  • Loading branch information
anwzhang authored May 25, 2017
1 parent 89db45f commit 6307a4e
Show file tree
Hide file tree
Showing 17 changed files with 130 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,5 @@ public interface DemandAdapter {
*/
void requestBid(Context context, BidManager.BidResponseListener bidResponseListener, ArrayList<AdUnit> adUnits);

boolean isAdUnitConfigured(AdUnit adUnit);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class Prebid {
* @param adUnits List of Ad Slot Configurations to register
* @throws PrebidException
*/
public static void init(Context context, ArrayList<AdUnit> adUnits) throws PrebidException {
public static void init(Context context, ArrayList<AdUnit> adUnits, DemandAdapter adapter) throws PrebidException {
LogUtil.i("Initializing with a list of AdUnits");
// validate context
if (context == null) {
Expand All @@ -53,18 +53,15 @@ public static void init(Context context, ArrayList<AdUnit> adUnits) throws Prebi
BidManager.registerAdUnit(adUnit);
}
// set up demand adapter
try {
Class<?> adapterClass = Class.forName(PrebidGlobalConfig.getAdapterClass().getClassName());
DemandAdapter adapter = (DemandAdapter) adapterClass.newInstance();
if (adapter != null) {
BidManager.adapter = adapter;
} else {
throw new PrebidException(PrebidException.PrebidError.UNABLE_TO_INITIALIZE_DEMAND_SOURCE);
if (adapter == null) {
throw new PrebidException(PrebidException.PrebidError.INVALID_DEMAND_SOURCE);
} else {
BidManager.adapter = adapter;
for (AdUnit adUnit : adUnits) {
if (!adapter.isAdUnitConfigured(adUnit)) {
throw new PrebidException(PrebidException.PrebidError.ADUNIT_NOT_CONFIGURED);
}
}
} catch (Exception e) {
LogUtil.e("Exception instantiating the adapter: " + e.getMessage());
e.printStackTrace();
throw new PrebidException(PrebidException.PrebidError.UNABLE_TO_INITIALIZE_DEMAND_SOURCE);
}
// set up bid manager
BidManager.setBidsExpirationRunnable(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ public enum PrebidError {
NULL_CONTEXT("Null context passed in."),
EMPTY_ADUNITS("Empty AdUnits passed in."),
BANNER_AD_UNIT_NO_SIZE("BannerAdUnit requires size information to check the price for the impression."),
UNABLE_TO_INITIALIZE_DEMAND_SOURCE("Unable to instantiating the adapter.");
INVALID_DEMAND_SOURCE("Unable to use the invalid adapter."),
ADUNIT_NOT_CONFIGURED("Ad unit is not configured properly.");


private String error;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,6 @@

public class PrebidGlobalConfig {

public enum ClientSideAdapter {
PREBID_SERVER("org.prebid.mobile.prebidserver.PrebidServerAdapter");

private String ADAPTER_CLASS_NAME;

ClientSideAdapter(String name) {
this.ADAPTER_CLASS_NAME = name;
}

public String getClassName() {
return ADAPTER_CLASS_NAME;
}

// TODO this is for testing purpose...need to think about best way to do it
public void setClassName(String className) {
this.ADAPTER_CLASS_NAME = className;
}
}

private static ClientSideAdapter adapterClass = ClientSideAdapter.PREBID_SERVER;

public static void setClientSideAdapter(ClientSideAdapter adapterClass) {
PrebidGlobalConfig.adapterClass = adapterClass;
}

static ClientSideAdapter getAdapterClass() {
return adapterClass;
}

private static boolean secureConnection = true; //by default, always use secured connection

/**
Expand All @@ -42,7 +13,6 @@ static ClientSideAdapter getAdapterClass() {
public static void shouldLoadOverSecureConnection(boolean secureConnection) {
// Only enables overrides for MoPub, DFP should always load over secured connection
if (BuildConfig.FLAVOR.equals("mopub")) {

PrebidGlobalConfig.secureConnection = secureConnection;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class BidManagerTest extends BaseSetup {
public BannerAdUnit adUnit1;
public BannerAdUnit adUnit2;
public InterstitialAdUnit adUnit3;
DemandAdapter adapter;

@Override
public void setup() {
Expand All @@ -32,7 +33,7 @@ public void setup() {
}

private void initializePrebid() {
PrebidGlobalConfig.ClientSideAdapter.PREBID_SERVER.setClassName("org.prebid.mobile.core.mockobjects.MockServer");
adapter = new MockServer();
//Configure Banner Ad-Units
adUnit1 = new BannerAdUnit(TestConstants.bannerAdUnit1);
adUnit1.addSize(320, 50);
Expand Down Expand Up @@ -64,7 +65,7 @@ public void testCachingOfBidsInit() throws Exception {
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(adUnit1);
adUnits.add(adUnit2);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();

Expand All @@ -84,7 +85,7 @@ public void testStartNewAuction() throws Exception {
// Cache a bid
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(adUnit1);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);

// Here is where we call start new Auction.
MockServer.setCpm(TestConstants.cpm3);
Expand Down Expand Up @@ -112,7 +113,7 @@ public void testNoBidForUnregisteredAd() throws Exception {
// Cache a bid
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(adUnit1);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
ArrayList<BidResponse> bidForAdUnit = BidManager.getWinningBids(adUnit1.getCode());
Expand All @@ -129,7 +130,7 @@ public void testKeywordString() throws Exception {
//Registering a list of adUnits test
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(adUnit1);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
ArrayList<Pair<String, String>> keywords = BidManager.getKeywordsForAdUnit(adUnit1.getCode(), activity.getApplicationContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.prebid.mobile.core.mockobjects.MockServer;
import org.prebid.mobile.unittestutils.BaseSetup;
import org.prebid.mobile.unittestutils.TestConstants;
import org.robolectric.RobolectricTestRunner;
Expand All @@ -17,10 +18,12 @@
@RunWith(RobolectricTestRunner.class)
@Config(sdk = 21, manifest = Config.NONE)
public class PrebidInitTest extends BaseSetup {
DemandAdapter adapter;

@Before
public void setUp() {
super.setup();
PrebidGlobalConfig.ClientSideAdapter.PREBID_SERVER.setClassName("org.prebid.mobile.core.mockobjects.MockServer");
adapter = new MockServer();
}

// Check if the ad units passed in are stored correctly in the BidManager after init.
Expand All @@ -37,7 +40,7 @@ public void testNormalInit() throws Exception {
adUnits.add(adUnit2);
adUnits.add(adUnit3);
// Init
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
// Assertion
assertEquals(adUnit1, BidManager.getAdUnitByCode(TestConstants.bannerAdUnit1));
assertEquals(adUnit2, BidManager.getAdUnitByCode(TestConstants.bannerAdUnit2));
Expand All @@ -51,7 +54,7 @@ public void testInitWithNullContext() {
BannerAdUnit adUnit1 = new BannerAdUnit(TestConstants.bannerAdUnit1);
adUnit1.addSize(320, 50);
try {
Prebid.init(null, adUnits);
Prebid.init(null, adUnits, adapter);
} catch (Exception e) {
Assert.assertEquals(PrebidException.PrebidError.NULL_CONTEXT.getDetailMessage(), e.getMessage());
}
Expand All @@ -61,7 +64,7 @@ public void testInitWithNullContext() {
public void testInitWithEmptyAdUnits() {
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
try {
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
} catch (Exception e) {
Assert.assertEquals(PrebidException.PrebidError.EMPTY_ADUNITS.getDetailMessage(), e.getMessage());
}
Expand All @@ -73,23 +76,22 @@ public void testInitBannerNoSizeException() {
ArrayList<AdUnit> adUnits = new ArrayList<>();
adUnits.add(adUnit);
try {
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
} catch (Exception e) {
Assert.assertEquals(PrebidException.PrebidError.BANNER_AD_UNIT_NO_SIZE.getDetailMessage(), e.getMessage());
}
}

@Test
public void testUnableToInitDemandAdapterException() {
PrebidGlobalConfig.ClientSideAdapter.PREBID_SERVER.setClassName("org.prebid.mobile.core.mockobjects.MockServerTest");
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
BannerAdUnit adUnit = new BannerAdUnit(TestConstants.bannerAdUnit1);
adUnit.addSize(320, 50);
adUnits.add(adUnit);
try {
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, null);
} catch (Exception e) {
Assert.assertEquals(PrebidException.PrebidError.UNABLE_TO_INITIALIZE_DEMAND_SOURCE.getDetailMessage(), e.getMessage());
Assert.assertEquals(PrebidException.PrebidError.INVALID_DEMAND_SOURCE.getDetailMessage(), e.getMessage());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public void run() {
}

}

@Override
public boolean isAdUnitConfigured(AdUnit adUnit) {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import org.prebid.mobile.core.AdUnit;
import org.prebid.mobile.core.BannerAdUnit;
import org.prebid.mobile.core.BidManager;
import org.prebid.mobile.core.DemandAdapter;
import org.prebid.mobile.core.Prebid;
import org.prebid.mobile.core.PrebidGlobalConfig;
import org.prebid.mobile.dfp.mockobjects.MockServer;
import org.prebid.mobile.unittestutils.BaseSetup;
import org.prebid.mobile.unittestutils.ServerResponsesBuilder;
Expand All @@ -34,6 +34,7 @@ public class PrebidMobileForDFPTest extends BaseSetup {
public PublisherAdRequest request2;
public BannerAdUnit bannerAdUnit1;
public BannerAdUnit bannerAdUnit2;
DemandAdapter adapter;

@Override
public void setup() {
Expand All @@ -49,7 +50,7 @@ public void setup() {

PublisherAdRequest.Builder builder1 = new PublisherAdRequest.Builder();
request2 = builder1.build();
PrebidGlobalConfig.ClientSideAdapter.PREBID_SERVER.setClassName("org.prebid.mobile.dfp.mockobjects.MockServer");
adapter = new MockServer();
}

// Test by calling AttachTopBid only once after the initial UT server response by setting up two adUnits.
Expand All @@ -58,7 +59,7 @@ public void testAttachTopBidOnce() throws Exception {
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(bannerAdUnit1);
MockServer.setCpm(TestConstants.cpm3);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
// Pre-check
Expand Down Expand Up @@ -90,7 +91,7 @@ public void testAttachTopBidForAdUnits() throws Exception {
adUnits.add(bannerAdUnit1);
adUnits.add(bannerAdUnit2);
MockServer.setCpm(TestConstants.cpm3);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();
//Checking Keywords for request1 and overloaded attachTopBid
Expand Down Expand Up @@ -132,7 +133,7 @@ public void testDetachUsedBid() throws Exception {
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(bannerAdUnit1);
adUnits.add(bannerAdUnit2);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();

Expand Down Expand Up @@ -162,7 +163,7 @@ public void testNoBidAfterLastSuccessfulBid() throws Exception {
ArrayList<AdUnit> adUnits = new ArrayList<AdUnit>();
adUnits.add(bannerAdUnit1);
MockServer.setCpm(TestConstants.cpm3);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();

Expand All @@ -183,7 +184,7 @@ public void testNoBidAfterLastSuccessfulBid() throws Exception {
BannerAdUnit adUnit = new BannerAdUnit(TestConstants.bannerAdUnit2);
adUnit.addSize(TestConstants.width1, TestConstants.height1);
singleAdUnit.add(adUnit);
Prebid.init(activity.getApplicationContext(), singleAdUnit);
Prebid.init(activity.getApplicationContext(), singleAdUnit, adapter);
PrebidMobileForDFP.attachTopBid(request1, adUnit.getCode(), activity);
assertEquals(true, keywords.isEmpty());

Expand All @@ -198,7 +199,7 @@ public void testAttachTopBidWhenReadyOnce() throws Exception {
adUnits.add(adUnit);
MockServer.setCpm(TestConstants.cpm1);
MockServer.setDelayedMillis(10);
Prebid.init(activity.getApplicationContext(), adUnits);
Prebid.init(activity.getApplicationContext(), adUnits, adapter);
Robolectric.flushBackgroundThreadScheduler();
Robolectric.flushForegroundThreadScheduler();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,10 @@ public void run() {
}

}

@Override
public boolean isAdUnitConfigured(AdUnit adUnit) {
return true;
}
}

Loading

0 comments on commit 6307a4e

Please sign in to comment.