prebid.js 6.1.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/README.md +1 -1
- package/browsers.json +13 -29
- package/karma.conf.maker.js +1 -1
- package/modules/admixerBidAdapter.js +2 -1
- package/modules/adnuntiusBidAdapter.js +2 -1
- package/modules/adplusBidAdapter.js +203 -0
- package/modules/adplusBidAdapter.md +39 -0
- package/modules/adyoulikeBidAdapter.js +7 -2
- package/modules/appnexusBidAdapter.js +19 -2
- package/modules/beachfrontBidAdapter.js +14 -17
- package/modules/craftBidAdapter.js +5 -3
- package/modules/dchain.js +149 -0
- package/modules/dchain.md +45 -0
- package/modules/emx_digitalBidAdapter.js +9 -1
- package/modules/freewheel-sspBidAdapter.js +6 -0
- package/modules/goldbachBidAdapter.js +1176 -0
- package/modules/goldbachBidAdapter.md +151 -0
- package/modules/gumgumBidAdapter.js +5 -1
- package/modules/intersectionRtdProvider.js +114 -0
- package/modules/invibesBidAdapter.js +15 -9
- package/modules/ipromBidAdapter.js +79 -0
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/luponmediaBidAdapter.js +570 -0
- package/modules/missenaBidAdapter.js +89 -0
- package/modules/pubmaticBidAdapter.js +3 -3
- package/modules/relaidoBidAdapter.js +86 -65
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/smaatoBidAdapter.js +4 -1
- package/modules/smartxBidAdapter.js +17 -1
- package/modules/tappxBidAdapter.js +3 -1
- package/modules/undertoneBidAdapter.js +8 -1
- package/modules/userId/index.js +27 -2
- package/modules/ventes.md +71 -0
- package/modules/ventesBidAdapter.js +104 -64
- package/modules/ventesBidAdapter.md +0 -1
- package/modules/visxBidAdapter.js +19 -2
- package/modules/visxBidAdapter.md +4 -6
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldoneBidAdapter.js +115 -11
- package/package.json +1 -1
- package/src/auction.js +3 -2
- 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/adnuntiusBidAdapter_spec.js +18 -0
- 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 +49 -1
- package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
- package/test/spec/modules/dchain_spec.js +329 -0
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
- package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +6 -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/limelightDigitalBidAdapter_spec.js +10 -7
- package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
- package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
- package/test/spec/modules/smaatoBidAdapter_spec.js +31 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
- package/test/spec/modules/userId_spec.js +51 -0
- package/test/spec/modules/visxBidAdapter_spec.js +120 -4
- package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
- package/test/spec/unit/core/targeting_spec.js +44 -0
|
@@ -57,23 +57,34 @@ describe('RelaidoAdapter', function () {
|
|
|
57
57
|
serverResponse = {
|
|
58
58
|
body: {
|
|
59
59
|
status: 'ok',
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
ads: [{
|
|
61
|
+
placementId: 100000,
|
|
62
|
+
width: 640,
|
|
63
|
+
height: 360,
|
|
64
|
+
bidId: '2ed93003f7bb99',
|
|
65
|
+
price: 500,
|
|
66
|
+
model: 'vcpm',
|
|
67
|
+
currency: 'JPY',
|
|
68
|
+
creativeId: 1000,
|
|
69
|
+
vast: '<VAST version="3.0"><Ad><InLine></InLine></Ad></VAST>',
|
|
70
|
+
syncUrl: 'https://relaido/sync.html',
|
|
71
|
+
adomain: ['relaido.co.jp', 'www.cmertv.co.jp'],
|
|
72
|
+
mediaType: 'video'
|
|
73
|
+
}],
|
|
66
74
|
playerUrl: 'https://relaido/player.js',
|
|
67
|
-
syncUrl: 'https://
|
|
68
|
-
|
|
75
|
+
syncUrl: 'https://api-dev.ulizaex.com/tr/v1/prebid/sync.html',
|
|
76
|
+
uuid: relaido_uuid,
|
|
69
77
|
}
|
|
70
78
|
};
|
|
71
79
|
serverRequest = {
|
|
72
|
-
method: '
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
method: 'POST',
|
|
81
|
+
data: {
|
|
82
|
+
bids: [{
|
|
83
|
+
bidId: bidRequest.bidId,
|
|
84
|
+
width: bidRequest.mediaTypes.video.playerSize[0][0],
|
|
85
|
+
height: bidRequest.mediaTypes.video.playerSize[0][1],
|
|
86
|
+
mediaType: 'video'}]
|
|
87
|
+
}
|
|
77
88
|
};
|
|
78
89
|
});
|
|
79
90
|
|
|
@@ -195,28 +206,23 @@ describe('RelaidoAdapter', function () {
|
|
|
195
206
|
describe('spec.buildRequests', function () {
|
|
196
207
|
it('should build bid requests by video', function () {
|
|
197
208
|
const bidRequests = spec.buildRequests([bidRequest], bidderRequest);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
expect(
|
|
202
|
-
expect(
|
|
203
|
-
expect(
|
|
204
|
-
expect(
|
|
205
|
-
expect(request.
|
|
206
|
-
expect(request.
|
|
207
|
-
expect(
|
|
208
|
-
expect(request.
|
|
209
|
-
expect(
|
|
210
|
-
expect(request.
|
|
211
|
-
expect(request.
|
|
212
|
-
expect(request.
|
|
213
|
-
expect(
|
|
214
|
-
expect(
|
|
215
|
-
expect(request.data.media_type).to.equal('video');
|
|
216
|
-
expect(request.data.uuid).to.equal(relaido_uuid);
|
|
217
|
-
expect(request.data.width).to.equal(bidRequest.mediaTypes.video.playerSize[0][0]);
|
|
218
|
-
expect(request.data.height).to.equal(bidRequest.mediaTypes.video.playerSize[0][1]);
|
|
219
|
-
expect(request.data.pv).to.equal('$prebid.version$');
|
|
209
|
+
const data = JSON.parse(bidRequests.data);
|
|
210
|
+
expect(data.bids).to.have.lengthOf(1);
|
|
211
|
+
const request = data.bids[0];
|
|
212
|
+
expect(bidRequests.method).to.equal('POST');
|
|
213
|
+
expect(bidRequests.url).to.equal('https://api.relaido.jp/bid/v1/sprebid');
|
|
214
|
+
expect(data.ref).to.equal(bidderRequest.refererInfo.referer);
|
|
215
|
+
expect(data.timeout_ms).to.equal(bidderRequest.timeout);
|
|
216
|
+
expect(request.ad_unit_code).to.equal(bidRequest.adUnitCode);
|
|
217
|
+
expect(request.auction_id).to.equal(bidRequest.auctionId);
|
|
218
|
+
expect(data.bidder).to.equal(bidRequest.bidder);
|
|
219
|
+
expect(request.bidder_request_id).to.equal(bidRequest.bidderRequestId);
|
|
220
|
+
expect(data.bid_requests_count).to.equal(bidRequest.bidRequestsCount);
|
|
221
|
+
expect(request.bid_id).to.equal(bidRequest.bidId);
|
|
222
|
+
expect(request.transaction_id).to.equal(bidRequest.transactionId);
|
|
223
|
+
expect(request.media_type).to.equal('video');
|
|
224
|
+
expect(data.uuid).to.equal(relaido_uuid);
|
|
225
|
+
expect(data.pv).to.equal('$prebid.version$');
|
|
220
226
|
});
|
|
221
227
|
|
|
222
228
|
it('should build bid requests by banner', function () {
|
|
@@ -236,9 +242,10 @@ describe('RelaidoAdapter', function () {
|
|
|
236
242
|
}
|
|
237
243
|
};
|
|
238
244
|
const bidRequests = spec.buildRequests([bidRequest], bidderRequest);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
245
|
+
const data = JSON.parse(bidRequests.data);
|
|
246
|
+
expect(data.bids).to.have.lengthOf(1);
|
|
247
|
+
const request = data.bids[0];
|
|
248
|
+
expect(request.media_type).to.equal('banner');
|
|
242
249
|
});
|
|
243
250
|
|
|
244
251
|
it('should take 1x1 size', function () {
|
|
@@ -258,17 +265,18 @@ describe('RelaidoAdapter', function () {
|
|
|
258
265
|
}
|
|
259
266
|
};
|
|
260
267
|
const bidRequests = spec.buildRequests([bidRequest], bidderRequest);
|
|
261
|
-
|
|
262
|
-
|
|
268
|
+
const data = JSON.parse(bidRequests.data);
|
|
269
|
+
expect(data.bids).to.have.lengthOf(1);
|
|
270
|
+
const request = data.bids[0];
|
|
263
271
|
|
|
264
272
|
expect(request.width).to.equal(1);
|
|
265
273
|
});
|
|
266
274
|
|
|
267
275
|
it('The referrer should be the last', function () {
|
|
268
276
|
const bidRequests = spec.buildRequests([bidRequest], bidderRequest);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const keys = Object.keys(
|
|
277
|
+
const data = JSON.parse(bidRequests.data);
|
|
278
|
+
expect(data.bids).to.have.lengthOf(1);
|
|
279
|
+
const keys = Object.keys(data);
|
|
272
280
|
expect(keys[0]).to.equal('version');
|
|
273
281
|
expect(keys[keys.length - 1]).to.equal('ref');
|
|
274
282
|
});
|
|
@@ -277,9 +285,9 @@ describe('RelaidoAdapter', function () {
|
|
|
277
285
|
bidRequest.userId = {}
|
|
278
286
|
bidRequest.userId.imuid = 'i.tjHcK_7fTcqnbrS_YA2vaw';
|
|
279
287
|
const bidRequests = spec.buildRequests([bidRequest], bidderRequest);
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
expect(
|
|
288
|
+
const data = JSON.parse(bidRequests.data);
|
|
289
|
+
expect(data.bids).to.have.lengthOf(1);
|
|
290
|
+
expect(data.imuid).to.equal('i.tjHcK_7fTcqnbrS_YA2vaw');
|
|
283
291
|
});
|
|
284
292
|
});
|
|
285
293
|
|
|
@@ -288,29 +296,29 @@ describe('RelaidoAdapter', function () {
|
|
|
288
296
|
const bidResponses = spec.interpretResponse(serverResponse, serverRequest);
|
|
289
297
|
expect(bidResponses).to.have.lengthOf(1);
|
|
290
298
|
const response = bidResponses[0];
|
|
291
|
-
expect(response.requestId).to.equal(serverRequest.bidId);
|
|
292
|
-
expect(response.width).to.equal(serverRequest.width);
|
|
293
|
-
expect(response.height).to.equal(serverRequest.height);
|
|
294
|
-
expect(response.cpm).to.equal(serverResponse.body.price);
|
|
295
|
-
expect(response.currency).to.equal(serverResponse.body.currency);
|
|
296
|
-
expect(response.creativeId).to.equal(serverResponse.body.creativeId);
|
|
297
|
-
expect(response.vastXml).to.equal(serverResponse.body.vast);
|
|
298
|
-
expect(response.meta.advertiserDomains).to.equal(serverResponse.body.adomain);
|
|
299
|
+
expect(response.requestId).to.equal(serverRequest.data.bids[0].bidId);
|
|
300
|
+
expect(response.width).to.equal(serverRequest.data.bids[0].width);
|
|
301
|
+
expect(response.height).to.equal(serverRequest.data.bids[0].height);
|
|
302
|
+
expect(response.cpm).to.equal(serverResponse.body.ads[0].price);
|
|
303
|
+
expect(response.currency).to.equal(serverResponse.body.ads[0].currency);
|
|
304
|
+
expect(response.creativeId).to.equal(serverResponse.body.ads[0].creativeId);
|
|
305
|
+
expect(response.vastXml).to.equal(serverResponse.body.ads[0].vast);
|
|
306
|
+
expect(response.meta.advertiserDomains).to.equal(serverResponse.body.ads[0].adomain);
|
|
299
307
|
expect(response.meta.mediaType).to.equal(VIDEO);
|
|
300
308
|
expect(response.ad).to.be.undefined;
|
|
301
309
|
});
|
|
302
310
|
|
|
303
311
|
it('should build bid response by banner', function () {
|
|
304
|
-
|
|
312
|
+
serverResponse.body.ads[0].mediaType = 'banner';
|
|
305
313
|
const bidResponses = spec.interpretResponse(serverResponse, serverRequest);
|
|
306
314
|
expect(bidResponses).to.have.lengthOf(1);
|
|
307
315
|
const response = bidResponses[0];
|
|
308
|
-
expect(response.requestId).to.equal(serverRequest.bidId);
|
|
309
|
-
expect(response.width).to.equal(serverRequest.width);
|
|
310
|
-
expect(response.height).to.equal(serverRequest.height);
|
|
311
|
-
expect(response.cpm).to.equal(serverResponse.body.price);
|
|
312
|
-
expect(response.currency).to.equal(serverResponse.body.currency);
|
|
313
|
-
expect(response.creativeId).to.equal(serverResponse.body.creativeId);
|
|
316
|
+
expect(response.requestId).to.equal(serverRequest.data.bids[0].bidId);
|
|
317
|
+
expect(response.width).to.equal(serverRequest.data.bids[0].width);
|
|
318
|
+
expect(response.height).to.equal(serverRequest.data.bids[0].height);
|
|
319
|
+
expect(response.cpm).to.equal(serverResponse.body.ads[0].price);
|
|
320
|
+
expect(response.currency).to.equal(serverResponse.body.ads[0].currency);
|
|
321
|
+
expect(response.creativeId).to.equal(serverResponse.body.ads[0].creativeId);
|
|
314
322
|
expect(response.vastXml).to.be.undefined;
|
|
315
323
|
expect(response.ad).to.include(`<div id="rop-prebid">`);
|
|
316
324
|
expect(response.ad).to.include(`<script src="https://relaido/player.js"></script>`);
|
|
@@ -370,8 +378,8 @@ describe('RelaidoAdapter', function () {
|
|
|
370
378
|
it('Should create nurl pixel if bid nurl', function () {
|
|
371
379
|
let bid = {
|
|
372
380
|
bidder: bidRequest.bidder,
|
|
373
|
-
creativeId: serverResponse.body.creativeId,
|
|
374
|
-
cpm: serverResponse.body.price,
|
|
381
|
+
creativeId: serverResponse.body.ads[0].creativeId,
|
|
382
|
+
cpm: serverResponse.body.ads[0].price,
|
|
375
383
|
params: [bidRequest.params],
|
|
376
384
|
auctionId: bidRequest.auctionId,
|
|
377
385
|
requestId: bidRequest.bidId,
|
|
@@ -294,6 +294,16 @@ describe('smaatoBidAdapterTest', () => {
|
|
|
294
294
|
expect(req.source.ext.schain).to.not.exist;
|
|
295
295
|
});
|
|
296
296
|
|
|
297
|
+
it('sends instl if instl exists', () => {
|
|
298
|
+
const instl = { instl: 1 };
|
|
299
|
+
const bidRequestWithInstl = Object.assign({}, singleBannerBidRequest, {ortb2Imp: instl});
|
|
300
|
+
|
|
301
|
+
const reqs = spec.buildRequests([bidRequestWithInstl], defaultBidderRequest);
|
|
302
|
+
|
|
303
|
+
const req = extractPayloadOfFirstAndOnlyRequest(reqs);
|
|
304
|
+
expect(req.imp[0].instl).to.equal(1);
|
|
305
|
+
});
|
|
306
|
+
|
|
297
307
|
it('sends tmax', () => {
|
|
298
308
|
const reqs = spec.buildRequests([singleBannerBidRequest], defaultBidderRequest);
|
|
299
309
|
|
|
@@ -442,6 +452,16 @@ describe('smaatoBidAdapterTest', () => {
|
|
|
442
452
|
expect(req.imp[0].bidfloor).to.be.equal(0.456);
|
|
443
453
|
});
|
|
444
454
|
|
|
455
|
+
it('sends instl if instl exists', () => {
|
|
456
|
+
const instl = { instl: 1 };
|
|
457
|
+
const bidRequestWithInstl = Object.assign({}, singleVideoBidRequest, {ortb2Imp: instl});
|
|
458
|
+
|
|
459
|
+
const reqs = spec.buildRequests([bidRequestWithInstl], defaultBidderRequest);
|
|
460
|
+
|
|
461
|
+
const req = extractPayloadOfFirstAndOnlyRequest(reqs);
|
|
462
|
+
expect(req.imp[0].instl).to.equal(1);
|
|
463
|
+
});
|
|
464
|
+
|
|
445
465
|
it('splits multi format bid requests', () => {
|
|
446
466
|
const combinedBannerAndVideoBidRequest = {
|
|
447
467
|
bidder: 'smaato',
|
|
@@ -523,6 +543,17 @@ describe('smaatoBidAdapterTest', () => {
|
|
|
523
543
|
expect(req.imp[1].video.sequence).to.be.equal(2);
|
|
524
544
|
});
|
|
525
545
|
|
|
546
|
+
it('sends instl if instl exists', () => {
|
|
547
|
+
const instl = { instl: 1 };
|
|
548
|
+
const bidRequestWithInstl = Object.assign({}, longFormVideoBidRequest, {ortb2Imp: instl});
|
|
549
|
+
|
|
550
|
+
const reqs = spec.buildRequests([bidRequestWithInstl], defaultBidderRequest);
|
|
551
|
+
|
|
552
|
+
const req = extractPayloadOfFirstAndOnlyRequest(reqs);
|
|
553
|
+
expect(req.imp[0].instl).to.equal(1);
|
|
554
|
+
expect(req.imp[1].instl).to.equal(1);
|
|
555
|
+
});
|
|
556
|
+
|
|
526
557
|
it('sends bidfloor when configured', () => {
|
|
527
558
|
const longFormVideoBidRequestWithFloor = Object.assign({}, longFormVideoBidRequest);
|
|
528
559
|
longFormVideoBidRequestWithFloor.getFloor = function(arg) {
|
|
@@ -189,6 +189,14 @@ describe('The smartx adapter', function () {
|
|
|
189
189
|
domain: '',
|
|
190
190
|
publisher: {
|
|
191
191
|
id: '__name__'
|
|
192
|
+
},
|
|
193
|
+
content: {
|
|
194
|
+
ext: {
|
|
195
|
+
prebid: {
|
|
196
|
+
name: 'pbjs',
|
|
197
|
+
version: '$prebid.version$'
|
|
198
|
+
}
|
|
199
|
+
}
|
|
192
200
|
}
|
|
193
201
|
});
|
|
194
202
|
});
|
|
@@ -525,6 +533,7 @@ describe('The smartx adapter', function () {
|
|
|
525
533
|
bidderRequestObj.bidRequest.bids[0].params.outstream_options.title = 'abc';
|
|
526
534
|
bidderRequestObj.bidRequest.bids[0].params.outstream_options.skipOffset = 2;
|
|
527
535
|
bidderRequestObj.bidRequest.bids[0].params.outstream_options.desiredBitrate = 123;
|
|
536
|
+
bidderRequestObj.bidRequest.bids[0].params.outstream_options.visibilityThreshold = 30;
|
|
528
537
|
|
|
529
538
|
responses[0].renderer.render(responses[0]);
|
|
530
539
|
|
|
@@ -183,6 +183,10 @@ describe('Tappx bid adapter', function () {
|
|
|
183
183
|
badBidRequest_v.bids.mediaTypes.video.playerSize = [320, 250];
|
|
184
184
|
assert.isFalse(spec.isBidRequestValid(badBidRequest_v.bids));
|
|
185
185
|
});
|
|
186
|
+
|
|
187
|
+
it('should export the TCF vendor ID', function () {
|
|
188
|
+
expect(spec.gvlid).to.equal(628);
|
|
189
|
+
})
|
|
186
190
|
});
|
|
187
191
|
|
|
188
192
|
/**
|
|
@@ -49,6 +49,7 @@ import {flocIdSubmodule} from 'modules/flocIdSystem.js'
|
|
|
49
49
|
import {amxIdSubmodule} from '../../../modules/amxIdSystem.js';
|
|
50
50
|
import {akamaiDAPIdSubmodule} from 'modules/akamaiDAPIdSystem.js'
|
|
51
51
|
import {kinessoIdSubmodule} from 'modules/kinessoIdSystem.js'
|
|
52
|
+
import * as mockGpt from '../integration/faker/googletag.js';
|
|
52
53
|
|
|
53
54
|
let assert = require('chai').assert;
|
|
54
55
|
let expect = require('chai').expect;
|
|
@@ -114,15 +115,21 @@ describe('User ID', function () {
|
|
|
114
115
|
|
|
115
116
|
describe('Decorate Ad Units', function () {
|
|
116
117
|
beforeEach(function () {
|
|
118
|
+
// reset mockGpt so nothing else interferes
|
|
119
|
+
mockGpt.disable();
|
|
120
|
+
mockGpt.enable();
|
|
117
121
|
coreStorage.setCookie('pubcid', '', EXPIRED_COOKIE_DATE);
|
|
118
122
|
coreStorage.setCookie('pubcid_alt', 'altpubcid200000', (new Date(Date.now() + 5000).toUTCString()));
|
|
119
123
|
sinon.spy(coreStorage, 'setCookie');
|
|
124
|
+
sinon.stub(utils, 'logWarn');
|
|
120
125
|
});
|
|
121
126
|
|
|
122
127
|
afterEach(function () {
|
|
128
|
+
mockGpt.enable();
|
|
123
129
|
$$PREBID_GLOBAL$$.requestBids.removeAll();
|
|
124
130
|
config.resetConfig();
|
|
125
131
|
coreStorage.setCookie.restore();
|
|
132
|
+
utils.logWarn.restore();
|
|
126
133
|
});
|
|
127
134
|
|
|
128
135
|
after(function () {
|
|
@@ -321,6 +328,50 @@ describe('User ID', function () {
|
|
|
321
328
|
expect((getGlobal()).getUserIdsAsEids()).to.deep.equal(createEidsArray((getGlobal()).getUserIds()));
|
|
322
329
|
});
|
|
323
330
|
|
|
331
|
+
it('should set googletag ppid correctly', function () {
|
|
332
|
+
let adUnits = [getAdUnitMock()];
|
|
333
|
+
setSubmoduleRegistry([amxIdSubmodule, sharedIdSystemSubmodule, identityLinkSubmodule]);
|
|
334
|
+
init(config);
|
|
335
|
+
|
|
336
|
+
config.setConfig({
|
|
337
|
+
userSync: {
|
|
338
|
+
ppid: 'pubcid.org',
|
|
339
|
+
userIds: [
|
|
340
|
+
{ name: 'amxId', value: {'amxId': 'amx-id-value-amx-id-value-amx-id-value'} },
|
|
341
|
+
{ name: 'pubCommonId', value: {'pubcid': 'pubCommon-id-value-pubCommon-id-value'} },
|
|
342
|
+
{ name: 'identityLink', value: {'idl_env': 'identityLink-id-value-identityLink-id-value'} },
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
// before ppid should not be set
|
|
347
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
348
|
+
requestBidsHook(() => {}, {adUnits});
|
|
349
|
+
// ppid should have been set without dashes and stuff
|
|
350
|
+
expect(window.googletag._ppid).to.equal('pubCommonidvaluepubCommonidvalue');
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
it('should log a warning if PPID too big or small', function () {
|
|
354
|
+
let adUnits = [getAdUnitMock()];
|
|
355
|
+
setSubmoduleRegistry([sharedIdSystemSubmodule]);
|
|
356
|
+
init(config);
|
|
357
|
+
|
|
358
|
+
config.setConfig({
|
|
359
|
+
userSync: {
|
|
360
|
+
ppid: 'pubcid.org',
|
|
361
|
+
userIds: [
|
|
362
|
+
{ name: 'pubCommonId', value: {'pubcid': 'pubcommonIdValue'} },
|
|
363
|
+
]
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
// before ppid should not be set
|
|
367
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
368
|
+
requestBidsHook(() => {}, {adUnits});
|
|
369
|
+
// ppid should NOT have been set
|
|
370
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
371
|
+
// a warning should have been emmited
|
|
372
|
+
expect(utils.logWarn.args[0][0]).to.exist.and.to.contain('User ID - Googletag Publisher Provided ID for pubcid.org is not between 32 and 150 characters - pubcommonIdValue');
|
|
373
|
+
});
|
|
374
|
+
|
|
324
375
|
it('pbjs.refreshUserIds refreshes', function() {
|
|
325
376
|
let sandbox = sinon.createSandbox();
|
|
326
377
|
|
|
@@ -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'],
|