prebid.js 6.24.0 → 6.26.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/adgenerationBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.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/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpexIdSystem.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -0
- 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/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invibesBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.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/not-for-prod/prebid.js +123 -121
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneVideoBidAdapter.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 +3 -3
- 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/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/sortableBidAdapter.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/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/trustxBidAdapter.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/videoheroesBidAdapter.js +1 -0
- package/dist/vidoomyBidAdapter.js +1 -1
- package/dist/visxBidAdapter.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/userId_example.html +3 -0
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +65 -11
- package/modules/.submodules.json +2 -1
- package/modules/adagioBidAdapter.js +2 -0
- package/modules/adtelligentBidAdapter.js +3 -1
- package/modules/alkimiBidAdapter.md +10 -4
- package/modules/appnexusBidAdapter.js +13 -2
- package/modules/beopBidAdapter.js +51 -6
- package/modules/cpexIdSystem.js +1 -2
- package/modules/currency.js +4 -13
- package/modules/dacIdSystem.md +4 -4
- package/modules/dfpAdServerVideo.js +8 -0
- package/modules/gravitoIdSystem.js +57 -0
- package/modules/gravitoIdSystem.md +28 -0
- package/modules/improvedigitalBidAdapter.js +100 -43
- package/modules/invibesBidAdapter.js +55 -34
- package/modules/ixBidAdapter.js +62 -26
- package/modules/ixBidAdapter.md +42 -42
- package/modules/jixieBidAdapter.js +2 -0
- package/modules/kargoBidAdapter.js +23 -8
- package/modules/oguryBidAdapter.js +27 -1
- package/modules/trustpidSystem.js +9 -28
- package/modules/trustpidSystem.md +11 -34
- package/modules/userId/eids.js +6 -0
- package/modules/userId/index.js +30 -55
- package/modules/userId/userId.md +3 -11
- package/modules/videoheroesBidAdapter.js +267 -0
- package/modules/videoheroesBidAdapter.md +134 -0
- package/modules/vidoomyBidAdapter.js +2 -6
- package/modules/weboramaRtdProvider.js +515 -241
- package/modules/weboramaRtdProvider.md +488 -51
- package/modules/zeta_global_sspBidAdapter.js +1 -1
- package/package.json +4 -4
- package/src/adserver.js +7 -0
- package/src/hook.js +19 -1
- package/src/utils/promise.js +36 -0
- package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +37 -10
- package/test/spec/modules/beopBidAdapter_spec.js +15 -2
- package/test/spec/modules/dfpAdServerVideo_spec.js +45 -0
- package/test/spec/modules/gravitoIdSystem_spec.js +51 -0
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +289 -72
- package/test/spec/modules/invibesBidAdapter_spec.js +98 -7
- package/test/spec/modules/ixBidAdapter_spec.js +132 -26
- package/test/spec/modules/jixieBidAdapter_spec.js +17 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +45 -3
- package/test/spec/modules/liveIntentIdSystem_spec.js +2 -2
- package/test/spec/modules/loglyliftBidAdapter_spec.js +8 -0
- package/test/spec/modules/oguryBidAdapter_spec.js +181 -3
- package/test/spec/modules/trustpidSystem_spec.js +42 -19
- package/test/spec/modules/userId_spec.js +18 -0
- package/test/spec/modules/videoheroesBidAdapter_spec.js +363 -0
- package/test/spec/modules/weboramaRtdProvider_spec.js +2333 -266
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +37 -24
- package/test/spec/unit/utils/promise_spec.js +49 -0
- package/test/spec/modules/medianetRtdProvider_spec.js +0 -146
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {expect} from 'chai';
|
|
2
|
+
import { config } from 'src/config.js';
|
|
2
3
|
import {spec, resetInvibes, stubDomainOptions, readGdprConsent} from 'modules/invibesBidAdapter.js';
|
|
3
4
|
|
|
4
5
|
describe('invibesBidAdapter:', function () {
|
|
@@ -93,6 +94,17 @@ describe('invibesBidAdapter:', function () {
|
|
|
93
94
|
}
|
|
94
95
|
};
|
|
95
96
|
|
|
97
|
+
let SetBidderAccess = function() {
|
|
98
|
+
config.setConfig({
|
|
99
|
+
deviceAccess: true
|
|
100
|
+
});
|
|
101
|
+
$$PREBID_GLOBAL$$.bidderSettings = {
|
|
102
|
+
invibes: {
|
|
103
|
+
storageAllowed: true
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
96
108
|
beforeEach(function () {
|
|
97
109
|
resetInvibes();
|
|
98
110
|
document.cookie = '';
|
|
@@ -100,6 +112,7 @@ describe('invibesBidAdapter:', function () {
|
|
|
100
112
|
});
|
|
101
113
|
|
|
102
114
|
afterEach(function () {
|
|
115
|
+
$$PREBID_GLOBAL$$.bidderSettings = {};
|
|
103
116
|
this.cStub1.restore();
|
|
104
117
|
});
|
|
105
118
|
|
|
@@ -296,13 +309,40 @@ describe('invibesBidAdapter:', function () {
|
|
|
296
309
|
top.window.invibes.optIn = 1;
|
|
297
310
|
top.window.invibes.purposes = [true, false, false, false, false, false, false, false, false, false];
|
|
298
311
|
localStorage.ivvcap = '{"9731":[1,1768600800000]}';
|
|
312
|
+
SetBidderAccess();
|
|
313
|
+
|
|
299
314
|
const request = spec.buildRequests(bidRequests, {auctionStart: Date.now()});
|
|
315
|
+
|
|
300
316
|
expect(request.data.capCounts).to.equal('9731=1');
|
|
301
317
|
});
|
|
302
318
|
|
|
303
319
|
it('does not have capped ids if local storage variable is correctly formatted but no opt in', function () {
|
|
320
|
+
let bidderRequest = {
|
|
321
|
+
auctionStart: Date.now(),
|
|
322
|
+
gdprConsent: {
|
|
323
|
+
vendorData: {
|
|
324
|
+
gdprApplies: true,
|
|
325
|
+
hasGlobalConsent: false,
|
|
326
|
+
purpose: {
|
|
327
|
+
consents: {
|
|
328
|
+
1: false,
|
|
329
|
+
2: false,
|
|
330
|
+
3: false,
|
|
331
|
+
4: false,
|
|
332
|
+
5: false,
|
|
333
|
+
6: false,
|
|
334
|
+
7: false,
|
|
335
|
+
8: false,
|
|
336
|
+
9: false,
|
|
337
|
+
10: false
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
|
|
304
344
|
localStorage.ivvcap = '{"9731":[1,1768600800000]}';
|
|
305
|
-
const request = spec.buildRequests(bidRequests,
|
|
345
|
+
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
306
346
|
expect(request.data.capCounts).to.equal('');
|
|
307
347
|
});
|
|
308
348
|
|
|
@@ -369,6 +409,8 @@ describe('invibesBidAdapter:', function () {
|
|
|
369
409
|
top.window.invibes.purposes = [true, false, false, false, false, false, false, false, false, false];
|
|
370
410
|
global.document.cookie = 'ivbsdid={"id":"dvdjkams6nkq","cr":' + Date.now() + ',"hc":0}';
|
|
371
411
|
let bidderRequest = {gdprConsent: {vendorData: {vendorConsents: {436: true}}}};
|
|
412
|
+
SetBidderAccess();
|
|
413
|
+
|
|
372
414
|
let request = spec.buildRequests(bidRequests, bidderRequest);
|
|
373
415
|
expect(request.data.lId).to.exist;
|
|
374
416
|
});
|
|
@@ -496,7 +538,7 @@ describe('invibesBidAdapter:', function () {
|
|
|
496
538
|
let request = spec.buildRequests(bidRequests, bidderRequest);
|
|
497
539
|
expect(request.data.li.split(',')[1] && request.data.li.split(',')[6]).to.equal('true');
|
|
498
540
|
});
|
|
499
|
-
it('should send oi =
|
|
541
|
+
it('should send oi = 1 when vendorData is null (calculation will be performed by ADWEB)', function () {
|
|
500
542
|
let bidderRequest = {
|
|
501
543
|
gdprConsent: {
|
|
502
544
|
vendorData: null
|
|
@@ -962,7 +1004,29 @@ describe('invibesBidAdapter:', function () {
|
|
|
962
1004
|
UseAdUnitCode: true
|
|
963
1005
|
};
|
|
964
1006
|
|
|
965
|
-
var buildResponse = function(placementId, cid, blcids, creativeId) {
|
|
1007
|
+
var buildResponse = function(placementId, cid, blcids, creativeId, ShouldSetLId) {
|
|
1008
|
+
if (ShouldSetLId) {
|
|
1009
|
+
return {
|
|
1010
|
+
MultipositionEnabled: true,
|
|
1011
|
+
AdPlacements: [{
|
|
1012
|
+
Ads: [{
|
|
1013
|
+
BidPrice: 0.5,
|
|
1014
|
+
VideoExposedId: creativeId,
|
|
1015
|
+
Cid: cid,
|
|
1016
|
+
Blcids: blcids
|
|
1017
|
+
}],
|
|
1018
|
+
BidModel: {
|
|
1019
|
+
BidVersion: 1,
|
|
1020
|
+
PlacementId: placementId,
|
|
1021
|
+
AuctionStartTime: Date.now(),
|
|
1022
|
+
CreativeHtml: '<!-- Creative -->'
|
|
1023
|
+
}
|
|
1024
|
+
}],
|
|
1025
|
+
ShouldSetLId: true,
|
|
1026
|
+
LId: 'dvdjkams6nkq'
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
|
|
966
1030
|
return {
|
|
967
1031
|
MultipositionEnabled: true,
|
|
968
1032
|
AdPlacements: [{
|
|
@@ -1066,6 +1130,22 @@ describe('invibesBidAdapter:', function () {
|
|
|
1066
1130
|
});
|
|
1067
1131
|
});
|
|
1068
1132
|
|
|
1133
|
+
context('AdWeb generates LIDs', function() {
|
|
1134
|
+
it('works when no LID is not sent from AdWeb', function() {
|
|
1135
|
+
var firstResponse = buildResponse('12345', 1, [], 123);
|
|
1136
|
+
|
|
1137
|
+
var firstResult = spec.interpretResponse({body: firstResponse}, {bidRequests});
|
|
1138
|
+
expect(firstResult[0].creativeId).to.equal(123);
|
|
1139
|
+
});
|
|
1140
|
+
|
|
1141
|
+
it('sets lid when AdWeb sends it', function() {
|
|
1142
|
+
var firstResponse = buildResponse('12345', 1, [], 123, true);
|
|
1143
|
+
|
|
1144
|
+
spec.interpretResponse({body: firstResponse}, {bidRequests});
|
|
1145
|
+
expect(global.document.cookie.indexOf('ivbsdid')).to.greaterThanOrEqual(0);
|
|
1146
|
+
});
|
|
1147
|
+
});
|
|
1148
|
+
|
|
1069
1149
|
context('in multiposition context, with conflicting ads', function() {
|
|
1070
1150
|
it('registers the second ad when no conflict', function() {
|
|
1071
1151
|
var firstResponse = buildResponse('12345', 1, [1], 123);
|
|
@@ -1123,22 +1203,33 @@ describe('invibesBidAdapter:', function () {
|
|
|
1123
1203
|
|
|
1124
1204
|
it('returns an iframe with params if enabled', function () {
|
|
1125
1205
|
top.window.invibes.optIn = 1;
|
|
1126
|
-
global.document.cookie = 'ivvbks=17639.0,1,2';
|
|
1127
1206
|
let response = spec.getUserSyncs({iframeEnabled: true});
|
|
1128
1207
|
expect(response.type).to.equal('iframe');
|
|
1129
1208
|
expect(response.url).to.include(SYNC_ENDPOINT);
|
|
1130
1209
|
expect(response.url).to.include('optIn');
|
|
1131
|
-
expect(response.url).to.include('ivvbks');
|
|
1132
1210
|
});
|
|
1133
1211
|
|
|
1134
1212
|
it('returns an iframe with params including if enabled', function () {
|
|
1135
1213
|
top.window.invibes.optIn = 1;
|
|
1136
|
-
global.document.cookie = '
|
|
1214
|
+
global.document.cookie = 'ivbsdid={"id":"dvdjkams6nkq","cr":' + Date.now() + ',"hc":0}';
|
|
1215
|
+
SetBidderAccess();
|
|
1216
|
+
|
|
1217
|
+
let response = spec.getUserSyncs({iframeEnabled: true});
|
|
1218
|
+
expect(response.type).to.equal('iframe');
|
|
1219
|
+
expect(response.url).to.include(SYNC_ENDPOINT);
|
|
1220
|
+
expect(response.url).to.include('optIn');
|
|
1221
|
+
expect(response.url).to.include('ivbsdid');
|
|
1222
|
+
});
|
|
1223
|
+
|
|
1224
|
+
it('returns an iframe with params including if enabled read from LocalStorage', function () {
|
|
1225
|
+
top.window.invibes.optIn = 1;
|
|
1226
|
+
localStorage.ivbsdid = 'dvdjkams6nkq';
|
|
1227
|
+
SetBidderAccess();
|
|
1228
|
+
|
|
1137
1229
|
let response = spec.getUserSyncs({iframeEnabled: true});
|
|
1138
1230
|
expect(response.type).to.equal('iframe');
|
|
1139
1231
|
expect(response.url).to.include(SYNC_ENDPOINT);
|
|
1140
1232
|
expect(response.url).to.include('optIn');
|
|
1141
|
-
expect(response.url).to.include('ivvbks');
|
|
1142
1233
|
expect(response.url).to.include('ivbsdid');
|
|
1143
1234
|
});
|
|
1144
1235
|
|
|
@@ -193,6 +193,35 @@ describe('IndexexchangeAdapter', function () {
|
|
|
193
193
|
}
|
|
194
194
|
];
|
|
195
195
|
|
|
196
|
+
const DEFAULT_VIDEO_VALID_BID_NO_VIDEO_PARAMS = [
|
|
197
|
+
{
|
|
198
|
+
bidder: 'ix',
|
|
199
|
+
params: {
|
|
200
|
+
siteId: '456'
|
|
201
|
+
},
|
|
202
|
+
sizes: [400, 100],
|
|
203
|
+
mediaTypes: {
|
|
204
|
+
video: {
|
|
205
|
+
context: 'instream',
|
|
206
|
+
playerSize: [[400, 100]],
|
|
207
|
+
mimes: [
|
|
208
|
+
'video/mp4',
|
|
209
|
+
'video/webm'
|
|
210
|
+
],
|
|
211
|
+
minduration: 0,
|
|
212
|
+
maxduration: 60,
|
|
213
|
+
protocols: [2]
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
adUnitCode: 'div-gpt-ad-1460505748562-0',
|
|
217
|
+
transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
|
|
218
|
+
bidId: '1a2b3c4e',
|
|
219
|
+
bidderRequestId: '11a22b33c44e',
|
|
220
|
+
auctionId: '1aa2bb3cc4de',
|
|
221
|
+
schain: SAMPLE_SCHAIN
|
|
222
|
+
}
|
|
223
|
+
];
|
|
224
|
+
|
|
196
225
|
const DEFAULT_VIDEO_VALID_BID = [
|
|
197
226
|
{
|
|
198
227
|
bidder: 'ix',
|
|
@@ -236,7 +265,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
236
265
|
mediaTypes: {
|
|
237
266
|
video: {
|
|
238
267
|
context: 'outstream',
|
|
239
|
-
playerSize: [600, 700]
|
|
268
|
+
playerSize: [[600, 700]]
|
|
240
269
|
},
|
|
241
270
|
banner: {
|
|
242
271
|
sizes: [[300, 250], [300, 600], [400, 500]]
|
|
@@ -271,7 +300,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
271
300
|
mediaTypes: {
|
|
272
301
|
video: {
|
|
273
302
|
context: 'outstream',
|
|
274
|
-
playerSize: [300, 250]
|
|
303
|
+
playerSize: [[300, 250]]
|
|
275
304
|
},
|
|
276
305
|
banner: {
|
|
277
306
|
sizes: [[300, 250], [300, 600]]
|
|
@@ -371,7 +400,10 @@ describe('IndexexchangeAdapter', function () {
|
|
|
371
400
|
],
|
|
372
401
|
seat: '3971'
|
|
373
402
|
}
|
|
374
|
-
]
|
|
403
|
+
],
|
|
404
|
+
ext: {
|
|
405
|
+
videoplayerurl: 'https://test.com/video-renderer.js'
|
|
406
|
+
}
|
|
375
407
|
};
|
|
376
408
|
|
|
377
409
|
const DEFAULT_VIDEO_BID_RESPONSE_WITH_MTYPE_SET = {
|
|
@@ -564,6 +596,24 @@ describe('IndexexchangeAdapter', function () {
|
|
|
564
596
|
});
|
|
565
597
|
|
|
566
598
|
describe('isBidRequestValid', function () {
|
|
599
|
+
it('should return false if outstream player size is less than 300x250 and IX renderer is preferred', function () {
|
|
600
|
+
const bid = utils.deepClone(DEFAULT_VIDEO_VALID_BID[0]);
|
|
601
|
+
bid.mediaTypes.video.context = 'outstream';
|
|
602
|
+
bid.mediaTypes.video.playerSize = [[300, 249]];
|
|
603
|
+
expect(spec.isBidRequestValid(bid)).to.equal(false);
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
it('should return true if outstream player size is less than 300x250 and IX renderer is not preferred', function () {
|
|
607
|
+
const bid = utils.deepClone(DEFAULT_VIDEO_VALID_BID[0]);
|
|
608
|
+
bid.mediaTypes.video.renderer = {
|
|
609
|
+
url: 'test',
|
|
610
|
+
render: () => {}
|
|
611
|
+
};
|
|
612
|
+
bid.mediaTypes.video.context = 'outstream';
|
|
613
|
+
bid.mediaTypes.video.playerSize = [[300, 249]];
|
|
614
|
+
expect(spec.isBidRequestValid(bid)).to.equal(true);
|
|
615
|
+
});
|
|
616
|
+
|
|
567
617
|
it('should return true when required params found for a banner or video ad', function () {
|
|
568
618
|
expect(spec.isBidRequestValid(DEFAULT_BANNER_VALID_BID[0])).to.equal(true);
|
|
569
619
|
expect(spec.isBidRequestValid(DEFAULT_VIDEO_VALID_BID[0])).to.equal(true);
|
|
@@ -624,7 +674,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
624
674
|
const bid = utils.deepClone(DEFAULT_VIDEO_VALID_BID[0]);
|
|
625
675
|
bid.mediaTypes = {
|
|
626
676
|
video: {
|
|
627
|
-
playerSize: [300, 250]
|
|
677
|
+
playerSize: [[300, 250]]
|
|
628
678
|
}
|
|
629
679
|
};
|
|
630
680
|
bid.params.size = [100, 200];
|
|
@@ -695,22 +745,6 @@ describe('IndexexchangeAdapter', function () {
|
|
|
695
745
|
expect(spec.isBidRequestValid(bid)).to.equal(true);
|
|
696
746
|
});
|
|
697
747
|
|
|
698
|
-
it('should set bid[].renderer if renderer not defined at mediaType.video level', function () {
|
|
699
|
-
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
700
|
-
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: DEFAULT_MULTIFORMAT_BANNER_VALID_BID
|
|
701
|
-
});
|
|
702
|
-
expect(bid[0].renderer).to.be.exist;
|
|
703
|
-
});
|
|
704
|
-
|
|
705
|
-
it('should not set bid[].renderer if renderer defined at mediaType.video level', function () {
|
|
706
|
-
const outstreamAdUnit = DEFAULT_MULTIFORMAT_BANNER_VALID_BID;
|
|
707
|
-
outstreamAdUnit[0].mediaTypes.video.renderer = {}
|
|
708
|
-
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
709
|
-
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: DEFAULT_MULTIFORMAT_BANNER_VALID_BID
|
|
710
|
-
});
|
|
711
|
-
expect(bid[0].renderer).to.be.undefined;
|
|
712
|
-
});
|
|
713
|
-
|
|
714
748
|
it('should return false when there is only bidFloor', function () {
|
|
715
749
|
const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
|
|
716
750
|
bid.params.bidFloor = 50;
|
|
@@ -1835,7 +1869,6 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1835
1869
|
|
|
1836
1870
|
describe('request should contain both banner and video requests', function () {
|
|
1837
1871
|
const request = spec.buildRequests([DEFAULT_BANNER_VALID_BID[0], DEFAULT_VIDEO_VALID_BID[0]]);
|
|
1838
|
-
|
|
1839
1872
|
it('should have banner request', () => {
|
|
1840
1873
|
const bannerImpression = JSON.parse(request[0].data.r).imp[0];
|
|
1841
1874
|
|
|
@@ -2177,6 +2210,16 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2177
2210
|
const { ext: { gpid } } = JSON.parse(requests[0].data.r).imp[0];
|
|
2178
2211
|
expect(gpid).to.equal(GPID);
|
|
2179
2212
|
});
|
|
2213
|
+
|
|
2214
|
+
it('should build video request when if video obj is not provided at params level', () => {
|
|
2215
|
+
const request = spec.buildRequests([DEFAULT_VIDEO_VALID_BID_NO_VIDEO_PARAMS[0]]);
|
|
2216
|
+
const videoImpression = JSON.parse(request[0].data.r).imp[0];
|
|
2217
|
+
|
|
2218
|
+
expect(JSON.parse(request[0].data.v)).to.equal(VIDEO_ENDPOINT_VERSION);
|
|
2219
|
+
expect(videoImpression.id).to.equal(DEFAULT_VIDEO_VALID_BID_NO_VIDEO_PARAMS[0].bidId);
|
|
2220
|
+
expect(videoImpression.video.w).to.equal(DEFAULT_VIDEO_VALID_BID_NO_VIDEO_PARAMS[0].mediaTypes.video.playerSize[0][0]);
|
|
2221
|
+
expect(videoImpression.video.h).to.equal(DEFAULT_VIDEO_VALID_BID_NO_VIDEO_PARAMS[0].mediaTypes.video.playerSize[0][1]);
|
|
2222
|
+
});
|
|
2180
2223
|
});
|
|
2181
2224
|
|
|
2182
2225
|
describe('buildRequestMultiFormat', function () {
|
|
@@ -2246,8 +2289,8 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2246
2289
|
expect(JSON.parse(request[1].data.r).imp).to.have.lengthOf(1);
|
|
2247
2290
|
expect(JSON.parse(request[1].data.v)).to.equal(VIDEO_ENDPOINT_VERSION);
|
|
2248
2291
|
expect(videoImpression.id).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].bidId);
|
|
2249
|
-
expect(videoImpression.video.w).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].mediaTypes.video.playerSize[0]);
|
|
2250
|
-
expect(videoImpression.video.h).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].mediaTypes.video.playerSize[1]);
|
|
2292
|
+
expect(videoImpression.video.w).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].mediaTypes.video.playerSize[0][0]);
|
|
2293
|
+
expect(videoImpression.video.h).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].mediaTypes.video.playerSize[0][1]);
|
|
2251
2294
|
});
|
|
2252
2295
|
|
|
2253
2296
|
it('should contain all correct IXdiag properties', function () {
|
|
@@ -2255,10 +2298,11 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2255
2298
|
expect(diagObj.iu).to.equal(0);
|
|
2256
2299
|
expect(diagObj.nu).to.equal(0);
|
|
2257
2300
|
expect(diagObj.ou).to.equal(2);
|
|
2258
|
-
expect(diagObj.ren).to.equal(
|
|
2301
|
+
expect(diagObj.ren).to.equal(true);
|
|
2259
2302
|
expect(diagObj.mfu).to.equal(2);
|
|
2260
2303
|
expect(diagObj.allu).to.equal(2);
|
|
2261
2304
|
expect(diagObj.version).to.equal('$prebid.version$');
|
|
2305
|
+
expect(diagObj.url).to.equal('http://localhost:9876/context.html')
|
|
2262
2306
|
});
|
|
2263
2307
|
});
|
|
2264
2308
|
});
|
|
@@ -2489,6 +2533,68 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2489
2533
|
expect(result[0]).to.deep.equal(expectedParse[0]);
|
|
2490
2534
|
});
|
|
2491
2535
|
|
|
2536
|
+
it('should set bid[].renderer if renderer not defined at mediaType.video level', function () {
|
|
2537
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2538
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: DEFAULT_MULTIFORMAT_BANNER_VALID_BID
|
|
2539
|
+
});
|
|
2540
|
+
expect(bid[0].renderer).to.exist;
|
|
2541
|
+
});
|
|
2542
|
+
|
|
2543
|
+
it('should set renderer URL by parsing video response', function () {
|
|
2544
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2545
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: DEFAULT_MULTIFORMAT_BANNER_VALID_BID
|
|
2546
|
+
});
|
|
2547
|
+
expect(bid[0].renderer.url).to.equal(DEFAULT_VIDEO_BID_RESPONSE.ext.videoplayerurl);
|
|
2548
|
+
});
|
|
2549
|
+
|
|
2550
|
+
it('should not set bid[].renderer if renderer defined at mediaType.video level', function () {
|
|
2551
|
+
let outstreamAdUnit = utils.deepClone(DEFAULT_MULTIFORMAT_BANNER_VALID_BID);
|
|
2552
|
+
outstreamAdUnit[0].mediaTypes.video.renderer = {
|
|
2553
|
+
url: 'test',
|
|
2554
|
+
render: function() {}
|
|
2555
|
+
};
|
|
2556
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2557
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: outstreamAdUnit
|
|
2558
|
+
});
|
|
2559
|
+
expect(bid[0].renderer).to.be.undefined;
|
|
2560
|
+
});
|
|
2561
|
+
|
|
2562
|
+
it('should not set bid[].renderer if renderer defined at the ad unit level', function () {
|
|
2563
|
+
let outstreamAdUnit = utils.deepClone(DEFAULT_MULTIFORMAT_BANNER_VALID_BID);
|
|
2564
|
+
outstreamAdUnit[0].renderer = {
|
|
2565
|
+
url: 'test',
|
|
2566
|
+
render: function() {}
|
|
2567
|
+
};
|
|
2568
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2569
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: outstreamAdUnit
|
|
2570
|
+
});
|
|
2571
|
+
expect(bid[0].renderer).to.be.undefined;
|
|
2572
|
+
});
|
|
2573
|
+
|
|
2574
|
+
it('should set bid[].renderer if ad unit renderer is invalid', function () {
|
|
2575
|
+
let outstreamAdUnit = utils.deepClone(DEFAULT_MULTIFORMAT_BANNER_VALID_BID);
|
|
2576
|
+
outstreamAdUnit[0].mediaTypes.video.renderer = {
|
|
2577
|
+
url: 'test'
|
|
2578
|
+
};
|
|
2579
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2580
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: outstreamAdUnit
|
|
2581
|
+
});
|
|
2582
|
+
expect(bid[0].renderer).to.exist;
|
|
2583
|
+
});
|
|
2584
|
+
|
|
2585
|
+
it('should set bid[].renderer if ad unit renderer is a backup', function () {
|
|
2586
|
+
let outstreamAdUnit = utils.deepClone(DEFAULT_MULTIFORMAT_BANNER_VALID_BID);
|
|
2587
|
+
outstreamAdUnit[0].mediaTypes.video.renderer = {
|
|
2588
|
+
url: 'test',
|
|
2589
|
+
render: function() {},
|
|
2590
|
+
backupOnly: true
|
|
2591
|
+
};
|
|
2592
|
+
const bid = spec.interpretResponse({ body: DEFAULT_VIDEO_BID_RESPONSE }, {
|
|
2593
|
+
data: DEFAULT_BIDDER_REQUEST_DATA, validBidRequests: outstreamAdUnit
|
|
2594
|
+
});
|
|
2595
|
+
expect(bid[0].renderer).to.exist;
|
|
2596
|
+
});
|
|
2597
|
+
|
|
2492
2598
|
it('should get correct bid response for video ad and set bid.vastXml when mtype is 2 (video)', function () {
|
|
2493
2599
|
const expectedParse = [
|
|
2494
2600
|
{
|
|
@@ -2710,7 +2816,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2710
2816
|
});
|
|
2711
2817
|
});
|
|
2712
2818
|
|
|
2713
|
-
describe('LocalStorage
|
|
2819
|
+
describe('LocalStorage error codes', () => {
|
|
2714
2820
|
let TODAY = new Date().toISOString().slice(0, 10);
|
|
2715
2821
|
const key = 'ixdiag';
|
|
2716
2822
|
|
|
@@ -2837,7 +2943,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
2837
2943
|
|
|
2838
2944
|
expect(spec.isBidRequestValid(bid)).to.be.true;
|
|
2839
2945
|
spec.buildRequests([bid]);
|
|
2840
|
-
expect(JSON.parse(localStorageValues[key])).to.deep.equal({ [TODAY]: { [ERROR_CODES.VIDEO_DURATION_INVALID]:
|
|
2946
|
+
expect(JSON.parse(localStorageValues[key])).to.deep.equal({ [TODAY]: { [ERROR_CODES.VIDEO_DURATION_INVALID]: 3 } });
|
|
2841
2947
|
});
|
|
2842
2948
|
|
|
2843
2949
|
it('should increment errors for errorCode', () => {
|
|
@@ -285,6 +285,23 @@ describe('jixie Adapter', function () {
|
|
|
285
285
|
expect(payload.device).to.deep.include(content);
|
|
286
286
|
});
|
|
287
287
|
|
|
288
|
+
it('schain info should be accessible when available', function () {
|
|
289
|
+
const schain = {
|
|
290
|
+
ver: '1.0',
|
|
291
|
+
complete: 1,
|
|
292
|
+
nodes: [{
|
|
293
|
+
asi: 'ssp.test',
|
|
294
|
+
sid: '00001',
|
|
295
|
+
hp: 1
|
|
296
|
+
}]
|
|
297
|
+
};
|
|
298
|
+
const oneSpecialBidReq = Object.assign({}, bidRequests_[0], { schain: schain });
|
|
299
|
+
const request = spec.buildRequests([oneSpecialBidReq], bidderRequest_);
|
|
300
|
+
const payload = JSON.parse(request.data);
|
|
301
|
+
expect(payload.schain).to.deep.equal(schain);
|
|
302
|
+
expect(payload.schain).to.deep.include(schain);
|
|
303
|
+
});
|
|
304
|
+
|
|
288
305
|
it('should populate eids when supported userIds are available', function () {
|
|
289
306
|
const oneSpecialBidReq = Object.assign({}, bidRequests_[0], {
|
|
290
307
|
userId: {
|
|
@@ -451,6 +451,17 @@ describe('kargo adapter tests', function () {
|
|
|
451
451
|
adm: '<div id="4"></div>',
|
|
452
452
|
width: 300,
|
|
453
453
|
height: 250,
|
|
454
|
+
mediaType: 'banner',
|
|
455
|
+
metadata: {},
|
|
456
|
+
currency: 'EUR'
|
|
457
|
+
},
|
|
458
|
+
5: {
|
|
459
|
+
id: 'bar',
|
|
460
|
+
cpm: 2.5,
|
|
461
|
+
adm: '<VAST></VAST>',
|
|
462
|
+
width: 300,
|
|
463
|
+
height: 250,
|
|
464
|
+
mediaType: 'video',
|
|
454
465
|
metadata: {},
|
|
455
466
|
currency: 'EUR'
|
|
456
467
|
}
|
|
@@ -476,6 +487,11 @@ describe('kargo adapter tests', function () {
|
|
|
476
487
|
params: {
|
|
477
488
|
placementId: 'bar'
|
|
478
489
|
}
|
|
490
|
+
}, {
|
|
491
|
+
bidId: 5,
|
|
492
|
+
params: {
|
|
493
|
+
placementId: 'bar'
|
|
494
|
+
}
|
|
479
495
|
}]
|
|
480
496
|
});
|
|
481
497
|
var expectation = [{
|
|
@@ -489,7 +505,10 @@ describe('kargo adapter tests', function () {
|
|
|
489
505
|
dealId: undefined,
|
|
490
506
|
netRevenue: true,
|
|
491
507
|
currency: 'USD',
|
|
492
|
-
|
|
508
|
+
mediaType: 'banner',
|
|
509
|
+
meta: {
|
|
510
|
+
mediaType: 'banner'
|
|
511
|
+
}
|
|
493
512
|
}, {
|
|
494
513
|
requestId: '2',
|
|
495
514
|
cpm: 2.5,
|
|
@@ -501,7 +520,9 @@ describe('kargo adapter tests', function () {
|
|
|
501
520
|
dealId: 'dmpmptest1234',
|
|
502
521
|
netRevenue: true,
|
|
503
522
|
currency: 'USD',
|
|
523
|
+
mediaType: 'banner',
|
|
504
524
|
meta: {
|
|
525
|
+
mediaType: 'banner',
|
|
505
526
|
clickUrl: 'https://foobar.com',
|
|
506
527
|
advertiserDomains: ['https://foobar.com']
|
|
507
528
|
}
|
|
@@ -516,7 +537,10 @@ describe('kargo adapter tests', function () {
|
|
|
516
537
|
dealId: undefined,
|
|
517
538
|
netRevenue: true,
|
|
518
539
|
currency: 'USD',
|
|
519
|
-
|
|
540
|
+
mediaType: 'banner',
|
|
541
|
+
meta: {
|
|
542
|
+
mediaType: 'banner'
|
|
543
|
+
}
|
|
520
544
|
}, {
|
|
521
545
|
requestId: '4',
|
|
522
546
|
cpm: 2.5,
|
|
@@ -528,7 +552,25 @@ describe('kargo adapter tests', function () {
|
|
|
528
552
|
dealId: undefined,
|
|
529
553
|
netRevenue: true,
|
|
530
554
|
currency: 'EUR',
|
|
531
|
-
|
|
555
|
+
mediaType: 'banner',
|
|
556
|
+
meta: {
|
|
557
|
+
mediaType: 'banner'
|
|
558
|
+
}
|
|
559
|
+
}, {
|
|
560
|
+
requestId: '5',
|
|
561
|
+
cpm: 2.5,
|
|
562
|
+
width: 300,
|
|
563
|
+
height: 250,
|
|
564
|
+
vastXml: '<VAST></VAST>',
|
|
565
|
+
ttl: 300,
|
|
566
|
+
creativeId: 'bar',
|
|
567
|
+
dealId: undefined,
|
|
568
|
+
netRevenue: true,
|
|
569
|
+
currency: 'EUR',
|
|
570
|
+
mediaType: 'video',
|
|
571
|
+
meta: {
|
|
572
|
+
mediaType: 'video'
|
|
573
|
+
}
|
|
532
574
|
}];
|
|
533
575
|
expect(resp).to.deep.equal(expectation);
|
|
534
576
|
});
|
|
@@ -46,7 +46,7 @@ describe('LiveIntentId', function() {
|
|
|
46
46
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
47
47
|
submoduleCallback(callBackSpy);
|
|
48
48
|
let request = server.requests[1];
|
|
49
|
-
expect(request.url).to.match(/.*us_privacy=1YNY.*&gdpr=1&gdpr_consent=consentDataString.*/);
|
|
49
|
+
expect(request.url).to.match(/.*us_privacy=1YNY.*&gdpr=1&n3pc=1&gdpr_consent=consentDataString.*/);
|
|
50
50
|
const response = {
|
|
51
51
|
unifiedId: 'a_unified_id',
|
|
52
52
|
segments: [123, 234]
|
|
@@ -66,7 +66,7 @@ describe('LiveIntentId', function() {
|
|
|
66
66
|
consentString: 'consentDataString'
|
|
67
67
|
})
|
|
68
68
|
liveIntentIdSubmodule.getId(defaultConfigParams);
|
|
69
|
-
expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*&us_privacy=1YNY.*&wpn=prebid.*&gdpr=1&gdpr_consent=consentDataString.*/);
|
|
69
|
+
expect(server.requests[0].url).to.match(/https:\/\/rp.liadm.com\/j\?.*&us_privacy=1YNY.*&wpn=prebid.*&gdpr=1&n3pc=1&n3pct=1&nb=1&gdpr_consent=consentDataString.*/);
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
it('should fire an event when getId and a hash is provided', function() {
|
|
@@ -50,6 +50,12 @@ describe('loglyliftBidAdapter', function () {
|
|
|
50
50
|
},
|
|
51
51
|
sponsoredBy: {
|
|
52
52
|
required: true
|
|
53
|
+
},
|
|
54
|
+
cta: {
|
|
55
|
+
required: true
|
|
56
|
+
},
|
|
57
|
+
privacyLink: {
|
|
58
|
+
required: true
|
|
53
59
|
}
|
|
54
60
|
}
|
|
55
61
|
}
|
|
@@ -114,6 +120,8 @@ describe('loglyliftBidAdapter', function () {
|
|
|
114
120
|
],
|
|
115
121
|
sponsoredBy: 'logly',
|
|
116
122
|
title: 'Native Title',
|
|
123
|
+
privacyLink: 'https://www.logly.co.jp/optout.html',
|
|
124
|
+
cta: '詳細はこちら',
|
|
117
125
|
}
|
|
118
126
|
}],
|
|
119
127
|
}
|