prebid.js 8.3.0 → 8.5.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/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/a1MediaRtdProvider.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/admixerIdSystem.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtelligentIdSystem.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/axonixBidAdapter.js +1 -1
- package/dist/beachfrontBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/britepoolIdSystem.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementGpp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/criteoIdSystem.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/czechAdIdSystem.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/deepintentDpesIdSystem.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dmdIdSystem.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/fabrickIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/geolocationRtdProvider.js +1 -0
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/identityLinkIdSystem.js +1 -1
- package/dist/idxIdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/imuIdSystem.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/invibesBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justIdSystem.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kinessoIdSystem.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.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/mediasquareBidAdapter.js +1 -1
- package/dist/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mwOpenLinkIdSystem.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/netIdSystem.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +185 -182
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ozoneBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pulsepointBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/silverpushBidAdapter.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/ssmasBidAdapter.js +1 -0
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/tncIdSystem.js +1 -1
- package/dist/topicsFpdModule.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/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unifiedIdSystem.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/utiqSystem.js +1 -1
- package/dist/verizonMediaIdSystem.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/voxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeotapIdPlusIdSystem.js +1 -1
- package/integrationExamples/gpt/adUnitFloors.html +0 -1
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -2
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
- package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +1 -1
- package/integrationExamples/videoModule/videojs/eventListeners.html +1 -1
- package/integrationExamples/videoModule/videojs/eventsUI.html +1 -1
- package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/videojs/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/videojs/playlist.html +1 -1
- package/modules/.submodules.json +1 -0
- package/modules/33acrossBidAdapter.js +24 -14
- package/modules/33acrossIdSystem.js +24 -4
- package/modules/a1MediaRtdProvider.js +92 -0
- package/modules/a1MediaRtdProvider.md +46 -0
- package/modules/adagioBidAdapter.js +0 -1
- package/modules/adfBidAdapter.js +4 -1
- package/modules/adkernelAdnBidAdapter.js +1 -1
- package/modules/adkernelBidAdapter.js +10 -3
- package/modules/admanBidAdapter.js +4 -0
- package/modules/admixerIdSystem.js +6 -0
- package/modules/adnuntiusBidAdapter.js +5 -13
- package/modules/adqueryIdSystem.js +6 -0
- package/modules/adtelligentIdSystem.js +6 -0
- package/modules/adyoulikeBidAdapter.js +6 -3
- package/modules/amxIdSystem.js +6 -0
- package/modules/beachfrontBidAdapter.js +32 -6
- package/modules/brandmetricsRtdProvider.js +36 -2
- package/modules/brandmetricsRtdProvider.md +17 -2
- package/modules/britepoolIdSystem.js +6 -0
- package/modules/connectIdSystem.js +6 -0
- package/modules/consentManagementGpp.js +10 -1
- package/modules/consumableBidAdapter.js +9 -1
- package/modules/criteoIdSystem.js +6 -0
- package/modules/czechAdIdSystem.js +6 -0
- package/modules/dacIdSystem.js +6 -0
- package/modules/deepintentDpesIdSystem.js +7 -2
- package/modules/dmdIdSystem.js +6 -0
- package/modules/euidIdSystem.js +9 -0
- package/modules/fabrickIdSystem.js +6 -0
- package/modules/ftrackIdSystem.js +16 -0
- package/modules/gdprEnforcement.js +27 -22
- package/modules/geolocationRtdProvider.js +65 -0
- package/modules/gravitoIdSystem.js +6 -0
- package/modules/greenbidsRtdProvider.js +1 -1
- package/modules/gridBidAdapter.js +19 -0
- package/modules/growthCodeIdSystem.js +20 -1
- package/modules/hadronIdSystem.js +6 -0
- package/modules/id5IdSystem.js +34 -8
- package/modules/identityLinkIdSystem.js +6 -0
- package/modules/idxIdSystem.js +6 -0
- package/modules/imdsBidAdapter.js +38 -14
- package/modules/imuIdSystem.js +10 -0
- package/modules/intentIqIdSystem.js +6 -0
- package/modules/invibesBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +56 -2
- package/modules/justIdSystem.js +6 -0
- package/modules/kargoBidAdapter.js +4 -0
- package/modules/kinessoIdSystem.js +7 -2
- package/modules/liveIntentIdSystem.js +53 -0
- package/modules/lotamePanoramaIdSystem.js +6 -0
- package/modules/merkleIdSystem.js +24 -0
- package/modules/minutemediaBidAdapter.js +17 -2
- package/modules/mwOpenLinkIdSystem.js +6 -0
- package/modules/naveggIdSystem.js +6 -0
- package/modules/netIdSystem.js +6 -0
- package/modules/novatiqIdSystem.js +12 -0
- package/modules/oguryBidAdapter.js +29 -16
- package/modules/oneKeyIdSystem.js +26 -0
- package/modules/ozoneBidAdapter.js +65 -18
- package/modules/ozoneBidAdapter.md +3 -1
- package/modules/pairIdSystem.js +6 -0
- package/modules/parrableIdSystem.js +38 -2
- package/modules/publinkIdSystem.js +7 -1
- package/modules/pubmaticBidAdapter.js +16 -1
- package/modules/pulsepointBidAdapter.js +63 -424
- package/modules/pulsepointBidAdapter.md +39 -45
- package/modules/quantcastIdSystem.js +6 -0
- package/modules/rubiconBidAdapter.js +9 -0
- package/modules/sharedIdSystem.js +7 -1
- package/modules/silverpushBidAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +5 -1
- package/modules/ssmasBidAdapter.js +126 -0
- package/modules/ssmasBidAdapter.md +35 -0
- package/modules/sspBCBidAdapter.js +36 -13
- package/modules/stroeerCoreBidAdapter.js +2 -3
- package/modules/tapadIdSystem.js +6 -0
- package/modules/teadsBidAdapter.js +2 -0
- package/modules/tncIdSystem.js +6 -0
- package/modules/topicsFpdModule.js +4 -1
- package/modules/topicsFpdModule.md +4 -0
- package/modules/tripleliftBidAdapter.js +5 -0
- package/modules/uid2IdSystem.js +14 -0
- package/modules/unifiedIdSystem.js +11 -0
- package/modules/userId/eids.js +6 -445
- package/modules/userId/index.js +38 -26
- package/modules/utiqSystem.js +9 -0
- package/modules/verizonMediaIdSystem.js +6 -0
- package/modules/vidazooBidAdapter.js +5 -7
- package/modules/voxBidAdapter.js +16 -5
- package/modules/vrtcalBidAdapter.js +10 -6
- package/modules/yahoosspBidAdapter.js +38 -33
- package/modules/yahoosspBidAdapter.md +96 -95
- package/modules/yandexBidAdapter.js +12 -15
- package/modules/zeotapIdPlusIdSystem.js +6 -0
- package/package.json +1 -1
- package/src/activities/redactor.js +1 -1
- package/src/adapters/bidderFactory.js +15 -6
- package/src/adloader.js +2 -1
- package/src/auction.js +24 -2
- package/src/constants.json +3 -1
- package/src/fpd/sua.js +8 -2
- package/test/spec/auctionmanager_spec.js +29 -1
- package/test/spec/fpd/enrichment_spec.js +7 -1
- package/test/spec/fpd/sua_spec.js +12 -0
- package/test/spec/modules/33acrossBidAdapter_spec.js +188 -35
- package/test/spec/modules/33acrossIdSystem_spec.js +122 -27
- package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/adfBidAdapter_spec.js +47 -0
- package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
- package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
- package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
- package/test/spec/modules/consentManagementGpp_spec.js +16 -0
- package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
- package/test/spec/modules/gdprEnforcement_spec.js +43 -2
- package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
- package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
- package/test/spec/modules/gridBidAdapter_spec.js +42 -0
- package/test/spec/modules/id5IdSystem_spec.js +18 -0
- package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
- package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
- package/test/spec/modules/ixBidAdapter_spec.js +95 -5
- package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
- package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
- package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
- package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
- package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
- package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
- package/test/spec/modules/priceFloors_spec.js +14 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +125 -373
- package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
- package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
- package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
- package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
- package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +8 -5
- package/test/spec/modules/teadsBidAdapter_spec.js +70 -21
- package/test/spec/modules/topicsFpdModule_spec.js +10 -4
- package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
- package/test/spec/modules/userId_spec.js +116 -7
- package/test/spec/modules/vidazooBidAdapter_spec.js +0 -5
- package/test/spec/modules/voxBidAdapter_spec.js +93 -0
- package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
- package/test/spec/modules/xeBidAdapter_spec.js +366 -368
- package/test/spec/modules/yahoosspBidAdapter_spec.js +405 -330
- package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
- package/test/spec/unit/core/bidderFactory_spec.js +61 -14
- package/integrationExamples/gpt/inskin_example.html +0 -100
- package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
|
@@ -3,7 +3,6 @@ import { config } from 'src/config.js';
|
|
|
3
3
|
import { BANNER, VIDEO } from 'src/mediaTypes.js';
|
|
4
4
|
import { spec } from 'modules/yahoosspBidAdapter.js';
|
|
5
5
|
import {createEidsArray} from '../../../modules/userId/eids';
|
|
6
|
-
import {deepClone} from '../../../src/utils';
|
|
7
6
|
|
|
8
7
|
const DEFAULT_BID_ID = '84ab500420319d';
|
|
9
8
|
const DEFAULT_BID_DCN = '2093845709823475';
|
|
@@ -13,18 +12,20 @@ const DEFAULT_AD_UNIT_CODE = '/19968336/header-bid-tag-1';
|
|
|
13
12
|
const DEFAULT_AD_UNIT_TYPE = 'banner';
|
|
14
13
|
const DEFAULT_PARAMS_BID_OVERRIDE = {};
|
|
15
14
|
const DEFAULT_VIDEO_CONTEXT = 'instream';
|
|
16
|
-
const ADAPTER_VERSION = '1.0
|
|
15
|
+
const ADAPTER_VERSION = '1.1.0';
|
|
16
|
+
const DEFAULT_BIDDER_CODE = 'yahooAds';
|
|
17
|
+
const VALID_BIDDER_CODES = [DEFAULT_BIDDER_CODE, 'yahoossp', 'yahooAdvertising'];
|
|
17
18
|
const PREBID_VERSION = '$prebid.version$';
|
|
18
19
|
const INTEGRATION_METHOD = 'prebid.js';
|
|
19
20
|
|
|
20
21
|
// Utility functions
|
|
21
|
-
const generateBidRequest = ({bidId, pos, adUnitCode, adUnitType, bidOverrideObject, videoContext, pubIdMode, ortb2}) => {
|
|
22
|
+
const generateBidRequest = ({bidderCode, bidId, pos, adUnitCode, adUnitType, bidOverrideObject, videoContext, pubIdMode, ortb2}) => {
|
|
22
23
|
const bidRequest = {
|
|
23
24
|
adUnitCode,
|
|
24
25
|
auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
|
|
25
26
|
bidId,
|
|
26
27
|
bidderRequestsCount: 1,
|
|
27
|
-
bidder:
|
|
28
|
+
bidder: bidderCode,
|
|
28
29
|
bidderRequestId: '7101db09af0db2',
|
|
29
30
|
bidderWinsCount: 0,
|
|
30
31
|
mediaTypes: {},
|
|
@@ -79,7 +80,7 @@ let generateBidderRequest = (bidRequestArray, adUnitCode, ortb2 = {}) => {
|
|
|
79
80
|
adUnitCode: adUnitCode || 'default-adUnitCode',
|
|
80
81
|
auctionId: 'd4c83a3b-18e4-4208-b98b-63848449c7aa',
|
|
81
82
|
auctionStart: new Date().getTime(),
|
|
82
|
-
bidderCode:
|
|
83
|
+
bidderCode: bidRequestArray[0].bidder,
|
|
83
84
|
bidderRequestId: '112f1c7c5d399a',
|
|
84
85
|
bids: bidRequestArray,
|
|
85
86
|
refererInfo: {
|
|
@@ -107,8 +108,9 @@ let generateBidderRequest = (bidRequestArray, adUnitCode, ortb2 = {}) => {
|
|
|
107
108
|
return bidderRequest;
|
|
108
109
|
};
|
|
109
110
|
|
|
110
|
-
const generateBuildRequestMock = ({bidId, pos, adUnitCode, adUnitType, bidOverrideObject, videoContext, pubIdMode, ortb2}) => {
|
|
111
|
+
const generateBuildRequestMock = ({bidderCode, bidId, pos, adUnitCode, adUnitType, bidOverrideObject, videoContext, pubIdMode, ortb2}) => {
|
|
111
112
|
const bidRequestConfig = {
|
|
113
|
+
bidderCode: bidderCode || DEFAULT_BIDDER_CODE,
|
|
112
114
|
bidId: bidId || DEFAULT_BID_ID,
|
|
113
115
|
pos: pos || DEFAULT_BID_POS,
|
|
114
116
|
adUnitCode: adUnitCode || DEFAULT_AD_UNIT_CODE,
|
|
@@ -174,21 +176,28 @@ const generateResponseMock = (admPayloadType, vastVersion, videoContext) => {
|
|
|
174
176
|
seatbid: [{ bid: [ bidResponse ], seat: 13107 }]
|
|
175
177
|
}
|
|
176
178
|
};
|
|
177
|
-
const { validBidRequests, bidderRequest } = generateBuildRequestMock({adUnitType: admPayloadType, videoContext
|
|
179
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({adUnitType: admPayloadType, videoContext});
|
|
178
180
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
179
|
-
|
|
180
181
|
return {serverResponse, data, bidderRequest};
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
// Unit tests
|
|
184
|
-
describe('
|
|
185
|
+
describe('Yahoo Advertising Bid Adapter:', () => {
|
|
186
|
+
beforeEach(() => {
|
|
187
|
+
config.resetConfig();
|
|
188
|
+
});
|
|
189
|
+
|
|
185
190
|
describe('Validate basic properties', () => {
|
|
186
191
|
it('should define the correct bidder code', () => {
|
|
187
|
-
expect(spec.code).to.equal('
|
|
192
|
+
expect(spec.code).to.equal('yahooAds');
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
it('should define the correct bidder aliases', () => {
|
|
196
|
+
expect(spec.aliases).to.deep.equal(['yahoossp', 'yahooAdvertising']);
|
|
188
197
|
});
|
|
189
198
|
|
|
190
199
|
it('should define the correct vendor ID', () => {
|
|
191
|
-
expect(spec.gvlid).to.equal(25)
|
|
200
|
+
expect(spec.gvlid).to.equal(25);
|
|
192
201
|
});
|
|
193
202
|
});
|
|
194
203
|
|
|
@@ -271,33 +280,62 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
271
280
|
});
|
|
272
281
|
|
|
273
282
|
describe('user consent parameters are updated', () => {
|
|
274
|
-
|
|
283
|
+
const syncOptions = {
|
|
275
284
|
iframeEnabled: true,
|
|
276
285
|
pixelEnabled: true
|
|
277
286
|
};
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
287
|
+
describe('when all consent data is set', () => {
|
|
288
|
+
const pixelObjects = spec.getUserSyncs(
|
|
289
|
+
syncOptions,
|
|
290
|
+
SERVER_RESPONSES,
|
|
291
|
+
bidderRequest.gdprConsent,
|
|
292
|
+
bidderRequest.uspConsent,
|
|
293
|
+
bidderRequest.gppConsent
|
|
294
|
+
);
|
|
295
|
+
pixelObjects.forEach(pixelObject => {
|
|
296
|
+
let url = pixelObject.url;
|
|
297
|
+
let urlParams = new URL(url).searchParams;
|
|
298
|
+
const expectedParams = {
|
|
299
|
+
'baz': 'true',
|
|
300
|
+
'gdpr_consent': bidderRequest.gdprConsent.consentString,
|
|
301
|
+
'gdpr': bidderRequest.gdprConsent.gdprApplies ? '1' : '0',
|
|
302
|
+
'us_privacy': bidderRequest.uspConsent,
|
|
303
|
+
'gpp': bidderRequest.gppConsent.gppString,
|
|
304
|
+
'gpp_sid': Array.isArray(bidderRequest.gppConsent.applicableSections) ? bidderRequest.gppConsent.applicableSections.join(',') : ''
|
|
305
|
+
}
|
|
306
|
+
for (const [key, value] of Object.entries(expectedParams)) {
|
|
307
|
+
it(`Updates the ${key} consent param in user sync URL ${url}`, () => {
|
|
308
|
+
expect(urlParams.get(key)).to.equal(value);
|
|
309
|
+
});
|
|
310
|
+
};
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
describe('when no consent data is set', () => {
|
|
315
|
+
const pixelObjects = spec.getUserSyncs(
|
|
316
|
+
syncOptions,
|
|
317
|
+
SERVER_RESPONSES,
|
|
318
|
+
undefined,
|
|
319
|
+
undefined,
|
|
320
|
+
undefined
|
|
321
|
+
);
|
|
322
|
+
pixelObjects.forEach(pixelObject => {
|
|
323
|
+
let url = pixelObject.url;
|
|
324
|
+
let urlParams = new URL(url).searchParams;
|
|
325
|
+
const expectedParams = {
|
|
326
|
+
'baz': 'true',
|
|
327
|
+
'gdpr_consent': '',
|
|
328
|
+
'gdpr': '0',
|
|
329
|
+
'us_privacy': '',
|
|
330
|
+
'gpp': '',
|
|
331
|
+
'gpp_sid': ''
|
|
332
|
+
}
|
|
333
|
+
for (const [key, value] of Object.entries(expectedParams)) {
|
|
334
|
+
it(`Updates the ${key} consent param in user sync URL ${url}`, () => {
|
|
335
|
+
expect(urlParams.get(key)).to.equal(value);
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
});
|
|
301
339
|
});
|
|
302
340
|
});
|
|
303
341
|
});
|
|
@@ -647,9 +685,9 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
647
685
|
};
|
|
648
686
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({ortb2});
|
|
649
687
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
650
|
-
|
|
651
|
-
expect(
|
|
652
|
-
|
|
688
|
+
const user = data.user;
|
|
689
|
+
expect(user[param]).to.be.a('object');
|
|
690
|
+
expect(user[param]).to.be.deep.include({[param]: {a: '123', b: '456'}});
|
|
653
691
|
});
|
|
654
692
|
});
|
|
655
693
|
|
|
@@ -669,12 +707,14 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
669
707
|
};
|
|
670
708
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({ortb2});
|
|
671
709
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
expect(
|
|
675
|
-
expect(
|
|
676
|
-
expect(
|
|
677
|
-
expect(
|
|
710
|
+
const user = data.user;
|
|
711
|
+
const site = data.site;
|
|
712
|
+
expect(user.data[0][param]).to.exist;
|
|
713
|
+
expect(user.data[0][param]).to.be.a('string');
|
|
714
|
+
expect(user.data[0][param]).to.be.equal(ortb2.user.data[0][param]);
|
|
715
|
+
expect(site.content.data[0][param]).to.exist;
|
|
716
|
+
expect(site.content.data[0][param]).to.be.a('string');
|
|
717
|
+
expect(site.content.data[0][param]).to.be.equal(ortb2.site.content.data[0][param]);
|
|
678
718
|
});
|
|
679
719
|
});
|
|
680
720
|
|
|
@@ -688,9 +728,10 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
688
728
|
};
|
|
689
729
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({ortb2});
|
|
690
730
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
691
|
-
|
|
692
|
-
expect(
|
|
693
|
-
expect(
|
|
731
|
+
const user = data.user;
|
|
732
|
+
expect(user.data[0][param]).to.exist;
|
|
733
|
+
expect(user.data[0][param]).to.be.a('array');
|
|
734
|
+
expect(user.data[0][param]).to.be.equal(ortb2.user.data[0][param]);
|
|
694
735
|
});
|
|
695
736
|
});
|
|
696
737
|
|
|
@@ -704,10 +745,10 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
704
745
|
};
|
|
705
746
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({ortb2});
|
|
706
747
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
707
|
-
|
|
708
|
-
expect(
|
|
709
|
-
expect(
|
|
710
|
-
|
|
748
|
+
const user = data.user;
|
|
749
|
+
expect(user.data[0][param]).to.exist;
|
|
750
|
+
expect(user.data[0][param]).to.be.a('object');
|
|
751
|
+
expect(user.data[0][param]).to.be.equal(ortb2.user.data[0][param]);
|
|
711
752
|
});
|
|
712
753
|
});
|
|
713
754
|
|
|
@@ -815,26 +856,33 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
815
856
|
});
|
|
816
857
|
|
|
817
858
|
describe('Endpoint & Impression Request Mode:', () => {
|
|
818
|
-
|
|
819
|
-
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
820
|
-
const testOverrideEndpoint = 'http://foo.bar.baz.com/bidderRequest';
|
|
859
|
+
afterEach(() => {
|
|
821
860
|
config.setConfig({
|
|
822
|
-
|
|
823
|
-
|
|
861
|
+
yahooAds: {
|
|
862
|
+
singleRequestMode: undefined
|
|
824
863
|
}
|
|
825
864
|
});
|
|
826
|
-
const response = spec.buildRequests(validBidRequests, bidderRequest)[0];
|
|
827
|
-
expect(response).to.deep.include(
|
|
828
|
-
{
|
|
829
|
-
method: 'POST',
|
|
830
|
-
url: testOverrideEndpoint
|
|
831
|
-
});
|
|
832
865
|
});
|
|
833
866
|
|
|
834
|
-
|
|
835
|
-
config
|
|
836
|
-
|
|
867
|
+
VALID_BIDDER_CODES.forEach(bidderCode => {
|
|
868
|
+
it(`should route request to config override endpoint for ${bidderCode} override config`, () => {
|
|
869
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode});
|
|
870
|
+
const testOverrideEndpoint = 'http://foo.bar.baz.com/bidderRequest';
|
|
871
|
+
const cfg = {};
|
|
872
|
+
cfg[bidderCode] = {
|
|
873
|
+
endpoint: testOverrideEndpoint
|
|
874
|
+
};
|
|
875
|
+
config.setConfig(cfg);
|
|
876
|
+
const response = spec.buildRequests(validBidRequests, bidderRequest)[0];
|
|
877
|
+
expect(response).to.deep.include(
|
|
878
|
+
{
|
|
879
|
+
method: 'POST',
|
|
880
|
+
url: testOverrideEndpoint
|
|
881
|
+
});
|
|
837
882
|
});
|
|
883
|
+
});
|
|
884
|
+
|
|
885
|
+
it('should route request to /bidRequest endpoint when dcn & pos present', () => {
|
|
838
886
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
839
887
|
const response = spec.buildRequests(validBidRequests, bidderRequest);
|
|
840
888
|
expect(response[0]).to.deep.include({
|
|
@@ -862,15 +910,15 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
862
910
|
bidderRequest.bids = validBidRequests;
|
|
863
911
|
|
|
864
912
|
config.setConfig({
|
|
865
|
-
|
|
913
|
+
yahooAds: {
|
|
866
914
|
singleRequestMode: true
|
|
867
915
|
}
|
|
868
916
|
});
|
|
869
917
|
|
|
870
|
-
const
|
|
871
|
-
expect(
|
|
918
|
+
const responsePayload = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
919
|
+
expect(responsePayload.imp).to.be.an('array').with.lengthOf(2);
|
|
872
920
|
|
|
873
|
-
expect(
|
|
921
|
+
expect(responsePayload.imp[0]).to.deep.include({
|
|
874
922
|
id: DEFAULT_BID_ID,
|
|
875
923
|
ext: {
|
|
876
924
|
pos: DEFAULT_BID_POS,
|
|
@@ -878,7 +926,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
878
926
|
}
|
|
879
927
|
});
|
|
880
928
|
|
|
881
|
-
expect(
|
|
929
|
+
expect(responsePayload.imp[1]).to.deep.include({
|
|
882
930
|
id: BID_ID_2,
|
|
883
931
|
ext: {
|
|
884
932
|
pos: BID_POS_2,
|
|
@@ -896,8 +944,9 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
896
944
|
|
|
897
945
|
it('buildRequests(): should return an array with the correct amount of request objects', () => {
|
|
898
946
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
899
|
-
const
|
|
900
|
-
expect(
|
|
947
|
+
const reqs = spec.buildRequests(validBidRequests, bidderRequest);
|
|
948
|
+
expect(reqs).to.be.an('array').to.have.lengthOf(1);
|
|
949
|
+
expect(reqs[0]).to.be.an('object').that.has.keys('method', 'url', 'data', 'options', 'bidderRequest');
|
|
901
950
|
});
|
|
902
951
|
});
|
|
903
952
|
|
|
@@ -905,7 +954,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
905
954
|
it('should return request objects with the relevant custom headers and content type declaration', () => {
|
|
906
955
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
907
956
|
bidderRequest.gdprConsent.gdprApplies = false;
|
|
908
|
-
const options = spec.buildRequests(validBidRequests, bidderRequest).options;
|
|
957
|
+
const options = spec.buildRequests(validBidRequests, bidderRequest)[0].options;
|
|
909
958
|
expect(options).to.deep.equal(
|
|
910
959
|
{
|
|
911
960
|
contentType: 'application/json',
|
|
@@ -920,22 +969,8 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
920
969
|
describe('User data', () => {
|
|
921
970
|
it('should set the allowed sources user eids', () => {
|
|
922
971
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
923
|
-
validBidRequests[0].userIdAsEids =
|
|
924
|
-
|
|
925
|
-
adtelligentId: 'adtelligentId_FROM_USER_ID_MODULE',
|
|
926
|
-
amxId: 'amxId_FROM_USER_ID_MODULE',
|
|
927
|
-
britepoolid: 'britepoolid_FROM_USER_ID_MODULE',
|
|
928
|
-
deepintentId: 'deepintentId_FROM_USER_ID_MODULE',
|
|
929
|
-
publinkId: 'publinkId_FROM_USER_ID_MODULE',
|
|
930
|
-
intentIqId: 'intentIqId_FROM_USER_ID_MODULE',
|
|
931
|
-
idl_env: 'idl_env_FROM_USER_ID_MODULE',
|
|
932
|
-
imuid: 'imuid_FROM_USER_ID_MODULE',
|
|
933
|
-
criteoId: 'criteoId_FROM_USER_ID_MODULE',
|
|
934
|
-
fabrickId: 'fabrickId_FROM_USER_ID_MODULE',
|
|
935
|
-
});
|
|
936
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
937
|
-
|
|
938
|
-
expect(data.user.ext.eids).to.deep.equal([
|
|
972
|
+
validBidRequests[0].userIdAsEids = [
|
|
973
|
+
{source: 'yahoo.com', uids: [{id: 'connectId_FROM_USER_ID_MODULE', atype: 3}]},
|
|
939
974
|
{source: 'admixer.net', uids: [{id: 'admixerId_FROM_USER_ID_MODULE', atype: 3}]},
|
|
940
975
|
{source: 'adtelligent.com', uids: [{id: 'adtelligentId_FROM_USER_ID_MODULE', atype: 3}]},
|
|
941
976
|
{source: 'amxdt.net', uids: [{id: 'amxId_FROM_USER_ID_MODULE', atype: 1}]},
|
|
@@ -947,7 +982,10 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
947
982
|
{source: 'intimatemerger.com', uids: [{id: 'imuid_FROM_USER_ID_MODULE', atype: 1}]},
|
|
948
983
|
{source: 'criteo.com', uids: [{id: 'criteoId_FROM_USER_ID_MODULE', atype: 1}]},
|
|
949
984
|
{source: 'neustar.biz', uids: [{id: 'fabrickId_FROM_USER_ID_MODULE', atype: 1}]}
|
|
950
|
-
]
|
|
985
|
+
];
|
|
986
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
987
|
+
|
|
988
|
+
expect(data.user.ext.eids).to.deep.equal(validBidRequests[0].userIdAsEids);
|
|
951
989
|
});
|
|
952
990
|
|
|
953
991
|
it('should not set not allowed user eids sources', () => {
|
|
@@ -955,7 +993,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
955
993
|
validBidRequests[0].userIdAsEids = createEidsArray({
|
|
956
994
|
justId: 'justId_FROM_USER_ID_MODULE'
|
|
957
995
|
});
|
|
958
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
996
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
959
997
|
|
|
960
998
|
expect(data.user.ext.eids).to.deep.equal([]);
|
|
961
999
|
});
|
|
@@ -964,7 +1002,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
964
1002
|
describe('Request Payload oRTB bid validation:', () => {
|
|
965
1003
|
it('should generate a valid openRTB bid-request object in the data field', () => {
|
|
966
1004
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
967
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1005
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
968
1006
|
expect(data.site).to.deep.equal({
|
|
969
1007
|
id: bidderRequest.bids[0].params.dcn,
|
|
970
1008
|
page: bidderRequest.refererInfo.page
|
|
@@ -1013,7 +1051,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1013
1051
|
it('should generate a valid openRTB imp.ext object in the bid-request', () => {
|
|
1014
1052
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
1015
1053
|
const bid = validBidRequests[0];
|
|
1016
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1054
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1017
1055
|
expect(data.imp[0].ext).to.deep.equal({
|
|
1018
1056
|
pos: bid.params.pos,
|
|
1019
1057
|
dfp_ad_unit_code: DEFAULT_AD_UNIT_CODE
|
|
@@ -1023,7 +1061,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1023
1061
|
it('should use siteId value as site.id in the outbound bid-request when using "pubId" integration mode', () => {
|
|
1024
1062
|
let { validBidRequests, bidderRequest } = generateBuildRequestMock({pubIdMode: true});
|
|
1025
1063
|
validBidRequests[0].params.siteId = '1234567';
|
|
1026
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1064
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1027
1065
|
expect(data.site.id).to.equal('1234567');
|
|
1028
1066
|
});
|
|
1029
1067
|
|
|
@@ -1039,7 +1077,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1039
1077
|
}
|
|
1040
1078
|
}
|
|
1041
1079
|
let { validBidRequests, bidderRequest } = generateBuildRequestMock({ortb2});
|
|
1042
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1080
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1043
1081
|
expect(data.site.publisher).to.deep.equal({
|
|
1044
1082
|
ext: {
|
|
1045
1083
|
publisherblob: 'pblob',
|
|
@@ -1060,7 +1098,7 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1060
1098
|
}
|
|
1061
1099
|
}
|
|
1062
1100
|
let { validBidRequests, bidderRequest } = generateBuildRequestMock({pubIdMode: true, ortb2});
|
|
1063
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1101
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1064
1102
|
expect(data.site.publisher).to.deep.equal({
|
|
1065
1103
|
id: DEFAULT_PUBID,
|
|
1066
1104
|
ext: {
|
|
@@ -1073,17 +1111,13 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1073
1111
|
it('should use placementId value as imp.tagid in the outbound bid-request when using "pubId" integration mode', () => {
|
|
1074
1112
|
let { validBidRequests, bidderRequest } = generateBuildRequestMock({pubIdMode: true});
|
|
1075
1113
|
validBidRequests[0].params.placementId = 'header-300x250';
|
|
1076
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest).data;
|
|
1114
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1077
1115
|
expect(data.imp[0].tagid).to.deep.equal('header-300x250');
|
|
1078
1116
|
});
|
|
1079
1117
|
});
|
|
1080
1118
|
|
|
1081
1119
|
describe('Request Payload oRTB bid.imp validation:', () => {
|
|
1082
|
-
|
|
1083
|
-
it('should generate a valid "Banner" imp object', () => {
|
|
1084
|
-
config.setConfig({
|
|
1085
|
-
yahoossp: {}
|
|
1086
|
-
});
|
|
1120
|
+
it('should generate a valid "Banner" imp object when mode config override is undefined', () => {
|
|
1087
1121
|
const { validBidRequests, bidderRequest } = generateBuildRequestMock({});
|
|
1088
1122
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1089
1123
|
expect(data.imp[0].video).to.not.exist;
|
|
@@ -1093,74 +1127,82 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1093
1127
|
});
|
|
1094
1128
|
});
|
|
1095
1129
|
|
|
1096
|
-
// Validate Banner imp when
|
|
1097
|
-
|
|
1098
|
-
config
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1130
|
+
// Validate Banner imp when config value for mode="banner"
|
|
1131
|
+
VALID_BIDDER_CODES.forEach(bidderCode => {
|
|
1132
|
+
it(`should generate a valid "Banner" imp object for ${bidderCode} config override`, () => {
|
|
1133
|
+
const cfg = {};
|
|
1134
|
+
cfg[bidderCode] = {
|
|
1135
|
+
mode: BANNER
|
|
1136
|
+
};
|
|
1137
|
+
config.setConfig(cfg);
|
|
1138
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode});
|
|
1139
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1140
|
+
expect(data.imp[0].video).to.not.exist;
|
|
1141
|
+
expect(data.imp[0].banner).to.deep.equal({
|
|
1142
|
+
mimes: ['text/html', 'text/javascript', 'application/javascript', 'image/jpg'],
|
|
1143
|
+
format: [{w: 300, h: 250}, {w: 300, h: 600}]
|
|
1144
|
+
});
|
|
1107
1145
|
});
|
|
1108
|
-
});
|
|
1109
1146
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1147
|
+
// Validate Video imp
|
|
1148
|
+
it(`should generate a valid "Video" only imp object for ${bidderCode} config override`, () => {
|
|
1149
|
+
const cfg = {};
|
|
1150
|
+
cfg[bidderCode] = {
|
|
1151
|
+
mode: VIDEO
|
|
1152
|
+
};
|
|
1153
|
+
config.setConfig(cfg);
|
|
1154
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode, adUnitType: 'video'});
|
|
1155
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1156
|
+
expect(data.imp[0].banner).to.not.exist;
|
|
1157
|
+
expect(data.imp[0].video).to.deep.equal({
|
|
1158
|
+
mimes: ['video/mp4', 'application/javascript'],
|
|
1159
|
+
w: 300,
|
|
1160
|
+
h: 250,
|
|
1161
|
+
api: [2],
|
|
1162
|
+
protocols: [2, 5],
|
|
1163
|
+
startdelay: 0,
|
|
1164
|
+
linearity: 1,
|
|
1165
|
+
maxbitrate: undefined,
|
|
1166
|
+
maxduration: undefined,
|
|
1167
|
+
minduration: undefined,
|
|
1168
|
+
delivery: undefined,
|
|
1169
|
+
pos: undefined,
|
|
1170
|
+
playbackmethod: undefined,
|
|
1171
|
+
rewarded: undefined,
|
|
1172
|
+
placement: undefined
|
|
1173
|
+
});
|
|
1134
1174
|
});
|
|
1135
|
-
});
|
|
1136
1175
|
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1176
|
+
// Validate multi-format Video+banner imp
|
|
1177
|
+
it(`should generate a valid multi-format "Video + Banner" imp object for ${bidderCode} config override`, () => {
|
|
1178
|
+
const cfg = {};
|
|
1179
|
+
cfg[bidderCode] = {
|
|
1180
|
+
mode: 'all'
|
|
1181
|
+
};
|
|
1182
|
+
config.setConfig(cfg);
|
|
1183
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode, adUnitType: 'multi-format'});
|
|
1184
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1185
|
+
expect(data.imp[0].banner).to.deep.equal({
|
|
1186
|
+
mimes: ['text/html', 'text/javascript', 'application/javascript', 'image/jpg'],
|
|
1187
|
+
format: [{w: 300, h: 250}, {w: 300, h: 600}]
|
|
1188
|
+
});
|
|
1189
|
+
expect(data.imp[0].video).to.deep.equal({
|
|
1190
|
+
mimes: ['video/mp4', 'application/javascript'],
|
|
1191
|
+
w: 300,
|
|
1192
|
+
h: 250,
|
|
1193
|
+
api: [2],
|
|
1194
|
+
protocols: [2, 5],
|
|
1195
|
+
startdelay: 0,
|
|
1196
|
+
linearity: 1,
|
|
1197
|
+
maxbitrate: undefined,
|
|
1198
|
+
maxduration: undefined,
|
|
1199
|
+
minduration: undefined,
|
|
1200
|
+
delivery: undefined,
|
|
1201
|
+
pos: undefined,
|
|
1202
|
+
playbackmethod: undefined,
|
|
1203
|
+
rewarded: undefined,
|
|
1204
|
+
placement: undefined
|
|
1205
|
+
});
|
|
1164
1206
|
});
|
|
1165
1207
|
});
|
|
1166
1208
|
|
|
@@ -1179,7 +1221,6 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1179
1221
|
invalidKey5: undefined
|
|
1180
1222
|
};
|
|
1181
1223
|
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1182
|
-
|
|
1183
1224
|
expect(data.imp[0].ext.kvs).to.deep.equal({
|
|
1184
1225
|
key1: 'String',
|
|
1185
1226
|
key2: 123456,
|
|
@@ -1192,10 +1233,6 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1192
1233
|
describe('Multiple adUnit validations:', () => {
|
|
1193
1234
|
// Multiple banner adUnits
|
|
1194
1235
|
it('should generate multiple bid-requests for each adUnit - 2 banner only', () => {
|
|
1195
|
-
config.setConfig({
|
|
1196
|
-
yahoossp: { mode: 'banner' }
|
|
1197
|
-
});
|
|
1198
|
-
|
|
1199
1236
|
const BID_ID_2 = '84ab50xxxxx';
|
|
1200
1237
|
const BID_POS_2 = 'footer';
|
|
1201
1238
|
const AD_UNIT_CODE_2 = 'test-ad-unit-code-123';
|
|
@@ -1209,12 +1246,12 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1209
1246
|
validBidRequests = [bidRequest, bidRequest2, bidRequest3];
|
|
1210
1247
|
bidderRequest.bids = validBidRequests;
|
|
1211
1248
|
|
|
1212
|
-
const
|
|
1213
|
-
expect(
|
|
1214
|
-
expect(
|
|
1215
|
-
|
|
1216
|
-
expect(
|
|
1217
|
-
expect(
|
|
1249
|
+
const reqs = spec.buildRequests(validBidRequests, bidderRequest)
|
|
1250
|
+
expect(reqs).to.be.a('array');
|
|
1251
|
+
expect(reqs.length).to.equal(2);
|
|
1252
|
+
reqs.forEach(req => {
|
|
1253
|
+
expect(req.data.imp[0].video).to.not.exist
|
|
1254
|
+
expect(req.data.imp[0].banner).to.deep.equal({
|
|
1218
1255
|
mimes: ['text/html', 'text/javascript', 'application/javascript', 'image/jpg'],
|
|
1219
1256
|
format: [{w: 300, h: 250}, {w: 300, h: 600}]
|
|
1220
1257
|
});
|
|
@@ -1223,9 +1260,11 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1223
1260
|
|
|
1224
1261
|
// Multiple video adUnits
|
|
1225
1262
|
it('should generate multiple bid-requests for each adUnit - 2 video only', () => {
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1263
|
+
const cfg = {};
|
|
1264
|
+
cfg[DEFAULT_BIDDER_CODE] = {
|
|
1265
|
+
mode: VIDEO
|
|
1266
|
+
};
|
|
1267
|
+
config.setConfig(cfg);
|
|
1229
1268
|
const BID_ID_2 = '84ab50xxxxx';
|
|
1230
1269
|
const BID_POS_2 = 'footer';
|
|
1231
1270
|
const AD_UNIT_CODE_2 = 'test-ad-unit-code-123';
|
|
@@ -1233,18 +1272,18 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1233
1272
|
const BID_POS_3 = 'hero';
|
|
1234
1273
|
const AD_UNIT_CODE_3 = 'video-ad-unit';
|
|
1235
1274
|
|
|
1236
|
-
let {
|
|
1237
|
-
const {
|
|
1238
|
-
const {
|
|
1275
|
+
let {bidRequest, validBidRequests, bidderRequest} = generateBuildRequestMock({adUnitType: 'video'}); // video
|
|
1276
|
+
const {bidRequest: bidRequest2} = generateBuildRequestMock({bidId: BID_ID_2, pos: BID_POS_2, adUnitCode: AD_UNIT_CODE_2, adUnitType: 'video'}); // video
|
|
1277
|
+
const {bidRequest: bidRequest3} = generateBuildRequestMock({bidId: BID_ID_3, pos: BID_POS_3, adUnitCode: AD_UNIT_CODE_3}); // banner (should be filtered)
|
|
1239
1278
|
validBidRequests = [bidRequest, bidRequest2, bidRequest3];
|
|
1240
1279
|
bidderRequest.bids = validBidRequests;
|
|
1241
1280
|
|
|
1242
|
-
const
|
|
1243
|
-
expect(
|
|
1244
|
-
expect(
|
|
1245
|
-
|
|
1246
|
-
expect(
|
|
1247
|
-
expect(
|
|
1281
|
+
const reqs = spec.buildRequests(validBidRequests, bidderRequest)
|
|
1282
|
+
expect(reqs).to.be.a('array');
|
|
1283
|
+
expect(reqs.length).to.equal(2);
|
|
1284
|
+
reqs.forEach(req => {
|
|
1285
|
+
expect(req.data.imp[0].banner).to.not.exist
|
|
1286
|
+
expect(req.data.imp[0].video).to.deep.equal({
|
|
1248
1287
|
mimes: ['video/mp4', 'application/javascript'],
|
|
1249
1288
|
w: 300,
|
|
1250
1289
|
h: 250,
|
|
@@ -1265,9 +1304,9 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1265
1304
|
});
|
|
1266
1305
|
// Mixed adUnits 1-banner, 1-video, 1-native (should filter out native)
|
|
1267
1306
|
it('should generate multiple bid-requests for both "video & banner" adUnits', () => {
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1307
|
+
const cfg = {};
|
|
1308
|
+
cfg[DEFAULT_BIDDER_CODE] = { mode: 'all' };
|
|
1309
|
+
config.setConfig(cfg);
|
|
1271
1310
|
const BID_ID_2 = '84ab50xxxxx';
|
|
1272
1311
|
const BID_POS_2 = 'footer';
|
|
1273
1312
|
const AD_UNIT_CODE_2 = 'video-ad-unit';
|
|
@@ -1281,21 +1320,21 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1281
1320
|
validBidRequests = [bidRequest, bidRequest2, bidRequest3];
|
|
1282
1321
|
bidderRequest.bids = validBidRequests;
|
|
1283
1322
|
|
|
1284
|
-
const
|
|
1285
|
-
expect(
|
|
1286
|
-
expect(
|
|
1287
|
-
|
|
1288
|
-
expect(
|
|
1323
|
+
const reqs = spec.buildRequests(validBidRequests, bidderRequest);
|
|
1324
|
+
expect(reqs).to.be.a('array');
|
|
1325
|
+
expect(reqs.length).to.equal(2);
|
|
1326
|
+
reqs.forEach(req => {
|
|
1327
|
+
expect(req.data.imp[0].native).to.not.exist;
|
|
1289
1328
|
});
|
|
1290
1329
|
|
|
1291
|
-
const data1 =
|
|
1330
|
+
const data1 = reqs[0].data;
|
|
1292
1331
|
expect(data1.imp[0].video).to.not.exist;
|
|
1293
1332
|
expect(data1.imp[0].banner).to.deep.equal({
|
|
1294
1333
|
mimes: ['text/html', 'text/javascript', 'application/javascript', 'image/jpg'],
|
|
1295
1334
|
format: [{w: 300, h: 250}, {w: 300, h: 600}]
|
|
1296
1335
|
});
|
|
1297
1336
|
|
|
1298
|
-
const data2 =
|
|
1337
|
+
const data2 = reqs[1].data;
|
|
1299
1338
|
expect(data2.imp[0].banner).to.not.exist;
|
|
1300
1339
|
expect(data2.imp[0].video).to.deep.equal({
|
|
1301
1340
|
mimes: ['video/mp4', 'application/javascript'],
|
|
@@ -1318,90 +1357,98 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1318
1357
|
});
|
|
1319
1358
|
|
|
1320
1359
|
describe('Video params firstlook & bidOverride validations:', () => {
|
|
1321
|
-
|
|
1322
|
-
config
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1360
|
+
VALID_BIDDER_CODES.forEach(bidderCode => {
|
|
1361
|
+
it(`should first look at params.bidOverride for video placement data for ${bidderCode} config override`, () => {
|
|
1362
|
+
const cfg = {};
|
|
1363
|
+
cfg[bidderCode] = {
|
|
1364
|
+
mode: VIDEO
|
|
1365
|
+
};
|
|
1366
|
+
config.setConfig(cfg);
|
|
1367
|
+
const bidOverride = {
|
|
1368
|
+
imp: {
|
|
1369
|
+
video: {
|
|
1370
|
+
mimes: ['video/mp4'],
|
|
1371
|
+
w: 400,
|
|
1372
|
+
h: 350,
|
|
1373
|
+
api: [1],
|
|
1374
|
+
protocols: [1, 3],
|
|
1375
|
+
startdelay: 0,
|
|
1376
|
+
linearity: 1,
|
|
1377
|
+
maxbitrate: 400000,
|
|
1378
|
+
maxduration: 3600,
|
|
1379
|
+
minduration: 1500,
|
|
1380
|
+
delivery: 1,
|
|
1381
|
+
pos: 123456,
|
|
1382
|
+
playbackmethod: 1,
|
|
1383
|
+
rewarded: 1,
|
|
1384
|
+
placement: 1
|
|
1385
|
+
}
|
|
1343
1386
|
}
|
|
1344
1387
|
}
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
expect(data.imp[0].video).to.deep.equal(bidOverride.imp.video);
|
|
1349
|
-
});
|
|
1350
|
-
|
|
1351
|
-
it('should second look at bid.mediaTypes.video for video placement data', () => {
|
|
1352
|
-
config.setConfig({
|
|
1353
|
-
yahoossp: { mode: 'video' }
|
|
1354
|
-
});
|
|
1355
|
-
let { bidRequest, bidderRequest } = generateBuildRequestMock({adUnitType: 'video'});
|
|
1356
|
-
bidRequest.mediaTypes.video = {
|
|
1357
|
-
mimes: ['video/mp4'],
|
|
1358
|
-
playerSize: [400, 350],
|
|
1359
|
-
api: [1],
|
|
1360
|
-
protocols: [1, 3],
|
|
1361
|
-
startdelay: 0,
|
|
1362
|
-
linearity: 1,
|
|
1363
|
-
maxbitrate: 400000,
|
|
1364
|
-
maxduration: 3600,
|
|
1365
|
-
minduration: 1500,
|
|
1366
|
-
delivery: 1,
|
|
1367
|
-
pos: 123456,
|
|
1368
|
-
playbackmethod: 1,
|
|
1369
|
-
placement: 1
|
|
1370
|
-
}
|
|
1371
|
-
const validBidRequests = [bidRequest];
|
|
1372
|
-
bidderRequest.bids = validBidRequests;
|
|
1373
|
-
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1374
|
-
expect(data.imp[0].video).to.deep.equal({
|
|
1375
|
-
mimes: ['video/mp4'],
|
|
1376
|
-
w: 400,
|
|
1377
|
-
h: 350,
|
|
1378
|
-
api: [1],
|
|
1379
|
-
protocols: [1, 3],
|
|
1380
|
-
startdelay: 0,
|
|
1381
|
-
linearity: 1,
|
|
1382
|
-
maxbitrate: 400000,
|
|
1383
|
-
maxduration: 3600,
|
|
1384
|
-
minduration: 1500,
|
|
1385
|
-
delivery: 1,
|
|
1386
|
-
pos: 123456,
|
|
1387
|
-
playbackmethod: 1,
|
|
1388
|
-
placement: 1,
|
|
1389
|
-
rewarded: undefined
|
|
1388
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode, adUnitType: 'video', bidOverrideObject: bidOverride});
|
|
1389
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1390
|
+
expect(data.imp[0].video).to.deep.equal(bidOverride.imp.video);
|
|
1390
1391
|
});
|
|
1391
|
-
});
|
|
1392
1392
|
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1393
|
+
it(`should second look at bid.mediaTypes.video for video placement data for ${bidderCode} config override`, () => {
|
|
1394
|
+
const cfg = {};
|
|
1395
|
+
cfg[bidderCode] = {
|
|
1396
|
+
mode: VIDEO
|
|
1397
|
+
};
|
|
1398
|
+
config.setConfig(cfg);
|
|
1399
|
+
let { bidRequest, bidderRequest } = generateBuildRequestMock({bidderCode, adUnitType: 'video'});
|
|
1400
|
+
bidRequest.mediaTypes.video = {
|
|
1401
|
+
mimes: ['video/mp4'],
|
|
1402
|
+
playerSize: [400, 350],
|
|
1403
|
+
api: [1],
|
|
1404
|
+
protocols: [1, 3],
|
|
1405
|
+
startdelay: 0,
|
|
1406
|
+
linearity: 1,
|
|
1407
|
+
maxbitrate: 400000,
|
|
1408
|
+
maxduration: 3600,
|
|
1409
|
+
minduration: 1500,
|
|
1410
|
+
delivery: 1,
|
|
1411
|
+
pos: 123456,
|
|
1412
|
+
playbackmethod: 1,
|
|
1413
|
+
placement: 1
|
|
1414
|
+
}
|
|
1415
|
+
const validBidRequests = [bidRequest];
|
|
1416
|
+
bidderRequest.bids = validBidRequests;
|
|
1417
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1418
|
+
expect(data.imp[0].video).to.deep.equal({
|
|
1419
|
+
mimes: ['video/mp4'],
|
|
1420
|
+
w: 400,
|
|
1421
|
+
h: 350,
|
|
1422
|
+
api: [1],
|
|
1423
|
+
protocols: [1, 3],
|
|
1424
|
+
startdelay: 0,
|
|
1425
|
+
linearity: 1,
|
|
1426
|
+
maxbitrate: 400000,
|
|
1427
|
+
maxduration: 3600,
|
|
1428
|
+
minduration: 1500,
|
|
1429
|
+
delivery: 1,
|
|
1430
|
+
pos: 123456,
|
|
1431
|
+
playbackmethod: 1,
|
|
1432
|
+
placement: 1,
|
|
1433
|
+
rewarded: undefined
|
|
1434
|
+
});
|
|
1396
1435
|
});
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1436
|
+
|
|
1437
|
+
it(`should use params.bidOverride.device.ip override for ${bidderCode} config override`, () => {
|
|
1438
|
+
const cfg = {};
|
|
1439
|
+
cfg[bidderCode] = {
|
|
1440
|
+
mode: 'all'
|
|
1441
|
+
};
|
|
1442
|
+
config.setConfig(cfg);
|
|
1443
|
+
const bidOverride = {
|
|
1444
|
+
device: {
|
|
1445
|
+
ip: '1.2.3.4'
|
|
1446
|
+
}
|
|
1400
1447
|
}
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1448
|
+
const { validBidRequests, bidderRequest } = generateBuildRequestMock({bidderCode, adUnitType: 'video', bidOverrideObject: bidOverride});
|
|
1449
|
+
const data = spec.buildRequests(validBidRequests, bidderRequest)[0].data;
|
|
1450
|
+
expect(data.device.ip).to.deep.equal(bidOverride.device.ip);
|
|
1451
|
+
});
|
|
1405
1452
|
});
|
|
1406
1453
|
});
|
|
1407
1454
|
// #endregion buildRequests():
|
|
@@ -1417,6 +1464,22 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1417
1464
|
});
|
|
1418
1465
|
|
|
1419
1466
|
describe('for mediaTypes: "video"', () => {
|
|
1467
|
+
beforeEach(() => {
|
|
1468
|
+
config.setConfig({
|
|
1469
|
+
yahooAds: {
|
|
1470
|
+
mode: VIDEO
|
|
1471
|
+
}
|
|
1472
|
+
});
|
|
1473
|
+
});
|
|
1474
|
+
|
|
1475
|
+
afterEach(() => {
|
|
1476
|
+
config.setConfig({
|
|
1477
|
+
yahooAds: {
|
|
1478
|
+
mode: undefined
|
|
1479
|
+
}
|
|
1480
|
+
});
|
|
1481
|
+
});
|
|
1482
|
+
|
|
1420
1483
|
it('should insert video VPAID payload into vastXml', () => {
|
|
1421
1484
|
const { serverResponse, bidderRequest } = generateResponseMock('video');
|
|
1422
1485
|
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
@@ -1434,28 +1497,38 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1434
1497
|
expect(response[0].mediaType).to.equal('video');
|
|
1435
1498
|
})
|
|
1436
1499
|
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1500
|
+
describe('wrapped in video players for display inventory', () => {
|
|
1501
|
+
beforeEach(() => {
|
|
1502
|
+
config.setConfig({
|
|
1503
|
+
yahooAds: {
|
|
1504
|
+
mode: undefined
|
|
1505
|
+
}
|
|
1506
|
+
});
|
|
1507
|
+
});
|
|
1445
1508
|
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1509
|
+
it('should insert video DAP O2 Player into ad', () => {
|
|
1510
|
+
const { serverResponse, bidderRequest } = generateResponseMock('dap-o2', 'vpaid');
|
|
1511
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1512
|
+
expect(response[0].ad).to.equal('<script>o2playerSettings</script>');
|
|
1513
|
+
expect(response[0].vastUrl).to.be.undefined;
|
|
1514
|
+
expect(response[0].vastXml).to.be.undefined;
|
|
1515
|
+
expect(response[0].mediaType).to.equal('banner');
|
|
1516
|
+
});
|
|
1517
|
+
|
|
1518
|
+
it('should insert video DAP Unified Player into ad', () => {
|
|
1519
|
+
const { serverResponse, bidderRequest } = generateResponseMock('dap-up', 'vpaid');
|
|
1520
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1521
|
+
expect(response[0].ad).to.equal('<script>YAHOO.VideoPlatform.VideoPlayer</script>');
|
|
1522
|
+
expect(response[0].vastUrl).to.be.undefined;
|
|
1523
|
+
expect(response[0].vastXml).to.be.undefined;
|
|
1524
|
+
expect(response[0].mediaType).to.equal('banner');
|
|
1525
|
+
})
|
|
1526
|
+
});
|
|
1454
1527
|
});
|
|
1455
1528
|
|
|
1456
1529
|
describe('Support Advertiser domains', () => {
|
|
1457
1530
|
it('should append bid-response adomain to meta.advertiserDomains', () => {
|
|
1458
|
-
const { serverResponse, bidderRequest } = generateResponseMock('
|
|
1531
|
+
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1459
1532
|
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1460
1533
|
expect(response[0].meta.advertiserDomains).to.be.a('array');
|
|
1461
1534
|
expect(response[0].meta.advertiserDomains[0]).to.equal('advertiser-domain.com');
|
|
@@ -1490,53 +1563,55 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
1490
1563
|
});
|
|
1491
1564
|
|
|
1492
1565
|
describe('Time To Live (ttl)', () => {
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1566
|
+
VALID_BIDDER_CODES.forEach(bidderCode => {
|
|
1567
|
+
const UNSUPPORTED_TTL_FORMATS = ['string', [1, 2, 3], true, false, null, undefined];
|
|
1568
|
+
UNSUPPORTED_TTL_FORMATS.forEach(param => {
|
|
1569
|
+
it(`should not allow unsupported global ${bidderCode}.ttl formats and default to 300`, () => {
|
|
1570
|
+
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1571
|
+
const cfg = {};
|
|
1572
|
+
cfg['yahooAds'] = { ttl: param };
|
|
1573
|
+
config.setConfig(cfg);
|
|
1574
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1575
|
+
expect(response[0].ttl).to.equal(300);
|
|
1499
1576
|
});
|
|
1500
|
-
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1501
|
-
expect(response[0].ttl).to.equal(300);
|
|
1502
|
-
});
|
|
1503
1577
|
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1578
|
+
it('should not allow unsupported params.ttl formats and default to 300', () => {
|
|
1579
|
+
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1580
|
+
bidderRequest.bids[0].params.ttl = param;
|
|
1581
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1582
|
+
expect(response[0].ttl).to.equal(300);
|
|
1583
|
+
});
|
|
1509
1584
|
});
|
|
1510
|
-
});
|
|
1511
1585
|
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1586
|
+
const UNSUPPORTED_TTL_VALUES = [-1, 3601];
|
|
1587
|
+
UNSUPPORTED_TTL_VALUES.forEach(param => {
|
|
1588
|
+
it('should not allow invalid global config ttl values 3600 < ttl < 0 and default to 300', () => {
|
|
1589
|
+
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1590
|
+
config.setConfig({
|
|
1591
|
+
yahooAds: { ttl: param }
|
|
1592
|
+
});
|
|
1593
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1594
|
+
expect(response[0].ttl).to.equal(300);
|
|
1595
|
+
});
|
|
1596
|
+
|
|
1597
|
+
it('should not allow invalid params.ttl values 3600 < ttl < 0 and default to 300', () => {
|
|
1598
|
+
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1599
|
+
bidderRequest.bids[0].params.ttl = param;
|
|
1600
|
+
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1601
|
+
expect(response[0].ttl).to.equal(300);
|
|
1518
1602
|
});
|
|
1519
|
-
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1520
|
-
expect(response[0].ttl).to.equal(300);
|
|
1521
1603
|
});
|
|
1522
1604
|
|
|
1523
|
-
it('should
|
|
1605
|
+
it('should give presedence to Gloabl ttl over params.ttl ', () => {
|
|
1524
1606
|
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1525
|
-
|
|
1607
|
+
config.setConfig({
|
|
1608
|
+
yahooAds: { ttl: 500 }
|
|
1609
|
+
});
|
|
1610
|
+
bidderRequest.bids[0].params.ttl = 400;
|
|
1526
1611
|
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1527
|
-
expect(response[0].ttl).to.equal(
|
|
1612
|
+
expect(response[0].ttl).to.equal(500);
|
|
1528
1613
|
});
|
|
1529
1614
|
});
|
|
1530
|
-
|
|
1531
|
-
it('should give presedence to Gloabl ttl over params.ttl ', () => {
|
|
1532
|
-
const { serverResponse, bidderRequest } = generateResponseMock('banner');
|
|
1533
|
-
config.setConfig({
|
|
1534
|
-
yahoossp: { ttl: 500 }
|
|
1535
|
-
});
|
|
1536
|
-
bidderRequest.bids[0].params.ttl = 400;
|
|
1537
|
-
const response = spec.interpretResponse(serverResponse, {bidderRequest});
|
|
1538
|
-
expect(response[0].ttl).to.equal(500);
|
|
1539
|
-
});
|
|
1540
1615
|
});
|
|
1541
1616
|
|
|
1542
1617
|
describe('Aliasing support', () => {
|