prebid.js 7.18.0 → 7.19.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/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.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/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.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/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +6 -0
- 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/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fpd.js +1 -0
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +123 -121
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/vidazooBidAdapter.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/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/libraries/fpd/sua.js +98 -0
- package/modules/adfBidAdapter.js +1 -1
- package/modules/adkernelAdnBidAdapter.js +1 -0
- package/modules/adqueryIdSystem.js +8 -8
- package/modules/adxcgBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
- package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
- package/modules/cleanioRtdProvider.js +3 -4
- package/modules/colossussspBidAdapter.js +2 -1
- package/modules/conversantAnalyticsAdapter.js +560 -0
- package/modules/conversantAnalyticsAdapter.md +47 -0
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/debugging/bidInterceptor.js +2 -2
- package/modules/debugging/debugging.js +10 -2
- package/modules/dgkeywordRtdProvider.js +21 -3
- package/modules/dianomiBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +33 -14
- 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/mediakeysBidAdapter.js +6 -1
- package/modules/mediakeysBidAdapter.md +50 -40
- package/modules/nativoBidAdapter.js +1 -1
- package/modules/prebidServerBidAdapter/index.js +44 -13
- package/modules/readpeakBidAdapter.js +1 -1
- package/modules/rubiconBidAdapter.js +2 -3
- package/modules/seedingAllianceBidAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +1 -1
- package/modules/talkadsBidAdapter.js +1 -0
- package/modules/truereachBidAdapter.js +1 -0
- package/modules/ttdBidAdapter.js +1 -1
- package/modules/vuukleBidAdapter.js +34 -3
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yandexBidAdapter.js +31 -8
- package/package.json +2 -2
- package/src/adapterManager.js +2 -4
- package/src/cpmBucketManager.js +22 -3
- package/src/native.js +1 -5
- package/src/prebid.js +3 -3
- 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/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
- 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/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/mediakeysBidAdapter_spec.js +20 -3
- package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
- package/test/spec/modules/prebidServerBidAdapter_spec.js +159 -4
- 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 +2 -2
- package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
- package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +3 -1
- package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
- package/test/spec/native_spec.js +5 -0
- package/test/spec/unit/pbjs_api_spec.js +44 -0
|
@@ -607,15 +607,14 @@ describe('S2S Adapter', function () {
|
|
|
607
607
|
resetSyncedStatus();
|
|
608
608
|
});
|
|
609
609
|
|
|
610
|
-
it('should set id
|
|
610
|
+
it('should set id and source.tid to auction ID', function () {
|
|
611
611
|
config.setConfig({ s2sConfig: CONFIG });
|
|
612
612
|
|
|
613
613
|
adapter.callBids(OUTSTREAM_VIDEO_REQUEST, BID_REQUESTS, addBidResponse, done, ajax);
|
|
614
614
|
|
|
615
615
|
const requestBid = JSON.parse(server.requests[0].requestBody);
|
|
616
|
-
expect(requestBid.id).to.equal(
|
|
617
|
-
expect(requestBid.source).to.
|
|
618
|
-
expect(requestBid.source.tid).to.equal('437fbbf5-33f5-487a-8e16-a7112903cfe5');
|
|
616
|
+
expect(requestBid.id).to.equal(BID_REQUESTS[0].auctionId);
|
|
617
|
+
expect(requestBid.source.tid).to.equal(BID_REQUESTS[0].auctionId);
|
|
619
618
|
});
|
|
620
619
|
|
|
621
620
|
it('should block request if config did not define p1Consent URL in endpoint object config', function () {
|
|
@@ -3481,5 +3480,161 @@ describe('S2S Adapter', function () {
|
|
|
3481
3480
|
const parsedRequestBody = JSON.parse(server.requests[1].requestBody);
|
|
3482
3481
|
expect(parsedRequestBody.cur).to.deep.equal(['JPY']);
|
|
3483
3482
|
});
|
|
3483
|
+
|
|
3484
|
+
it('should correctly set the floorMin key when multiple bids with various bidfloors exist', function () {
|
|
3485
|
+
const s2sConfig = Object.assign({}, CONFIG, {
|
|
3486
|
+
extPrebid: {
|
|
3487
|
+
floors: {
|
|
3488
|
+
enabled: true
|
|
3489
|
+
}
|
|
3490
|
+
},
|
|
3491
|
+
bidders: ['b1', 'b2']
|
|
3492
|
+
});
|
|
3493
|
+
|
|
3494
|
+
const bidderRequests = [
|
|
3495
|
+
{
|
|
3496
|
+
...BID_REQUESTS[0],
|
|
3497
|
+
bidderCode: 'b1',
|
|
3498
|
+
bids: [{
|
|
3499
|
+
bidder: 'b1',
|
|
3500
|
+
bidId: 1,
|
|
3501
|
+
getFloor: () => ({
|
|
3502
|
+
currency: 'US',
|
|
3503
|
+
floor: 1.23
|
|
3504
|
+
})
|
|
3505
|
+
}]
|
|
3506
|
+
},
|
|
3507
|
+
{
|
|
3508
|
+
...BID_REQUESTS[0],
|
|
3509
|
+
bidderCode: 'b2',
|
|
3510
|
+
bids: [{
|
|
3511
|
+
bidder: 'b2',
|
|
3512
|
+
bidId: 2,
|
|
3513
|
+
getFloor: () => ({
|
|
3514
|
+
currency: 'EUR',
|
|
3515
|
+
floor: 3.21
|
|
3516
|
+
})
|
|
3517
|
+
}],
|
|
3518
|
+
}
|
|
3519
|
+
];
|
|
3520
|
+
|
|
3521
|
+
const adUnits = [
|
|
3522
|
+
{
|
|
3523
|
+
code: 'au1',
|
|
3524
|
+
transactionId: 't1',
|
|
3525
|
+
mediaTypes: {
|
|
3526
|
+
banner: {sizes: [1, 1]}
|
|
3527
|
+
},
|
|
3528
|
+
bids: [{bidder: 'b1', bid_id: 1}]
|
|
3529
|
+
},
|
|
3530
|
+
{
|
|
3531
|
+
code: 'au2',
|
|
3532
|
+
transactionId: 't2',
|
|
3533
|
+
bids: [{bidder: 'b2', bid_id: 2}],
|
|
3534
|
+
mediaTypes: {
|
|
3535
|
+
banner: {sizes: [1, 1]}
|
|
3536
|
+
}
|
|
3537
|
+
}
|
|
3538
|
+
];
|
|
3539
|
+
|
|
3540
|
+
const _config = {
|
|
3541
|
+
s2sConfig: s2sConfig,
|
|
3542
|
+
};
|
|
3543
|
+
|
|
3544
|
+
const s2sBidRequest = utils.deepClone(REQUEST);
|
|
3545
|
+
s2sBidRequest.s2sConfig = s2sConfig;
|
|
3546
|
+
s2sBidRequest.ad_units = adUnits;
|
|
3547
|
+
config.setConfig(_config);
|
|
3548
|
+
|
|
3549
|
+
adapter.callBids(s2sBidRequest, bidderRequests, addBidResponse, done, ajax);
|
|
3550
|
+
const requestBid = JSON.parse(server.requests[0].requestBody);
|
|
3551
|
+
expect(requestBid.imp[0].bidfloor).to.equal(1.23);
|
|
3552
|
+
expect(requestBid.imp[1].bidfloor).to.equal(3.21);
|
|
3553
|
+
|
|
3554
|
+
// first imp floorCur should be set
|
|
3555
|
+
expect(requestBid.ext.prebid.floors).to.deep.equal({ enabled: true, floorMin: 1.23, floorMinCur: 'US' });
|
|
3556
|
+
});
|
|
3557
|
+
|
|
3558
|
+
it('should correctly set the floorMin key when multiple bids with various bidfloors exist and ortb2Imp contains the lowest floorMin', function () {
|
|
3559
|
+
const s2sConfig = Object.assign({}, CONFIG, {
|
|
3560
|
+
extPrebid: {
|
|
3561
|
+
floors: {
|
|
3562
|
+
enabled: true
|
|
3563
|
+
}
|
|
3564
|
+
},
|
|
3565
|
+
bidders: ['b1', 'b2']
|
|
3566
|
+
});
|
|
3567
|
+
|
|
3568
|
+
const bidderRequests = [
|
|
3569
|
+
{
|
|
3570
|
+
...BID_REQUESTS[0],
|
|
3571
|
+
bidderCode: 'b1',
|
|
3572
|
+
bids: [{
|
|
3573
|
+
bidder: 'b1',
|
|
3574
|
+
bidId: 1,
|
|
3575
|
+
getFloor: () => ({
|
|
3576
|
+
currency: 'CUR',
|
|
3577
|
+
floor: 1.23
|
|
3578
|
+
})
|
|
3579
|
+
}]
|
|
3580
|
+
},
|
|
3581
|
+
{
|
|
3582
|
+
...BID_REQUESTS[0],
|
|
3583
|
+
bidderCode: 'b2',
|
|
3584
|
+
bids: [{
|
|
3585
|
+
bidder: 'b2',
|
|
3586
|
+
bidId: 2,
|
|
3587
|
+
getFloor: () => ({
|
|
3588
|
+
currency: 'CUR',
|
|
3589
|
+
floor: 3.21
|
|
3590
|
+
})
|
|
3591
|
+
}],
|
|
3592
|
+
}
|
|
3593
|
+
];
|
|
3594
|
+
|
|
3595
|
+
const adUnits = [
|
|
3596
|
+
{
|
|
3597
|
+
code: 'au1',
|
|
3598
|
+
transactionId: 't1',
|
|
3599
|
+
mediaTypes: {
|
|
3600
|
+
banner: {sizes: [1, 1]}
|
|
3601
|
+
},
|
|
3602
|
+
bids: [{bidder: 'b1', bid_id: 1}]
|
|
3603
|
+
},
|
|
3604
|
+
{
|
|
3605
|
+
code: 'au2',
|
|
3606
|
+
transactionId: 't2',
|
|
3607
|
+
bids: [{bidder: 'b2', bid_id: 2}],
|
|
3608
|
+
mediaTypes: {
|
|
3609
|
+
banner: {sizes: [1, 1]}
|
|
3610
|
+
},
|
|
3611
|
+
ortb2Imp: {
|
|
3612
|
+
ext: {
|
|
3613
|
+
prebid: {
|
|
3614
|
+
floors: {
|
|
3615
|
+
floorMin: 1
|
|
3616
|
+
}
|
|
3617
|
+
}
|
|
3618
|
+
}
|
|
3619
|
+
}
|
|
3620
|
+
}
|
|
3621
|
+
];
|
|
3622
|
+
|
|
3623
|
+
const _config = {
|
|
3624
|
+
s2sConfig: s2sConfig,
|
|
3625
|
+
};
|
|
3626
|
+
|
|
3627
|
+
const s2sBidRequest = utils.deepClone(REQUEST);
|
|
3628
|
+
s2sBidRequest.s2sConfig = s2sConfig;
|
|
3629
|
+
s2sBidRequest.ad_units = adUnits;
|
|
3630
|
+
config.setConfig(_config);
|
|
3631
|
+
|
|
3632
|
+
adapter.callBids(s2sBidRequest, bidderRequests, addBidResponse, done, ajax);
|
|
3633
|
+
const requestBid = JSON.parse(server.requests[0].requestBody);
|
|
3634
|
+
expect(requestBid.imp[0].bidfloor).to.equal(1.23);
|
|
3635
|
+
expect(requestBid.imp[1].bidfloor).to.equal(3.21);
|
|
3636
|
+
|
|
3637
|
+
expect(requestBid.ext.prebid.floors).to.deep.equal({ enabled: true, floorMin: 1, floorMinCur: 'CUR' });
|
|
3638
|
+
});
|
|
3484
3639
|
});
|
|
3485
3640
|
});
|
|
@@ -361,28 +361,25 @@ describe('Seedtag Adapter', function () {
|
|
|
361
361
|
it('should add schain to payload when exposed on validBidRequest', function () {
|
|
362
362
|
// https://github.com/prebid/Prebid.js/blob/master/modules/schain.md#sample-code-for-passing-the-schain-object
|
|
363
363
|
const schain = {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
hp: 1,
|
|
373
|
-
},
|
|
364
|
+
ver: '1.0',
|
|
365
|
+
complete: 1,
|
|
366
|
+
nodes: [
|
|
367
|
+
{
|
|
368
|
+
asi: 'indirectseller.com',
|
|
369
|
+
sid: '00001',
|
|
370
|
+
hp: 1,
|
|
371
|
+
},
|
|
374
372
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
},
|
|
373
|
+
{
|
|
374
|
+
asi: 'indirectseller-2.com',
|
|
375
|
+
sid: '00002',
|
|
376
|
+
hp: 1,
|
|
377
|
+
},
|
|
378
|
+
],
|
|
382
379
|
};
|
|
383
380
|
|
|
384
381
|
// duplicate
|
|
385
|
-
const bidRequests = JSON.parse(JSON.stringify(validBidRequests))
|
|
382
|
+
const bidRequests = JSON.parse(JSON.stringify(validBidRequests));
|
|
386
383
|
bidRequests[0].schain = schain;
|
|
387
384
|
|
|
388
385
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
@@ -172,6 +172,7 @@ describe('sharethrough adapter spec', function () {
|
|
|
172
172
|
refererInfo: {
|
|
173
173
|
ref: 'https://referer.com',
|
|
174
174
|
},
|
|
175
|
+
auctionId: 'auction-id'
|
|
175
176
|
};
|
|
176
177
|
});
|
|
177
178
|
|
|
@@ -233,7 +234,7 @@ describe('sharethrough adapter spec', function () {
|
|
|
233
234
|
expect(openRtbReq.device.ua).to.equal(navigator.userAgent);
|
|
234
235
|
expect(openRtbReq.regs.coppa).to.equal(1);
|
|
235
236
|
|
|
236
|
-
expect(openRtbReq.source.tid).to.equal(
|
|
237
|
+
expect(openRtbReq.source.tid).to.equal(bidderRequest.auctionId);
|
|
237
238
|
expect(openRtbReq.source.ext.version).not.to.be.undefined;
|
|
238
239
|
expect(openRtbReq.source.ext.str).not.to.be.undefined;
|
|
239
240
|
expect(openRtbReq.source.ext.schain).to.deep.equal(bidRequests[0].schain);
|
|
@@ -449,7 +449,7 @@ describe('Taboola Adapter', function () {
|
|
|
449
449
|
cpm: bid.price,
|
|
450
450
|
creativeId: bid.crid,
|
|
451
451
|
ttl: 60,
|
|
452
|
-
netRevenue:
|
|
452
|
+
netRevenue: true,
|
|
453
453
|
currency: serverResponse.body.cur,
|
|
454
454
|
mediaType: 'banner',
|
|
455
455
|
ad: bid.adm,
|
|
@@ -475,7 +475,7 @@ describe('Taboola Adapter', function () {
|
|
|
475
475
|
cpm: bid.price,
|
|
476
476
|
creativeId: bid.crid,
|
|
477
477
|
ttl: 125,
|
|
478
|
-
netRevenue:
|
|
478
|
+
netRevenue: true,
|
|
479
479
|
currency: serverResponse.body.cur,
|
|
480
480
|
mediaType: 'banner',
|
|
481
481
|
ad: bid.adm,
|
|
@@ -272,10 +272,10 @@ describe('ttdBidAdapter', function () {
|
|
|
272
272
|
expect(requestBody.imp[0].ext.gpid).to.equal(gpid);
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
it('sends
|
|
275
|
+
it('sends auction id in source.tid', function () {
|
|
276
276
|
const requestBody = testBuildRequests(baseBannerBidRequests, baseBidderRequest).data;
|
|
277
277
|
expect(requestBody.source).to.be.not.null;
|
|
278
|
-
expect(requestBody.source.tid).to.equal(
|
|
278
|
+
expect(requestBody.source.tid).to.equal(baseBidderRequest.auctionId);
|
|
279
279
|
});
|
|
280
280
|
|
|
281
281
|
it('includes the ad size in the bid request', function () {
|
|
@@ -557,7 +557,7 @@ describe('ttdBidAdapter', function () {
|
|
|
557
557
|
const requestBody = testBuildRequests(baseBannerMultipleBidRequests, baseBidderRequest).data;
|
|
558
558
|
expect(requestBody.imp.length).to.equal(2);
|
|
559
559
|
expect(requestBody.source).to.be.not.null;
|
|
560
|
-
expect(requestBody.source.tid).to.equal(
|
|
560
|
+
expect(requestBody.source.tid).to.equal(baseBidderRequest.auctionId);
|
|
561
561
|
expect(requestBody.imp[0].ext).to.be.not.null;
|
|
562
562
|
expect(requestBody.imp[0].ext.tid).to.equal('8651474f-58b1-4368-b812-84f8c937a099');
|
|
563
563
|
expect(requestBody.imp[1].ext).to.be.not.null;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { spec } from 'modules/vuukleBidAdapter.js';
|
|
3
|
+
import { config } from '../../../src/config.js';
|
|
3
4
|
|
|
4
5
|
describe('vuukleBidAdapterTests', function() {
|
|
5
6
|
let bidRequestData = {
|
|
@@ -34,6 +35,13 @@ describe('vuukleBidAdapterTests', function() {
|
|
|
34
35
|
expect(req_data.bidId).to.equal('testbid');
|
|
35
36
|
});
|
|
36
37
|
|
|
38
|
+
it('validate_generated_params_tmax', function() {
|
|
39
|
+
request = spec.buildRequests(bidRequestData.bids, {timeout: 1234});
|
|
40
|
+
let req_data = request[0].data;
|
|
41
|
+
|
|
42
|
+
expect(req_data.tmax).to.equal(1234);
|
|
43
|
+
});
|
|
44
|
+
|
|
37
45
|
it('validate_response_params', function() {
|
|
38
46
|
let serverResponse = {
|
|
39
47
|
body: {
|
|
@@ -58,4 +66,83 @@ describe('vuukleBidAdapterTests', function() {
|
|
|
58
66
|
expect(bid.creativeId).to.equal('12345');
|
|
59
67
|
expect(bid.meta.advertiserDomains).to.deep.equal(['example.com']);
|
|
60
68
|
});
|
|
69
|
+
|
|
70
|
+
describe('consent handling', function() {
|
|
71
|
+
const bidderRequest = {
|
|
72
|
+
gdprConsent: {
|
|
73
|
+
consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
|
|
74
|
+
gdprApplies: 1,
|
|
75
|
+
vendorData: {
|
|
76
|
+
vendor: {
|
|
77
|
+
consents: {
|
|
78
|
+
1004: 1
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
it('must handle consent 1/1', function() {
|
|
86
|
+
request = spec.buildRequests(bidRequestData.bids, bidderRequest);
|
|
87
|
+
let req_data = request[0].data;
|
|
88
|
+
|
|
89
|
+
expect(req_data.gdpr).to.equal(1);
|
|
90
|
+
expect(req_data.consentGiven).to.equal(1);
|
|
91
|
+
expect(req_data.consent).to.equal('COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw');
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
it('must handle consent 0/1', function() {
|
|
95
|
+
bidderRequest.gdprConsent.gdprApplies = 0;
|
|
96
|
+
request = spec.buildRequests(bidRequestData.bids, bidderRequest);
|
|
97
|
+
let req_data = request[0].data;
|
|
98
|
+
|
|
99
|
+
expect(req_data.gdpr).to.equal(0);
|
|
100
|
+
expect(req_data.consentGiven).to.equal(1);
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it('must handle consent 0/0', function() {
|
|
104
|
+
bidderRequest.gdprConsent.gdprApplies = 0;
|
|
105
|
+
bidderRequest.gdprConsent.vendorData = undefined;
|
|
106
|
+
request = spec.buildRequests(bidRequestData.bids, bidderRequest);
|
|
107
|
+
let req_data = request[0].data;
|
|
108
|
+
|
|
109
|
+
expect(req_data.gdpr).to.equal(0);
|
|
110
|
+
expect(req_data.consentGiven).to.equal(0);
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
it('must handle consent undef', function() {
|
|
114
|
+
request = spec.buildRequests(bidRequestData.bids, {});
|
|
115
|
+
let req_data = request[0].data;
|
|
116
|
+
|
|
117
|
+
expect(req_data.gdpr).to.equal(0);
|
|
118
|
+
expect(req_data.consentGiven).to.equal(0);
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
it('must handle usp consent', function() {
|
|
123
|
+
request = spec.buildRequests(bidRequestData.bids, {uspConsent: '1YNN'});
|
|
124
|
+
let req_data = request[0].data;
|
|
125
|
+
|
|
126
|
+
expect(req_data.uspConsent).to.equal('1YNN');
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('must handle undefined usp consent', function() {
|
|
130
|
+
request = spec.buildRequests(bidRequestData.bids, {});
|
|
131
|
+
let req_data = request[0].data;
|
|
132
|
+
|
|
133
|
+
expect(req_data.uspConsent).to.equal(undefined);
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
it('must handle coppa flag', function() {
|
|
137
|
+
sinon.stub(config, 'getConfig')
|
|
138
|
+
.withArgs('coppa')
|
|
139
|
+
.returns(true);
|
|
140
|
+
|
|
141
|
+
request = spec.buildRequests(bidRequestData.bids);
|
|
142
|
+
let req_data = request[0].data;
|
|
143
|
+
|
|
144
|
+
expect(req_data.coppa).to.equal(1);
|
|
145
|
+
|
|
146
|
+
config.getConfig.restore();
|
|
147
|
+
})
|
|
61
148
|
});
|
|
@@ -847,7 +847,9 @@ describe('YahooSSP Bid Adapter:', () => {
|
|
|
847
847
|
expect(data.device).to.deep.equal({
|
|
848
848
|
dnt: 0,
|
|
849
849
|
ua: navigator.userAgent,
|
|
850
|
-
ip: undefined
|
|
850
|
+
ip: undefined,
|
|
851
|
+
w: window.screen.width,
|
|
852
|
+
h: window.screen.height
|
|
851
853
|
});
|
|
852
854
|
|
|
853
855
|
expect(data.regs).to.deep.equal({
|
|
@@ -64,7 +64,9 @@ describe('Yandex adapter', function () {
|
|
|
64
64
|
|
|
65
65
|
const bidderRequest = {
|
|
66
66
|
refererInfo: {
|
|
67
|
-
domain: '
|
|
67
|
+
domain: 'ya.ru',
|
|
68
|
+
ref: 'https://ya.ru/',
|
|
69
|
+
page: 'https://ya.ru/',
|
|
68
70
|
},
|
|
69
71
|
gdprConsent
|
|
70
72
|
};
|
|
@@ -72,7 +74,7 @@ describe('Yandex adapter', function () {
|
|
|
72
74
|
it('creates a valid banner request', function () {
|
|
73
75
|
const bannerRequest = getBidRequest();
|
|
74
76
|
bannerRequest.getFloor = () => ({
|
|
75
|
-
currency: '
|
|
77
|
+
currency: 'EUR',
|
|
76
78
|
// floor: 0.5
|
|
77
79
|
});
|
|
78
80
|
|
|
@@ -89,11 +91,11 @@ describe('Yandex adapter', function () {
|
|
|
89
91
|
const parsedRequestUrl = parseUrl(url);
|
|
90
92
|
const { search: query } = parsedRequestUrl
|
|
91
93
|
|
|
92
|
-
expect(parsedRequestUrl.hostname).to.equal('bs
|
|
94
|
+
expect(parsedRequestUrl.hostname).to.equal('bs.yandex.ru');
|
|
93
95
|
expect(parsedRequestUrl.pathname).to.equal('/metadsp/123');
|
|
94
96
|
|
|
95
97
|
expect(query['imp-id']).to.equal('1');
|
|
96
|
-
expect(query['target-ref']).to.equal('
|
|
98
|
+
expect(query['target-ref']).to.equal('ya.ru');
|
|
97
99
|
expect(query['ssp-id']).to.equal('10500');
|
|
98
100
|
|
|
99
101
|
expect(query['gdpr']).to.equal('1');
|
|
@@ -101,7 +103,8 @@ describe('Yandex adapter', function () {
|
|
|
101
103
|
|
|
102
104
|
expect(request.data).to.exist;
|
|
103
105
|
expect(data.site).to.not.equal(null);
|
|
104
|
-
expect(data.site.
|
|
106
|
+
expect(data.site.page_url).to.equal('https://ya.ru/');
|
|
107
|
+
expect(data.site.ref_url).to.equal('https://ya.ru/');
|
|
105
108
|
|
|
106
109
|
// expect(data.device).to.not.equal(null);
|
|
107
110
|
// expect(data.device.w).to.equal(window.innerWidth);
|
package/test/spec/native_spec.js
CHANGED
|
@@ -190,6 +190,11 @@ describe('native.js', function () {
|
|
|
190
190
|
expect(targeting.hb_native_foo).to.equal(bid.native.foo);
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
+
it('can get targeting from null native keys', () => {
|
|
194
|
+
const targeting = getNativeTargeting({...bid, native: {...bid.native, displayUrl: null}});
|
|
195
|
+
expect(targeting.hb_native_displayurl).to.not.be.ok;
|
|
196
|
+
})
|
|
197
|
+
|
|
193
198
|
it('sends placeholders for configured assets', function () {
|
|
194
199
|
const adUnit = {
|
|
195
200
|
transactionId: 'au',
|
|
@@ -1841,6 +1841,50 @@ describe('Unit: Prebid Module', function () {
|
|
|
1841
1841
|
.and.to.match(/[a-f0-9\-]{36}/i);
|
|
1842
1842
|
});
|
|
1843
1843
|
|
|
1844
|
+
describe('transactionId', () => {
|
|
1845
|
+
let adUnit;
|
|
1846
|
+
beforeEach(() => {
|
|
1847
|
+
adUnit = {
|
|
1848
|
+
code: 'adUnit',
|
|
1849
|
+
mediaTypes: {
|
|
1850
|
+
banner: {
|
|
1851
|
+
sizes: [300, 250]
|
|
1852
|
+
}
|
|
1853
|
+
},
|
|
1854
|
+
bids: [
|
|
1855
|
+
{
|
|
1856
|
+
bidder: 'mock-bidder',
|
|
1857
|
+
}
|
|
1858
|
+
]
|
|
1859
|
+
};
|
|
1860
|
+
});
|
|
1861
|
+
it('should be set to ortb2Imp.ext.tid, if specified', () => {
|
|
1862
|
+
$$PREBID_GLOBAL$$.requestBids({
|
|
1863
|
+
adUnits: [
|
|
1864
|
+
{...adUnit, ortb2Imp: {ext: {tid: 'custom-tid'}}}
|
|
1865
|
+
]
|
|
1866
|
+
});
|
|
1867
|
+
sinon.assert.match(auctionArgs.adUnits[0], {
|
|
1868
|
+
transactionId: 'custom-tid',
|
|
1869
|
+
ortb2Imp: {
|
|
1870
|
+
ext: {
|
|
1871
|
+
tid: 'custom-tid'
|
|
1872
|
+
}
|
|
1873
|
+
}
|
|
1874
|
+
})
|
|
1875
|
+
});
|
|
1876
|
+
it('should be copied to ortb2Imp.ext.tid, if not specified', () => {
|
|
1877
|
+
$$PREBID_GLOBAL$$.requestBids({
|
|
1878
|
+
adUnits: [
|
|
1879
|
+
adUnit
|
|
1880
|
+
]
|
|
1881
|
+
});
|
|
1882
|
+
const tid = auctionArgs.adUnits[0].transactionId;
|
|
1883
|
+
expect(tid).to.exist;
|
|
1884
|
+
expect(auctionArgs.adUnits[0].ortb2Imp.ext.tid).to.eql(tid);
|
|
1885
|
+
});
|
|
1886
|
+
});
|
|
1887
|
+
|
|
1844
1888
|
it('should always set ortb2.ext.tid same as transactionId in adUnits', function () {
|
|
1845
1889
|
$$PREBID_GLOBAL$$.requestBids({
|
|
1846
1890
|
adUnits: [
|