prebid.js 7.31.0 → 7.32.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.
Files changed (180) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adlooxRtdProvider.js +1 -1
  7. package/dist/adrelevantisBidAdapter.js +1 -1
  8. package/dist/adtrgtmeBidAdapter.js +1 -1
  9. package/dist/adxcgBidAdapter.js +1 -1
  10. package/dist/aidemBidAdapter.js +1 -1
  11. package/dist/ajaBidAdapter.js +1 -1
  12. package/dist/alkimiBidAdapter.js +1 -1
  13. package/dist/amxBidAdapter.js +1 -1
  14. package/dist/amxIdSystem.js +1 -1
  15. package/dist/aolBidAdapter.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/appushBidAdapter.js +1 -0
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/bidglassBidAdapter.js +1 -1
  22. package/dist/big-richmediaBidAdapter.js +1 -1
  23. package/dist/bridgewellBidAdapter.js +1 -1
  24. package/dist/brightMountainMediaBidAdapter.js +1 -1
  25. package/dist/carodaBidAdapter.js +1 -1
  26. package/dist/chtnwBidAdapter.js +1 -1
  27. package/dist/concertBidAdapter.js +1 -1
  28. package/dist/connectIdSystem.js +1 -1
  29. package/dist/connectadBidAdapter.js +1 -1
  30. package/dist/consumableBidAdapter.js +1 -1
  31. package/dist/conversantBidAdapter.js +1 -1
  32. package/dist/craftBidAdapter.js +1 -1
  33. package/dist/criteoBidAdapter.js +1 -1
  34. package/dist/dspxBidAdapter.js +1 -1
  35. package/dist/eplanningBidAdapter.js +1 -1
  36. package/dist/feedadBidAdapter.js +1 -1
  37. package/dist/finativeBidAdapter.js +1 -1
  38. package/dist/glimpseBidAdapter.js +1 -1
  39. package/dist/gmosspBidAdapter.js +1 -1
  40. package/dist/goldbachBidAdapter.js +1 -1
  41. package/dist/gridBidAdapter.js +1 -1
  42. package/dist/gridNMBidAdapter.js +1 -1
  43. package/dist/gumgumBidAdapter.js +1 -1
  44. package/dist/h12mediaBidAdapter.js +1 -1
  45. package/dist/holidBidAdapter.js +1 -0
  46. package/dist/id5IdSystem.js +1 -1
  47. package/dist/improvedigitalBidAdapter.js +1 -1
  48. package/dist/inmarBidAdapter.js +1 -1
  49. package/dist/insticatorBidAdapter.js +1 -1
  50. package/dist/ixBidAdapter.js +1 -1
  51. package/dist/justpremiumBidAdapter.js +1 -1
  52. package/dist/jwplayerVideoProvider.js +1 -1
  53. package/dist/konduitAnalyticsAdapter.js +1 -1
  54. package/dist/kueezBidAdapter.js +1 -1
  55. package/dist/kueezRtbBidAdapter.js +1 -1
  56. package/dist/lassoBidAdapter.js +1 -1
  57. package/dist/lifestreetBidAdapter.js +1 -1
  58. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  59. package/dist/logicadBidAdapter.js +1 -1
  60. package/dist/loglyliftBidAdapter.js +1 -1
  61. package/dist/magniteAnalyticsAdapter.js +1 -1
  62. package/dist/malltvAnalyticsAdapter.js +1 -1
  63. package/dist/marsmediaBidAdapter.js +1 -1
  64. package/dist/mediafuseBidAdapter.js +1 -1
  65. package/dist/medianetRtdProvider.js +1 -1
  66. package/dist/mediasquareBidAdapter.js +1 -1
  67. package/dist/mgidBidAdapter.js +1 -1
  68. package/dist/minutemediaBidAdapter.js +1 -1
  69. package/dist/nexx360BidAdapter.js +1 -1
  70. package/dist/not-for-prod/prebid.js +126 -123
  71. package/dist/oguryBidAdapter.js +1 -1
  72. package/dist/onetagBidAdapter.js +1 -1
  73. package/dist/ooloAnalyticsAdapter.js +1 -1
  74. package/dist/orbitsoftBidAdapter.js +1 -0
  75. package/dist/outbrainBidAdapter.js +1 -1
  76. package/dist/parrableIdSystem.js +1 -1
  77. package/dist/permutiveRtdProvider.js +1 -1
  78. package/dist/pixfutureBidAdapter.js +1 -1
  79. package/dist/prebid-core.js +1 -1
  80. package/dist/publinkIdSystem.js +1 -1
  81. package/dist/pubmaticBidAdapter.js +1 -1
  82. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  83. package/dist/pxyzBidAdapter.js +1 -1
  84. package/dist/quantcastBidAdapter.js +1 -1
  85. package/dist/readpeakBidAdapter.js +1 -1
  86. package/dist/relaidoBidAdapter.js +1 -1
  87. package/dist/rhythmoneBidAdapter.js +1 -1
  88. package/dist/riseBidAdapter.js +1 -1
  89. package/dist/rubiconAnalyticsAdapter.js +1 -1
  90. package/dist/rubiconBidAdapter.js +1 -1
  91. package/dist/seedingAllianceBidAdapter.js +1 -1
  92. package/dist/seedtagBidAdapter.js +1 -1
  93. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  94. package/dist/sharethroughBidAdapter.js +1 -1
  95. package/dist/shinezBidAdapter.js +1 -1
  96. package/dist/smaatoBidAdapter.js +1 -1
  97. package/dist/smartadserverBidAdapter.js +1 -1
  98. package/dist/smartxBidAdapter.js +1 -1
  99. package/dist/smilewantedBidAdapter.js +1 -1
  100. package/dist/sonobiBidAdapter.js +1 -1
  101. package/dist/sovrnAnalyticsAdapter.js +1 -1
  102. package/dist/sovrnBidAdapter.js +1 -1
  103. package/dist/sspBCBidAdapter.js +1 -1
  104. package/dist/sublimeBidAdapter.js +1 -1
  105. package/dist/synacormediaBidAdapter.js +1 -1
  106. package/dist/taboolaBidAdapter.js +1 -1
  107. package/dist/targetVideoBidAdapter.js +1 -1
  108. package/dist/teadsBidAdapter.js +1 -1
  109. package/dist/trionBidAdapter.js +1 -1
  110. package/dist/tripleliftBidAdapter.js +1 -1
  111. package/dist/ttdBidAdapter.js +1 -1
  112. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  113. package/dist/uid2IdSystem.js +1 -1
  114. package/dist/underdogmediaBidAdapter.js +1 -1
  115. package/dist/undertoneBidAdapter.js +1 -1
  116. package/dist/vidazooBidAdapter.js +1 -1
  117. package/dist/videobyteBidAdapter.js +1 -1
  118. package/dist/visxBidAdapter.js +1 -1
  119. package/dist/vuukleBidAdapter.js +1 -1
  120. package/dist/widespaceBidAdapter.js +1 -1
  121. package/dist/winrBidAdapter.js +1 -1
  122. package/dist/yahoosspBidAdapter.js +1 -1
  123. package/dist/yieldlabBidAdapter.js +1 -1
  124. package/dist/yieldmoBidAdapter.js +1 -1
  125. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  126. package/integrationExamples/gpt/adloox.html +5 -0
  127. package/modules/adagioBidAdapter.js +0 -4
  128. package/modules/adagioBidAdapter.md +4 -22
  129. package/modules/adlooxAnalyticsAdapter.md +5 -3
  130. package/modules/adlooxRtdProvider.js +82 -278
  131. package/modules/adlooxRtdProvider.md +6 -6
  132. package/modules/aidemBidAdapter.js +4 -0
  133. package/modules/aidemBidAdapter.md +1 -0
  134. package/modules/alkimiBidAdapter.js +23 -6
  135. package/modules/aolBidAdapter.js +12 -0
  136. package/modules/appnexusBidAdapter.js +2 -2
  137. package/modules/appushBidAdapter.js +188 -0
  138. package/modules/appushBidAdapter.md +79 -0
  139. package/modules/asoBidAdapter.js +8 -5
  140. package/modules/confiantRtdProvider.js +1 -1
  141. package/modules/connectIdSystem.js +15 -1
  142. package/modules/feedadBidAdapter.js +7 -5
  143. package/modules/holidBidAdapter.js +170 -0
  144. package/modules/holidBidAdapter.md +36 -0
  145. package/modules/jwplayerVideoProvider.js +10 -3
  146. package/modules/kueezRtbBidAdapter.js +21 -8
  147. package/modules/medianetRtdProvider.js +4 -4
  148. package/modules/nexx360BidAdapter.js +5 -7
  149. package/modules/orbitsoftBidAdapter.js +150 -0
  150. package/modules/permutiveRtdProvider.js +1 -1
  151. package/modules/riseBidAdapter.js +2 -1
  152. package/modules/riseBidAdapter.md +2 -0
  153. package/modules/seedtagBidAdapter.js +12 -0
  154. package/modules/smartxBidAdapter.js +6 -0
  155. package/modules/taboolaBidAdapter.js +61 -14
  156. package/modules/yahoosspBidAdapter.js +5 -0
  157. package/modules/yieldlabBidAdapter.js +150 -134
  158. package/modules/yieldmoBidAdapter.js +1 -12
  159. package/package.json +1 -1
  160. package/test/spec/modules/adagioBidAdapter_spec.js +1 -28
  161. package/test/spec/modules/adlooxRtdProvider_spec.js +28 -120
  162. package/test/spec/modules/aidemBidAdapter_spec.js +10 -2
  163. package/test/spec/modules/alkimiBidAdapter_spec.js +15 -3
  164. package/test/spec/modules/aolBidAdapter_spec.js +22 -0
  165. package/test/spec/modules/appnexusBidAdapter_spec.js +7 -3
  166. package/test/spec/modules/appushBidAdapter_spec.js +372 -0
  167. package/test/spec/modules/connectIdSystem_spec.js +17 -5
  168. package/test/spec/modules/feedadBidAdapter_spec.js +23 -1
  169. package/test/spec/modules/holidBidAdapter_spec.js +165 -0
  170. package/test/spec/modules/kueezRtbBidAdapter_spec.js +147 -24
  171. package/test/spec/modules/medianetRtdProvider_spec.js +3 -3
  172. package/test/spec/modules/orbitsoftBidAdapter_spec.js +255 -0
  173. package/test/spec/modules/riseBidAdapter_spec.js +7 -0
  174. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -10
  175. package/test/spec/modules/smartxBidAdapter_spec.js +10 -0
  176. package/test/spec/modules/taboolaBidAdapter_spec.js +142 -5
  177. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +45 -10
  178. package/test/spec/modules/yahoosspBidAdapter_spec.js +16 -1
  179. package/test/spec/modules/yieldlabBidAdapter_spec.js +311 -301
  180. package/test/spec/modules/yieldmoBidAdapter_spec.js +70 -0
@@ -149,10 +149,8 @@ describe('Adagio bid adapter', () => {
149
149
  site: {
150
150
  ext: {
151
151
  data: {
152
- environment: 'desktop',
153
152
  pagetype: 'abc',
154
- category: ['cat1', 'cat2', 'cat3'],
155
- subcategory: []
153
+ category: ['cat1', 'cat2', 'cat3']
156
154
  }
157
155
  }
158
156
  }
@@ -167,17 +165,11 @@ describe('Adagio bid adapter', () => {
167
165
  return utils.deepAccess(config, key);
168
166
  });
169
167
 
170
- setExtraParam(bid, 'environment');
171
- expect(bid.params.environment).to.equal('desktop');
172
-
173
168
  setExtraParam(bid, 'pagetype')
174
169
  expect(bid.params.pagetype).to.equal('article');
175
170
 
176
171
  setExtraParam(bid, 'category');
177
172
  expect(bid.params.category).to.equal('cat1'); // Only the first value is kept
178
-
179
- setExtraParam(bid, 'subcategory');
180
- expect(bid.params.subcategory).to.be.undefined;
181
173
  });
182
174
 
183
175
  it('should use the adUnit param unit if defined', function() {
@@ -784,8 +776,6 @@ describe('Adagio bid adapter', () => {
784
776
  adUnitElementId: 'gpt-adunit-code',
785
777
  pagetype: 'ARTICLE',
786
778
  category: 'NEWS',
787
- subcategory: 'SPORT',
788
- environment: 'desktop',
789
779
  supportIObs: true
790
780
  },
791
781
  adUnitCode: 'adunit-code',
@@ -833,8 +823,6 @@ describe('Adagio bid adapter', () => {
833
823
  site: 'SITE-NAME',
834
824
  pagetype: 'ARTICLE',
835
825
  category: 'NEWS',
836
- subcategory: 'SPORT',
837
- environment: 'desktop',
838
826
  aDomain: ['advertiser.com'],
839
827
  mediaType: 'banner',
840
828
  meta: {
@@ -868,8 +856,6 @@ describe('Adagio bid adapter', () => {
868
856
  site: 'SITE-NAME',
869
857
  pagetype: 'ARTICLE',
870
858
  category: 'NEWS',
871
- subcategory: 'SPORT',
872
- environment: 'desktop',
873
859
  aDomain: ['advertiser.com'],
874
860
  mediaType: 'banner',
875
861
  meta: {
@@ -1392,19 +1378,6 @@ describe('Adagio bid adapter', () => {
1392
1378
  });
1393
1379
 
1394
1380
  describe.skip('optional params auto detection', function() {
1395
- it('should auto detect environment', function() {
1396
- const getDeviceStub = sandbox.stub(_features, 'getDevice');
1397
-
1398
- getDeviceStub.returns(5);
1399
- expect(adagio.autoDetectEnvironment()).to.eq('tablet');
1400
-
1401
- getDeviceStub.returns(4);
1402
- expect(adagio.autoDetectEnvironment()).to.eq('mobile');
1403
-
1404
- getDeviceStub.returns(2);
1405
- expect(adagio.autoDetectEnvironment()).to.eq('desktop');
1406
- });
1407
-
1408
1381
  it('should auto detect adUnitElementId when GPT is used', function() {
1409
1382
  sandbox.stub(utils, 'getGptSlotInfoForAdUnitCode').withArgs('banner').returns({divId: 'gpt-banner'});
1410
1383
  expect(adagio.autoDetectAdUnitElementId('banner')).to.eq('gpt-banner');
@@ -1,5 +1,6 @@
1
1
  import adapterManager from 'src/adapterManager.js';
2
2
  import analyticsAdapter from 'modules/adlooxAnalyticsAdapter.js';
3
+ import {auctionManager} from 'src/auctionManager.js';
3
4
  import { config as _config } from 'src/config.js';
4
5
  import { expect } from 'chai';
5
6
  import * as events from 'src/events.js';
@@ -75,14 +76,6 @@ describe('Adloox RTD Provider', function () {
75
76
  done();
76
77
  });
77
78
 
78
- it('should reject non-string config.params.api_origin', function (done) {
79
- const ret = rtdProvider.init({ params: { api_origin: null } });
80
-
81
- expect(ret).is.false;
82
-
83
- done();
84
- });
85
-
86
79
  it('should reject less than one config.params.imps', function (done) {
87
80
  const ret = rtdProvider.init({ params: { imps: 0 } });
88
81
 
@@ -147,31 +140,37 @@ describe('Adloox RTD Provider', function () {
147
140
  });
148
141
 
149
142
  let server = null;
150
- let __config = null, CONFIG = null;
151
- let getConfigStub, setConfigStub;
143
+ let CONFIG = null;
152
144
  beforeEach(function () {
153
145
  server = sinon.createFakeServer();
154
- __config = {};
155
146
  CONFIG = utils.deepClone(config);
156
- getConfigStub = sinon.stub(_config, 'getConfig').callsFake(function (path) {
157
- return utils.deepAccess(__config, path);
158
- });
159
- setConfigStub = sinon.stub(_config, 'setConfig').callsFake(function (obj) {
160
- utils.mergeDeep(__config, obj);
161
- });
162
147
  });
163
148
  afterEach(function () {
164
- setConfigStub.restore();
165
- getConfigStub.restore();
166
- getConfigStub = setConfigStub = undefined;
167
149
  CONFIG = null;
168
- __config = null;
169
150
  server.restore();
170
151
  server = null;
171
152
  });
172
153
 
173
154
  it('should fetch segments', function (done) {
174
- const req = {};
155
+ const req = {
156
+ adUnitCodes: [ adUnit.code ],
157
+ ortb2Fragments: {
158
+ global: {
159
+ site: {
160
+ ext: {
161
+ data: {
162
+ }
163
+ }
164
+ },
165
+ user: {
166
+ ext: {
167
+ data: {
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ };
175
174
  const adUnitWithSegments = utils.deepClone(adUnit);
176
175
  const getGlobalStub = sinon.stub(prebidGlobal, 'getGlobal').returns({
177
176
  adUnits: [ adUnitWithSegments ]
@@ -201,119 +200,28 @@ describe('Adloox RTD Provider', function () {
201
200
  });
202
201
 
203
202
  it('should set ad server targeting', function (done) {
204
- utils.deepSetValue(__config, 'ortb2.site.ext.data.adloox_rtd.ok', true);
205
-
206
203
  const adUnitWithSegments = utils.deepClone(adUnit);
207
204
  utils.deepSetValue(adUnitWithSegments, 'ortb2Imp.ext.data.adloox_rtd.dis', [ 50, 60 ]);
208
205
  const getGlobalStub = sinon.stub(prebidGlobal, 'getGlobal').returns({
209
206
  adUnits: [ adUnitWithSegments ]
210
207
  });
211
208
 
212
- const targetingData = rtdProvider.getTargetingData([ adUnitWithSegments.code ], CONFIG, null, {
213
- getFPD: () => ({
214
- global: __config.ortb2
215
- })
209
+ const auction = { adUnits: [ adUnitWithSegments ] };
210
+ const getAuctionStub = sinon.stub(auctionManager.index, 'getAuction').returns({
211
+ adUnits: [ adUnitWithSegments ],
212
+ getFPD: () => { return { global: { site: { ext: { data: { adloox_rtd: { ok: true } } } } } } }
216
213
  });
214
+
215
+ const targetingData = rtdProvider.getTargetingData([ adUnitWithSegments.code ], CONFIG, null, auction);
217
216
  expect(Object.keys(targetingData).length).is.equal(1);
218
217
  expect(Object.keys(targetingData[adUnit.code]).length).is.equal(2);
219
218
  expect(targetingData[adUnit.code].adl_ok).is.equal(1);
220
219
  expect(targetingData[adUnit.code].adl_dis.length).is.equal(2);
221
220
 
221
+ getAuctionStub.restore();
222
222
  getGlobalStub.restore();
223
223
 
224
224
  done();
225
225
  });
226
226
  });
227
-
228
- describe('measure atf', function () {
229
- const adUnitCopy = utils.deepClone(adUnit);
230
-
231
- const ratio = 0.38;
232
- const [ [width, height] ] = utils.getAdUnitSizes(adUnitCopy);
233
-
234
- before(function () {
235
- adapterManager.enableAnalytics({
236
- provider: analyticsAdapterName,
237
- options: analyticsOptions
238
- });
239
- expect(analyticsAdapter.context).is.not.null;
240
- });
241
-
242
- after(function () {
243
- analyticsAdapter.disableAnalytics();
244
- expect(analyticsAdapter.context).is.null;
245
- });
246
-
247
- it(`should return ${ratio} for same-origin`, function (done) {
248
- const el = document.createElement('div');
249
- el.setAttribute('id', adUnitCopy.code);
250
-
251
- const offset = height * ratio;
252
- const elStub = sinon.stub(el, 'getBoundingClientRect').returns({
253
- top: 0 - (height - offset),
254
- bottom: height - offset,
255
- left: 0,
256
- right: width
257
- });
258
-
259
- const querySelectorStub = sinon.stub(document, 'querySelector');
260
- querySelectorStub.withArgs(`#${adUnitCopy.code}`).returns(el);
261
-
262
- rtdProvider.atf(adUnitCopy, function(x) {
263
- expect(x).is.equal(ratio);
264
-
265
- querySelectorStub.restore();
266
- elStub.restore();
267
-
268
- done();
269
- });
270
- });
271
-
272
- ('IntersectionObserver' in window ? it : it.skip)(`should return ${ratio} for cross-origin`, function (done) {
273
- const frameElementStub = sinon.stub(window, 'frameElement').value(null);
274
-
275
- const el = document.createElement('div');
276
- el.setAttribute('id', adUnitCopy.code);
277
-
278
- const elStub = sinon.stub(el, 'getBoundingClientRect').returns({
279
- top: 0,
280
- bottom: height,
281
- left: 0,
282
- right: width
283
- });
284
-
285
- const querySelectorStub = sinon.stub(document, 'querySelector');
286
- querySelectorStub.withArgs(`#${adUnitCopy.code}`).returns(el);
287
-
288
- let intersectionObserverStubFn = null;
289
- const intersectionObserverStub = sinon.stub(window, 'IntersectionObserver').callsFake((fn) => {
290
- intersectionObserverStubFn = fn;
291
- return {
292
- observe: (element) => {
293
- expect(element).is.equal(el);
294
-
295
- intersectionObserverStubFn([{
296
- target: element,
297
- intersectionRect: { width, height },
298
- intersectionRatio: ratio
299
- }]);
300
- },
301
- unobserve: (element) => {
302
- expect(element).is.equal(el);
303
- }
304
- }
305
- });
306
-
307
- rtdProvider.atf(adUnitCopy, function(x) {
308
- expect(x).is.equal(ratio);
309
-
310
- intersectionObserverStub.restore();
311
- querySelectorStub.restore();
312
- elStub.restore();
313
- frameElementStub.restore();
314
-
315
- done();
316
- });
317
- });
318
- });
319
227
  });
@@ -385,7 +385,7 @@ describe('Aidem adapter', () => {
385
385
  expect(payload.imp).to.be.a('array').that.has.lengthOf(DEFAULT_VALID_BANNER_REQUESTS.length)
386
386
 
387
387
  expect(payload.imp[0]).to.be.a('object').that.has.all.keys(
388
- 'banner', 'id', 'mediatype', 'imp_ext', 'tid'
388
+ 'banner', 'id', 'mediatype', 'imp_ext', 'tid', 'tagid'
389
389
  )
390
390
  expect(payload.imp[0].banner).to.be.a('object').that.has.all.keys(
391
391
  'format', 'topframe'
@@ -401,7 +401,7 @@ describe('Aidem adapter', () => {
401
401
  expect(payload.imp).to.be.a('array').that.has.lengthOf(DEFAULT_VALID_VIDEO_REQUESTS.length)
402
402
 
403
403
  expect(payload.imp[0]).to.be.a('object').that.has.all.keys(
404
- 'video', 'id', 'mediatype', 'imp_ext', 'tid'
404
+ 'video', 'id', 'mediatype', 'imp_ext', 'tid', 'tagid'
405
405
  )
406
406
  expect(payload.imp[0].video).to.be.a('object').that.has.all.keys(
407
407
  'format', 'mimes', 'minDuration', 'maxDuration', 'protocols'
@@ -421,6 +421,14 @@ describe('Aidem adapter', () => {
421
421
  'value', 'currency'
422
422
  )
423
423
  });
424
+
425
+ it('should hav wpar keys in environment object', function () {
426
+ const requests = spec.buildRequests(DEFAULT_VALID_VIDEO_REQUESTS, VALID_BIDDER_REQUEST);
427
+ const payload = JSON.parse(requests.data)
428
+ expect(payload).to.have.property('environment')
429
+ expect(payload.environment).to.be.a('object').that.have.property('wpar')
430
+ expect(payload.environment.wpar).to.be.a('object').that.has.keys('innerWidth', 'innerHeight')
431
+ });
424
432
  })
425
433
 
426
434
  describe('interpretResponse', () => {
@@ -108,7 +108,7 @@ describe('alkimiBidAdapter', function () {
108
108
 
109
109
  describe('buildRequests', function () {
110
110
  let bidRequests = [REQUEST]
111
- const bidderRequest = spec.buildRequests(bidRequests, {
111
+ let requestData = {
112
112
  auctionId: '123',
113
113
  refererInfo: {
114
114
  page: 'http://test.com/path.html'
@@ -119,7 +119,8 @@ describe('alkimiBidAdapter', function () {
119
119
  gdprApplies: true
120
120
  },
121
121
  uspConsent: 'uspConsent'
122
- })
122
+ }
123
+ const bidderRequest = spec.buildRequests(bidRequests, requestData)
123
124
 
124
125
  it('should return a properly formatted request with eids defined', function () {
125
126
  expect(bidderRequest.data.eids).to.deep.equal(REQUEST.userIdAsEids)
@@ -138,7 +139,7 @@ describe('alkimiBidAdapter', function () {
138
139
  expect(bidderRequest.method).to.equal('POST')
139
140
  expect(bidderRequest.data.requestId).to.equal('123')
140
141
  expect(bidderRequest.data.referer).to.equal('http://test.com/path.html')
141
- expect(bidderRequest.data.schain).to.deep.contains({ver: '1.0', complete: 1, nodes: [{asi: 'alkimi-onboarding.com', sid: '00001', hp: 1}]})
142
+ expect(bidderRequest.data.schain).to.deep.contains({ ver: '1.0', complete: 1, nodes: [{ asi: 'alkimi-onboarding.com', sid: '00001', hp: 1 }] })
142
143
  expect(bidderRequest.data.signRequest.bids).to.deep.contains({ token: 'e64782a4-8e68-4c38-965b-80ccf115d46f', pos: 7, bidFloor: 0.1, width: 300, height: 250, impMediaType: 'Banner', adUnitCode: 'bannerAdUnitCode' })
143
144
  expect(bidderRequest.data.signRequest.randomUUID).to.equal(undefined)
144
145
  expect(bidderRequest.data.bidIds).to.deep.contains('456')
@@ -147,6 +148,17 @@ describe('alkimiBidAdapter', function () {
147
148
  expect(bidderRequest.options.contentType).to.equal('application/json')
148
149
  expect(bidderRequest.url).to.equal(ENDPOINT)
149
150
  })
151
+
152
+ it('sends bidFloor when configured', () => {
153
+ const requestWithFloor = Object.assign({}, REQUEST);
154
+ requestWithFloor.getFloor = function (arg) {
155
+ if (arg.currency === 'USD' && arg.mediaType === 'banner' && JSON.stringify(arg.size) === JSON.stringify([300, 250])) {
156
+ return { currency: 'USD', floor: 0.3 }
157
+ }
158
+ }
159
+ const bidderRequestFloor = spec.buildRequests([requestWithFloor], requestData);
160
+ expect(bidderRequestFloor.data.signRequest.bids[0].bidFloor).to.be.equal(0.3);
161
+ });
150
162
  })
151
163
 
152
164
  describe('interpretResponse', function () {
@@ -488,6 +488,20 @@ describe('AolAdapter', function () {
488
488
  expect(request.url).to.contain(NEXAGE_URL + 'dcn=2c9d2b50015c5ce9db6aeeed8b9500d6&pos=header');
489
489
  });
490
490
 
491
+ it('should return One Mobile url with configured GPP data', function () {
492
+ let bidRequest = createCustomBidRequest({
493
+ params: getNexageGetBidParams()
494
+ });
495
+ bidRequest.ortb2 = {
496
+ regs: {
497
+ gpp: 'testgpp',
498
+ gpp_sid: [8]
499
+ }
500
+ }
501
+ let [request] = spec.buildRequests(bidRequest.bids, bidRequest);
502
+ expect(request.url).to.contain('gpp=testgpp&gpp_sid=8');
503
+ });
504
+
491
505
  it('should return One Mobile url with cmd=bid option', function () {
492
506
  let bidRequest = createCustomBidRequest({
493
507
  params: getNexageGetBidParams()
@@ -794,6 +808,14 @@ describe('AolAdapter', function () {
794
808
  'euconsent=test-consent;gdpr=1;us_privacy=test-usp-consent;');
795
809
  });
796
810
 
811
+ it('should return formatted gpp privacy params when formatConsentData returns GPP data', function () {
812
+ formatConsentDataStub.returns({
813
+ gpp: 'gppstring',
814
+ gpp_sid: [6, 7]
815
+ });
816
+ expect(spec.formatMarketplaceDynamicParams()).to.be.equal('gpp=gppstring;gpp_sid=6%2C7;');
817
+ });
818
+
797
819
  it('should return formatted params when formatKeyValues returns data', function () {
798
820
  formatKeyValuesStub.returns({
799
821
  param1: 'val1',
@@ -1630,7 +1630,10 @@ describe('AppNexusAdapter', function () {
1630
1630
  'phone': '1234567890',
1631
1631
  'address': '28 W 23rd St, New York, NY 10010',
1632
1632
  'privacy_link': 'https://appnexus.com/?url=privacy_url',
1633
- '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=;css_selector=.pb-click;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>'
1633
+ '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=;css_selector=.pb-click;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>',
1634
+ 'video': {
1635
+ 'content': '<?xml version=\"1.0\"></xml>'
1636
+ }
1634
1637
  };
1635
1638
  let bidderRequest = {
1636
1639
  bids: [{
@@ -1644,6 +1647,7 @@ describe('AppNexusAdapter', function () {
1644
1647
  expect(result[0].native.body).to.equal('Cool description great stuff');
1645
1648
  expect(result[0].native.cta).to.equal('Do it');
1646
1649
  expect(result[0].native.image.url).to.equal('https://cdn.adnxs.com/img.png');
1650
+ expect(result[0].native.video.content).to.equal('<?xml version=\"1.0\"></xml>');
1647
1651
  });
1648
1652
  }
1649
1653
 
@@ -1731,7 +1735,7 @@ describe('AppNexusAdapter', function () {
1731
1735
 
1732
1736
  it('should add advertiserDomains', function () {
1733
1737
  let responseAdvertiserId = deepClone(response);
1734
- responseAdvertiserId.tags[0].ads[0].adomain = ['123'];
1738
+ responseAdvertiserId.tags[0].ads[0].adomain = '123';
1735
1739
 
1736
1740
  let bidderRequest = {
1737
1741
  bids: [{
@@ -1741,7 +1745,7 @@ describe('AppNexusAdapter', function () {
1741
1745
  }
1742
1746
  let result = spec.interpretResponse({ body: responseAdvertiserId }, { bidderRequest });
1743
1747
  expect(Object.keys(result[0].meta)).to.include.members(['advertiserDomains']);
1744
- expect(Object.keys(result[0].meta.advertiserDomains)).to.deep.equal([]);
1748
+ expect(result[0].meta.advertiserDomains).to.deep.equal(['123']);
1745
1749
  });
1746
1750
  });
1747
1751