prebid.js 7.45.0 → 7.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.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/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.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 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -0
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/gridBidAdapter.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/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +132 -131
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -0
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.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/stvBidAdapter.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/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.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/vidoomyBidAdapter.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/fledge_example.html +103 -0
- package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
- package/libraries/ortbConverter/processors/video.js +1 -0
- package/modules/admaticBidAdapter.js +7 -2
- package/modules/adnuntiusBidAdapter.js +3 -1
- package/modules/appnexusBidAdapter.js +108 -102
- package/modules/bidwatchAnalyticsAdapter.js +2 -0
- package/modules/conversantBidAdapter.js +3 -0
- package/modules/criteoBidAdapter.js +5 -1
- package/modules/eskimiBidAdapter.js +72 -0
- package/modules/eskimiBidAdapter.md +34 -0
- package/modules/gridBidAdapter.js +42 -19
- package/modules/ixBidAdapter.js +30 -0
- package/modules/kargoBidAdapter.js +473 -246
- package/modules/kueezRtbBidAdapter.js +16 -4
- package/modules/mediasquareBidAdapter.js +2 -1
- package/modules/minutemediaplusBidAdapter.js +16 -4
- package/modules/nativoBidAdapter.js +110 -21
- package/modules/neuwoRtdProvider.js +0 -2
- package/modules/pairIdSystem.js +79 -0
- package/modules/pubmaticBidAdapter.js +12 -9
- package/modules/userId/eids.js +6 -0
- package/modules/vidoomyBidAdapter.js +11 -3
- package/modules/yieldmoBidAdapter.js +15 -5
- package/package.json +1 -1
- package/src/config.js +78 -127
- package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
- package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
- package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
- package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
- package/test/spec/modules/gridBidAdapter_spec.js +8 -0
- package/test/spec/modules/ixBidAdapter_spec.js +57 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
- package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
- package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
- package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/pairIdSystem_spec.js +68 -0
- package/test/spec/modules/pubCommonId_spec.js +0 -17
- package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
- package/test/spec/modules/vidoomyBidAdapter_spec.js +23 -0
- package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
- package/test/spec/unit/pbjs_api_spec.js +19 -3
- package/test/test_index.js +13 -3
- package/dist/gridNMBidAdapter.js +0 -1
- package/modules/gridNMBidAdapter.js +0 -422
- package/modules/gridNMBidAdapter.md +0 -39
- package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
|
@@ -286,26 +286,6 @@ describe('AxonixBidAdapter', function () {
|
|
|
286
286
|
});
|
|
287
287
|
});
|
|
288
288
|
|
|
289
|
-
describe.skip('buildRequests: can handle native ad requests', function () {
|
|
290
|
-
it('creates ServerRequests pointing to the correct region and endpoint if it changes', function () {
|
|
291
|
-
// loop:
|
|
292
|
-
// set supply id
|
|
293
|
-
// set region/endpoint in ssp config
|
|
294
|
-
// call buildRequests, validate request (url, method, supply id)
|
|
295
|
-
expect.fail('Not implemented');
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
it('creates ServerRequests pointing to default endpoint if missing', function () {
|
|
299
|
-
// no endpoint in config means default value openrtb.axonix.com
|
|
300
|
-
expect.fail('Not implemented');
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
it('creates ServerRequests pointing to default region if missing', function () {
|
|
304
|
-
// no region in config means default value us-east-1
|
|
305
|
-
expect.fail('Not implemented');
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
|
-
|
|
309
289
|
describe('interpretResponse', function () {
|
|
310
290
|
it('considers corner cases', function() {
|
|
311
291
|
expect(spec.interpretResponse(null)).to.be.an('array').that.is.empty;
|
|
@@ -331,13 +311,6 @@ describe('AxonixBidAdapter', function () {
|
|
|
331
311
|
expect(response).to.be.an('array').that.is.not.empty;
|
|
332
312
|
expect(response[0]).to.equal(VIDEO_RESPONSE.body[0]);
|
|
333
313
|
});
|
|
334
|
-
|
|
335
|
-
it.skip('parses 1 native responses', function () {
|
|
336
|
-
// passing 1 valid native in a response generates an array with 1 correct prebid response
|
|
337
|
-
// examine mediaType:native, native element
|
|
338
|
-
// check nativeBidIsValid from {@link file://./../../../src/native.js}
|
|
339
|
-
expect.fail('Not implemented');
|
|
340
|
-
});
|
|
341
314
|
});
|
|
342
315
|
|
|
343
316
|
describe('onBidWon', function () {
|
|
@@ -92,40 +92,42 @@ describe('bigRichMediaAdapterTests', function () {
|
|
|
92
92
|
expect(payload.tags[0].sizes).to.have.lengthOf(3);
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
95
|
+
if (FEATURES.VIDEO) {
|
|
96
|
+
it('should build video bid request', function() {
|
|
97
|
+
const bidRequest = deepClone(bidRequests[0]);
|
|
98
|
+
bidRequest.params = {
|
|
99
|
+
placementId: '1234235',
|
|
100
|
+
video: {
|
|
101
|
+
skippable: true,
|
|
102
|
+
playback_method: ['auto_play_sound_off', 'auto_play_sound_unknown'],
|
|
103
|
+
context: 'outstream',
|
|
104
|
+
format: 'sticky-top'
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
bidRequest.mediaTypes = {
|
|
108
|
+
video: {
|
|
109
|
+
playerSize: [640, 480],
|
|
110
|
+
context: 'outstream',
|
|
111
|
+
mimes: ['video/mp4'],
|
|
112
|
+
skip: 0,
|
|
113
|
+
minduration: 5,
|
|
114
|
+
api: [1, 5, 6],
|
|
115
|
+
playbackmethod: [2, 4]
|
|
116
|
+
}
|
|
117
|
+
};
|
|
117
118
|
|
|
118
|
-
|
|
119
|
-
|
|
119
|
+
const request = spec.buildRequests([bidRequest]);
|
|
120
|
+
const payload = JSON.parse(request.data);
|
|
120
121
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
expect(payload.tags[0].video).to.deep.equal({
|
|
123
|
+
minduration: 5,
|
|
124
|
+
playback_method: 2,
|
|
125
|
+
skippable: true,
|
|
126
|
+
context: 4
|
|
127
|
+
});
|
|
128
|
+
expect(payload.tags[0].video_frameworks).to.deep.equal([1, 4])
|
|
126
129
|
});
|
|
127
|
-
|
|
128
|
-
});
|
|
130
|
+
}
|
|
129
131
|
});
|
|
130
132
|
|
|
131
133
|
describe('interpretResponse', function () {
|
|
@@ -227,42 +229,44 @@ describe('bigRichMediaAdapterTests', function () {
|
|
|
227
229
|
expect(Object.keys(result[0])).to.have.members(Object.keys(expectedResponse[0]));
|
|
228
230
|
});
|
|
229
231
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
'
|
|
234
|
-
|
|
235
|
-
'
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
'
|
|
240
|
-
'
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
232
|
+
if (FEATURES.VIDEO) {
|
|
233
|
+
it('handles outstream video responses', function () {
|
|
234
|
+
const response = {
|
|
235
|
+
'tags': [{
|
|
236
|
+
'uuid': '84ab500420319d',
|
|
237
|
+
'ads': [{
|
|
238
|
+
'ad_type': 'video',
|
|
239
|
+
'cpm': 0.500000,
|
|
240
|
+
'notify_url': 'imptracker.com',
|
|
241
|
+
'rtb': {
|
|
242
|
+
'video': {
|
|
243
|
+
'content': '<!-- VAST Creative -->'
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
'javascriptTrackers': '<script type=\'text/javascript\' async=\'true\' src=\'https://cdn.adnxs.com/v/s/152/trk.js#v;vk=appnexus.com-omid;tv=native1-18h;dom_id=%native_dom_id%;st=0;d=1x1;vc=iab;vid_ccr=1;tag_id=13232354;cb=https%3A%2F%2Fams1-ib.adnxs.com%2Fvevent%3Freferrer%3Dhttps253A%252F%252Ftestpages-pmahe.tp.adnxs.net%252F01_basic_single%26e%3DwqT_3QLNB6DNAwAAAwDWAAUBCLfl_-MFEMStk8u3lPTjRxih88aF0fq_2QsqNgkAAAECCCRAEQEHEAAAJEAZEQkAIREJACkRCQAxEQmoMOLRpwY47UhA7UhIAlCDy74uWJzxW2AAaM26dXjzjwWAAQGKAQNVU0SSAQEG8FCYAQGgAQGoAQGwAQC4AQHAAQTIAQLQAQDYAQDgAQDwAQCKAjt1ZignYScsIDI1Mjk4ODUsIDE1NTE4ODkwNzkpO3VmKCdyJywgOTc0OTQ0MDM2HgDwjZIC8QEha0RXaXBnajgtTHdLRUlQTHZpNFlBQ0NjOFZzd0FEZ0FRQVJJN1VoUTR0R25CbGdBWU1rR2FBQndMSGlrTDRBQlVvZ0JwQy1RQVFHWUFRR2dBUUdvQVFPd0FRQzVBZk90YXFRQUFDUkF3UUh6cldxa0FBQWtRTWtCbWo4dDA1ZU84VF9aQVFBQUEBAyRQQV80QUVBOVFFAQ4sQW1BSUFvQUlBdFFJBRAAdg0IeHdBSUF5QUlBNEFJQTZBSUEtQUlBZ0FNQm1BTUJxQVAFzIh1Z01KUVUxVE1UbzBNekl3NEFPVENBLi6aAmEhUXcxdGNRagUoEfQkblBGYklBUW9BRAl8AEEBqAREbzJEABRRSk1JU1EBGwRBQQGsAFURDAxBQUFXHQzwWNgCAOACrZhI6gIzaHR0cDovL3Rlc3RwYWdlcy1wbWFoZS50cC5hZG54cy5uZXQvMDFfYmFzaWNfc2luZ2xl8gITCg9DVVNUT01fTU9ERUxfSUQSAPICGgoWMhYAPExFQUZfTkFNRRIA8gIeCho2HQAIQVNUAT7wnElGSUVEEgCAAwCIAwGQAwCYAxegAwGqAwDAA-CoAcgDANgD8ao-4AMA6AMA-AMBgAQAkgQNL3V0L3YzL3ByZWJpZJgEAKIECjEwLjIuMTIuMzioBIqpB7IEDggAEAEYACAAKAAwADgCuAQAwAQAyAQA0gQOOTMyNSNBTVMxOjQzMjDaBAIIAeAEAfAEg8u-LogFAZgFAKAF______8BAxgBwAUAyQUABQEU8D_SBQkJBQt8AAAA2AUB4AUB8AWZ9CH6BQQIABAAkAYBmAYAuAYAwQYBITAAAPA_yAYA2gYWChAAOgEAGBAAGADgBgw.%26s%3D971dce9d49b6bee447c8a58774fb30b40fe98171;ts=1551889079;cet=0;cecb=\'></script>'
|
|
247
|
+
}]
|
|
244
248
|
}]
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
249
|
+
};
|
|
250
|
+
const bidderRequest = {
|
|
251
|
+
bids: [{
|
|
252
|
+
bidId: '84ab500420319d',
|
|
253
|
+
adUnitCode: 'code',
|
|
254
|
+
mediaTypes: {
|
|
255
|
+
video: {
|
|
256
|
+
context: 'outstream'
|
|
257
|
+
}
|
|
254
258
|
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
259
|
+
}]
|
|
260
|
+
}
|
|
258
261
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
const result = spec.interpretResponse({ body: response }, {bidderRequest});
|
|
263
|
+
expect(result[0]).not.to.have.property('vastXml');
|
|
264
|
+
expect(result[0]).not.to.have.property('vastUrl');
|
|
265
|
+
expect(result[0]).to.have.property('width', 1);
|
|
266
|
+
expect(result[0]).to.have.property('height', 1);
|
|
267
|
+
expect(result[0]).to.have.property('mediaType', 'banner');
|
|
268
|
+
});
|
|
269
|
+
}
|
|
266
270
|
});
|
|
267
271
|
|
|
268
272
|
describe('getUserSyncs', function() {
|
|
@@ -263,6 +263,7 @@ describe('Conversant adapter tests', function() {
|
|
|
263
263
|
const payload = request.data;
|
|
264
264
|
|
|
265
265
|
expect(payload).to.have.property('id', 'req000');
|
|
266
|
+
expect(payload.source).to.have.property('tid', 'req000');
|
|
266
267
|
expect(payload).to.have.property('at', 1);
|
|
267
268
|
expect(payload).to.have.property('imp');
|
|
268
269
|
expect(payload.imp).to.be.an('array').with.lengthOf(8);
|
|
@@ -883,6 +883,38 @@ describe('The Criteo bidding adapter', function () {
|
|
|
883
883
|
expect(request.data.user.uspIab).to.equal('1YNY');
|
|
884
884
|
});
|
|
885
885
|
|
|
886
|
+
it('should properly build a request with device sua field', function () {
|
|
887
|
+
const sua = {}
|
|
888
|
+
const bidRequests = [
|
|
889
|
+
{
|
|
890
|
+
bidder: 'criteo',
|
|
891
|
+
adUnitCode: 'bid-123',
|
|
892
|
+
transactionId: 'transaction-123',
|
|
893
|
+
mediaTypes: {
|
|
894
|
+
banner: {
|
|
895
|
+
sizes: [[728, 90]]
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
params: {
|
|
899
|
+
zoneId: 123,
|
|
900
|
+
},
|
|
901
|
+
},
|
|
902
|
+
];
|
|
903
|
+
const bidderRequest = {
|
|
904
|
+
timeout: 3000,
|
|
905
|
+
uspConsent: '1YNY',
|
|
906
|
+
ortb2: {
|
|
907
|
+
device: {
|
|
908
|
+
sua: sua
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
};
|
|
912
|
+
|
|
913
|
+
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
914
|
+
expect(request.data.user.ext.sua).to.not.be.null;
|
|
915
|
+
expect(request.data.user.ext.sua).to.equal(sua);
|
|
916
|
+
});
|
|
917
|
+
|
|
886
918
|
it('should properly build a request with gpp consent field', function () {
|
|
887
919
|
const bidRequests = [
|
|
888
920
|
{
|
|
@@ -1475,7 +1507,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1475
1507
|
creativecode: 'test-crId',
|
|
1476
1508
|
width: 728,
|
|
1477
1509
|
height: 90,
|
|
1478
|
-
|
|
1510
|
+
deal: 'myDealCode',
|
|
1479
1511
|
adomain: ['criteo.com'],
|
|
1480
1512
|
}],
|
|
1481
1513
|
},
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {expect} from 'chai';
|
|
2
|
+
import {spec} from 'modules/eskimiBidAdapter.js';
|
|
3
|
+
|
|
4
|
+
const REQUEST = {
|
|
5
|
+
'bidderCode': 'eskimi',
|
|
6
|
+
'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708',
|
|
7
|
+
'bidderRequestId': 'requestId',
|
|
8
|
+
'bidRequest': [{
|
|
9
|
+
'bidder': 'eskimi',
|
|
10
|
+
'params': {
|
|
11
|
+
'placementId': 1003000,
|
|
12
|
+
'accId': 123
|
|
13
|
+
},
|
|
14
|
+
'sizes': [
|
|
15
|
+
[300, 250]
|
|
16
|
+
],
|
|
17
|
+
'bidId': 'bidId1',
|
|
18
|
+
'adUnitCode': 'adUnitCode1',
|
|
19
|
+
'bidderRequestId': 'bidderRequestId',
|
|
20
|
+
'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
'bidder': 'eskimi',
|
|
24
|
+
'params': {
|
|
25
|
+
'placementId': 1003001,
|
|
26
|
+
'accId': 123
|
|
27
|
+
},
|
|
28
|
+
'sizes': [
|
|
29
|
+
[300, 250]
|
|
30
|
+
],
|
|
31
|
+
'bidId': 'bidId2',
|
|
32
|
+
'adUnitCode': 'adUnitCode2',
|
|
33
|
+
'bidderRequestId': 'bidderRequestId',
|
|
34
|
+
'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708'
|
|
35
|
+
}],
|
|
36
|
+
'start': 1487883186070,
|
|
37
|
+
'auctionStart': 1487883186069,
|
|
38
|
+
'timeout': 3000
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const RESPONSE = {
|
|
42
|
+
'headers': null,
|
|
43
|
+
'body': {
|
|
44
|
+
'id': 'requestId',
|
|
45
|
+
'seatbid': [
|
|
46
|
+
{
|
|
47
|
+
'bid': [
|
|
48
|
+
{
|
|
49
|
+
'id': 'bidId1',
|
|
50
|
+
'impid': 'bidId1',
|
|
51
|
+
'price': 0.18,
|
|
52
|
+
'adm': '<script>adm</script>',
|
|
53
|
+
'adid': '144762342',
|
|
54
|
+
'adomain': [
|
|
55
|
+
'https://dummydomain.com'
|
|
56
|
+
],
|
|
57
|
+
'iurl': 'iurl',
|
|
58
|
+
'cid': '109',
|
|
59
|
+
'crid': 'creativeId',
|
|
60
|
+
'cat': [],
|
|
61
|
+
'w': 300,
|
|
62
|
+
'h': 250,
|
|
63
|
+
'ext': {
|
|
64
|
+
'prebid': {
|
|
65
|
+
'type': 'banner'
|
|
66
|
+
},
|
|
67
|
+
'bidder': {
|
|
68
|
+
'eskimi': {
|
|
69
|
+
'brand_id': 334553,
|
|
70
|
+
'auction_id': 514667951122925701,
|
|
71
|
+
'bidder_id': 2,
|
|
72
|
+
'bid_ad_type': 0
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
'seat': 'seat'
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
describe('Eskimi bid adapter', function () {
|
|
85
|
+
describe('isBidRequestValid', function () {
|
|
86
|
+
it('should accept request if placementId is passed', function () {
|
|
87
|
+
let bid = {
|
|
88
|
+
bidder: 'eskimi',
|
|
89
|
+
params: {
|
|
90
|
+
placementId: 123
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
expect(spec.isBidRequestValid(bid)).to.equal(true);
|
|
94
|
+
});
|
|
95
|
+
it('reject requests without params', function () {
|
|
96
|
+
let bid = {
|
|
97
|
+
bidder: 'eskimi',
|
|
98
|
+
params: {}
|
|
99
|
+
};
|
|
100
|
+
expect(spec.isBidRequestValid(bid)).to.equal(false);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe('buildRequests', function () {
|
|
105
|
+
it('creates request data', function () {
|
|
106
|
+
let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
|
|
107
|
+
expect(request).to.exist.and.to.be.a('object');
|
|
108
|
+
const payload = request.data;
|
|
109
|
+
expect(payload.imp[0]).to.have.property('id', REQUEST.bidRequest[0].bidId);
|
|
110
|
+
expect(payload.imp[1]).to.have.property('id', REQUEST.bidRequest[1].bidId);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it('has gdpr data if applicable', function () {
|
|
114
|
+
const req = Object.assign({}, REQUEST, {
|
|
115
|
+
gdprConsent: {
|
|
116
|
+
consentString: 'consentString',
|
|
117
|
+
gdprApplies: true,
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
let request = spec.buildRequests(REQUEST.bidRequest, req)[0];
|
|
121
|
+
|
|
122
|
+
const payload = request.data;
|
|
123
|
+
expect(payload.user.ext).to.have.property('consent', req.gdprConsent.consentString);
|
|
124
|
+
expect(payload.regs.ext).to.have.property('gdpr', 1);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
describe('interpretResponse', function () {
|
|
129
|
+
it('has bids', function () {
|
|
130
|
+
let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
|
|
131
|
+
let bids = spec.interpretResponse(RESPONSE, request);
|
|
132
|
+
expect(bids).to.be.an('array').that.is.not.empty;
|
|
133
|
+
validateBidOnIndex(0);
|
|
134
|
+
|
|
135
|
+
function validateBidOnIndex(index) {
|
|
136
|
+
expect(bids[index]).to.have.property('currency', 'USD');
|
|
137
|
+
expect(bids[index]).to.have.property('requestId', RESPONSE.body.seatbid[0].bid[index].id);
|
|
138
|
+
expect(bids[index]).to.have.property('cpm', RESPONSE.body.seatbid[0].bid[index].price);
|
|
139
|
+
expect(bids[index]).to.have.property('width', RESPONSE.body.seatbid[0].bid[index].w);
|
|
140
|
+
expect(bids[index]).to.have.property('height', RESPONSE.body.seatbid[0].bid[index].h);
|
|
141
|
+
expect(bids[index]).to.have.property('ad', RESPONSE.body.seatbid[0].bid[index].adm);
|
|
142
|
+
expect(bids[index]).to.have.property('creativeId', RESPONSE.body.seatbid[0].bid[index].crid);
|
|
143
|
+
expect(bids[index]).to.have.property('ttl', 30);
|
|
144
|
+
expect(bids[index]).to.have.property('netRevenue', true);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('handles empty response', function () {
|
|
149
|
+
let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
|
|
150
|
+
const EMPTY_RESP = Object.assign({}, RESPONSE, {'body': {}});
|
|
151
|
+
const bids = spec.interpretResponse(EMPTY_RESP, request);
|
|
152
|
+
expect(bids).to.be.empty;
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
@@ -480,6 +480,14 @@ describe('TheMediaGrid Adapter', function () {
|
|
|
480
480
|
'h': 600,
|
|
481
481
|
'protocols': [1, 2, 3],
|
|
482
482
|
'mimes': ['video/mp4', 'video/webm', 'application/javascript', 'video/ogg'],
|
|
483
|
+
'context': 'instream',
|
|
484
|
+
'maxduration': 30,
|
|
485
|
+
'minduration': 0,
|
|
486
|
+
'api': [1, 2],
|
|
487
|
+
'skip': 1,
|
|
488
|
+
'placement': 1,
|
|
489
|
+
'playbackmethod': 1,
|
|
490
|
+
'startdelay': 0
|
|
483
491
|
}
|
|
484
492
|
}, {
|
|
485
493
|
'id': bidRequests[3].bidId,
|
|
@@ -1703,6 +1703,63 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1703
1703
|
expect(r.regs.gpp_sid).to.be.an('array');
|
|
1704
1704
|
expect(r.regs.gpp_sid).to.include(1);
|
|
1705
1705
|
});
|
|
1706
|
+
|
|
1707
|
+
it('should add adunit specific data to imp ext for banner', function () {
|
|
1708
|
+
const AD_UNIT_CODE = '/19968336/some-adunit-path';
|
|
1709
|
+
const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID);
|
|
1710
|
+
validBids[0].ortb2Imp = {
|
|
1711
|
+
ext: {
|
|
1712
|
+
data: {
|
|
1713
|
+
adserver: {
|
|
1714
|
+
name: 'gam banner',
|
|
1715
|
+
adslot: AD_UNIT_CODE
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
};
|
|
1720
|
+
const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
|
|
1721
|
+
const imp = extractPayload(requests[0]).imp[0];
|
|
1722
|
+
expect(deepAccess(imp, 'ext.data.adserver.name')).to.equal('gam banner');
|
|
1723
|
+
expect(deepAccess(imp, 'ext.data.adserver.adslot')).to.equal(AD_UNIT_CODE);
|
|
1724
|
+
});
|
|
1725
|
+
|
|
1726
|
+
it('should add adunit specific data to imp ext for native', function () {
|
|
1727
|
+
const AD_UNIT_CODE = '/19968336/some-adunit-path';
|
|
1728
|
+
const validBids = utils.deepClone(DEFAULT_NATIVE_VALID_BID);
|
|
1729
|
+
validBids[0].ortb2Imp = {
|
|
1730
|
+
ext: {
|
|
1731
|
+
data: {
|
|
1732
|
+
adserver: {
|
|
1733
|
+
name: 'gam native',
|
|
1734
|
+
adslot: AD_UNIT_CODE
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
};
|
|
1739
|
+
const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
|
|
1740
|
+
const imp = extractPayload(requests[0]).imp[0];
|
|
1741
|
+
expect(deepAccess(imp, 'ext.data.adserver.name')).to.equal('gam native');
|
|
1742
|
+
expect(deepAccess(imp, 'ext.data.adserver.adslot')).to.equal(AD_UNIT_CODE);
|
|
1743
|
+
});
|
|
1744
|
+
|
|
1745
|
+
it('should add adunit specific data to imp ext for video', function () {
|
|
1746
|
+
const AD_UNIT_CODE = '/19968336/some-adunit-path';
|
|
1747
|
+
const validBids = utils.deepClone(DEFAULT_VIDEO_VALID_BID);
|
|
1748
|
+
validBids[0].ortb2Imp = {
|
|
1749
|
+
ext: {
|
|
1750
|
+
data: {
|
|
1751
|
+
adserver: {
|
|
1752
|
+
name: 'gam video',
|
|
1753
|
+
adslot: AD_UNIT_CODE
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
};
|
|
1758
|
+
const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
|
|
1759
|
+
const imp = extractPayload(requests[0]).imp[0];
|
|
1760
|
+
expect(deepAccess(imp, 'ext.data.adserver.name')).to.equal('gam video');
|
|
1761
|
+
expect(deepAccess(imp, 'ext.data.adserver.adslot')).to.equal(AD_UNIT_CODE);
|
|
1762
|
+
});
|
|
1706
1763
|
});
|
|
1707
1764
|
|
|
1708
1765
|
describe('buildRequests', function () {
|