prebid.js 7.20.0 → 7.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/1plusXRtdProvider.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/iasRtdProvider.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +127 -127
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubwiseBidAdapter.js +1 -1
- package/dist/pulsepointBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +10 -51
- package/modules/1plusXRtdProvider.js +32 -5
- package/modules/33acrossBidAdapter.js +18 -11
- package/modules/adyoulikeBidAdapter.js +12 -6
- package/modules/asoBidAdapter.js +11 -6
- package/modules/asoBidAdapter.md +5 -6
- package/modules/brightcomBidAdapter.js +30 -10
- package/modules/dacIdSystem.js +145 -27
- package/modules/dacIdSystem.md +7 -2
- package/modules/fledgeForGpt.md +101 -23
- package/modules/freewheel-sspBidAdapter.js +48 -7
- package/modules/freewheel-sspBidAdapter.md +1 -1
- package/modules/ftrackIdSystem.js +28 -9
- package/modules/gridBidAdapter.js +1 -0
- package/modules/iasRtdProvider.js +21 -6
- package/modules/iasRtdProvider.md +1 -1
- package/modules/ixBidAdapter.js +9 -4
- package/modules/medianetAnalyticsAdapter.js +26 -22
- package/modules/medianetBidAdapter.js +5 -1
- package/modules/mediasquareBidAdapter.js +42 -3
- package/modules/mgidBidAdapter.js +8 -1
- package/modules/oguryBidAdapter.js +6 -2
- package/modules/prebidServerBidAdapter/index.js +1 -1
- package/modules/pubmaticBidAdapter.js +27 -3
- package/modules/pubwiseBidAdapter.js +14 -12
- package/modules/pulsepointBidAdapter.js +11 -6
- package/modules/smaatoBidAdapter.js +54 -5
- package/modules/smaatoBidAdapter.md +78 -0
- package/modules/teadsBidAdapter.js +26 -8
- package/modules/ttdBidAdapter.js +8 -0
- package/modules/userId/eids.js +7 -11
- package/modules/weboramaRtdProvider.js +800 -643
- package/modules/weboramaRtdProvider.md +32 -0
- package/modules/yieldoneBidAdapter.js +7 -4
- package/package.json +3 -3
- package/src/adapters/bidderFactory.js +11 -9
- package/src/auction.js +3 -3
- package/test/spec/auctionmanager_spec.js +29 -20
- package/test/spec/modules/1plusXRtdProvider_spec.js +30 -14
- package/test/spec/modules/33acrossBidAdapter_spec.js +44 -1
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +1 -1
- package/test/spec/modules/asoBidAdapter_spec.js +2 -2
- package/test/spec/modules/brightcomBidAdapter_spec.js +94 -1
- package/test/spec/modules/dacIdSystem_spec.js +93 -11
- package/test/spec/modules/eids_spec.js +11 -7
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +25 -4
- package/test/spec/modules/ftrackIdSystem_spec.js +200 -90
- package/test/spec/modules/iasRtdProvider_spec.js +57 -1
- package/test/spec/modules/ixBidAdapter_spec.js +12 -0
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +50 -8
- package/test/spec/modules/medianetBidAdapter_spec.js +76 -0
- package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -2
- package/test/spec/modules/mgidBidAdapter_spec.js +50 -0
- package/test/spec/modules/oguryBidAdapter_spec.js +33 -17
- package/test/spec/modules/prebidServerBidAdapter_spec.js +24 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +60 -5
- package/test/spec/modules/pubwiseBidAdapter_spec.js +6 -4
- package/test/spec/modules/pulsepointBidAdapter_spec.js +123 -0
- package/test/spec/modules/smaatoBidAdapter_spec.js +307 -36
- package/test/spec/modules/teadsBidAdapter_spec.js +119 -6
- package/test/spec/modules/weboramaRtdProvider_spec.js +382 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +2 -3
- package/test/spec/unit/core/bidderFactory_spec.js +0 -4
|
@@ -8,6 +8,8 @@ const {
|
|
|
8
8
|
EVENTS: { AUCTION_INIT, BID_REQUESTED, BID_RESPONSE, NO_BID, BID_TIMEOUT, AUCTION_END, SET_TARGETING, BID_WON }
|
|
9
9
|
} = CONSTANTS;
|
|
10
10
|
|
|
11
|
+
const ERROR_WINNING_BID_ABSENT = 'winning_bid_absent';
|
|
12
|
+
|
|
11
13
|
const MOCK = {
|
|
12
14
|
Ad_Units: [{'code': 'div-gpt-ad-1460505748561-0', 'mediaTypes': {'banner': {'sizes': [[300, 250]]}}, 'bids': [], 'ext': {'prop1': 'value1'}}],
|
|
13
15
|
MULTI_FORMAT_TWIN_AD_UNITS: [{'code': 'div-gpt-ad-1460505748561-0', 'mediaTypes': {'banner': {'sizes': [[300, 250]]}, 'native': {'image': {'required': true, 'sizes': [150, 50]}}}, 'bids': [], 'ext': {'prop1': 'value1'}}, {'code': 'div-gpt-ad-1460505748561-0', 'mediaTypes': {'video': {'playerSize': [640, 480], 'context': 'instream'}}, 'bids': [], 'ext': {'prop1': 'value1'}}],
|
|
@@ -22,11 +24,15 @@ const MOCK = {
|
|
|
22
24
|
SET_TARGETING: {'div-gpt-ad-1460505748561-0': {'prebid_test': '1', 'hb_format': 'banner', 'hb_source': 'client', 'hb_size': '300x250', 'hb_pb': '2.00', 'hb_adid': '3e6e4bce5c8fb3', 'hb_bidder': 'medianet', 'hb_format_medianet': 'banner', 'hb_source_medianet': 'client', 'hb_size_medianet': '300x250', 'hb_pb_medianet': '2.00', 'hb_adid_medianet': '3e6e4bce5c8fb3', 'hb_bidder_medianet': 'medianet'}},
|
|
23
25
|
NO_BID_SET_TARGETING: {'div-gpt-ad-1460505748561-0': {}},
|
|
24
26
|
BID_WON: {'bidderCode': 'medianet', 'width': 300, 'height': 250, 'statusMessage': 'Bid available', 'adId': '3e6e4bce5c8fb3', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'cid': 'test123', 'crid': '451466393'}]},
|
|
27
|
+
BID_WON_2: {'bidderCode': 'appnexus', 'width': 300, 'height': 250, 'statusMessage': 'Bid available', 'adId': '3e6e4bce5c8fb4', 'requestId': '28248b0e6aecd5', 'mediaType': 'banner', 'source': 'client', 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'appnexus', 'hb_adid': '3e6e4bce5c8fb4', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'publisherId': 'test123', 'placementId': '451466393'}]},
|
|
28
|
+
BID_WON_UNKNOWN: {'bidderCode': 'appnexus', 'width': 300, 'height': 250, 'statusMessage': 'Bid available', 'adId': '3e6e4bce5c8fkk', 'requestId': '28248b0e6aecd5', 'mediaType': 'banner', 'source': 'client', 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'appnexus', 'hb_adid': '3e6e4bce5c8fb4', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'publisherId': 'test123', 'placementId': '451466393'}]},
|
|
25
29
|
NO_BID: {'bidder': 'medianet', 'params': {'cid': 'test123', 'crid': '451466393', 'site': {}}, 'mediaTypes': {'banner': {'sizes': [[300, 250]], 'ext': ['asdads']}}, 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'transactionId': '303fa0c6-682f-4aea-8e4a-dc68f0d5c7d5', 'sizes': [[300, 250], [300, 600]], 'bidId': '28248b0e6aece2', 'bidderRequestId': '13fccf3809fe43', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'src': 'client'},
|
|
26
30
|
BID_TIMEOUT: [{'bidId': '28248b0e6aece2', 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'params': [{'cid': 'test123', 'crid': '451466393', 'site': {}}, {'cid': '8CUX0H51P', 'crid': '451466393', 'site': {}}], 'timeout': 6}],
|
|
27
|
-
BIDS_SAME_REQ_DIFF_CPM: [{'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '
|
|
28
|
-
BIDS_SAME_REQ_EQUAL_CPM: [{'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '
|
|
29
|
-
}
|
|
31
|
+
BIDS_SAME_REQ_DIFF_CPM: [{'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb3', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.10, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'cid': 'test123', 'crid': '451466393'}]}, {'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb4', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 1.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.10, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 278, 'pbLg': '1.00', 'pbMg': '1.20', 'pbHg': '1.29', 'pbAg': '1.25', 'pbDg': '1.29', 'pbCg': '1.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '1.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'cid': 'test123', 'crid': '451466393'}]}],
|
|
32
|
+
BIDS_SAME_REQ_EQUAL_CPM: [{'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb3', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.1, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'cid': 'test123', 'crid': '451466393'}]}, {'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb4', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.1, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 286, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'status': 'rendered', 'params': [{'cid': 'test123', 'crid': '451466393'}]}],
|
|
33
|
+
BID_RESPONSES: [{'bidderCode': 'medianet', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb3', 'requestId': '28248b0e6aece2', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 2.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.1, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 266, 'pbLg': '2.00', 'pbMg': '2.20', 'pbHg': '2.29', 'pbAg': '2.25', 'pbDg': '2.29', 'pbCg': '2.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'medianet', 'hb_adid': '3e6e4bce5c8fb3', 'hb_pb': '2.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'params': [{'cid': 'test123', 'crid': '451466393'}]}, {'bidderCode': 'appnexus', 'width': 300, 'height': 250, 'adId': '3e6e4bce5c8fb4', 'requestId': '28248b0e6aecd5', 'mediaType': 'banner', 'source': 'client', 'ext': {'pvid': 123, 'crid': '321'}, 'no_bid': false, 'cpm': 1.299, 'ad': 'AD_CODE', 'ttl': 180, 'creativeId': 'Test1', 'netRevenue': true, 'currency': 'USD', 'dfp_id': 'div-gpt-ad-1460505748561-0', 'originalCpm': 1.1495, 'originalCurrency': 'USD', 'floorData': {'floorValue': 1.1, 'floorRule': 'banner'}, 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'responseTimestamp': 1584563606009, 'requestTimestamp': 1584563605743, 'bidder': 'medianet', 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'timeToRespond': 278, 'pbLg': '1.00', 'pbMg': '1.20', 'pbHg': '1.29', 'pbAg': '1.25', 'pbDg': '1.29', 'pbCg': '1.00', 'size': '300x250', 'adserverTargeting': {'hb_bidder': 'appnexus', 'hb_adid': '3e6e4bce5c8fb4', 'hb_pb': '1.00', 'hb_size': '300x250', 'hb_source': 'client', 'hb_format': 'banner', 'prebid_test': 1}, 'params': [{'publisherId': 'test123', 'placementId': '451466393'}]}],
|
|
34
|
+
BID_REQUESTS: [{'bidderCode': 'medianet', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'bids': [{'bidder': 'medianet', 'params': {'cid': 'TEST_CID', 'crid': '451466393'}, 'mediaTypes': {'banner': {'sizes': [[300, 250]], 'ext': ['asdads']}}, 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'sizes': [[300, 250]], 'bidId': '28248b0e6aece2', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'src': 'client'}], 'auctionStart': 1584563605739, 'timeout': 6000, 'uspConsent': '1YY', 'start': 1584563605743}, {'bidderCode': 'appnexus', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'bids': [{'bidder': 'appnexus', 'params': {'publisherId': 'TEST_CID', 'placementId': '451466393'}, 'mediaTypes': {'banner': {'sizes': [[300, 250]], 'ext': ['asdads']}}, 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'sizes': [[300, 250]], 'bidId': '28248b0e6aecd5', 'auctionId': '8e0d5245-deb3-406c-96ca-9b609e077ff7', 'src': 'client'}], 'auctionStart': 1584563605739, 'timeout': 6000, 'uspConsent': '1YY', 'start': 1584563605743}]
|
|
35
|
+
};
|
|
30
36
|
|
|
31
37
|
function performAuctionWithFloorConfig() {
|
|
32
38
|
events.emit(AUCTION_INIT, Object.assign({}, MOCK.AUCTION_INIT_WITH_FLOOR, {adUnits: MOCK.Ad_Units}));
|
|
@@ -87,6 +93,14 @@ function performStandardAuctionMultiBidWithSameRequestId(bidRespArray) {
|
|
|
87
93
|
events.emit(BID_WON, MOCK.BID_WON);
|
|
88
94
|
}
|
|
89
95
|
|
|
96
|
+
function performStandardAuctionMultiBidResponseNoWin() {
|
|
97
|
+
events.emit(AUCTION_INIT, Object.assign({}, MOCK.AUCTION_INIT, {adUnits: MOCK.Ad_Units}));
|
|
98
|
+
MOCK.BID_REQUESTS.forEach(bidReq => events.emit(BID_REQUESTED, bidReq));
|
|
99
|
+
MOCK.BID_RESPONSES.forEach(bidResp => events.emit(BID_RESPONSE, bidResp));
|
|
100
|
+
events.emit(AUCTION_END, MOCK.AUCTION_END);
|
|
101
|
+
events.emit(SET_TARGETING, MOCK.SET_TARGETING);
|
|
102
|
+
}
|
|
103
|
+
|
|
90
104
|
function getQueryData(url, decode = false) {
|
|
91
105
|
const queryArgs = url.split('?')[1].split('&');
|
|
92
106
|
return queryArgs.reduce((data, arg) => {
|
|
@@ -113,7 +127,7 @@ describe('Media.net Analytics Adapter', function() {
|
|
|
113
127
|
options: {
|
|
114
128
|
cid: CUSTOMER_ID
|
|
115
129
|
}
|
|
116
|
-
}
|
|
130
|
+
};
|
|
117
131
|
beforeEach(function () {
|
|
118
132
|
sandbox = sinon.sandbox.create();
|
|
119
133
|
});
|
|
@@ -280,25 +294,53 @@ describe('Media.net Analytics Adapter', function() {
|
|
|
280
294
|
it('should pick winning bid if multibids with same request id', function() {
|
|
281
295
|
performStandardAuctionMultiBidWithSameRequestId(MOCK.BIDS_SAME_REQ_DIFF_CPM);
|
|
282
296
|
let winningBid = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log)).filter(log => log.winner)[0];
|
|
283
|
-
expect(winningBid.adid).equals('
|
|
297
|
+
expect(winningBid.adid).equals('3e6e4bce5c8fb3');
|
|
284
298
|
medianetAnalytics.clearlogsQueue();
|
|
285
299
|
|
|
286
300
|
const reversedResponseArray = [].concat(MOCK.BIDS_SAME_REQ_DIFF_CPM).reverse();
|
|
287
301
|
performStandardAuctionMultiBidWithSameRequestId(reversedResponseArray);
|
|
288
302
|
winningBid = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log)).filter(log => log.winner)[0];
|
|
289
|
-
expect(winningBid.adid).equals('
|
|
303
|
+
expect(winningBid.adid).equals('3e6e4bce5c8fb3');
|
|
290
304
|
});
|
|
291
305
|
|
|
292
306
|
it('should pick winning bid if multibids with same request id and equal cpm', function() {
|
|
293
307
|
performStandardAuctionMultiBidWithSameRequestId(MOCK.BIDS_SAME_REQ_EQUAL_CPM);
|
|
294
308
|
let winningBid = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log)).filter(log => log.winner)[0];
|
|
295
|
-
expect(winningBid.adid).equals('
|
|
309
|
+
expect(winningBid.adid).equals('3e6e4bce5c8fb3');
|
|
296
310
|
medianetAnalytics.clearlogsQueue();
|
|
297
311
|
|
|
298
312
|
const reversedResponseArray = [].concat(MOCK.BIDS_SAME_REQ_EQUAL_CPM).reverse();
|
|
299
313
|
performStandardAuctionMultiBidWithSameRequestId(reversedResponseArray);
|
|
300
314
|
winningBid = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log)).filter(log => log.winner)[0];
|
|
301
|
-
expect(winningBid.adid).equals('
|
|
315
|
+
expect(winningBid.adid).equals('3e6e4bce5c8fb3');
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
it('should pick single winning bid per bid won', function() {
|
|
319
|
+
performStandardAuctionMultiBidResponseNoWin();
|
|
320
|
+
const queue = medianetAnalytics.getlogsQueue();
|
|
321
|
+
queue.length = 0;
|
|
322
|
+
|
|
323
|
+
events.emit(BID_WON, MOCK.BID_WON);
|
|
324
|
+
let winningBids = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log));
|
|
325
|
+
expect(winningBids[0].adid).equals(MOCK.BID_WON.adId);
|
|
326
|
+
expect(winningBids.length).equals(1);
|
|
327
|
+
events.emit(BID_WON, MOCK.BID_WON_2);
|
|
328
|
+
winningBids = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log));
|
|
329
|
+
expect(winningBids[1].adid).equals(MOCK.BID_WON_2.adId);
|
|
330
|
+
expect(winningBids.length).equals(2);
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
it('should ignore unknown winning bid and log error', function() {
|
|
334
|
+
performStandardAuctionMultiBidResponseNoWin();
|
|
335
|
+
const queue = medianetAnalytics.getlogsQueue();
|
|
336
|
+
queue.length = 0;
|
|
337
|
+
|
|
338
|
+
events.emit(BID_WON, MOCK.BID_WON_UNKNOWN);
|
|
339
|
+
let winningBids = medianetAnalytics.getlogsQueue().map((log) => getQueryData(log));
|
|
340
|
+
let errors = medianetAnalytics.getErrorQueue().map((log) => getQueryData(log));
|
|
341
|
+
expect(winningBids.length).equals(0);
|
|
342
|
+
expect(errors.length).equals(1);
|
|
343
|
+
expect(errors[0].event).equals(ERROR_WINNING_BID_ABSENT);
|
|
302
344
|
});
|
|
303
345
|
});
|
|
304
346
|
});
|
|
@@ -856,25 +856,50 @@ let VALID_BID_REQUEST = [{
|
|
|
856
856
|
cid: '8CUV090'
|
|
857
857
|
}
|
|
858
858
|
},
|
|
859
|
+
VALID_PARAMS_AAX = {
|
|
860
|
+
bidder: 'aax',
|
|
861
|
+
params: {
|
|
862
|
+
cid: 'AAXG123'
|
|
863
|
+
}
|
|
864
|
+
},
|
|
859
865
|
PARAMS_MISSING = {
|
|
860
866
|
bidder: 'medianet',
|
|
861
867
|
},
|
|
868
|
+
PARAMS_MISSING_AAX = {
|
|
869
|
+
bidder: 'aax',
|
|
870
|
+
},
|
|
862
871
|
PARAMS_WITHOUT_CID = {
|
|
863
872
|
bidder: 'medianet',
|
|
864
873
|
params: {}
|
|
865
874
|
},
|
|
875
|
+
PARAMS_WITHOUT_CID_AAX = {
|
|
876
|
+
bidder: 'aax',
|
|
877
|
+
params: {}
|
|
878
|
+
},
|
|
866
879
|
PARAMS_WITH_INTEGER_CID = {
|
|
867
880
|
bidder: 'medianet',
|
|
868
881
|
params: {
|
|
869
882
|
cid: 8867587
|
|
870
883
|
}
|
|
871
884
|
},
|
|
885
|
+
PARAMS_WITH_INTEGER_CID_AAX = {
|
|
886
|
+
bidder: 'aax',
|
|
887
|
+
params: {
|
|
888
|
+
cid: 8867587
|
|
889
|
+
}
|
|
890
|
+
},
|
|
872
891
|
PARAMS_WITH_EMPTY_CID = {
|
|
873
892
|
bidder: 'medianet',
|
|
874
893
|
params: {
|
|
875
894
|
cid: ''
|
|
876
895
|
}
|
|
877
896
|
},
|
|
897
|
+
PARAMS_WITH_EMPTY_CID_AAX = {
|
|
898
|
+
bidder: 'aax',
|
|
899
|
+
params: {
|
|
900
|
+
cid: ''
|
|
901
|
+
}
|
|
902
|
+
},
|
|
878
903
|
SYNC_OPTIONS_BOTH_ENABLED = {
|
|
879
904
|
iframeEnabled: true,
|
|
880
905
|
pixelEnabled: true,
|
|
@@ -1571,4 +1596,55 @@ describe('Media.net bid adapter', function () {
|
|
|
1571
1596
|
expect(requestObj.imp[0].hasOwnProperty('bidfloors')).to.equal(true);
|
|
1572
1597
|
});
|
|
1573
1598
|
});
|
|
1599
|
+
|
|
1600
|
+
describe('isBidRequestValid aax', function () {
|
|
1601
|
+
it('should accept valid bid params', function () {
|
|
1602
|
+
let isValid = spec.isBidRequestValid(VALID_PARAMS_AAX);
|
|
1603
|
+
expect(isValid).to.equal(true);
|
|
1604
|
+
});
|
|
1605
|
+
|
|
1606
|
+
it('should reject bid if cid is not present', function () {
|
|
1607
|
+
let isValid = spec.isBidRequestValid(PARAMS_WITHOUT_CID_AAX);
|
|
1608
|
+
expect(isValid).to.equal(false);
|
|
1609
|
+
});
|
|
1610
|
+
|
|
1611
|
+
it('should reject bid if cid is not a string', function () {
|
|
1612
|
+
let isValid = spec.isBidRequestValid(PARAMS_WITH_INTEGER_CID_AAX);
|
|
1613
|
+
expect(isValid).to.equal(false);
|
|
1614
|
+
});
|
|
1615
|
+
|
|
1616
|
+
it('should reject bid if cid is a empty string', function () {
|
|
1617
|
+
let isValid = spec.isBidRequestValid(PARAMS_WITH_EMPTY_CID_AAX);
|
|
1618
|
+
expect(isValid).to.equal(false);
|
|
1619
|
+
});
|
|
1620
|
+
|
|
1621
|
+
it('should have missing params', function () {
|
|
1622
|
+
let isValid = spec.isBidRequestValid(PARAMS_MISSING_AAX);
|
|
1623
|
+
expect(isValid).to.equal(false);
|
|
1624
|
+
});
|
|
1625
|
+
});
|
|
1626
|
+
|
|
1627
|
+
describe('interpretResponse aax', function () {
|
|
1628
|
+
it('should not push response if no-bid', function () {
|
|
1629
|
+
let validBids = [];
|
|
1630
|
+
let bids = spec.interpretResponse(SERVER_RESPONSE_NOBID, []);
|
|
1631
|
+
expect(bids).to.deep.equal(validBids);
|
|
1632
|
+
});
|
|
1633
|
+
|
|
1634
|
+
it('should have empty bid response', function() {
|
|
1635
|
+
let bids = spec.interpretResponse(SERVER_RESPONSE_NOBODY, []);
|
|
1636
|
+
expect(bids).to.deep.equal([]);
|
|
1637
|
+
});
|
|
1638
|
+
|
|
1639
|
+
it('should have valid bids', function () {
|
|
1640
|
+
let bids = spec.interpretResponse(SERVER_RESPONSE_VALID_BID, []);
|
|
1641
|
+
expect(bids).to.deep.equal(SERVER_VALID_BIDS);
|
|
1642
|
+
});
|
|
1643
|
+
|
|
1644
|
+
it('should have empty bid list', function() {
|
|
1645
|
+
let validBids = [];
|
|
1646
|
+
let bids = spec.interpretResponse(SERVER_RESPONSE_EMPTY_BIDLIST, []);
|
|
1647
|
+
expect(bids).to.deep.equal(validBids);
|
|
1648
|
+
});
|
|
1649
|
+
});
|
|
1574
1650
|
});
|
|
@@ -78,7 +78,8 @@ describe('MediaSquare bid adapter tests', function () {
|
|
|
78
78
|
owner: 'test',
|
|
79
79
|
code: 'publishername_atf_desktop_rg_pave'
|
|
80
80
|
},
|
|
81
|
-
|
|
81
|
+
sizes: [[300, 250]],
|
|
82
|
+
getFloor: function (a) { return { currency: 'USD', floor: 1.0 }; },
|
|
82
83
|
}];
|
|
83
84
|
var BID_RESPONSE = {'body': {
|
|
84
85
|
'responses': [{
|
|
@@ -142,7 +143,7 @@ describe('MediaSquare bid adapter tests', function () {
|
|
|
142
143
|
const requestfloor = spec.buildRequests(FLOORS_PARAMS, DEFAULT_OPTIONS);
|
|
143
144
|
const responsefloor = JSON.parse(requestfloor.data);
|
|
144
145
|
expect(responsefloor.codes[0]).to.have.property('floor').exist;
|
|
145
|
-
expect(responsefloor.codes[0].floor).to.have.property('floor').and.to.equal(1
|
|
146
|
+
expect(responsefloor.codes[0].floor).to.have.property('300x250').and.to.have.property('floor').and.to.equal(1);
|
|
146
147
|
});
|
|
147
148
|
|
|
148
149
|
it('Verify parse response', function () {
|
|
@@ -239,6 +240,7 @@ describe('MediaSquare bid adapter tests', function () {
|
|
|
239
240
|
const bid = response[0];
|
|
240
241
|
expect(bid).to.have.property('vastXml');
|
|
241
242
|
expect(bid).to.have.property('vastUrl');
|
|
243
|
+
expect(bid).to.have.property('renderer');
|
|
242
244
|
delete BID_RESPONSE.body.responses[0].video;
|
|
243
245
|
});
|
|
244
246
|
});
|
|
@@ -31,6 +31,10 @@ describe('Mgid bid adapter', function () {
|
|
|
31
31
|
const mgid_ver = spec.VERSION;
|
|
32
32
|
const utcOffset = (new Date()).getTimezoneOffset().toString();
|
|
33
33
|
|
|
34
|
+
it('should expose gvlid', function() {
|
|
35
|
+
expect(spec.gvlid).to.equal(358)
|
|
36
|
+
});
|
|
37
|
+
|
|
34
38
|
describe('isBidRequestValid', function () {
|
|
35
39
|
let bid = {
|
|
36
40
|
'adUnitCode': 'div',
|
|
@@ -541,6 +545,52 @@ describe('Mgid bid adapter', function () {
|
|
|
541
545
|
'data': '{"site":{"domain":"' + domain + '","page":"' + page + '"},"cur":["USD"],"geo":{"utcoffset":' + utcOffset + '},"device":{"ua":"' + ua + '","js":1,"dnt":' + dnt + ',"h":' + screenHeight + ',"w":' + screenWidth + ',"language":"' + lang + '"},"ext":{"mgid_ver":"' + mgid_ver + '","prebid_ver":"' + version + '"},"imp":[{"tagid":"2/div","secure":' + secure + ',"banner":{"w":300,"h":600,"format":[{"w":300,"h":600},{"w":300,"h":250}],"pos":1}}]}',
|
|
542
546
|
});
|
|
543
547
|
});
|
|
548
|
+
it('should proper handle ortb2 data', function () {
|
|
549
|
+
let bid = Object.assign({}, abid);
|
|
550
|
+
bid.mediaTypes = {
|
|
551
|
+
banner: {
|
|
552
|
+
sizes: [[300, 250]]
|
|
553
|
+
}
|
|
554
|
+
};
|
|
555
|
+
let bidRequests = [bid];
|
|
556
|
+
|
|
557
|
+
let bidderRequest = {
|
|
558
|
+
ortb2: {
|
|
559
|
+
site: {
|
|
560
|
+
content: {
|
|
561
|
+
data: [{
|
|
562
|
+
name: 'mgid.com',
|
|
563
|
+
ext: {
|
|
564
|
+
segtax: 1,
|
|
565
|
+
},
|
|
566
|
+
segment: [
|
|
567
|
+
{id: '123'},
|
|
568
|
+
{id: '456'},
|
|
569
|
+
],
|
|
570
|
+
}]
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
user: {
|
|
574
|
+
data: [{
|
|
575
|
+
name: 'mgid.com',
|
|
576
|
+
ext: {
|
|
577
|
+
segtax: 2,
|
|
578
|
+
},
|
|
579
|
+
segment: [
|
|
580
|
+
{'id': '789'},
|
|
581
|
+
{'id': '987'},
|
|
582
|
+
],
|
|
583
|
+
}]
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
589
|
+
expect(request.url).deep.equal('https://prebid.mgid.com/prebid/1');
|
|
590
|
+
expect(request.method).deep.equal('POST');
|
|
591
|
+
const data = JSON.parse(request.data);
|
|
592
|
+
expect(data.ext).deep.include(bidderRequest.ortb2);
|
|
593
|
+
});
|
|
544
594
|
});
|
|
545
595
|
|
|
546
596
|
describe('interpretResponse', function () {
|
|
@@ -119,26 +119,30 @@ describe('OguryBidAdapter', function () {
|
|
|
119
119
|
};
|
|
120
120
|
});
|
|
121
121
|
|
|
122
|
-
it('should return syncs array with
|
|
122
|
+
it('should return syncs array with three elements of type image', () => {
|
|
123
123
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
124
124
|
|
|
125
|
-
expect(userSyncs).to.have.lengthOf(
|
|
125
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
126
126
|
expect(userSyncs[0].type).to.equal('image');
|
|
127
127
|
expect(userSyncs[0].url).to.contain('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch');
|
|
128
128
|
expect(userSyncs[1].type).to.equal('image');
|
|
129
129
|
expect(userSyncs[1].url).to.contain('https://ms-cookie-sync.presage.io/ttd/init-sync');
|
|
130
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
131
|
+
expect(userSyncs[2].url).to.contain('https://ms-cookie-sync.presage.io/xandr/init-sync');
|
|
130
132
|
});
|
|
131
133
|
|
|
132
134
|
it('should set the source as query param', () => {
|
|
133
135
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
134
136
|
expect(userSyncs[0].url).to.contain('source=prebid');
|
|
135
137
|
expect(userSyncs[1].url).to.contain('source=prebid');
|
|
138
|
+
expect(userSyncs[2].url).to.contain('source=prebid');
|
|
136
139
|
});
|
|
137
140
|
|
|
138
141
|
it('should set the tcString as query param', () => {
|
|
139
142
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
140
143
|
expect(userSyncs[0].url).to.contain(`iab_string=${gdprConsent.consentString}`);
|
|
141
144
|
expect(userSyncs[1].url).to.contain(`iab_string=${gdprConsent.consentString}`);
|
|
145
|
+
expect(userSyncs[2].url).to.contain(`iab_string=${gdprConsent.consentString}`);
|
|
142
146
|
});
|
|
143
147
|
|
|
144
148
|
it('should return an empty array when pixel is disable', () => {
|
|
@@ -146,82 +150,94 @@ describe('OguryBidAdapter', function () {
|
|
|
146
150
|
expect(spec.getUserSyncs(syncOptions, [], gdprConsent)).to.have.lengthOf(0);
|
|
147
151
|
});
|
|
148
152
|
|
|
149
|
-
it('should return syncs array with
|
|
153
|
+
it('should return syncs array with three elements of type image when consentString is undefined', () => {
|
|
150
154
|
gdprConsent = {
|
|
151
155
|
gdprApplies: true,
|
|
152
156
|
consentString: undefined
|
|
153
157
|
};
|
|
154
158
|
|
|
155
159
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
156
|
-
expect(userSyncs).to.have.lengthOf(
|
|
160
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
157
161
|
expect(userSyncs[0].type).to.equal('image');
|
|
158
162
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
159
163
|
expect(userSyncs[1].type).to.equal('image');
|
|
160
164
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
165
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
166
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
161
167
|
});
|
|
162
168
|
|
|
163
|
-
it('should return syncs array with
|
|
169
|
+
it('should return syncs array with three elements of type image when consentString is null', () => {
|
|
164
170
|
gdprConsent = {
|
|
165
171
|
gdprApplies: true,
|
|
166
172
|
consentString: null
|
|
167
173
|
};
|
|
168
174
|
|
|
169
175
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
170
|
-
expect(userSyncs).to.have.lengthOf(
|
|
176
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
171
177
|
expect(userSyncs[0].type).to.equal('image');
|
|
172
178
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
173
179
|
expect(userSyncs[1].type).to.equal('image');
|
|
174
180
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
181
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
182
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
175
183
|
});
|
|
176
184
|
|
|
177
|
-
it('should return syncs array with
|
|
185
|
+
it('should return syncs array with three elements of type image when gdprConsent is undefined', () => {
|
|
178
186
|
gdprConsent = undefined;
|
|
179
187
|
|
|
180
188
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
181
|
-
expect(userSyncs).to.have.lengthOf(
|
|
189
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
182
190
|
expect(userSyncs[0].type).to.equal('image');
|
|
183
191
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
184
192
|
expect(userSyncs[1].type).to.equal('image');
|
|
185
193
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
194
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
195
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
186
196
|
});
|
|
187
197
|
|
|
188
|
-
it('should return syncs array with
|
|
198
|
+
it('should return syncs array with three elements of type image when gdprConsent is null', () => {
|
|
189
199
|
gdprConsent = null;
|
|
190
200
|
|
|
191
201
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
192
|
-
expect(userSyncs).to.have.lengthOf(
|
|
202
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
193
203
|
expect(userSyncs[0].type).to.equal('image');
|
|
194
204
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
195
205
|
expect(userSyncs[1].type).to.equal('image');
|
|
196
206
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
207
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
208
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
197
209
|
});
|
|
198
210
|
|
|
199
|
-
it('should return syncs array with
|
|
211
|
+
it('should return syncs array with three elements of type image when gdprConsent is null and gdprApplies is false', () => {
|
|
200
212
|
gdprConsent = {
|
|
201
213
|
gdprApplies: false,
|
|
202
214
|
consentString: null
|
|
203
215
|
};
|
|
204
216
|
|
|
205
217
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
206
|
-
expect(userSyncs).to.have.lengthOf(
|
|
218
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
207
219
|
expect(userSyncs[0].type).to.equal('image');
|
|
208
220
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
209
221
|
expect(userSyncs[1].type).to.equal('image');
|
|
210
222
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
223
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
224
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
211
225
|
});
|
|
212
226
|
|
|
213
|
-
it('should return syncs array with
|
|
227
|
+
it('should return syncs array with three elements of type image when gdprConsent is empty string and gdprApplies is false', () => {
|
|
214
228
|
gdprConsent = {
|
|
215
229
|
gdprApplies: false,
|
|
216
230
|
consentString: ''
|
|
217
231
|
};
|
|
218
232
|
|
|
219
233
|
const userSyncs = spec.getUserSyncs(syncOptions, [], gdprConsent);
|
|
220
|
-
expect(userSyncs).to.have.lengthOf(
|
|
234
|
+
expect(userSyncs).to.have.lengthOf(3);
|
|
221
235
|
expect(userSyncs[0].type).to.equal('image');
|
|
222
236
|
expect(userSyncs[0].url).to.equal('https://ms-cookie-sync.presage.io/v1/init-sync/bid-switch?iab_string=&source=prebid')
|
|
223
237
|
expect(userSyncs[1].type).to.equal('image');
|
|
224
238
|
expect(userSyncs[1].url).to.equal('https://ms-cookie-sync.presage.io/ttd/init-sync?iab_string=&source=prebid')
|
|
239
|
+
expect(userSyncs[2].type).to.equal('image');
|
|
240
|
+
expect(userSyncs[2].url).to.equal('https://ms-cookie-sync.presage.io/xandr/init-sync?iab_string=&source=prebid')
|
|
225
241
|
});
|
|
226
242
|
});
|
|
227
243
|
|
|
@@ -279,7 +295,7 @@ describe('OguryBidAdapter', function () {
|
|
|
279
295
|
},
|
|
280
296
|
ext: {
|
|
281
297
|
prebidversion: '$prebid.version$',
|
|
282
|
-
adapterversion: '1.
|
|
298
|
+
adapterversion: '1.3.0'
|
|
283
299
|
},
|
|
284
300
|
device: {
|
|
285
301
|
w: stubbedWidth,
|
|
@@ -659,7 +675,7 @@ describe('OguryBidAdapter', function () {
|
|
|
659
675
|
advertiserDomains: openRtbBidResponse.body.seatbid[0].bid[0].adomain
|
|
660
676
|
},
|
|
661
677
|
nurl: openRtbBidResponse.body.seatbid[0].bid[0].nurl,
|
|
662
|
-
adapterVersion: '1.
|
|
678
|
+
adapterVersion: '1.3.0',
|
|
663
679
|
prebidVersion: '$prebid.version$'
|
|
664
680
|
}, {
|
|
665
681
|
requestId: openRtbBidResponse.body.seatbid[0].bid[1].impid,
|
|
@@ -676,7 +692,7 @@ describe('OguryBidAdapter', function () {
|
|
|
676
692
|
advertiserDomains: openRtbBidResponse.body.seatbid[0].bid[1].adomain
|
|
677
693
|
},
|
|
678
694
|
nurl: openRtbBidResponse.body.seatbid[0].bid[1].nurl,
|
|
679
|
-
adapterVersion: '1.
|
|
695
|
+
adapterVersion: '1.3.0',
|
|
680
696
|
prebidVersion: '$prebid.version$'
|
|
681
697
|
}]
|
|
682
698
|
|
|
@@ -1466,6 +1466,30 @@ describe('S2S Adapter', function () {
|
|
|
1466
1466
|
});
|
|
1467
1467
|
});
|
|
1468
1468
|
|
|
1469
|
+
it('unregistered bidder should alias', function () {
|
|
1470
|
+
const adjustedConfig = utils.deepClone(CONFIG);
|
|
1471
|
+
adjustedConfig.bidders = 'bidderD'
|
|
1472
|
+
config.setConfig({ s2sConfig: adjustedConfig });
|
|
1473
|
+
|
|
1474
|
+
const aliasBidder = {
|
|
1475
|
+
bidder: 'bidderD',
|
|
1476
|
+
params: {
|
|
1477
|
+
unit: '10433394',
|
|
1478
|
+
}
|
|
1479
|
+
};
|
|
1480
|
+
|
|
1481
|
+
$$PREBID_GLOBAL$$.aliasBidder('mockBidder', aliasBidder.bidder);
|
|
1482
|
+
|
|
1483
|
+
const request = utils.deepClone(REQUEST);
|
|
1484
|
+
request.ad_units[0].bids = [aliasBidder];
|
|
1485
|
+
request.s2sConfig = adjustedConfig;
|
|
1486
|
+
|
|
1487
|
+
adapter.callBids(request, BID_REQUESTS, addBidResponse, done, ajax);
|
|
1488
|
+
|
|
1489
|
+
const requestBid = JSON.parse(server.requests[0].requestBody);
|
|
1490
|
+
expect(requestBid.ext.prebid.aliases).to.deep.equal({ bidderD: 'mockBidder' });
|
|
1491
|
+
});
|
|
1492
|
+
|
|
1469
1493
|
it('adds dynamic aliases to request', function () {
|
|
1470
1494
|
config.setConfig({ s2sConfig: CONFIG });
|
|
1471
1495
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {expect} from 'chai';
|
|
2
|
-
import {spec, checkVideoPlacement, _getDomainFromURL} from 'modules/pubmaticBidAdapter.js';
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec, checkVideoPlacement, _getDomainFromURL, assignDealTier } from 'modules/pubmaticBidAdapter.js';
|
|
3
3
|
import * as utils from 'src/utils.js';
|
|
4
|
-
import {config} from 'src/config.js';
|
|
4
|
+
import { config } from 'src/config.js';
|
|
5
5
|
import { createEidsArray } from 'modules/userId/eids.js';
|
|
6
6
|
import { bidderSettings } from 'src/bidderSettings.js';
|
|
7
7
|
const constants = require('src/constants.json');
|
|
@@ -4063,9 +4063,64 @@ describe('PubMatic adapter', function () {
|
|
|
4063
4063
|
expect(data.imp[0]['video']['h']).to.equal(videoBidRequests[0].mediaTypes.video.playerSize[1]);
|
|
4064
4064
|
expect(data.imp[0]['video']['battr']).to.equal(undefined);
|
|
4065
4065
|
});
|
|
4066
|
+
|
|
4067
|
+
describe('Assign Deal Tier (i.e. prebidDealPriority)', function () {
|
|
4068
|
+
let videoSeatBid, request, newBid;
|
|
4069
|
+
// let data = JSON.parse(request.data);
|
|
4070
|
+
beforeEach(function () {
|
|
4071
|
+
videoSeatBid = videoBidResponse.body.seatbid[0].bid[0];
|
|
4072
|
+
// const adpodValidOutstreamBidRequest = validOutstreamBidRequest.bids[0].mediaTypes.video.context = 'adpod';
|
|
4073
|
+
request = spec.buildRequests(bidRequests, validOutstreamBidRequest);
|
|
4074
|
+
newBid = {
|
|
4075
|
+
requestId: '47acc48ad47af5'
|
|
4076
|
+
};
|
|
4077
|
+
videoSeatBid.ext = videoSeatBid.ext || {};
|
|
4078
|
+
videoSeatBid.ext.video = videoSeatBid.ext.video || {};
|
|
4079
|
+
// videoBidRequests[0].mediaTypes.video = videoBidRequests[0].mediaTypes.video || {};
|
|
4080
|
+
});
|
|
4081
|
+
|
|
4082
|
+
it('should not assign video object if deal priority is missing', function () {
|
|
4083
|
+
assignDealTier(newBid, videoSeatBid, request);
|
|
4084
|
+
expect(newBid.video).to.equal(undefined);
|
|
4085
|
+
expect(newBid.video).to.not.exist;
|
|
4086
|
+
});
|
|
4087
|
+
|
|
4088
|
+
it('should not assign video object if context is not a adpod', function () {
|
|
4089
|
+
videoSeatBid.ext.prebiddealpriority = 5;
|
|
4090
|
+
assignDealTier(newBid, videoSeatBid, request);
|
|
4091
|
+
expect(newBid.video).to.equal(undefined);
|
|
4092
|
+
expect(newBid.video).to.not.exist;
|
|
4093
|
+
});
|
|
4094
|
+
|
|
4095
|
+
describe('when video deal tier object is present', function () {
|
|
4096
|
+
beforeEach(function () {
|
|
4097
|
+
videoSeatBid.ext.prebiddealpriority = 5;
|
|
4098
|
+
request.bidderRequest.bids[0].mediaTypes.video = {
|
|
4099
|
+
...request.bidderRequest.bids[0].mediaTypes.video,
|
|
4100
|
+
context: 'adpod',
|
|
4101
|
+
maxduration: 50
|
|
4102
|
+
};
|
|
4103
|
+
});
|
|
4104
|
+
|
|
4105
|
+
it('should set video deal tier object, when maxduration is present in ext', function () {
|
|
4106
|
+
assignDealTier(newBid, videoSeatBid, request);
|
|
4107
|
+
expect(newBid.video.durationSeconds).to.equal(50);
|
|
4108
|
+
expect(newBid.video.context).to.equal('adpod');
|
|
4109
|
+
expect(newBid.video.dealTier).to.equal(5);
|
|
4110
|
+
});
|
|
4111
|
+
|
|
4112
|
+
it('should set video deal tier object, when duration is present in ext', function () {
|
|
4113
|
+
videoSeatBid.ext.video.duration = 20;
|
|
4114
|
+
assignDealTier(newBid, videoSeatBid, request);
|
|
4115
|
+
expect(newBid.video.durationSeconds).to.equal(20);
|
|
4116
|
+
expect(newBid.video.context).to.equal('adpod');
|
|
4117
|
+
expect(newBid.video.dealTier).to.equal(5);
|
|
4118
|
+
});
|
|
4119
|
+
});
|
|
4120
|
+
});
|
|
4066
4121
|
});
|
|
4067
4122
|
|
|
4068
|
-
describe('Marketplace params', function() {
|
|
4123
|
+
describe('Marketplace params', function () {
|
|
4069
4124
|
let sandbox, utilsMock, newBidRequests, newBidResponses;
|
|
4070
4125
|
beforeEach(() => {
|
|
4071
4126
|
utilsMock = sinon.mock(utils);
|
|
@@ -4082,7 +4137,7 @@ describe('PubMatic adapter', function () {
|
|
|
4082
4137
|
sandbox.restore();
|
|
4083
4138
|
})
|
|
4084
4139
|
|
|
4085
|
-
it('Should add bidder code as groupm for marketplace groupm response', function () {
|
|
4140
|
+
it('Should add bidder code as groupm for marketplace groupm response ', function () {
|
|
4086
4141
|
let request = spec.buildRequests(newBidRequests, {
|
|
4087
4142
|
auctionId: 'new-auction-id'
|
|
4088
4143
|
});
|