prebid.js 5.19.0 → 6.2.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/.babelrc.js +1 -10
- package/README.md +4 -2
- package/browsers.json +13 -37
- package/gulpfile.js +1 -0
- package/karma.conf.maker.js +1 -1
- package/modules/adheseBidAdapter.js +7 -2
- package/modules/adkernelBidAdapter.js +1 -0
- package/modules/adlivetechBidAdapter.md +61 -0
- package/modules/admixerBidAdapter.js +2 -1
- package/modules/adnuntiusBidAdapter.js +2 -1
- package/modules/adomikAnalyticsAdapter.js +10 -4
- package/modules/adplusBidAdapter.js +203 -0
- package/modules/adplusBidAdapter.md +39 -0
- package/modules/adyoulikeBidAdapter.js +7 -2
- package/modules/airgridRtdProvider.js +1 -1
- package/modules/appnexusBidAdapter.js +28 -5
- package/modules/atsAnalyticsAdapter.js +67 -46
- package/modules/atsAnalyticsAdapter.md +1 -0
- package/modules/beachfrontBidAdapter.js +14 -17
- package/modules/betweenBidAdapter.js +2 -1
- package/modules/browsiRtdProvider.js +106 -18
- package/modules/cleanioRtdProvider.js +192 -0
- package/modules/cleanioRtdProvider.md +59 -0
- package/modules/codefuelBidAdapter.js +1 -3
- package/modules/codefuelBidAdapter.md +3 -3
- package/modules/craftBidAdapter.js +5 -3
- package/modules/datablocksBidAdapter.js +3 -3
- package/modules/dchain.js +149 -0
- package/modules/dchain.md +45 -0
- package/modules/deepintentBidAdapter.js +1 -1
- package/modules/deltaprojectsBidAdapter.js +252 -0
- package/modules/deltaprojectsBidAdapter.md +32 -0
- package/modules/emx_digitalBidAdapter.js +9 -1
- package/modules/engageyaBidAdapter.js +68 -54
- package/modules/freewheel-sspBidAdapter.js +6 -0
- package/modules/glimpseBidAdapter.js +31 -16
- package/modules/goldbachBidAdapter.js +1176 -0
- package/modules/goldbachBidAdapter.md +151 -0
- package/modules/gptPreAuction.js +11 -5
- package/modules/gridBidAdapter.js +1 -0
- package/modules/gumgumBidAdapter.js +5 -1
- package/modules/id5IdSystem.md +6 -6
- package/modules/imRtdProvider.js +31 -0
- package/modules/intersectionRtdProvider.js +114 -0
- package/modules/invibesBidAdapter.js +15 -9
- package/modules/ipromBidAdapter.js +79 -0
- package/modules/ixBidAdapter.js +173 -22
- package/modules/jixieBidAdapter.js +8 -2
- package/modules/justpremiumBidAdapter.js +6 -1
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +5 -0
- package/modules/luponmediaBidAdapter.js +570 -0
- package/modules/merkleIdSystem.js +5 -0
- package/modules/missenaBidAdapter.js +89 -0
- package/modules/multibid/index.js +3 -3
- package/modules/nativoBidAdapter.js +32 -2
- package/modules/oguryBidAdapter.js +2 -1
- package/modules/openxBidAdapter.js +7 -2
- package/modules/operaadsBidAdapter.js +21 -1
- package/modules/otmBidAdapter.js +146 -0
- package/modules/otmBidAdapter.md +27 -26
- package/modules/outbrainBidAdapter.js +5 -0
- package/modules/playwireBidAdapter.md +61 -0
- package/modules/prebidServerBidAdapter/index.js +3 -3
- package/modules/pubmaticBidAdapter.js +5 -3
- package/modules/relaidoBidAdapter.js +86 -65
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +2 -2
- package/modules/saambaaBidAdapter.js +420 -0
- package/modules/saambaaBidAdapter.md +65 -68
- package/modules/seedtagBidAdapter.js +6 -0
- package/modules/smaatoBidAdapter.js +9 -1
- package/modules/smartxBidAdapter.js +17 -1
- package/modules/sonobiBidAdapter.js +7 -0
- package/modules/sortableBidAdapter.js +1 -0
- package/modules/sspBCBidAdapter.js +34 -3
- package/modules/tappxBidAdapter.js +3 -1
- package/modules/teadsBidAdapter.js +3 -0
- package/modules/trustxBidAdapter.js +18 -7
- package/modules/undertoneBidAdapter.js +8 -1
- package/modules/userId/index.js +27 -2
- package/modules/ventes.md +71 -0
- package/modules/ventesBidAdapter.js +410 -0
- package/modules/ventesBidAdapter.md +93 -0
- package/modules/vidoomyBidAdapter.js +51 -100
- package/modules/visxBidAdapter.js +20 -3
- package/modules/visxBidAdapter.md +4 -6
- package/modules/yahoosspBidAdapter.js +6 -6
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldlabBidAdapter.js +41 -10
- package/modules/yieldlabBidAdapter.md +91 -48
- package/modules/yieldoneBidAdapter.js +115 -11
- package/package.json +6 -1
- package/src/adapterManager.js +14 -8
- package/src/auction.js +14 -13
- package/src/targeting.js +2 -2
- package/src/utils.js +7 -0
- package/test/spec/integration/faker/googletag.js +6 -0
- package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +18 -0
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
- package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +65 -2
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
- package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
- package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
- package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
- package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
- package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
- package/test/spec/modules/dchain_spec.js +329 -0
- package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
- package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
- package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
- package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
- package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
- package/test/spec/modules/gptPreAuction_spec.js +58 -4
- package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
- package/test/spec/modules/imRtdProvider_spec.js +25 -0
- package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
- package/test/spec/modules/invibesBidAdapter_spec.js +29 -4
- package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
- package/test/spec/modules/ixBidAdapter_spec.js +288 -5
- package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
- package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
- package/test/spec/modules/konduitWrapper_spec.js +0 -1
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +23 -4
- package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
- package/test/spec/modules/merkleIdSystem_spec.js +18 -0
- package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
- package/test/spec/modules/multibid_spec.js +31 -31
- package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
- package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
- package/test/spec/modules/openxBidAdapter_spec.js +5 -26
- package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
- package/test/spec/modules/otmBidAdapter_spec.js +67 -0
- package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +19 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
- package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
- package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
- package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
- package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
- package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
- package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +45 -3
- package/test/spec/modules/userId_spec.js +51 -0
- package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
- package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
- package/test/spec/modules/visxBidAdapter_spec.js +121 -5
- package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
- package/test/spec/unit/core/adapterManager_spec.js +26 -7
- package/test/spec/unit/core/targeting_spec.js +44 -0
- package/wdio.conf.js +1 -1
|
@@ -4,6 +4,7 @@ import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
|
4
4
|
import { INSTREAM } from '../../../src/video';
|
|
5
5
|
|
|
6
6
|
const ENDPOINT = `https://d.vidoomy.com/api/rtbserver/prebid/`;
|
|
7
|
+
const PIXELS = ['/test.png', '/test2.png?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}']
|
|
7
8
|
|
|
8
9
|
describe('vidoomyBidAdapter', function() {
|
|
9
10
|
const adapter = newBidder(spec);
|
|
@@ -101,24 +102,24 @@ describe('vidoomyBidAdapter', function() {
|
|
|
101
102
|
});
|
|
102
103
|
|
|
103
104
|
it('attaches source and version to endpoint URL as query params', function () {
|
|
104
|
-
expect(request[0].url).to.
|
|
105
|
-
expect(request[1].url).to.
|
|
105
|
+
expect(request[0].url).to.equal(ENDPOINT);
|
|
106
|
+
expect(request[1].url).to.equal(ENDPOINT);
|
|
106
107
|
});
|
|
107
108
|
|
|
108
109
|
it('only accepts first width and height sizes', function () {
|
|
109
|
-
expect(request[0].
|
|
110
|
-
expect(request[0].
|
|
111
|
-
expect(request[0].
|
|
112
|
-
expect(request[0].
|
|
113
|
-
expect(request[1].
|
|
114
|
-
expect(request[1].
|
|
110
|
+
expect('' + request[0].data.w).to.equal('300');
|
|
111
|
+
expect('' + request[0].data.h).to.equal('250');
|
|
112
|
+
expect('' + request[0].data.w).to.not.equal('200');
|
|
113
|
+
expect('' + request[0].data.h).to.not.equal('100');
|
|
114
|
+
expect('' + request[1].data.w).to.equal('400');
|
|
115
|
+
expect('' + request[1].data.h).to.equal('225');
|
|
115
116
|
});
|
|
116
117
|
|
|
117
118
|
it('should send id and pid parameters', function () {
|
|
118
|
-
expect(request[0].
|
|
119
|
-
expect(request[0].
|
|
120
|
-
expect(request[1].
|
|
121
|
-
expect(request[1].
|
|
119
|
+
expect('' + request[0].data.id).to.equal('123123');
|
|
120
|
+
expect('' + request[0].data.pid).to.equal('123123');
|
|
121
|
+
expect('' + request[1].data.id).to.equal('456456');
|
|
122
|
+
expect('' + request[1].data.pid).to.equal('456456');
|
|
122
123
|
});
|
|
123
124
|
});
|
|
124
125
|
|
|
@@ -182,7 +183,8 @@ describe('vidoomyBidAdapter', function() {
|
|
|
182
183
|
'networkName': null,
|
|
183
184
|
'primaryCatId': 'IAB3-1',
|
|
184
185
|
'secondaryCatIds': null
|
|
185
|
-
}
|
|
186
|
+
},
|
|
187
|
+
'pixels': PIXELS
|
|
186
188
|
}
|
|
187
189
|
}
|
|
188
190
|
|
|
@@ -206,5 +208,22 @@ describe('vidoomyBidAdapter', function() {
|
|
|
206
208
|
|
|
207
209
|
expect(result[0].requestId).to.equal(serverResponseBanner.body.requestId);
|
|
208
210
|
});
|
|
211
|
+
|
|
212
|
+
it('should sync user cookies', function () {
|
|
213
|
+
const GDPR_CONSENT = 'GDPR_TEST'
|
|
214
|
+
const result = spec.getUserSyncs({
|
|
215
|
+
pixelEnabled: true
|
|
216
|
+
}, [serverResponseBanner], { consentString: GDPR_CONSENT, gdprApplies: 1 }, null)
|
|
217
|
+
expect(result).to.eql([
|
|
218
|
+
{
|
|
219
|
+
type: 'image',
|
|
220
|
+
url: PIXELS[0]
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
type: 'image',
|
|
224
|
+
url: `/test2.png?gdpr=1&gdpr_consent=${GDPR_CONSENT}`
|
|
225
|
+
}
|
|
226
|
+
])
|
|
227
|
+
});
|
|
209
228
|
});
|
|
210
229
|
});
|
|
@@ -3,6 +3,7 @@ import { spec } from 'modules/visxBidAdapter.js';
|
|
|
3
3
|
import { config } from 'src/config.js';
|
|
4
4
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
5
5
|
import * as utils from 'src/utils.js';
|
|
6
|
+
import { makeSlot } from '../integration/faker/googletag.js';
|
|
6
7
|
|
|
7
8
|
describe('VisxAdapter', function () {
|
|
8
9
|
const adapter = newBidder(spec);
|
|
@@ -145,17 +146,17 @@ describe('VisxAdapter', function () {
|
|
|
145
146
|
const expectedFullImps = [{
|
|
146
147
|
'id': '30b31c1838de1e',
|
|
147
148
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
148
|
-
'ext': {'bidder': {'uid': 903535}}
|
|
149
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
|
|
149
150
|
},
|
|
150
151
|
{
|
|
151
152
|
'id': '3150ccb55da321',
|
|
152
153
|
'banner': {'format': [{'w': 728, 'h': 90}, {'w': 300, 'h': 250}]},
|
|
153
|
-
'ext': {'bidder': {'uid': 903535}}
|
|
154
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
|
|
154
155
|
},
|
|
155
156
|
{
|
|
156
157
|
'id': '42dbe3a7168a6a',
|
|
157
158
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
158
|
-
'ext': {'bidder': {'uid': 903536}}
|
|
159
|
+
'ext': {'bidder': {'uid': 903536, 'adslotExists': false}}
|
|
159
160
|
},
|
|
160
161
|
{
|
|
161
162
|
'id': '39a4e3a7168a6a',
|
|
@@ -452,7 +453,122 @@ describe('VisxAdapter', function () {
|
|
|
452
453
|
'imp': [{
|
|
453
454
|
'id': '39aff3a7169a6a',
|
|
454
455
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
455
|
-
'ext': {'bidder': {'uid': 903538}}
|
|
456
|
+
'ext': {'bidder': {'uid': 903538, 'adslotExists': false}}
|
|
457
|
+
}],
|
|
458
|
+
'tmax': 3000,
|
|
459
|
+
'cur': ['EUR'],
|
|
460
|
+
'source': {
|
|
461
|
+
'ext': {
|
|
462
|
+
'wrapperType': 'Prebid_js',
|
|
463
|
+
'wrapperVersion': '$prebid.version$'
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
'site': {'page': referrer}
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
describe('buildRequests (check ad slot exists)', function () {
|
|
472
|
+
function parseRequest(url) {
|
|
473
|
+
const res = {};
|
|
474
|
+
(url.split('?')[1] || '').split('&').forEach((it) => {
|
|
475
|
+
const couple = it.split('=');
|
|
476
|
+
res[couple[0]] = decodeURIComponent(couple[1]);
|
|
477
|
+
});
|
|
478
|
+
return res;
|
|
479
|
+
}
|
|
480
|
+
const bidderRequest = {
|
|
481
|
+
timeout: 3000,
|
|
482
|
+
refererInfo: {
|
|
483
|
+
referer: 'https://example.com'
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
const referrer = bidderRequest.refererInfo.referer;
|
|
487
|
+
const bidRequests = [
|
|
488
|
+
{
|
|
489
|
+
'bidder': 'visx',
|
|
490
|
+
'params': {
|
|
491
|
+
'uid': 903535
|
|
492
|
+
},
|
|
493
|
+
'adUnitCode': 'visx-adunit-code-1',
|
|
494
|
+
'sizes': [[300, 250], [300, 600]],
|
|
495
|
+
'bidId': '30b31c1838de1e',
|
|
496
|
+
'bidderRequestId': '22edbae2733bf6',
|
|
497
|
+
'auctionId': '1d1a030790a475',
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
'bidder': 'visx',
|
|
501
|
+
'params': {
|
|
502
|
+
'uid': 903535
|
|
503
|
+
},
|
|
504
|
+
'adUnitCode': 'visx-adunit-code-2',
|
|
505
|
+
'sizes': [[300, 250], [300, 600]],
|
|
506
|
+
'bidId': '30b31c1838de1e',
|
|
507
|
+
'bidderRequestId': '22edbae2733bf6',
|
|
508
|
+
'auctionId': '1d1a030790a475',
|
|
509
|
+
}
|
|
510
|
+
];
|
|
511
|
+
let sandbox;
|
|
512
|
+
let documentStub;
|
|
513
|
+
|
|
514
|
+
before(function() {
|
|
515
|
+
sandbox = sinon.sandbox.create();
|
|
516
|
+
documentStub = sandbox.stub(document, 'getElementById');
|
|
517
|
+
documentStub.withArgs('visx-adunit-code-1').returns({
|
|
518
|
+
id: 'visx-adunit-code-1'
|
|
519
|
+
});
|
|
520
|
+
documentStub.withArgs('visx-adunit-element-2').returns({
|
|
521
|
+
id: 'visx-adunit-element-2'
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
after(function() {
|
|
526
|
+
sandbox.restore();
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
it('should find ad slot by ad unit code as element id', function () {
|
|
530
|
+
const request = spec.buildRequests([bidRequests[0]], bidderRequest);
|
|
531
|
+
const payload = parseRequest(request.url);
|
|
532
|
+
expect(payload).to.be.an('object');
|
|
533
|
+
expect(payload).to.have.property('auids', '903535');
|
|
534
|
+
|
|
535
|
+
const postData = request.data;
|
|
536
|
+
expect(postData).to.be.an('object');
|
|
537
|
+
expect(postData).to.deep.equal({
|
|
538
|
+
'id': '22edbae2733bf6',
|
|
539
|
+
'imp': [{
|
|
540
|
+
'id': '30b31c1838de1e',
|
|
541
|
+
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
542
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
|
|
543
|
+
}],
|
|
544
|
+
'tmax': 3000,
|
|
545
|
+
'cur': ['EUR'],
|
|
546
|
+
'source': {
|
|
547
|
+
'ext': {
|
|
548
|
+
'wrapperType': 'Prebid_js',
|
|
549
|
+
'wrapperVersion': '$prebid.version$'
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
'site': {'page': referrer}
|
|
553
|
+
});
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
it('should find ad slot by ad unit code as adUnitPath', function () {
|
|
557
|
+
makeSlot({code: 'visx-adunit-code-2', divId: 'visx-adunit-element-2'});
|
|
558
|
+
|
|
559
|
+
const request = spec.buildRequests([bidRequests[1]], bidderRequest);
|
|
560
|
+
const payload = parseRequest(request.url);
|
|
561
|
+
expect(payload).to.be.an('object');
|
|
562
|
+
expect(payload).to.have.property('auids', '903535');
|
|
563
|
+
|
|
564
|
+
const postData = request.data;
|
|
565
|
+
expect(postData).to.be.an('object');
|
|
566
|
+
expect(postData).to.deep.equal({
|
|
567
|
+
'id': '22edbae2733bf6',
|
|
568
|
+
'imp': [{
|
|
569
|
+
'id': '30b31c1838de1e',
|
|
570
|
+
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
571
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
|
|
456
572
|
}],
|
|
457
573
|
'tmax': 3000,
|
|
458
574
|
'cur': ['EUR'],
|
|
@@ -1149,7 +1265,7 @@ describe('VisxAdapter', function () {
|
|
|
1149
1265
|
it('onTimeout', function () {
|
|
1150
1266
|
const data = { timeout: 3000, bidId: '23423', params: { uid: 1 } };
|
|
1151
1267
|
spec.onTimeout(data);
|
|
1152
|
-
expect(utils.triggerPixel.calledOnceWith('https://t.visx.net/track/bid_timeout
|
|
1268
|
+
expect(utils.triggerPixel.calledOnceWith('https://t.visx.net/track/bid_timeout//' + JSON.stringify(data))).to.equal(true);
|
|
1153
1269
|
});
|
|
1154
1270
|
});
|
|
1155
1271
|
|
|
@@ -73,6 +73,12 @@ const VIDEO_REQUEST = Object.assign({}, REQUEST, {
|
|
|
73
73
|
}
|
|
74
74
|
})
|
|
75
75
|
|
|
76
|
+
const NATIVE_REQUEST = Object.assign({}, REQUEST, {
|
|
77
|
+
'mediaTypes': {
|
|
78
|
+
'native': { }
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
|
|
76
82
|
const RESPONSE = {
|
|
77
83
|
advertiser: 'yieldlab',
|
|
78
84
|
curl: 'https://www.yieldlab.de',
|
|
@@ -84,6 +90,42 @@ const RESPONSE = {
|
|
|
84
90
|
adtype: 'BANNER'
|
|
85
91
|
}
|
|
86
92
|
|
|
93
|
+
const NATIVE_RESPONSE = Object.assign({}, RESPONSE, {
|
|
94
|
+
'adtype': 'NATIVE',
|
|
95
|
+
'native': {
|
|
96
|
+
'link': {
|
|
97
|
+
'url': 'https://www.yieldlab.de'
|
|
98
|
+
},
|
|
99
|
+
'assets': [
|
|
100
|
+
{
|
|
101
|
+
'id': 1,
|
|
102
|
+
'title': {
|
|
103
|
+
'text': 'This is a great headline'
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
'id': 2,
|
|
108
|
+
'img': {
|
|
109
|
+
'url': 'https://localhost:8080/yl-logo100x100.jpg',
|
|
110
|
+
'w': 100,
|
|
111
|
+
'h': 100
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
'id': 3,
|
|
116
|
+
'data': {
|
|
117
|
+
'value': 'Native body value'
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
'imptrackers': [
|
|
122
|
+
'http://localhost:8080/ve?d=ODE9ZSY2MTI1MjAzNjMzMzYxPXN0JjA0NWUwZDk0NTY5Yi05M2FiLWUwZTQtOWFjNy1hYWY0MzFiZj1kaXQmMj12',
|
|
123
|
+
'http://localhost:8080/md/1111/9efa4e76-2030-4f04-bb9f-322541f8d611?mdata=false&pvid=false&ids=x:1',
|
|
124
|
+
'http://localhost:8080/imp?s=13216&d=2171514&a=12548955&ts=1633363025216&tid=fb134faa-7ca9-4e0e-ba39-b96549d0e540&l=0'
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
|
|
87
129
|
const VIDEO_RESPONSE = Object.assign({}, RESPONSE, {
|
|
88
130
|
'adtype': 'VIDEO'
|
|
89
131
|
})
|
|
@@ -297,6 +339,45 @@ describe('yieldlabBidAdapter', function () {
|
|
|
297
339
|
expect(result[0].vastUrl).to.include('&id=abc')
|
|
298
340
|
})
|
|
299
341
|
|
|
342
|
+
it('should add adUrl and native assets when type is Native', function () {
|
|
343
|
+
const result = spec.interpretResponse({body: [NATIVE_RESPONSE]}, {validBidRequests: [NATIVE_REQUEST], queryParams: REQPARAMS})
|
|
344
|
+
|
|
345
|
+
expect(result[0].requestId).to.equal('2d925f27f5079f')
|
|
346
|
+
expect(result[0].cpm).to.equal(0.01)
|
|
347
|
+
expect(result[0].mediaType).to.equal('native')
|
|
348
|
+
expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=')
|
|
349
|
+
expect(result[0].native.title).to.equal('This is a great headline')
|
|
350
|
+
expect(result[0].native.body).to.equal('Native body value')
|
|
351
|
+
expect(result[0].native.image.url).to.equal('https://localhost:8080/yl-logo100x100.jpg')
|
|
352
|
+
expect(result[0].native.image.width).to.equal(100)
|
|
353
|
+
expect(result[0].native.image.height).to.equal(100)
|
|
354
|
+
expect(result[0].native.clickUrl).to.equal('https://www.yieldlab.de')
|
|
355
|
+
expect(result[0].native.impressionTrackers.length).to.equal(3)
|
|
356
|
+
})
|
|
357
|
+
|
|
358
|
+
it('should add adUrl and default native assets when type is Native', function () {
|
|
359
|
+
const NATIVE_RESPONSE_2 = Object.assign({}, NATIVE_RESPONSE, {
|
|
360
|
+
'native': {
|
|
361
|
+
'link': {
|
|
362
|
+
'url': 'https://www.yieldlab.de'
|
|
363
|
+
},
|
|
364
|
+
'assets': [],
|
|
365
|
+
'imptrackers': []
|
|
366
|
+
}
|
|
367
|
+
})
|
|
368
|
+
const result = spec.interpretResponse({body: [NATIVE_RESPONSE_2]}, {validBidRequests: [NATIVE_REQUEST], queryParams: REQPARAMS})
|
|
369
|
+
|
|
370
|
+
expect(result[0].requestId).to.equal('2d925f27f5079f')
|
|
371
|
+
expect(result[0].cpm).to.equal(0.01)
|
|
372
|
+
expect(result[0].mediaType).to.equal('native')
|
|
373
|
+
expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=')
|
|
374
|
+
expect(result[0].native.title).to.equal('')
|
|
375
|
+
expect(result[0].native.body).to.equal('')
|
|
376
|
+
expect(result[0].native.image.url).to.equal('')
|
|
377
|
+
expect(result[0].native.image.width).to.equal(0)
|
|
378
|
+
expect(result[0].native.image.height).to.equal(0)
|
|
379
|
+
})
|
|
380
|
+
|
|
300
381
|
it('should append gdpr parameters to vastUrl', function () {
|
|
301
382
|
const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST], queryParams: REQPARAMS_GDPR})
|
|
302
383
|
|