prebid.js 9.26.0 → 9.28.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/creative/renderers/native/renderer.js +29 -8
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/acuityadsBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.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/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/blueBidAdapter.js +1 -0
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/creative-renderer-native.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +7 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/equativBidAdapter.js +1 -1
- package/dist/escalaxBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsBidAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -1
- package/dist/intentIqConstants.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.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/liveIntentId.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveIntentRtdProvider.js +1 -0
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/madsenseBidAdapter.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/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/missenaBidAdapter.js +1 -1
- package/dist/mspa.js +1 -1
- package/dist/nativeRendering.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +193 -191
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/omsBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/orbitsoftBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.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/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.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/showheroes-bsBidAdapter.js +1 -1
- package/dist/sizeUtils.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/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/symitriDapRtdProvider.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.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/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vdoaiBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/wurflRtdProvider.js +1 -1
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/liveIntentRtdProviderExample.html +164 -0
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +3 -1
- package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +2 -0
- package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +2 -0
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +2 -0
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +3 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +3 -1
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/libraries/intentIqConstants/intentIqConstants.js +1 -1
- package/libraries/liveIntentId/shared.js +18 -5
- package/libraries/mspa/activityControls.js +26 -7
- package/libraries/riseUtils/constants.js +20 -0
- package/libraries/riseUtils/index.js +143 -38
- package/libraries/sizeUtils/sizeUtils.js +25 -0
- package/libraries/vidazooUtils/bidderUtils.js +2 -0
- package/modules/33acrossIdSystem.js +64 -23
- package/modules/33acrossIdSystem.md +2 -1
- package/modules/acuityadsBidAdapter.js +1 -1
- package/modules/adagioRtdProvider.js +15 -9
- package/modules/adlooxAnalyticsAdapter.js +12 -6
- package/modules/blueBidAdapter.js +122 -0
- package/modules/blueBidAdapter.md +28 -0
- package/modules/conceptxBidAdapter.js +2 -0
- package/modules/consumableBidAdapter.js +3 -1
- package/modules/contxtfulBidAdapter.js +25 -13
- package/modules/contxtfulRtdProvider.js +9 -12
- package/modules/eplanningBidAdapter.js +5 -1
- package/modules/equativBidAdapter.js +13 -18
- package/modules/escalaxBidAdapter.js +2 -2
- package/modules/eskimiBidAdapter.js +4 -1
- package/modules/improvedigitalBidAdapter.js +0 -67
- package/modules/intentIqAnalyticsAdapter.js +1 -1
- package/modules/ixBidAdapter.js +7 -1
- package/modules/jwplayerVideoProvider.js +99 -6
- package/modules/liveIntentRtdProvider.js +52 -0
- package/modules/liveIntentRtdProvider.md +45 -0
- package/modules/minutemediaBidAdapter.js +6 -80
- package/modules/minutemediaBidAdapter.md +1 -1
- package/modules/missenaBidAdapter.js +2 -0
- package/modules/nativeRendering.js +2 -1
- package/modules/omsBidAdapter.js +25 -11
- package/modules/omsBidAdapter.md +15 -0
- package/modules/openwebBidAdapter.js +6 -81
- package/modules/openwebBidAdapter.md +1 -1
- package/modules/openxBidAdapter.js +19 -6
- package/modules/openxBidAdapter.md +46 -1
- package/modules/orbitsoftBidAdapter.js +1 -1
- package/modules/permutiveRtdProvider.md +6 -5
- package/modules/pubmaticAnalyticsAdapter.js +61 -19
- package/modules/riseBidAdapter.js +11 -92
- package/modules/riseBidAdapter.md +1 -1
- package/modules/sharedIdSystem.js +9 -3
- package/modules/shinezBidAdapter.js +4 -80
- package/modules/shinezBidAdapter.md +2 -2
- package/modules/stnBidAdapter.js +7 -86
- package/modules/stnBidAdapter.md +1 -1
- package/modules/symitriDapRtdProvider.js +4 -4
- package/modules/symitriDapRtdProvider.md +2 -2
- package/modules/userId/eids.js +32 -5
- package/modules/wurflRtdProvider.js +7 -1
- package/modules/wurflRtdProvider.md +1 -1
- package/modules/yieldlabBidAdapter.js +2 -2
- package/modules/zeta_global_sspAnalyticsAdapter.js +5 -2
- package/package.json +2 -2
- package/src/adapters/bidderFactory.js +7 -6
- package/src/adloader.js +0 -1
- package/src/native.js +6 -3
- package/test/spec/creative/nativeRenderer_spec.js +45 -10
- package/test/spec/libraries/mspa/activityControls_spec.js +63 -9
- package/test/spec/modules/33acrossIdSystem_spec.js +288 -2
- package/test/spec/modules/acuityadsBidAdapter_spec.js +49 -0
- package/test/spec/modules/adagioRtdProvider_spec.js +119 -3
- package/test/spec/modules/adlooxAdServerVideo_spec.js +0 -1
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +31 -0
- package/test/spec/modules/blueBidAdapter_spec.js +91 -0
- package/test/spec/modules/consumableBidAdapter_spec.js +42 -0
- package/test/spec/modules/contxtfulRtdProvider_spec.js +37 -2
- package/test/spec/modules/eplanningBidAdapter_spec.js +74 -1
- package/test/spec/modules/equativBidAdapter_spec.js +5 -6
- package/test/spec/modules/excoBidAdapter_spec.js +33 -18
- package/test/spec/modules/illuminBidAdapter_spec.js +33 -18
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
- package/test/spec/modules/ixBidAdapter_spec.js +68 -2
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/liveIntentExternalIdSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdSystem_spec.js +49 -6
- package/test/spec/modules/liveIntentRtdProvider_spec.js +116 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +126 -6
- package/test/spec/modules/missenaBidAdapter_spec.js +12 -3
- package/test/spec/modules/omsBidAdapter_spec.js +78 -0
- package/test/spec/modules/openwebBidAdapter_spec.js +126 -6
- package/test/spec/modules/openxBidAdapter_spec.js +236 -8
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +29 -36
- package/test/spec/modules/riseBidAdapter_spec.js +126 -6
- package/test/spec/modules/sharedIdSystem_spec.js +25 -1
- package/test/spec/modules/shinezBidAdapter_spec.js +133 -9
- package/test/spec/modules/shinezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/stnBidAdapter_spec.js +126 -5
- package/test/spec/modules/symitriDapRtdProvider_spec.js +36 -0
- package/test/spec/modules/tagorasBidAdapter_spec.js +33 -18
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +34 -18
- package/test/spec/modules/userId_spec.js +103 -2
- package/test/spec/modules/vidazooBidAdapter_spec.js +34 -18
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +81 -0
- package/test/spec/modules/wurflRtdProvider_spec.js +8 -3
- package/test/spec/modules/yieldlabBidAdapter_spec.js +5 -5
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +3 -2
- package/test/spec/native_spec.js +4 -2
- package/test/spec/unit/core/bidderFactory_spec.js +120 -43
|
@@ -249,12 +249,119 @@ describe('OpenxRtbAdapter', function () {
|
|
|
249
249
|
});
|
|
250
250
|
});
|
|
251
251
|
});
|
|
252
|
+
|
|
253
|
+
describe('when request is for a native ad', function () {
|
|
254
|
+
const nativeOrtbRequest = {
|
|
255
|
+
assets: [{
|
|
256
|
+
id: 1,
|
|
257
|
+
required: 1,
|
|
258
|
+
title: {
|
|
259
|
+
len: 80
|
|
260
|
+
}
|
|
261
|
+
}]
|
|
262
|
+
}
|
|
263
|
+
describe('and request config uses mediaTypes', () => {
|
|
264
|
+
const nativeBidWithMediaTypes = {
|
|
265
|
+
bidder: 'openx',
|
|
266
|
+
params: {
|
|
267
|
+
unit: '12345678',
|
|
268
|
+
delDomain: 'test-del-domain'
|
|
269
|
+
},
|
|
270
|
+
adUnitCode: 'adunit-code',
|
|
271
|
+
mediaTypes: {
|
|
272
|
+
native: {
|
|
273
|
+
ortb: {
|
|
274
|
+
...nativeOrtbRequest
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
nativeOrtbRequest,
|
|
279
|
+
bidId: '30b31c1838de1e',
|
|
280
|
+
bidderRequestId: '22edbae2733bf6',
|
|
281
|
+
auctionId: '1d1a030790a475',
|
|
282
|
+
transactionId: '4008d88a-8137-410b-aa35-fbfdabcb478e'
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
it('should return true when required params found', function () {
|
|
286
|
+
expect(spec.isBidRequestValid(nativeBidWithMediaTypes)).to.equal(true);
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
it('should return false when required params are not passed', function () {
|
|
290
|
+
let invalidNativeBidWithMediaTypes = Object.assign({}, nativeBidWithMediaTypes);
|
|
291
|
+
invalidNativeBidWithMediaTypes.params = {};
|
|
292
|
+
expect(spec.isBidRequestValid(invalidNativeBidWithMediaTypes)).to.equal(false);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
describe('and request config uses both delDomain and platform', () => {
|
|
297
|
+
const nativeBidWithDelDomainAndPlatform = {
|
|
298
|
+
bidder: 'openx',
|
|
299
|
+
params: {
|
|
300
|
+
unit: '12345678',
|
|
301
|
+
delDomain: 'test-del-domain',
|
|
302
|
+
platform: '1cabba9e-cafe-3665-beef-f00f00f00f00'
|
|
303
|
+
},
|
|
304
|
+
adUnitCode: 'adunit-code',
|
|
305
|
+
mediaTypes: {
|
|
306
|
+
native: {
|
|
307
|
+
ortb: {
|
|
308
|
+
...nativeOrtbRequest
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
nativeOrtbRequest,
|
|
313
|
+
bidId: '30b31c1838de1e',
|
|
314
|
+
bidderRequestId: '22edbae2733bf6',
|
|
315
|
+
auctionId: '1d1a030790a475',
|
|
316
|
+
transactionId: '4008d88a-8137-410b-aa35-fbfdabcb478e'
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
it('should return true when required params found', function () {
|
|
320
|
+
expect(spec.isBidRequestValid(nativeBidWithDelDomainAndPlatform)).to.equal(true);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
it('should return false when required params are not passed', function () {
|
|
324
|
+
let invalidNativeBidWithMediaTypes = Object.assign({}, nativeBidWithDelDomainAndPlatform);
|
|
325
|
+
invalidNativeBidWithMediaTypes.params = {};
|
|
326
|
+
expect(spec.isBidRequestValid(invalidNativeBidWithMediaTypes)).to.equal(false);
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
});
|
|
252
330
|
});
|
|
253
331
|
|
|
254
332
|
describe('buildRequests()', function () {
|
|
255
333
|
let bidRequestsWithMediaTypes;
|
|
256
|
-
let bidRequestsWithPlatform;
|
|
257
334
|
let mockBidderRequest;
|
|
335
|
+
const nativeOrtbRequest = {
|
|
336
|
+
assets: [{
|
|
337
|
+
id: 1,
|
|
338
|
+
required: 1,
|
|
339
|
+
title: {
|
|
340
|
+
len: 80
|
|
341
|
+
}
|
|
342
|
+
}]
|
|
343
|
+
};
|
|
344
|
+
const nativeBidRequest = {
|
|
345
|
+
bidder: 'openx',
|
|
346
|
+
params: {
|
|
347
|
+
unit: '33',
|
|
348
|
+
delDomain: 'test-del-domain',
|
|
349
|
+
platform: '1cabba9e-cafe-3665-beef-f00f00f00f00',
|
|
350
|
+
},
|
|
351
|
+
adUnitCode: 'adunit-code',
|
|
352
|
+
mediaTypes: {
|
|
353
|
+
native: {
|
|
354
|
+
ortb: {
|
|
355
|
+
...nativeOrtbRequest
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
nativeOrtbRequest,
|
|
360
|
+
bidId: 'test-bid-id-3',
|
|
361
|
+
bidderRequestId: 'test-bid-request-3',
|
|
362
|
+
auctionId: 'test-auction-3',
|
|
363
|
+
transactionId: 'test-transactionId-3'
|
|
364
|
+
};
|
|
258
365
|
|
|
259
366
|
beforeEach(function () {
|
|
260
367
|
mockBidderRequest = {refererInfo: {}};
|
|
@@ -302,16 +409,64 @@ describe('OpenxRtbAdapter', function () {
|
|
|
302
409
|
});
|
|
303
410
|
|
|
304
411
|
context('common requests checks', function() {
|
|
305
|
-
it('should be able to handle multiformat
|
|
412
|
+
it('should be able to handle multiformat request - banner + video', () => {
|
|
306
413
|
const multiformat = utils.deepClone(bidRequestsWithMediaTypes[0]);
|
|
307
414
|
multiformat.mediaTypes.video = {
|
|
308
415
|
context: 'outstream',
|
|
309
416
|
playerSize: [640, 480]
|
|
417
|
+
};
|
|
418
|
+
const requests = spec.buildRequests([multiformat], mockBidderRequest);
|
|
419
|
+
expect(requests).to.have.length(2);
|
|
420
|
+
expect(requests[0].data.imp).to.have.length(1);
|
|
421
|
+
expect(requests[0].data.imp[0].banner).to.exist;
|
|
422
|
+
expect(requests[0].data.imp[0].video).to.not.exist;
|
|
423
|
+
expect(requests[0].data.imp[0].native).to.not.exist;
|
|
424
|
+
expect(requests[1].data.imp).to.have.length(1);
|
|
425
|
+
expect(requests[1].data.imp[0].banner).to.not.exist;
|
|
426
|
+
expect(requests[1].data.imp[0].native).to.not.exist;
|
|
427
|
+
if (FEATURES.VIDEO) {
|
|
428
|
+
expect(requests[1].data.imp[0].video).to.exist;
|
|
429
|
+
}
|
|
430
|
+
})
|
|
431
|
+
|
|
432
|
+
it('should be able to handle multiformat request - banner + native', () => {
|
|
433
|
+
const multiformat = utils.deepClone(nativeBidRequest);
|
|
434
|
+
multiformat.mediaTypes.banner = {
|
|
435
|
+
sizes: [[300, 250], [300, 600]]
|
|
436
|
+
}
|
|
437
|
+
const requests = spec.buildRequests([multiformat], mockBidderRequest);
|
|
438
|
+
expect(requests).to.have.length(1);
|
|
439
|
+
expect(requests[0].data.imp).to.have.length(1);
|
|
440
|
+
expect(requests[0].data.imp[0].banner).to.exist;
|
|
441
|
+
expect(requests[0].data.imp[0].video).to.not.exist;
|
|
442
|
+
if (FEATURES.NATIVE) {
|
|
443
|
+
expect(requests[0].data.imp[0].native).to.exist;
|
|
444
|
+
}
|
|
445
|
+
})
|
|
446
|
+
|
|
447
|
+
it('should be able to handle multiformat request - banner + video + native', () => {
|
|
448
|
+
const multiformat = utils.deepClone(nativeBidRequest);
|
|
449
|
+
multiformat.mediaTypes.video = {
|
|
450
|
+
context: 'outstream',
|
|
451
|
+
playerSize: [640, 480]
|
|
452
|
+
};
|
|
453
|
+
multiformat.mediaTypes.banner = {
|
|
454
|
+
sizes: [[300, 250]]
|
|
310
455
|
}
|
|
311
456
|
const requests = spec.buildRequests([multiformat], mockBidderRequest);
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
expect(
|
|
457
|
+
expect(requests).to.have.length(2);
|
|
458
|
+
expect(requests[0].data.imp).to.have.length(1);
|
|
459
|
+
expect(requests[0].data.imp[0].banner).to.exist;
|
|
460
|
+
expect(requests[0].data.imp[0].video).to.not.exist;
|
|
461
|
+
if (FEATURES.NATIVE) {
|
|
462
|
+
expect(requests[0].data.imp[0].native).to.exist;
|
|
463
|
+
}
|
|
464
|
+
expect(requests[1].data.imp).to.have.length(1);
|
|
465
|
+
expect(requests[1].data.imp[0].banner).to.not.exist;
|
|
466
|
+
expect(requests[1].data.imp[0].native).to.not.exist;
|
|
467
|
+
if (FEATURES.VIDEO) {
|
|
468
|
+
expect(requests[1].data.imp[0].video).to.exist;
|
|
469
|
+
}
|
|
315
470
|
})
|
|
316
471
|
|
|
317
472
|
it('should send bid request to openx url via POST', function () {
|
|
@@ -329,11 +484,11 @@ describe('OpenxRtbAdapter', function () {
|
|
|
329
484
|
|
|
330
485
|
it('should send platform id, if available', function () {
|
|
331
486
|
bidRequestsWithMediaTypes[0].params.platform = '1cabba9e-cafe-3665-beef-f00f00f00f00';
|
|
332
|
-
bidRequestsWithMediaTypes[1].params.platform = '
|
|
487
|
+
bidRequestsWithMediaTypes[1].params.platform = '51ca3159-abc2-4035-8e00-fe26eaa09397';
|
|
333
488
|
|
|
334
489
|
const request = spec.buildRequests(bidRequestsWithMediaTypes, mockBidderRequest);
|
|
335
490
|
expect(request[0].data.ext.platform).to.equal(bidRequestsWithMediaTypes[0].params.platform);
|
|
336
|
-
expect(request[1].data.ext.platform).to.equal(bidRequestsWithMediaTypes[
|
|
491
|
+
expect(request[1].data.ext.platform).to.equal(bidRequestsWithMediaTypes[1].params.platform);
|
|
337
492
|
});
|
|
338
493
|
|
|
339
494
|
it('should send openx adunit codes', function () {
|
|
@@ -1226,6 +1381,7 @@ describe('OpenxRtbAdapter', function () {
|
|
|
1226
1381
|
crid: 'test-creative-id',
|
|
1227
1382
|
dealid: 'test-deal-id',
|
|
1228
1383
|
adm: 'test-ad-markup',
|
|
1384
|
+
mtype: 1,
|
|
1229
1385
|
adomain: ['brand.com'],
|
|
1230
1386
|
ext: {
|
|
1231
1387
|
dsp_id: '123',
|
|
@@ -1389,7 +1545,7 @@ describe('OpenxRtbAdapter', function () {
|
|
|
1389
1545
|
expect(bid.mediaType).to.equal(Object.keys(bidRequestConfigs[0].mediaTypes)[0]);
|
|
1390
1546
|
});
|
|
1391
1547
|
|
|
1392
|
-
it('should return the proper
|
|
1548
|
+
it('should return the proper vastUrl', function () {
|
|
1393
1549
|
const winUrl = 'https//my.win.url';
|
|
1394
1550
|
bidResponse.seatbid[0].bid[0].nurl = winUrl
|
|
1395
1551
|
bid = spec.interpretResponse({body: bidResponse}, bidRequest).bids[0];
|
|
@@ -1399,6 +1555,78 @@ describe('OpenxRtbAdapter', function () {
|
|
|
1399
1555
|
});
|
|
1400
1556
|
}
|
|
1401
1557
|
|
|
1558
|
+
if (FEATURES.NATIVE) {
|
|
1559
|
+
context('when the response is a native', function() {
|
|
1560
|
+
beforeEach(function () {
|
|
1561
|
+
const nativeOrtbRequest = {
|
|
1562
|
+
ver: '1.2',
|
|
1563
|
+
assets: [{
|
|
1564
|
+
id: 1,
|
|
1565
|
+
required: 1,
|
|
1566
|
+
title: {
|
|
1567
|
+
len: 80
|
|
1568
|
+
}
|
|
1569
|
+
}]
|
|
1570
|
+
};
|
|
1571
|
+
bidRequestConfigs = [{
|
|
1572
|
+
bidder: 'openx',
|
|
1573
|
+
params: {
|
|
1574
|
+
unit: '12345678',
|
|
1575
|
+
delDomain: 'test-del-domain'
|
|
1576
|
+
},
|
|
1577
|
+
adUnitCode: 'adunit-code',
|
|
1578
|
+
mediaTypes: {
|
|
1579
|
+
native: {
|
|
1580
|
+
...nativeOrtbRequest
|
|
1581
|
+
},
|
|
1582
|
+
},
|
|
1583
|
+
nativeOrtbRequest,
|
|
1584
|
+
bidId: 'test-bid-id',
|
|
1585
|
+
bidderRequestId: 'test-bidder-request-id',
|
|
1586
|
+
auctionId: 'test-auction-id'
|
|
1587
|
+
}];
|
|
1588
|
+
|
|
1589
|
+
bidRequest = spec.buildRequests(bidRequestConfigs, {refererInfo: {}})[0];
|
|
1590
|
+
|
|
1591
|
+
bidResponse = {
|
|
1592
|
+
seatbid: [{
|
|
1593
|
+
bid: [{
|
|
1594
|
+
impid: 'test-bid-id',
|
|
1595
|
+
price: 2,
|
|
1596
|
+
mtype: 4,
|
|
1597
|
+
adm: '{"ver": "1.2", "assets": [{"id": 1, "required": 1,"title": {"text": "OpenX (Title)"}}], "link": {"url": "https://www.openx.com/"}, "eventtrackers":[{"event":1,"method":1,"url":"http://example.com/impression"}]}',
|
|
1598
|
+
}]
|
|
1599
|
+
}],
|
|
1600
|
+
cur: 'AUS'
|
|
1601
|
+
};
|
|
1602
|
+
});
|
|
1603
|
+
|
|
1604
|
+
it('should return the proper mediaType', function () {
|
|
1605
|
+
bid = spec.interpretResponse({body: bidResponse}, bidRequest).bids[0];
|
|
1606
|
+
expect(bid.mediaType).to.equal(Object.keys(bidRequestConfigs[0].mediaTypes)[0]);
|
|
1607
|
+
});
|
|
1608
|
+
|
|
1609
|
+
it('should return parsed adm JSON in native.ortb response field', function () {
|
|
1610
|
+
bid = spec.interpretResponse({body: bidResponse}, bidRequest).bids[0];
|
|
1611
|
+
|
|
1612
|
+
expect(bid.native.ortb).to.deep.equal({
|
|
1613
|
+
ver: '1.2',
|
|
1614
|
+
assets: [{
|
|
1615
|
+
id: 1,
|
|
1616
|
+
required: 1,
|
|
1617
|
+
title: {text: 'OpenX (Title)'}
|
|
1618
|
+
}],
|
|
1619
|
+
link: {url: 'https://www.openx.com/'},
|
|
1620
|
+
eventtrackers: [{
|
|
1621
|
+
event: 1,
|
|
1622
|
+
method: 1,
|
|
1623
|
+
url: 'http://example.com/impression'
|
|
1624
|
+
}]
|
|
1625
|
+
});
|
|
1626
|
+
});
|
|
1627
|
+
});
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1402
1630
|
context('when the response contains FLEDGE interest groups config', function() {
|
|
1403
1631
|
let response;
|
|
1404
1632
|
|
|
@@ -571,13 +571,13 @@ describe('pubmatic analytics adapter', function () {
|
|
|
571
571
|
expect(data.pbv).to.equal('$prebid.version$' || '-1');
|
|
572
572
|
expect(data.s).to.be.an('array');
|
|
573
573
|
expect(data.s.length).to.equal(2);
|
|
574
|
+
expect(data.ffs).to.equal(1);
|
|
575
|
+
expect(data.fsrc).to.equal(2);
|
|
576
|
+
expect(data.fp).to.equal('pubmatic');
|
|
574
577
|
// slot 1
|
|
575
578
|
expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
|
|
576
579
|
expect(data.s[0].fskp).to.equal(0);
|
|
577
580
|
expect(data.s[0].sid).not.to.be.undefined;
|
|
578
|
-
expect(data.s[0].ffs).to.equal(1);
|
|
579
|
-
expect(data.s[0].fsrc).to.equal(2);
|
|
580
|
-
expect(data.s[0].fp).to.equal('pubmatic');
|
|
581
581
|
expect(data.s[0].sz).to.deep.equal(['640x480']);
|
|
582
582
|
expect(data.s[0].ps).to.be.an('array');
|
|
583
583
|
expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
|
|
@@ -609,9 +609,6 @@ describe('pubmatic analytics adapter', function () {
|
|
|
609
609
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
610
610
|
expect(data.s[1].fskp).to.equal(0);
|
|
611
611
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
612
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
613
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
614
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
615
612
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
616
613
|
expect(data.s[1].ps).to.be.an('array');
|
|
617
614
|
expect(data.s[1].ps.length).to.equal(1);
|
|
@@ -789,14 +786,14 @@ describe('pubmatic analytics adapter', function () {
|
|
|
789
786
|
expect(data.pbv).to.equal('$prebid.version$' || '-1');
|
|
790
787
|
expect(data.s).to.be.an('array');
|
|
791
788
|
expect(data.s.length).to.equal(2);
|
|
789
|
+
expect(data.ffs).to.equal(1);
|
|
790
|
+
expect(data.fsrc).to.equal(2);
|
|
791
|
+
expect(data.fp).to.equal('pubmatic');
|
|
792
792
|
expect(data.tgid).to.equal(0);
|
|
793
793
|
// slot 1
|
|
794
794
|
expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
|
|
795
795
|
expect(data.s[0].fskp).to.equal(0);
|
|
796
796
|
expect(data.s[0].sid).not.to.be.undefined;
|
|
797
|
-
expect(data.s[0].ffs).to.equal(1);
|
|
798
|
-
expect(data.s[0].fsrc).to.equal(2);
|
|
799
|
-
expect(data.s[0].fp).to.equal('pubmatic');
|
|
800
797
|
expect(data.s[0].sz).to.deep.equal(['640x480']);
|
|
801
798
|
expect(data.s[0].ps).to.be.an('array');
|
|
802
799
|
expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
|
|
@@ -915,15 +912,13 @@ describe('pubmatic analytics adapter', function () {
|
|
|
915
912
|
let request = requests[1]; // logger is executed late, trackers execute first
|
|
916
913
|
let data = getLoggerJsonFromRequest(request.requestBody);
|
|
917
914
|
expect(data.tgid).to.equal(0);// test group id should be an INT between 0-15 else set to 0
|
|
915
|
+
expect(data.ffs).to.equal(1);
|
|
916
|
+
expect(data.fsrc).to.equal(2);
|
|
917
|
+
expect(data.fp).to.equal('pubmatic');
|
|
918
|
+
|
|
918
919
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
919
920
|
expect(data.s[1].fskp).to.equal(0);
|
|
920
|
-
|
|
921
921
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
922
|
-
|
|
923
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
924
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
925
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
926
|
-
|
|
927
922
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
928
923
|
expect(data.s[1].ps).to.be.an('array');
|
|
929
924
|
expect(data.s[1].ps.length).to.equal(1);
|
|
@@ -1004,12 +999,13 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1004
999
|
expect(requests.length).to.equal(1); // 1 logger and 0 win-tracker
|
|
1005
1000
|
let request = requests[0];
|
|
1006
1001
|
let data = getLoggerJsonFromRequest(request.requestBody);
|
|
1002
|
+
expect(data.ffs).to.equal(1);
|
|
1003
|
+
expect(data.fsrc).to.equal(2);
|
|
1004
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1005
|
+
|
|
1007
1006
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
1008
1007
|
expect(data.s[1].fskp).to.equal(0);
|
|
1009
1008
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
1010
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
1011
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
1012
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
1013
1009
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
1014
1010
|
expect(data.s[1].ps).to.be.an('array');
|
|
1015
1011
|
expect(data.s[1].ps.length).to.equal(1);
|
|
@@ -1119,12 +1115,12 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1119
1115
|
let request = requests[2]; // logger is executed late, trackers execute first
|
|
1120
1116
|
expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
|
|
1121
1117
|
let data = getLoggerJsonFromRequest(request.requestBody);
|
|
1118
|
+
expect(data.ffs).to.equal(1);
|
|
1119
|
+
expect(data.fsrc).to.equal(2);
|
|
1120
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1122
1121
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
1123
1122
|
expect(data.s[1].fskp).to.equal(0);
|
|
1124
1123
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
1125
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
1126
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
1127
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
1128
1124
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
1129
1125
|
expect(data.s[1].ps).to.be.an('array');
|
|
1130
1126
|
expect(data.s[1].ps.length).to.equal(1);
|
|
@@ -1239,12 +1235,12 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1239
1235
|
let request = requests[2]; // logger is executed late, trackers execute first
|
|
1240
1236
|
expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
|
|
1241
1237
|
let data = getLoggerJsonFromRequest(request.requestBody);
|
|
1238
|
+
expect(data.ffs).to.equal(1);
|
|
1239
|
+
expect(data.fsrc).to.equal(2);
|
|
1240
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1242
1241
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
1243
1242
|
expect(data.s[1].fskp).to.equal(0);
|
|
1244
1243
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
1245
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
1246
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
1247
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
1248
1244
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
1249
1245
|
expect(data.s[1].ps).to.be.an('array');
|
|
1250
1246
|
expect(data.s[1].ps.length).to.equal(1);
|
|
@@ -1357,14 +1353,14 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1357
1353
|
let request = requests[1]; // logger is executed late, trackers execute first
|
|
1358
1354
|
expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
|
|
1359
1355
|
let data = getLoggerJsonFromRequest(request.requestBody);
|
|
1356
|
+
expect(data.ffs).to.equal(1);
|
|
1357
|
+
expect(data.fsrc).to.equal(2);
|
|
1358
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1360
1359
|
|
|
1361
1360
|
// slot 2
|
|
1362
1361
|
// Testing only for rejected bid as other scenarios will be covered under other TCs
|
|
1363
1362
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
1364
1363
|
expect(data.s[1].fskp).to.equal(0);
|
|
1365
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
1366
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
1367
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
1368
1364
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
1369
1365
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
1370
1366
|
expect(data.s[1].ps).to.be.an('array');
|
|
@@ -1438,13 +1434,13 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1438
1434
|
expect(data.ft).to.equal(1);
|
|
1439
1435
|
expect(data.s).to.be.an('array');
|
|
1440
1436
|
expect(data.s.length).to.equal(2);
|
|
1437
|
+
expect(data.ffs).to.equal(1);
|
|
1438
|
+
expect(data.fsrc).to.equal(2);
|
|
1439
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1441
1440
|
|
|
1442
1441
|
// slot 1
|
|
1443
1442
|
expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
|
|
1444
1443
|
expect(data.s[0].fskp).to.equal(0);
|
|
1445
|
-
expect(data.s[0].ffs).to.equal(1);
|
|
1446
|
-
expect(data.s[0].fsrc).to.equal(2);
|
|
1447
|
-
expect(data.s[0].fp).to.equal('pubmatic');
|
|
1448
1444
|
expect(data.s[0].sz).to.deep.equal(['640x480']);
|
|
1449
1445
|
expect(data.s[0].sid).not.to.be.undefined;
|
|
1450
1446
|
expect(data.s[0].ps).to.be.an('array');
|
|
@@ -1477,9 +1473,6 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1477
1473
|
// slot 2
|
|
1478
1474
|
expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
|
|
1479
1475
|
expect(data.s[1].fskp).to.equal(0);
|
|
1480
|
-
expect(data.s[1].ffs).to.equal(1);
|
|
1481
|
-
expect(data.s[1].fsrc).to.equal(2);
|
|
1482
|
-
expect(data.s[1].fp).to.equal('pubmatic');
|
|
1483
1476
|
expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
|
|
1484
1477
|
expect(data.s[1].sid).not.to.be.undefined;
|
|
1485
1478
|
expect(data.s[1].ps).to.be.an('array');
|
|
@@ -1570,13 +1563,13 @@ describe('pubmatic analytics adapter', function () {
|
|
|
1570
1563
|
expect(data.ft).to.equal(1);
|
|
1571
1564
|
expect(data.s).to.be.an('array');
|
|
1572
1565
|
expect(data.s.length).to.equal(2);
|
|
1566
|
+
expect(data.ffs).to.equal(1);
|
|
1567
|
+
expect(data.fsrc).to.equal(2);
|
|
1568
|
+
expect(data.fp).to.equal('pubmatic');
|
|
1573
1569
|
|
|
1574
1570
|
// slot 1
|
|
1575
1571
|
expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
|
|
1576
1572
|
expect(data.s[0].fskp).to.equal(0);
|
|
1577
|
-
expect(data.s[0].ffs).to.equal(1);
|
|
1578
|
-
expect(data.s[0].fsrc).to.equal(2);
|
|
1579
|
-
expect(data.s[0].fp).to.equal('pubmatic');
|
|
1580
1573
|
expect(data.s[0].sz).to.deep.equal(['640x480']);
|
|
1581
1574
|
expect(data.s[0].sid).not.to.be.undefined;
|
|
1582
1575
|
expect(data.s[0].ps).to.be.an('array');
|
|
@@ -2,8 +2,9 @@ import { expect } from 'chai';
|
|
|
2
2
|
import { spec } from 'modules/riseBidAdapter.js';
|
|
3
3
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
4
4
|
import { config } from 'src/config.js';
|
|
5
|
-
import {
|
|
5
|
+
import {BANNER, NATIVE, VIDEO} from '../../../src/mediaTypes.js';
|
|
6
6
|
import * as utils from 'src/utils.js';
|
|
7
|
+
import {decorateAdUnitsWithNativeParams} from '../../../src/native';
|
|
7
8
|
|
|
8
9
|
const ENDPOINT = 'https://hb.yellowblue.io/hb-multi';
|
|
9
10
|
const TEST_ENDPOINT = 'https://hb.yellowblue.io/hb-multi-test';
|
|
@@ -72,7 +73,6 @@ describe('riseAdapter', function () {
|
|
|
72
73
|
'plcmt': 1
|
|
73
74
|
}
|
|
74
75
|
},
|
|
75
|
-
'vastXml': '"<VAST version=\\\"2.0\\\">...</VAST>"'
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
'bidder': spec.code,
|
|
@@ -89,7 +89,59 @@ describe('riseAdapter', function () {
|
|
|
89
89
|
'banner': {
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
|
-
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
'bidder': spec.code,
|
|
95
|
+
'adUnitCode': 'adunit-code',
|
|
96
|
+
'sizes': [[300, 250]],
|
|
97
|
+
'params': {
|
|
98
|
+
'org': 'jdye8weeyirk00000001'
|
|
99
|
+
},
|
|
100
|
+
'bidId': '299ffc8cca0b87',
|
|
101
|
+
'loop': 1,
|
|
102
|
+
'bidderRequestId': '1144f487e563f9',
|
|
103
|
+
'auctionId': 'bfc420c3-8577-4568-9766-a8a935fb620d',
|
|
104
|
+
'mediaTypes': {
|
|
105
|
+
'banner': {
|
|
106
|
+
'sizes': [
|
|
107
|
+
[ 300, 250 ]
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
'video': {
|
|
111
|
+
'playerSize': [[640, 480]],
|
|
112
|
+
'context': 'instream',
|
|
113
|
+
'plcmt': 1
|
|
114
|
+
},
|
|
115
|
+
'native': {
|
|
116
|
+
'ortb': {
|
|
117
|
+
'assets': [
|
|
118
|
+
{
|
|
119
|
+
'id': 1,
|
|
120
|
+
'required': 1,
|
|
121
|
+
'img': {
|
|
122
|
+
'type': 3,
|
|
123
|
+
'w': 300,
|
|
124
|
+
'h': 200,
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
'id': 2,
|
|
129
|
+
'required': 1,
|
|
130
|
+
'title': {
|
|
131
|
+
'len': 80
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
'id': 3,
|
|
136
|
+
'required': 1,
|
|
137
|
+
'data': {
|
|
138
|
+
'type': 1
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
},
|
|
93
145
|
}
|
|
94
146
|
];
|
|
95
147
|
|
|
@@ -175,10 +227,10 @@ describe('riseAdapter', function () {
|
|
|
175
227
|
});
|
|
176
228
|
|
|
177
229
|
it('should send the correct mimes array', function () {
|
|
178
|
-
bidRequests[
|
|
230
|
+
bidRequests[0].mediaTypes.video.mimes = mimes;
|
|
179
231
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
180
|
-
expect(request.data.bids[
|
|
181
|
-
expect(request.data.bids[
|
|
232
|
+
expect(request.data.bids[0].mimes).to.be.an('array');
|
|
233
|
+
expect(request.data.bids[0].mimes).to.eql(['application/javascript', 'video/mp4', 'video/quicktime']);
|
|
182
234
|
});
|
|
183
235
|
|
|
184
236
|
it('should send the correct protocols array', function () {
|
|
@@ -194,12 +246,21 @@ describe('riseAdapter', function () {
|
|
|
194
246
|
expect(request.data.bids[0].sizes).to.equal(bidRequests[0].sizes)
|
|
195
247
|
expect(request.data.bids[1].sizes).to.be.an('array');
|
|
196
248
|
expect(request.data.bids[1].sizes).to.equal(bidRequests[1].sizes)
|
|
249
|
+
expect(request.data.bids[2].sizes).to.be.an('array');
|
|
250
|
+
expect(request.data.bids[2].sizes).to.eql(bidRequests[2].sizes)
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
it('should send nativeOrtbRequest in native bid request', function () {
|
|
254
|
+
decorateAdUnitsWithNativeParams(bidRequests)
|
|
255
|
+
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
256
|
+
assert.deepEqual(request.data.bids[2].nativeOrtbRequest, bidRequests[2].mediaTypes.native.ortb)
|
|
197
257
|
});
|
|
198
258
|
|
|
199
259
|
it('should send the correct media type', function () {
|
|
200
260
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
201
261
|
expect(request.data.bids[0].mediaType).to.equal(VIDEO)
|
|
202
262
|
expect(request.data.bids[1].mediaType).to.equal(BANNER)
|
|
263
|
+
expect(request.data.bids[2].mediaType.split(',')).to.include.members([VIDEO, NATIVE, BANNER])
|
|
203
264
|
});
|
|
204
265
|
|
|
205
266
|
it('should respect syncEnabled option', function() {
|
|
@@ -506,6 +567,28 @@ describe('riseAdapter', function () {
|
|
|
506
567
|
creativeId: 'creative-id',
|
|
507
568
|
nurl: 'http://example.com/win/1234',
|
|
508
569
|
mediaType: BANNER
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
cpm: 12.5,
|
|
573
|
+
width: 300,
|
|
574
|
+
height: 200,
|
|
575
|
+
requestId: '21e12606d47ba7',
|
|
576
|
+
adomain: ['abc.com'],
|
|
577
|
+
creativeId: 'creative-id',
|
|
578
|
+
nurl: 'http://example.com/win/1234',
|
|
579
|
+
mediaType: NATIVE,
|
|
580
|
+
native: {
|
|
581
|
+
body: 'Advertise with Rise',
|
|
582
|
+
clickUrl: 'https://risecodes.com',
|
|
583
|
+
cta: 'Start now',
|
|
584
|
+
image: {
|
|
585
|
+
width: 300,
|
|
586
|
+
height: 200,
|
|
587
|
+
url: 'https://sdk.streamrail.com/media/rise-image.jpg'
|
|
588
|
+
},
|
|
589
|
+
sponsoredBy: 'Rise',
|
|
590
|
+
title: 'Rise Ad Tech Solutions'
|
|
591
|
+
}
|
|
509
592
|
}]
|
|
510
593
|
};
|
|
511
594
|
|
|
@@ -545,10 +628,42 @@ describe('riseAdapter', function () {
|
|
|
545
628
|
ad: '"<img src=\"https://...\"/>"'
|
|
546
629
|
};
|
|
547
630
|
|
|
631
|
+
const expectedNativeResponse = {
|
|
632
|
+
requestId: '21e12606d47ba7',
|
|
633
|
+
cpm: 12.5,
|
|
634
|
+
currency: 'USD',
|
|
635
|
+
width: 300,
|
|
636
|
+
height: 200,
|
|
637
|
+
ttl: TTL,
|
|
638
|
+
creativeId: 'creative-id',
|
|
639
|
+
netRevenue: true,
|
|
640
|
+
nurl: 'http://example.com/win/1234',
|
|
641
|
+
mediaType: NATIVE,
|
|
642
|
+
meta: {
|
|
643
|
+
mediaType: NATIVE,
|
|
644
|
+
advertiserDomains: ['abc.com']
|
|
645
|
+
},
|
|
646
|
+
native: {
|
|
647
|
+
ortb: {
|
|
648
|
+
body: 'Advertise with Rise',
|
|
649
|
+
clickUrl: 'https://risecodes.com',
|
|
650
|
+
cta: 'Start now',
|
|
651
|
+
image: {
|
|
652
|
+
width: 300,
|
|
653
|
+
height: 200,
|
|
654
|
+
url: 'https://sdk.streamrail.com/media/rise-image.jpg',
|
|
655
|
+
},
|
|
656
|
+
sponsoredBy: 'Rise',
|
|
657
|
+
title: 'Rise Ad Tech Solutions'
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
};
|
|
661
|
+
|
|
548
662
|
it('should get correct bid response', function () {
|
|
549
663
|
const result = spec.interpretResponse({ body: response });
|
|
550
664
|
expect(result[0]).to.deep.equal(expectedVideoResponse);
|
|
551
665
|
expect(result[1]).to.deep.equal(expectedBannerResponse);
|
|
666
|
+
expect(result[2]).to.deep.equal(expectedNativeResponse);
|
|
552
667
|
});
|
|
553
668
|
|
|
554
669
|
it('video type should have vastXml key', function () {
|
|
@@ -560,6 +675,11 @@ describe('riseAdapter', function () {
|
|
|
560
675
|
const result = spec.interpretResponse({ body: response });
|
|
561
676
|
expect(result[1].ad).to.equal(expectedBannerResponse.ad)
|
|
562
677
|
});
|
|
678
|
+
|
|
679
|
+
it('native type should have native key', function () {
|
|
680
|
+
const result = spec.interpretResponse({ body: response });
|
|
681
|
+
expect(result[2].native).to.eql(expectedNativeResponse.native)
|
|
682
|
+
});
|
|
563
683
|
})
|
|
564
684
|
|
|
565
685
|
describe('getUserSyncs', function() {
|