prebid.js 7.18.0 → 7.20.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/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- 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/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/categoryTranslation.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -0
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dchain.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +9 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/dianomiBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fpd.js +1 -0
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/googleAnalyticsAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.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/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.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 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mass.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/multibid.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +198 -194
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.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/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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/sigmoidAnalyticsAdapter.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/sonobiAnalyticsAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/staqAnalyticsAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -0
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/libraries/fpd/sua.js +98 -0
- package/modules/.submodules.json +1 -0
- package/modules/adfBidAdapter.js +1 -1
- package/modules/adkernelAdnBidAdapter.js +1 -0
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adqueryIdSystem.js +8 -8
- package/modules/adxcgBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/aolBidAdapter.js +25 -2
- package/modules/appnexusBidAdapter.js +19 -2
- package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
- package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
- package/modules/categoryTranslation.js +4 -4
- package/modules/cleanioRtdProvider.js +3 -4
- package/modules/colossussspBidAdapter.js +2 -1
- package/modules/connectIdSystem.js +16 -1
- package/modules/conversantAnalyticsAdapter.js +560 -0
- package/modules/conversantAnalyticsAdapter.md +47 -0
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/currency.js +11 -11
- package/modules/dchain.js +2 -2
- package/modules/debugging/bidInterceptor.js +2 -2
- package/modules/debugging/debugging.js +10 -2
- package/modules/debugging/legacy.js +2 -2
- package/modules/dgkeywordRtdProvider.js +21 -3
- package/modules/dianomiBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +33 -14
- package/modules/eplanningBidAdapter.js +48 -2
- package/modules/finativeBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +187 -117
- package/modules/improvedigitalBidAdapter.js +2 -2
- package/modules/ixBidAdapter.js +94 -23
- package/modules/liveIntentIdSystem.js +39 -5
- package/modules/lotamePanoramaIdSystem.js +10 -6
- package/modules/magniteAnalyticsAdapter.js +902 -0
- package/modules/magniteAnalyticsAdapter.md +18 -0
- package/modules/mass.js +2 -2
- package/modules/mediakeysBidAdapter.js +6 -1
- package/modules/mediakeysBidAdapter.md +50 -40
- package/modules/multibid/index.js +5 -5
- package/modules/nativoBidAdapter.js +1 -1
- package/modules/pixfutureBidAdapter.js +46 -15
- package/modules/prebidServerBidAdapter/index.js +54 -19
- package/modules/priceFloors.js +8 -22
- package/modules/readpeakBidAdapter.js +1 -1
- package/modules/rubiconAnalyticsAdapter.js +14 -9
- package/modules/rubiconBidAdapter.js +2 -3
- package/modules/seedingAllianceBidAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +5 -5
- package/modules/talkadsBidAdapter.js +1 -0
- package/modules/teadsIdSystem.js +234 -0
- package/modules/teadsIdSystem.md +22 -0
- package/modules/truereachBidAdapter.js +1 -0
- package/modules/ttdBidAdapter.js +1 -1
- package/modules/userId/index.js +21 -14
- package/modules/vrtcalBidAdapter.js +7 -1
- package/modules/vuukleBidAdapter.js +34 -3
- package/modules/yahoosspBidAdapter.js +4 -2
- package/modules/yandexBidAdapter.js +31 -8
- package/package.json +2 -2
- package/src/adapterManager.js +2 -4
- package/src/adapters/bidderFactory.js +13 -11
- package/src/auction.js +140 -69
- package/src/constants.json +8 -0
- package/src/cpmBucketManager.js +22 -3
- package/src/native.js +1 -5
- package/src/prebid.js +5 -6
- package/src/targeting.js +31 -14
- package/test/fixtures/fixtures.js +2 -1
- package/test/spec/auctionmanager_spec.js +109 -21
- package/test/spec/cpmBucketManager_spec.js +239 -177
- package/test/spec/fpd/sua_spec.js +244 -0
- package/test/spec/modules/adfBidAdapter_spec.js +2 -3
- package/test/spec/modules/adqueryIdSystem_spec.js +0 -2
- package/test/spec/modules/adxcgBidAdapter_spec.js +2 -3
- package/test/spec/modules/amxBidAdapter_spec.js +3 -2
- package/test/spec/modules/aolBidAdapter_spec.js +42 -9
- package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
- package/test/spec/modules/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
- package/test/spec/modules/connectIdSystem_spec.js +20 -0
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
- package/test/spec/modules/currency_spec.js +14 -6
- package/test/spec/modules/debugging_mod_spec.js +9 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +83 -1
- package/test/spec/modules/dianomiBidAdapter_spec.js +2 -3
- package/test/spec/modules/enrichmentFpdModule_spec.js +50 -7
- package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
- package/test/spec/modules/fpdModule_spec.js +9 -0
- package/test/spec/modules/gridBidAdapter_spec.js +87 -31
- package/test/spec/modules/ixBidAdapter_spec.js +221 -2
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +62 -8
- package/test/spec/modules/liveIntentIdSystem_spec.js +62 -8
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
- package/test/spec/modules/mediakeysBidAdapter_spec.js +20 -3
- package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
- package/test/spec/modules/prebidServerBidAdapter_spec.js +202 -15
- package/test/spec/modules/priceFloors_spec.js +5 -5
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/seedtagBidAdapter_spec.js +15 -18
- package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
- package/test/spec/modules/taboolaBidAdapter_spec.js +112 -13
- package/test/spec/modules/teadsIdSystem_spec.js +271 -0
- package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
- package/test/spec/modules/userId_spec.js +39 -4
- package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
- package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +48 -1
- package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
- package/test/spec/native_spec.js +5 -0
- package/test/spec/unit/core/bidderFactory_spec.js +66 -11
- package/test/spec/unit/core/targeting_spec.js +28 -9
- package/test/spec/unit/pbjs_api_spec.js +48 -2
|
@@ -351,6 +351,11 @@ describe('currency', function () {
|
|
|
351
351
|
});
|
|
352
352
|
|
|
353
353
|
describe('currency.addBidResponseDecorator', function () {
|
|
354
|
+
let reject;
|
|
355
|
+
beforeEach(() => {
|
|
356
|
+
reject = sinon.stub().returns({status: 'rejected'});
|
|
357
|
+
});
|
|
358
|
+
|
|
354
359
|
it('should leave bid at 1 when currency support is not enabled and fromCurrency is USD', function () {
|
|
355
360
|
setConfig({});
|
|
356
361
|
var bid = makeBid({ 'cpm': 1, 'currency': 'USD' });
|
|
@@ -368,8 +373,9 @@ describe('currency', function () {
|
|
|
368
373
|
var innerBid;
|
|
369
374
|
addBidResponseHook(function(adCodeId, bid) {
|
|
370
375
|
innerBid = bid;
|
|
371
|
-
}, 'elementId', bid);
|
|
372
|
-
expect(innerBid.
|
|
376
|
+
}, 'elementId', bid, reject);
|
|
377
|
+
expect(innerBid.status).to.equal('rejected');
|
|
378
|
+
expect(reject.calledOnce).to.be.true;
|
|
373
379
|
});
|
|
374
380
|
|
|
375
381
|
it('should not buffer bid when currency is already in desired currency', function () {
|
|
@@ -395,8 +401,9 @@ describe('currency', function () {
|
|
|
395
401
|
var innerBid;
|
|
396
402
|
addBidResponseHook(function(adCodeId, bid) {
|
|
397
403
|
innerBid = bid;
|
|
398
|
-
}, 'elementId', bid);
|
|
399
|
-
expect(innerBid.
|
|
404
|
+
}, 'elementId', bid, reject);
|
|
405
|
+
expect(innerBid.status).to.equal('rejected');
|
|
406
|
+
expect(reject.calledOnce).to.be.true;
|
|
400
407
|
});
|
|
401
408
|
|
|
402
409
|
it('should result in NO_BID when adServerCurrency is not supported in file', function () {
|
|
@@ -407,8 +414,9 @@ describe('currency', function () {
|
|
|
407
414
|
var innerBid;
|
|
408
415
|
addBidResponseHook(function(adCodeId, bid) {
|
|
409
416
|
innerBid = bid;
|
|
410
|
-
}, 'elementId', bid);
|
|
411
|
-
expect(innerBid.
|
|
417
|
+
}, 'elementId', bid, reject);
|
|
418
|
+
expect(innerBid.status).to.equal('rejected');
|
|
419
|
+
expect(reject.calledOnce).to.be.true;
|
|
412
420
|
});
|
|
413
421
|
|
|
414
422
|
it('should return 1 when currency support is enabled and same currency code is requested as is set to adServerCurrency', function () {
|
|
@@ -273,6 +273,15 @@ describe('bid interceptor', () => {
|
|
|
273
273
|
});
|
|
274
274
|
});
|
|
275
275
|
|
|
276
|
+
describe('Debugging config', () => {
|
|
277
|
+
it('should behave gracefully when sessionStorage throws', () => {
|
|
278
|
+
const logError = sinon.stub();
|
|
279
|
+
const getStorage = () => { throw new Error() };
|
|
280
|
+
getConfig({enabled: false}, {getStorage, logger: {logError}, hook});
|
|
281
|
+
expect(logError.called).to.be.true;
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
|
|
276
285
|
describe('bidderBidInterceptor', () => {
|
|
277
286
|
let next, interceptBids, onCompletion, interceptResult, done, addBid;
|
|
278
287
|
|
|
@@ -302,7 +302,7 @@ describe('Digital Garage Keyword Module', function () {
|
|
|
302
302
|
JSON.stringify(DUMMY_RESPONSE)
|
|
303
303
|
);
|
|
304
304
|
}
|
|
305
|
-
},
|
|
305
|
+
}, 50);
|
|
306
306
|
});
|
|
307
307
|
it('should get profiles ok(200).', function (done) {
|
|
308
308
|
let pbjs = cloneDeep(config);
|
|
@@ -347,5 +347,87 @@ describe('Digital Garage Keyword Module', function () {
|
|
|
347
347
|
JSON.stringify(DUMMY_RESPONSE)
|
|
348
348
|
);
|
|
349
349
|
});
|
|
350
|
+
it('change url.', function (done) {
|
|
351
|
+
const dummyUrl = 'https://www.test.com/test'
|
|
352
|
+
let pbjs = cloneDeep(config);
|
|
353
|
+
pbjs.adUnits = cloneDeep(AD_UNITS);
|
|
354
|
+
if (IGNORE_SET_ORTB2) {
|
|
355
|
+
pbjs._ignoreSetOrtb2 = true;
|
|
356
|
+
}
|
|
357
|
+
let moduleConfig = cloneDeep(DEF_CONFIG);
|
|
358
|
+
moduleConfig.params.url = dummyUrl;
|
|
359
|
+
dgRtd.getDgKeywordsAndSet(
|
|
360
|
+
pbjs,
|
|
361
|
+
() => {
|
|
362
|
+
const url = dgRtd.getProfileApiUrl(dummyUrl);
|
|
363
|
+
expect(url.indexOf('?fpid=') === -1).to.equal(true);
|
|
364
|
+
expect(url).to.equal(server.requests[0].url);
|
|
365
|
+
done();
|
|
366
|
+
},
|
|
367
|
+
moduleConfig,
|
|
368
|
+
null
|
|
369
|
+
);
|
|
370
|
+
const request = server.requests[0];
|
|
371
|
+
request.respond(
|
|
372
|
+
200,
|
|
373
|
+
DUMMY_RESPONSE_HEADER,
|
|
374
|
+
JSON.stringify(DUMMY_RESPONSE)
|
|
375
|
+
);
|
|
376
|
+
});
|
|
377
|
+
it('add fpid stored in local strage.', function (done) {
|
|
378
|
+
const uuid = 'uuid_abcdefghijklmnopqrstuvwxyz';
|
|
379
|
+
let pbjs = cloneDeep(config);
|
|
380
|
+
pbjs.adUnits = cloneDeep(AD_UNITS);
|
|
381
|
+
if (IGNORE_SET_ORTB2) {
|
|
382
|
+
pbjs._ignoreSetOrtb2 = true;
|
|
383
|
+
}
|
|
384
|
+
let moduleConfig = cloneDeep(DEF_CONFIG);
|
|
385
|
+
window.localStorage.setItem('ope_fpid', uuid);
|
|
386
|
+
dgRtd.getDgKeywordsAndSet(
|
|
387
|
+
pbjs,
|
|
388
|
+
() => {
|
|
389
|
+
const url = dgRtd.getProfileApiUrl(null);
|
|
390
|
+
expect(url.indexOf(uuid) > 0).to.equal(true);
|
|
391
|
+
expect(url).to.equal(server.requests[0].url);
|
|
392
|
+
done();
|
|
393
|
+
},
|
|
394
|
+
moduleConfig,
|
|
395
|
+
null
|
|
396
|
+
);
|
|
397
|
+
const request = server.requests[0];
|
|
398
|
+
request.respond(
|
|
399
|
+
200,
|
|
400
|
+
DUMMY_RESPONSE_HEADER,
|
|
401
|
+
JSON.stringify(DUMMY_RESPONSE)
|
|
402
|
+
);
|
|
403
|
+
});
|
|
404
|
+
it('disable fpid stored in local strage.', function (done) {
|
|
405
|
+
const uuid = 'uuid_abcdefghijklmnopqrstuvwxyz';
|
|
406
|
+
let pbjs = cloneDeep(config);
|
|
407
|
+
pbjs.adUnits = cloneDeep(AD_UNITS);
|
|
408
|
+
if (IGNORE_SET_ORTB2) {
|
|
409
|
+
pbjs._ignoreSetOrtb2 = true;
|
|
410
|
+
}
|
|
411
|
+
let moduleConfig = cloneDeep(DEF_CONFIG);
|
|
412
|
+
window.localStorage.setItem('ope_fpid', uuid);
|
|
413
|
+
moduleConfig.params.disableReadFpid = true;
|
|
414
|
+
dgRtd.getDgKeywordsAndSet(
|
|
415
|
+
pbjs,
|
|
416
|
+
() => {
|
|
417
|
+
const url = dgRtd.getProfileApiUrl(null, moduleConfig.params.disableReadFpid);
|
|
418
|
+
expect(url.indexOf(uuid) > 0).to.equal(false);
|
|
419
|
+
expect(url).to.equal(server.requests[0].url);
|
|
420
|
+
done();
|
|
421
|
+
},
|
|
422
|
+
moduleConfig,
|
|
423
|
+
null
|
|
424
|
+
);
|
|
425
|
+
const request = server.requests[0];
|
|
426
|
+
request.respond(
|
|
427
|
+
200,
|
|
428
|
+
DUMMY_RESPONSE_HEADER,
|
|
429
|
+
JSON.stringify(DUMMY_RESPONSE)
|
|
430
|
+
);
|
|
431
|
+
});
|
|
350
432
|
});
|
|
351
433
|
});
|
|
@@ -159,14 +159,13 @@ describe('Dianomi adapter', () => {
|
|
|
159
159
|
{
|
|
160
160
|
bidId: 'bidId',
|
|
161
161
|
params: { smartadId: 1234 },
|
|
162
|
-
transactionId: 'transactionId',
|
|
163
162
|
},
|
|
164
163
|
];
|
|
165
164
|
let request = JSON.parse(
|
|
166
|
-
spec.buildRequests(validBidRequests, { refererInfo: { page: 'page' } }).data
|
|
165
|
+
spec.buildRequests(validBidRequests, { refererInfo: { page: 'page' }, auctionId: 'tid' }).data
|
|
167
166
|
);
|
|
168
167
|
|
|
169
|
-
assert.equal(request.source.tid,
|
|
168
|
+
assert.equal(request.source.tid, 'tid');
|
|
170
169
|
assert.equal(request.source.fd, 1);
|
|
171
170
|
});
|
|
172
171
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { getRefererInfo } from 'src/refererDetection.js';
|
|
3
|
-
import {
|
|
3
|
+
import {processFpd, coreStorage, resetEnrichments} from 'modules/enrichmentFpdModule.js';
|
|
4
|
+
import * as enrichmentModule from 'modules/enrichmentFpdModule.js';
|
|
5
|
+
import {GreedyPromise} from '../../../src/utils/promise.js';
|
|
4
6
|
|
|
5
7
|
describe('the first party data enrichment module', function() {
|
|
6
8
|
let width;
|
|
@@ -11,6 +13,8 @@ describe('the first party data enrichment module', function() {
|
|
|
11
13
|
let coreStorageStub;
|
|
12
14
|
let canonical;
|
|
13
15
|
let keywords;
|
|
16
|
+
let lowEntropySuaStub;
|
|
17
|
+
let highEntropySuaStub;
|
|
14
18
|
|
|
15
19
|
before(function() {
|
|
16
20
|
canonical = document.createElement('link');
|
|
@@ -20,6 +24,7 @@ describe('the first party data enrichment module', function() {
|
|
|
20
24
|
});
|
|
21
25
|
|
|
22
26
|
beforeEach(function() {
|
|
27
|
+
resetEnrichments();
|
|
23
28
|
querySelectorStub = sinon.stub(window.top.document, 'querySelector');
|
|
24
29
|
querySelectorStub.withArgs("link[rel='canonical']").returns(canonical);
|
|
25
30
|
querySelectorStub.withArgs("meta[name='keywords']").returns(keywords);
|
|
@@ -35,6 +40,8 @@ describe('the first party data enrichment module', function() {
|
|
|
35
40
|
.returns(null) // co.uk
|
|
36
41
|
.onSecondCall()
|
|
37
42
|
.returns('writeable'); // domain.co.uk
|
|
43
|
+
lowEntropySuaStub = sinon.stub(enrichmentModule.sua, 'le').callsFake(() => null);
|
|
44
|
+
highEntropySuaStub = sinon.stub(enrichmentModule.sua, 'he').callsFake(() => GreedyPromise.resolve());
|
|
38
45
|
});
|
|
39
46
|
|
|
40
47
|
afterEach(function() {
|
|
@@ -46,13 +53,21 @@ describe('the first party data enrichment module', function() {
|
|
|
46
53
|
canonical.rel = 'canonical';
|
|
47
54
|
keywords = document.createElement('meta');
|
|
48
55
|
keywords.name = 'keywords';
|
|
56
|
+
lowEntropySuaStub.restore();
|
|
57
|
+
highEntropySuaStub.restore();
|
|
49
58
|
});
|
|
50
59
|
|
|
60
|
+
function syncProcessFpd(fpdConf, ortb2Fragments) {
|
|
61
|
+
let result;
|
|
62
|
+
processFpd(fpdConf, ortb2Fragments).then((res) => { result = res; });
|
|
63
|
+
return result;
|
|
64
|
+
};
|
|
65
|
+
|
|
51
66
|
it('adds ref and device values', function() {
|
|
52
67
|
width = 800;
|
|
53
68
|
height = 500;
|
|
54
69
|
|
|
55
|
-
let validated =
|
|
70
|
+
let validated = syncProcessFpd({}, {}).global;
|
|
56
71
|
|
|
57
72
|
const {ref, page, domain} = getRefererInfo();
|
|
58
73
|
expect(validated.site.ref).to.equal(ref || undefined);
|
|
@@ -67,7 +82,7 @@ describe('the first party data enrichment module', function() {
|
|
|
67
82
|
height = 500;
|
|
68
83
|
canonical.href = 'https://www.subdomain.domain.co.uk/path?query=12345';
|
|
69
84
|
|
|
70
|
-
let validated =
|
|
85
|
+
let validated = syncProcessFpd({}, {}).global;
|
|
71
86
|
|
|
72
87
|
expect(validated.site.ref).to.equal(getRefererInfo().ref || undefined);
|
|
73
88
|
expect(validated.site.page).to.equal('https://www.subdomain.domain.co.uk/path?query=12345');
|
|
@@ -82,7 +97,7 @@ describe('the first party data enrichment module', function() {
|
|
|
82
97
|
height = 500;
|
|
83
98
|
keywords.content = 'value1,value2,value3';
|
|
84
99
|
|
|
85
|
-
let validated =
|
|
100
|
+
let validated = syncProcessFpd({}, {}).global;
|
|
86
101
|
|
|
87
102
|
expect(validated.site.keywords).to.equal('value1,value2,value3');
|
|
88
103
|
});
|
|
@@ -91,7 +106,7 @@ describe('the first party data enrichment module', function() {
|
|
|
91
106
|
width = 800;
|
|
92
107
|
height = 500;
|
|
93
108
|
|
|
94
|
-
let validated =
|
|
109
|
+
let validated = syncProcessFpd({}, {global: {device: {w: 1200, h: 700}, site: {ref: 'https://someUrl.com', page: 'test.com'}}}).global;
|
|
95
110
|
|
|
96
111
|
expect(validated.site.ref).to.equal('https://someUrl.com');
|
|
97
112
|
expect(validated.site.page).to.equal('test.com');
|
|
@@ -99,16 +114,44 @@ describe('the first party data enrichment module', function() {
|
|
|
99
114
|
expect(validated.site.keywords).to.be.undefined;
|
|
100
115
|
});
|
|
101
116
|
|
|
117
|
+
it('does not run enrichments again on the second call', () => {
|
|
118
|
+
width = 1;
|
|
119
|
+
height = 2;
|
|
120
|
+
const first = syncProcessFpd({}, {}).global;
|
|
121
|
+
width = 3;
|
|
122
|
+
const second = syncProcessFpd({}, {}).global;
|
|
123
|
+
expect(first).to.eql(second);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
describe('device.sua', () => {
|
|
127
|
+
it('does not set device.sua if resolved sua is null', () => {
|
|
128
|
+
const sua = syncProcessFpd({}, {}).global.device?.sua;
|
|
129
|
+
expect(sua).to.not.exist;
|
|
130
|
+
});
|
|
131
|
+
it('uses low entropy values if uaHints is []', () => {
|
|
132
|
+
lowEntropySuaStub.callsFake(() => ({mock: 'sua'}));
|
|
133
|
+
const sua = syncProcessFpd({uaHints: []}, {}).global.device.sua;
|
|
134
|
+
expect(sua).to.eql({mock: 'sua'});
|
|
135
|
+
});
|
|
136
|
+
it('uses high entropy values otherwise', () => {
|
|
137
|
+
highEntropySuaStub.callsFake((hints) => GreedyPromise.resolve({hints}));
|
|
138
|
+
const sua = syncProcessFpd({uaHints: ['h1', 'h2']}, {}).global.device.sua;
|
|
139
|
+
expect(sua).to.eql({hints: ['h1', 'h2']});
|
|
140
|
+
})
|
|
141
|
+
})
|
|
142
|
+
|
|
102
143
|
it('should store a reference to gpc witin ortb2.regs.ext if it has been enabled', function() {
|
|
103
144
|
let validated;
|
|
104
145
|
width = 800;
|
|
105
146
|
height = 500;
|
|
106
147
|
|
|
107
|
-
validated =
|
|
148
|
+
validated = syncProcessFpd({}, {}).global;
|
|
108
149
|
expect(validated.regs).to.equal(undefined);
|
|
109
150
|
|
|
151
|
+
resetEnrichments();
|
|
152
|
+
|
|
110
153
|
const globalPrivacyControlStub = sinon.stub(window, 'navigator').value({globalPrivacyControl: true});
|
|
111
|
-
validated =
|
|
154
|
+
validated = syncProcessFpd({}, {}).global;
|
|
112
155
|
expect(validated.regs.ext.gpc).to.equal(1);
|
|
113
156
|
globalPrivacyControlStub.restore();
|
|
114
157
|
});
|
|
@@ -7,6 +7,7 @@ import * as utils from 'src/utils.js';
|
|
|
7
7
|
import {hook} from '../../../src/hook.js';
|
|
8
8
|
import {getGlobal} from '../../../src/prebidGlobal.js';
|
|
9
9
|
import { makeSlot } from '../integration/faker/googletag.js';
|
|
10
|
+
import {BANNER, VIDEO} from '../../../src/mediaTypes.js';
|
|
10
11
|
|
|
11
12
|
describe('E-Planning Adapter', function () {
|
|
12
13
|
const adapter = newBidder('spec');
|
|
@@ -19,6 +20,7 @@ describe('E-Planning Adapter', function () {
|
|
|
19
20
|
const CLEAN_ADUNIT_CODE2 = '300x250_1';
|
|
20
21
|
const CLEAN_ADUNIT_CODE = '300x250_0';
|
|
21
22
|
const CLEAN_ADUNIT_CODE_ML = 'adunitco_de';
|
|
23
|
+
const CLEAN_ADUNIT_CODE_VAST = 'VIDEO_300x250_0';
|
|
22
24
|
const BID_ID = '123456789';
|
|
23
25
|
const BID_ID2 = '987654321';
|
|
24
26
|
const BID_ID3 = '998877665';
|
|
@@ -30,6 +32,9 @@ describe('E-Planning Adapter', function () {
|
|
|
30
32
|
const CRID = '1234567890';
|
|
31
33
|
const TEST_ISV = 'leles.e-planning.net';
|
|
32
34
|
const ADOMAIN = 'adomain.com';
|
|
35
|
+
const ADM_VAST = '<VAST version=\"2.0\">\n<Ad id=\"602833\">\n<Wrapper>\n<AdSystem>Acudeo Compatible</AdSystem>\n<VASTAdTagURI>\nhttp://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml\n</VASTAdTagURI>\n<Impression><![CDATA[https://cndigrazia34.devel.e-planning.net:444/eli/4/19911d/6584303d5d0da8bc?i=0123456789012345&fi=0123456789abcdef&pb=<% EXCHANGE_EPBID_49 %>&nfc=1&S=<% SERVER_ID %>&rnd=733663791&bk=0123456789abcdef]]></Impression><Impression>http://myTrackingURL/wrapper/impression</Impression>\n<Creatives>\n<Creative AdID=\"602833\">\n<Linear>\n<TrackingEvents></TrackingEvents>\n</Linear>\n</Creative>\n<Creative AdID=\"602833-Companion\">\n<CompanionAds>\n<Companion width=\"300\" height=\"250\">\n<StaticResource creativeType=\"image/jpeg\">\nhttp://demo.tremormedia.com/proddev/vast/300x250_banner1.jpg\n</StaticResource>\n<TrackingEvents>\n<Tracking event=\"creativeView\">\nhttp://myTrackingURL/wrapper/firstCompanionCreativeView\n</Tracking>\n</TrackingEvents>\n<CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>\n</Companion>\n<Companion width=\"728\" height=\"90\">\n<StaticResource creativeType=\"image/jpeg\">\nhttp://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg\n</StaticResource>\n<CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>\n</Companion>\n</CompanionAds>\n</Creative>\n</Creatives>\n</Wrapper>\n</Ad>\n</VAST>\n';
|
|
36
|
+
const ADM_VAST_VV_1 = '<VideoAdServingTemplate xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"vast_loose.xsd\">test</VideoAdServingTemplate>';
|
|
37
|
+
const DEFAULT_SIZE_VAST = '640x480';
|
|
33
38
|
const validBid = {
|
|
34
39
|
'bidder': 'eplanning',
|
|
35
40
|
'bidId': BID_ID,
|
|
@@ -69,6 +74,110 @@ describe('E-Planning Adapter', function () {
|
|
|
69
74
|
},
|
|
70
75
|
'sizes': [[300, 250], [300, 600]],
|
|
71
76
|
};
|
|
77
|
+
const validBidSpaceOutstream = {
|
|
78
|
+
'bidder': 'eplanning',
|
|
79
|
+
'bidId': BID_ID,
|
|
80
|
+
'params': {
|
|
81
|
+
'ci': CI,
|
|
82
|
+
'sn': SN,
|
|
83
|
+
},
|
|
84
|
+
'mediaTypes': {
|
|
85
|
+
'video': {
|
|
86
|
+
'context': 'outstream',
|
|
87
|
+
'playerSize': [300, 600],
|
|
88
|
+
'mimes': ['video/mp4'],
|
|
89
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
90
|
+
'playbackmethod': [2],
|
|
91
|
+
'skip': 1
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
const validBidOutstreamNoSize = {
|
|
96
|
+
'bidder': 'eplanning',
|
|
97
|
+
'bidId': BID_ID,
|
|
98
|
+
'params': {
|
|
99
|
+
'ci': CI,
|
|
100
|
+
'sn': SN,
|
|
101
|
+
},
|
|
102
|
+
'mediaTypes': {
|
|
103
|
+
'video': {
|
|
104
|
+
'context': 'outstream',
|
|
105
|
+
'mimes': ['video/mp4'],
|
|
106
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
107
|
+
'playbackmethod': [2],
|
|
108
|
+
'skip': 1
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
const validBidOutstreamNSizes = {
|
|
113
|
+
'bidder': 'eplanning',
|
|
114
|
+
'bidId': BID_ID,
|
|
115
|
+
'params': {
|
|
116
|
+
'ci': CI,
|
|
117
|
+
'sn': SN,
|
|
118
|
+
},
|
|
119
|
+
'mediaTypes': {
|
|
120
|
+
'video': {
|
|
121
|
+
'context': 'outstream',
|
|
122
|
+
'playerSize': [[300, 600], [400, 500], [500, 500]],
|
|
123
|
+
'mimes': ['video/mp4'],
|
|
124
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
125
|
+
'playbackmethod': [2],
|
|
126
|
+
'skip': 1
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
const bidOutstreamInvalidSizes = {
|
|
131
|
+
'bidder': 'eplanning',
|
|
132
|
+
'bidId': BID_ID,
|
|
133
|
+
'params': {
|
|
134
|
+
'ci': CI,
|
|
135
|
+
'sn': SN,
|
|
136
|
+
},
|
|
137
|
+
'mediaTypes': {
|
|
138
|
+
'video': {
|
|
139
|
+
'context': 'outstream',
|
|
140
|
+
'playerSize': 'invalidSize',
|
|
141
|
+
'mimes': ['video/mp4'],
|
|
142
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
143
|
+
'playbackmethod': [2],
|
|
144
|
+
'skip': 1
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
const validBidSpaceInstream = {
|
|
149
|
+
'bidder': 'eplanning',
|
|
150
|
+
'bidId': BID_ID,
|
|
151
|
+
'params': {
|
|
152
|
+
'ci': CI,
|
|
153
|
+
'sn': SN,
|
|
154
|
+
},
|
|
155
|
+
'mediaTypes': {
|
|
156
|
+
'video': {
|
|
157
|
+
'context': 'instream',
|
|
158
|
+
'mimes': ['video/mp4'],
|
|
159
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
160
|
+
'playbackmethod': [2],
|
|
161
|
+
'skip': 1
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
const validBidSpaceVastNoContext = {
|
|
166
|
+
'bidder': 'eplanning',
|
|
167
|
+
'bidId': BID_ID,
|
|
168
|
+
'params': {
|
|
169
|
+
'ci': CI,
|
|
170
|
+
'sn': SN,
|
|
171
|
+
},
|
|
172
|
+
'mediaTypes': {
|
|
173
|
+
'video': {
|
|
174
|
+
'mimes': ['video/mp4'],
|
|
175
|
+
'protocols': [1, 2, 3, 4, 5, 6],
|
|
176
|
+
'playbackmethod': [2],
|
|
177
|
+
'skip': 1
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
};
|
|
72
181
|
const validBidView = {
|
|
73
182
|
'bidder': 'eplanning',
|
|
74
183
|
'bidId': BID_ID,
|
|
@@ -145,6 +254,14 @@ describe('E-Planning Adapter', function () {
|
|
|
145
254
|
}
|
|
146
255
|
}
|
|
147
256
|
};
|
|
257
|
+
const validBidNoSize = {
|
|
258
|
+
'bidder': 'eplanning',
|
|
259
|
+
'bidId': BID_ID,
|
|
260
|
+
'params': {
|
|
261
|
+
'ci': CI,
|
|
262
|
+
'sn': SN,
|
|
263
|
+
}
|
|
264
|
+
};
|
|
148
265
|
const response = {
|
|
149
266
|
body: {
|
|
150
267
|
'sI': {
|
|
@@ -176,6 +293,68 @@ describe('E-Planning Adapter', function () {
|
|
|
176
293
|
]
|
|
177
294
|
}
|
|
178
295
|
};
|
|
296
|
+
const responseVast = {
|
|
297
|
+
body: {
|
|
298
|
+
'sI': {
|
|
299
|
+
'k': '12345'
|
|
300
|
+
},
|
|
301
|
+
'sec': {
|
|
302
|
+
'k': 'ROS'
|
|
303
|
+
},
|
|
304
|
+
'sp': [{
|
|
305
|
+
'k': CLEAN_ADUNIT_CODE_VAST,
|
|
306
|
+
'a': [{
|
|
307
|
+
'adm': ADM_VAST,
|
|
308
|
+
'id': '7854abc56248f874',
|
|
309
|
+
'i': I_ID,
|
|
310
|
+
'fi': '7854abc56248f872',
|
|
311
|
+
'ip': '45621afd87462104',
|
|
312
|
+
'w': W,
|
|
313
|
+
'h': H,
|
|
314
|
+
'crid': CRID,
|
|
315
|
+
'pr': CPM
|
|
316
|
+
}],
|
|
317
|
+
}],
|
|
318
|
+
'cs': [
|
|
319
|
+
'http://a-sync-url.com/',
|
|
320
|
+
{
|
|
321
|
+
'u': 'http://another-sync-url.com/test.php?&partner=123456&endpoint=us-east',
|
|
322
|
+
'ifr': true
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
const responseVastVV1 = {
|
|
328
|
+
body: {
|
|
329
|
+
'sI': {
|
|
330
|
+
'k': '12345'
|
|
331
|
+
},
|
|
332
|
+
'sec': {
|
|
333
|
+
'k': 'ROS'
|
|
334
|
+
},
|
|
335
|
+
'sp': [{
|
|
336
|
+
'k': CLEAN_ADUNIT_CODE_VAST,
|
|
337
|
+
'a': [{
|
|
338
|
+
'adm': ADM_VAST_VV_1,
|
|
339
|
+
'id': '7854abc56248f874',
|
|
340
|
+
'i': I_ID,
|
|
341
|
+
'fi': '7854abc56248f872',
|
|
342
|
+
'ip': '45621afd87462104',
|
|
343
|
+
'w': W,
|
|
344
|
+
'h': H,
|
|
345
|
+
'crid': CRID,
|
|
346
|
+
'pr': CPM
|
|
347
|
+
}],
|
|
348
|
+
}],
|
|
349
|
+
'cs': [
|
|
350
|
+
'http://a-sync-url.com/',
|
|
351
|
+
{
|
|
352
|
+
'u': 'http://another-sync-url.com/test.php?&partner=123456&endpoint=us-east',
|
|
353
|
+
'ifr': true
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
}
|
|
357
|
+
};
|
|
179
358
|
const responseWithTwoAdunits = {
|
|
180
359
|
body: {
|
|
181
360
|
'sI': {
|
|
@@ -411,6 +590,77 @@ describe('E-Planning Adapter', function () {
|
|
|
411
590
|
expect(e).to.equal('300x250_0:300x250,300x600+100x100_0:100x100');
|
|
412
591
|
});
|
|
413
592
|
|
|
593
|
+
it('should return correct e parameter with support vast with one space with size outstream', function () {
|
|
594
|
+
let bidRequests = [validBidSpaceOutstream];
|
|
595
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
596
|
+
expect(data.e).to.equal('video_300x600_0:300x600;1');
|
|
597
|
+
expect(data.vctx).to.equal(2);
|
|
598
|
+
expect(data.vv).to.equal(3);
|
|
599
|
+
});
|
|
600
|
+
|
|
601
|
+
it('should correctly return the e parameter with n sizes in playerSize', function () {
|
|
602
|
+
let bidRequests = [validBidOutstreamNSizes];
|
|
603
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
604
|
+
expect(data.e).to.equal('video_300x600_0:300x600;1');
|
|
605
|
+
expect(data.vctx).to.equal(2);
|
|
606
|
+
expect(data.vv).to.equal(3);
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
it('should correctly return the e parameter with invalid sizes in playerSize', function () {
|
|
610
|
+
let bidRequests = [bidOutstreamInvalidSizes];
|
|
611
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
612
|
+
expect(data.e).to.equal('video_' + DEFAULT_SIZE_VAST + '_0:' + DEFAULT_SIZE_VAST + ';1');
|
|
613
|
+
expect(data.vctx).to.equal(2);
|
|
614
|
+
expect(data.vv).to.equal(3);
|
|
615
|
+
});
|
|
616
|
+
|
|
617
|
+
it('should return correct e parameter with support vast with one space with size default outstream', function () {
|
|
618
|
+
let bidRequests = [validBidOutstreamNoSize];
|
|
619
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
620
|
+
expect(data.e).to.equal('video_640x480_0:640x480;1');
|
|
621
|
+
expect(data.vctx).to.equal(2);
|
|
622
|
+
expect(data.vv).to.equal(3);
|
|
623
|
+
});
|
|
624
|
+
|
|
625
|
+
it('should return correct e parameter with support vast with one space with size instream', function () {
|
|
626
|
+
let bidRequests = [validBidSpaceInstream];
|
|
627
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
628
|
+
expect(data.e).to.equal('video_640x480_0:640x480;1');
|
|
629
|
+
expect(data.vctx).to.equal(1);
|
|
630
|
+
expect(data.vv).to.equal(3);
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
it('should return correct e parameter with support vast with one space with size default and vctx default', function () {
|
|
634
|
+
let bidRequests = [validBidSpaceVastNoContext];
|
|
635
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
636
|
+
expect(data.e).to.equal('video_640x480_0:640x480;1');
|
|
637
|
+
expect(data.vctx).to.equal(1);
|
|
638
|
+
expect(data.vv).to.equal(3);
|
|
639
|
+
});
|
|
640
|
+
|
|
641
|
+
it('if 2 bids arrive, one outstream and the other instream, instream has more priority', function () {
|
|
642
|
+
let bidRequests = [validBidSpaceOutstream, validBidSpaceInstream];
|
|
643
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
644
|
+
expect(data.e).to.equal('video_640x480_0:640x480;1');
|
|
645
|
+
expect(data.vctx).to.equal(1);
|
|
646
|
+
expect(data.vv).to.equal(3);
|
|
647
|
+
});
|
|
648
|
+
it('if 2 bids arrive, one outstream and another banner, outstream has more priority', function () {
|
|
649
|
+
let bidRequests = [validBidSpaceOutstream, validBidSpaceName];
|
|
650
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
651
|
+
expect(data.e).to.equal('video_300x600_0:300x600;1');
|
|
652
|
+
expect(data.vctx).to.equal(2);
|
|
653
|
+
expect(data.vv).to.equal(3);
|
|
654
|
+
});
|
|
655
|
+
|
|
656
|
+
it('should return correct e parameter with support vast with one space outstream', function () {
|
|
657
|
+
let bidRequests = [validBidSpaceOutstream, validBidOutstreamNoSize];
|
|
658
|
+
const data = spec.buildRequests(bidRequests, bidderRequest).data;
|
|
659
|
+
expect(data.e).to.equal('video_300x600_0:300x600;1+video_640x480_1:640x480;1');
|
|
660
|
+
expect(data.vctx).to.equal(2);
|
|
661
|
+
expect(data.vv).to.equal(3);
|
|
662
|
+
});
|
|
663
|
+
|
|
414
664
|
it('should return correct e parameter with linear mapping attribute with more than one adunit', function () {
|
|
415
665
|
let bidRequestsML = [validBidMappingLinear];
|
|
416
666
|
const NEW_CODE = ADUNIT_CODE + '2';
|
|
@@ -588,6 +838,40 @@ describe('E-Planning Adapter', function () {
|
|
|
588
838
|
};
|
|
589
839
|
expect(bidResponse).to.deep.equal(expectedResponse);
|
|
590
840
|
});
|
|
841
|
+
|
|
842
|
+
it('should correctly map the parameters in the response vast', function () {
|
|
843
|
+
const bidResponse = spec.interpretResponse(responseVast, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
|
|
844
|
+
const expectedResponse = {
|
|
845
|
+
requestId: BID_ID,
|
|
846
|
+
cpm: CPM,
|
|
847
|
+
width: W,
|
|
848
|
+
height: H,
|
|
849
|
+
ttl: 120,
|
|
850
|
+
creativeId: CRID,
|
|
851
|
+
netRevenue: true,
|
|
852
|
+
currency: 'USD',
|
|
853
|
+
vastXml: ADM_VAST,
|
|
854
|
+
mediaTypes: VIDEO
|
|
855
|
+
};
|
|
856
|
+
expect(bidResponse).to.deep.equal(expectedResponse);
|
|
857
|
+
});
|
|
858
|
+
|
|
859
|
+
it('should correctly map the parameters in the response vast vv 1', function () {
|
|
860
|
+
const bidResponse = spec.interpretResponse(responseVastVV1, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
|
|
861
|
+
const expectedResponse = {
|
|
862
|
+
requestId: BID_ID,
|
|
863
|
+
cpm: CPM,
|
|
864
|
+
width: W,
|
|
865
|
+
height: H,
|
|
866
|
+
ttl: 120,
|
|
867
|
+
creativeId: CRID,
|
|
868
|
+
netRevenue: true,
|
|
869
|
+
currency: 'USD',
|
|
870
|
+
vastXml: ADM_VAST_VV_1,
|
|
871
|
+
mediaTypes: VIDEO
|
|
872
|
+
};
|
|
873
|
+
expect(bidResponse).to.deep.equal(expectedResponse);
|
|
874
|
+
});
|
|
591
875
|
});
|
|
592
876
|
|
|
593
877
|
describe('getUserSyncs', function () {
|
|
@@ -1029,7 +1313,7 @@ describe('E-Planning Adapter', function () {
|
|
|
1029
1313
|
sandbox.restore();
|
|
1030
1314
|
})
|
|
1031
1315
|
|
|
1032
|
-
it('should add eids to the request
|
|
1316
|
+
it('should add eids to the request', function() {
|
|
1033
1317
|
let bidRequests = [validBidView];
|
|
1034
1318
|
const expected_id5id = encodeURIComponent(JSON.stringify({ uid: 'ID5-ZHMOL_IfFSt7_lVYX8rBZc6GH3XMWyPQOBUfr4bm0g!', ext: { linkType: 1 } }));
|
|
1035
1319
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|