prebid.js 7.24.0 → 7.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.
Files changed (191) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/adagioBidAdapter.js +1 -1
  3. package/dist/adbookpspBidAdapter.js +1 -1
  4. package/dist/adgenerationBidAdapter.js +1 -1
  5. package/dist/admaticBidAdapter.js +1 -1
  6. package/dist/adrelevantisBidAdapter.js +1 -1
  7. package/dist/adtrgtmeBidAdapter.js +1 -1
  8. package/dist/adxcgBidAdapter.js +1 -1
  9. package/dist/ajaBidAdapter.js +1 -1
  10. package/dist/amxBidAdapter.js +1 -1
  11. package/dist/amxIdSystem.js +1 -1
  12. package/dist/appierAnalyticsAdapter.js +1 -1
  13. package/dist/appnexusBidAdapter.js +1 -1
  14. package/dist/asoBidAdapter.js +1 -1
  15. package/dist/axonixBidAdapter.js +1 -1
  16. package/dist/beopBidAdapter.js +1 -1
  17. package/dist/bidglassBidAdapter.js +1 -1
  18. package/dist/big-richmediaBidAdapter.js +1 -1
  19. package/dist/bridgewellBidAdapter.js +1 -1
  20. package/dist/brightMountainMediaBidAdapter.js +1 -1
  21. package/dist/captifyRtdProvider.js +1 -0
  22. package/dist/carodaBidAdapter.js +1 -1
  23. package/dist/chtnwBidAdapter.js +1 -1
  24. package/dist/concertBidAdapter.js +1 -1
  25. package/dist/connectadBidAdapter.js +1 -1
  26. package/dist/consumableBidAdapter.js +1 -1
  27. package/dist/conversantBidAdapter.js +1 -1
  28. package/dist/craftBidAdapter.js +1 -1
  29. package/dist/criteoBidAdapter.js +1 -1
  30. package/dist/discoveryBidAdapter.js +1 -1
  31. package/dist/dspxBidAdapter.js +1 -1
  32. package/dist/eplanningBidAdapter.js +1 -1
  33. package/dist/finativeBidAdapter.js +1 -1
  34. package/dist/glimpseBidAdapter.js +1 -1
  35. package/dist/gmosspBidAdapter.js +1 -1
  36. package/dist/goldbachBidAdapter.js +1 -1
  37. package/dist/gridBidAdapter.js +1 -1
  38. package/dist/gridNMBidAdapter.js +1 -1
  39. package/dist/gumgumBidAdapter.js +1 -1
  40. package/dist/h12mediaBidAdapter.js +1 -1
  41. package/dist/id5IdSystem.js +1 -1
  42. package/dist/improvedigitalBidAdapter.js +1 -1
  43. package/dist/inmarBidAdapter.js +1 -1
  44. package/dist/insticatorBidAdapter.js +1 -1
  45. package/dist/ixBidAdapter.js +1 -1
  46. package/dist/justpremiumBidAdapter.js +1 -1
  47. package/dist/kargoBidAdapter.js +1 -1
  48. package/dist/konduitAnalyticsAdapter.js +1 -1
  49. package/dist/kueezBidAdapter.js +1 -1
  50. package/dist/kueezRtbBidAdapter.js +1 -1
  51. package/dist/lassoBidAdapter.js +1 -1
  52. package/dist/lifestreetBidAdapter.js +1 -1
  53. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  54. package/dist/logicadBidAdapter.js +1 -1
  55. package/dist/loglyliftBidAdapter.js +1 -1
  56. package/dist/magniteAnalyticsAdapter.js +1 -1
  57. package/dist/malltvAnalyticsAdapter.js +1 -1
  58. package/dist/marsmediaBidAdapter.js +1 -1
  59. package/dist/mediafuseBidAdapter.js +1 -1
  60. package/dist/mediasquareBidAdapter.js +1 -1
  61. package/dist/mgidBidAdapter.js +1 -1
  62. package/dist/microadBidAdapter.js +1 -1
  63. package/dist/minutemediaBidAdapter.js +1 -1
  64. package/dist/nextMillenniumBidAdapter.js +1 -1
  65. package/dist/not-for-prod/prebid.js +154 -120
  66. package/dist/oguryBidAdapter.js +1 -1
  67. package/dist/onetagBidAdapter.js +1 -1
  68. package/dist/ooloAnalyticsAdapter.js +1 -1
  69. package/dist/outbrainBidAdapter.js +1 -1
  70. package/dist/parrableIdSystem.js +1 -1
  71. package/dist/pixfutureBidAdapter.js +1 -1
  72. package/dist/prebid-core.js +1 -1
  73. package/dist/publinkIdSystem.js +1 -1
  74. package/dist/pubmaticBidAdapter.js +1 -1
  75. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  76. package/dist/pxyzBidAdapter.js +1 -1
  77. package/dist/quantcastBidAdapter.js +1 -1
  78. package/dist/readpeakBidAdapter.js +1 -1
  79. package/dist/relaidoBidAdapter.js +1 -1
  80. package/dist/rhythmoneBidAdapter.js +1 -1
  81. package/dist/riseBidAdapter.js +1 -1
  82. package/dist/rubiconAnalyticsAdapter.js +1 -1
  83. package/dist/rubiconBidAdapter.js +1 -1
  84. package/dist/seedingAllianceBidAdapter.js +1 -1
  85. package/dist/seedtagBidAdapter.js +1 -1
  86. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  87. package/dist/sharethroughBidAdapter.js +1 -1
  88. package/dist/shinezBidAdapter.js +1 -1
  89. package/dist/smaatoBidAdapter.js +1 -1
  90. package/dist/smartadserverBidAdapter.js +1 -1
  91. package/dist/smartxBidAdapter.js +1 -1
  92. package/dist/smartytechBidAdapter.js +1 -0
  93. package/dist/smilewantedBidAdapter.js +1 -1
  94. package/dist/sonobiBidAdapter.js +1 -1
  95. package/dist/sovrnAnalyticsAdapter.js +1 -1
  96. package/dist/sovrnBidAdapter.js +1 -1
  97. package/dist/sspBCBidAdapter.js +1 -1
  98. package/dist/sublimeBidAdapter.js +1 -1
  99. package/dist/synacormediaBidAdapter.js +1 -1
  100. package/dist/taboolaBidAdapter.js +1 -1
  101. package/dist/tappxBidAdapter.js +1 -1
  102. package/dist/targetVideoBidAdapter.js +1 -1
  103. package/dist/teadsBidAdapter.js +1 -1
  104. package/dist/trionBidAdapter.js +1 -1
  105. package/dist/tripleliftBidAdapter.js +1 -1
  106. package/dist/ttdBidAdapter.js +1 -1
  107. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  108. package/dist/underdogmediaBidAdapter.js +1 -1
  109. package/dist/undertoneBidAdapter.js +1 -1
  110. package/dist/userId.js +1 -1
  111. package/dist/vidazooBidAdapter.js +1 -1
  112. package/dist/videobyteBidAdapter.js +1 -1
  113. package/dist/viqeoBidAdapter.js +1 -0
  114. package/dist/visxBidAdapter.js +1 -1
  115. package/dist/vuukleBidAdapter.js +1 -1
  116. package/dist/widespaceBidAdapter.js +1 -1
  117. package/dist/winrBidAdapter.js +1 -1
  118. package/dist/yahoosspBidAdapter.js +1 -1
  119. package/dist/yieldlabBidAdapter.js +1 -1
  120. package/dist/yieldmoBidAdapter.js +1 -1
  121. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  122. package/dist/zeta_global_sspBidAdapter.js +1 -1
  123. package/dist/zeusPrimeRtdProvider.js +31 -0
  124. package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
  125. package/modules/.submodules.json +3 -1
  126. package/modules/adagioBidAdapter.js +1 -1
  127. package/modules/admaticBidAdapter.js +108 -59
  128. package/modules/admaticBidAdapter.md +2 -2
  129. package/modules/beopBidAdapter.js +17 -2
  130. package/modules/captifyRtdProvider.js +146 -0
  131. package/modules/captifyRtdProvider.md +68 -0
  132. package/modules/concertBidAdapter.js +17 -3
  133. package/modules/conversantAnalyticsAdapter.md +12 -13
  134. package/modules/conversantBidAdapter.md +3 -3
  135. package/modules/discoveryBidAdapter.js +38 -17
  136. package/modules/discoveryBidAdapter.md +7 -6
  137. package/modules/gridBidAdapter.js +440 -22
  138. package/modules/kargoBidAdapter.js +14 -8
  139. package/modules/magniteAnalyticsAdapter.js +1 -1
  140. package/modules/microadBidAdapter.js +22 -11
  141. package/modules/nextMillenniumBidAdapter.js +20 -24
  142. package/modules/oguryBidAdapter.js +5 -2
  143. package/modules/pubmaticBidAdapter.js +1 -1
  144. package/modules/seedtagBidAdapter.js +9 -4
  145. package/modules/smartadserverBidAdapter.js +6 -2
  146. package/modules/smartxBidAdapter.js +10 -7
  147. package/modules/smartytechBidAdapter.js +78 -0
  148. package/modules/smartytechBidAdapter.md +44 -0
  149. package/modules/taboolaBidAdapter.js +3 -3
  150. package/modules/taboolaBidAdapter.md +0 -2
  151. package/modules/tappxBidAdapter.js +21 -6
  152. package/modules/ttdBidAdapter.js +4 -3
  153. package/modules/userId/index.js +1 -1
  154. package/modules/vidazooBidAdapter.js +29 -3
  155. package/modules/viqeoBidAdapter.js +180 -0
  156. package/modules/viqeoBidAdapter.md +56 -0
  157. package/modules/yieldlabBidAdapter.js +19 -8
  158. package/modules/yieldmoBidAdapter.js +22 -8
  159. package/modules/yieldoneBidAdapter.js +60 -8
  160. package/modules/yieldoneBidAdapter.md +109 -9
  161. package/modules/zeta_global_sspBidAdapter.js +4 -0
  162. package/modules/zeusPrimeRtdProvider.js +357 -0
  163. package/modules/zeusPrimeRtdProvider.md +60 -0
  164. package/package.json +1 -1
  165. package/src/adloader.js +0 -1
  166. package/test/spec/modules/adagioBidAdapter_spec.js +2 -2
  167. package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
  168. package/test/spec/modules/beopBidAdapter_spec.js +52 -0
  169. package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
  170. package/test/spec/modules/concertBidAdapter_spec.js +26 -15
  171. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
  172. package/test/spec/modules/gridBidAdapter_spec.js +289 -1
  173. package/test/spec/modules/kargoBidAdapter_spec.js +76 -4
  174. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +20 -0
  175. package/test/spec/modules/microadBidAdapter_spec.js +48 -0
  176. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
  177. package/test/spec/modules/oguryBidAdapter_spec.js +27 -5
  178. package/test/spec/modules/pubmaticBidAdapter_spec.js +2 -2
  179. package/test/spec/modules/seedtagBidAdapter_spec.js +34 -10
  180. package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
  181. package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
  182. package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
  183. package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
  184. package/test/spec/modules/ttdBidAdapter_spec.js +13 -0
  185. package/test/spec/modules/vidazooBidAdapter_spec.js +1 -0
  186. package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
  187. package/test/spec/modules/yieldlabBidAdapter_spec.js +125 -0
  188. package/test/spec/modules/yieldmoBidAdapter_spec.js +3 -4
  189. package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
  190. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
  191. package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
@@ -1,7 +1,7 @@
1
1
  import { expect } from 'chai';
2
2
  import sinon from 'sinon';
3
- import { spec } from 'modules/concertBidAdapter.js';
4
- import { getStorageManager } from '../../../src/storageManager.js'
3
+ import { spec, storage } from 'modules/concertBidAdapter.js';
4
+ import { hook } from 'src/hook.js';
5
5
 
6
6
  describe('ConcertAdapter', function () {
7
7
  let bidRequests;
@@ -10,9 +10,8 @@ describe('ConcertAdapter', function () {
10
10
  let element;
11
11
  let sandbox;
12
12
 
13
- afterEach(function () {
14
- $$PREBID_GLOBAL$$.bidderSettings = {};
15
- sandbox.restore();
13
+ before(function () {
14
+ hook.ready();
16
15
  });
17
16
 
18
17
  beforeEach(function () {
@@ -39,6 +38,7 @@ describe('ConcertAdapter', function () {
39
38
  storageAllowed: true
40
39
  }
41
40
  };
41
+
42
42
  bidRequests = [
43
43
  {
44
44
  bidder: 'concert',
@@ -83,6 +83,11 @@ describe('ConcertAdapter', function () {
83
83
  sandbox.stub(document, 'getElementById').withArgs('desktop_leaderboard_variable').returns(element)
84
84
  });
85
85
 
86
+ afterEach(function () {
87
+ $$PREBID_GLOBAL$$.bidderSettings = {};
88
+ sandbox.restore();
89
+ });
90
+
86
91
  describe('spec.isBidRequestValid', function() {
87
92
  it('should return when it recieved all the required params', function() {
88
93
  const bid = bidRequests[0];
@@ -118,7 +123,6 @@ describe('ConcertAdapter', function () {
118
123
  });
119
124
 
120
125
  it('should not generate uid if the user has opted out', function() {
121
- const storage = getStorageManager();
122
126
  storage.setDataInLocalStorage('c_nap', 'true');
123
127
  const request = spec.buildRequests(bidRequests, bidRequest);
124
128
  const payload = JSON.parse(request.data);
@@ -127,7 +131,6 @@ describe('ConcertAdapter', function () {
127
131
  });
128
132
 
129
133
  it('should generate uid if the user has not opted out', function() {
130
- const storage = getStorageManager();
131
134
  storage.removeDataFromLocalStorage('c_nap');
132
135
  const request = spec.buildRequests(bidRequests, bidRequest);
133
136
  const payload = JSON.parse(request.data);
@@ -135,9 +138,22 @@ describe('ConcertAdapter', function () {
135
138
  expect(payload.meta.uid).to.not.equal(false);
136
139
  });
137
140
 
138
- it('should grab uid from local storage if it exists', function() {
139
- const storage = getStorageManager();
140
- storage.setDataInLocalStorage('c_uid', 'foo');
141
+ it('should use sharedid if it exists', function() {
142
+ storage.removeDataFromLocalStorage('c_nap');
143
+ const request = spec.buildRequests(bidRequests, {
144
+ ...bidRequest,
145
+ userId: {
146
+ _sharedid: {
147
+ id: '123abc'
148
+ }
149
+ }
150
+ });
151
+ const payload = JSON.parse(request.data);
152
+ expect(payload.meta.uid).to.equal('123abc');
153
+ })
154
+
155
+ it('should grab uid from local storage if it exists and sharedid does not', function() {
156
+ storage.setDataInLocalStorage('vmconcert_uid', 'foo');
141
157
  storage.removeDataFromLocalStorage('c_nap');
142
158
  const request = spec.buildRequests(bidRequests, bidRequest);
143
159
  const payload = JSON.parse(request.data);
@@ -211,7 +227,6 @@ describe('ConcertAdapter', function () {
211
227
  const opts = {
212
228
  iframeEnabled: true
213
229
  };
214
- const storage = getStorageManager();
215
230
  storage.setDataInLocalStorage('c_nap', 'true');
216
231
 
217
232
  const sync = spec.getUserSyncs(opts, [], bidRequest.gdprConsent, bidRequest.uspConsent);
@@ -222,7 +237,6 @@ describe('ConcertAdapter', function () {
222
237
  const opts = {
223
238
  iframeEnabled: true
224
239
  };
225
- const storage = getStorageManager();
226
240
  storage.removeDataFromLocalStorage('c_nap');
227
241
 
228
242
  bidRequest.gdprConsent = {
@@ -237,7 +251,6 @@ describe('ConcertAdapter', function () {
237
251
  const opts = {
238
252
  iframeEnabled: true
239
253
  };
240
- const storage = getStorageManager();
241
254
  storage.removeDataFromLocalStorage('c_nap');
242
255
 
243
256
  bidRequest.gdprConsent = {
@@ -252,7 +265,6 @@ describe('ConcertAdapter', function () {
252
265
  const opts = {
253
266
  iframeEnabled: true
254
267
  };
255
- const storage = getStorageManager();
256
268
  storage.removeDataFromLocalStorage('c_nap');
257
269
 
258
270
  bidRequest.gdprConsent = {
@@ -268,7 +280,6 @@ describe('ConcertAdapter', function () {
268
280
  const opts = {
269
281
  iframeEnabled: true
270
282
  };
271
- const storage = getStorageManager();
272
283
  storage.removeDataFromLocalStorage('c_nap');
273
284
 
274
285
  bidRequest.gdprConsent = {
@@ -1,14 +1,14 @@
1
1
  import { expect } from 'chai';
2
2
  import { spec } from 'modules/discoveryBidAdapter.js';
3
3
 
4
- describe('DiscoveryDSP:BidAdapterTests', function () {
4
+ describe('discovery:BidAdapterTests', function () {
5
5
  let bidRequestData = {
6
- bidderCode: 'DiscoveryDSP',
6
+ bidderCode: 'discovery',
7
7
  auctionId: 'ff66e39e-4075-4d18-9854-56fde9b879ac',
8
8
  bidderRequestId: '4fec04e87ad785',
9
9
  bids: [
10
10
  {
11
- bidder: 'DiscoveryDSP',
11
+ bidder: 'discovery',
12
12
  params: {
13
13
  token: 'd0f4902b616cc5c38cbe0a08676d0ed9',
14
14
  },
@@ -32,25 +32,26 @@ describe('DiscoveryDSP:BidAdapterTests', function () {
32
32
  };
33
33
  let request = [];
34
34
 
35
- it('DiscoveryDSP:validate_pub_params', function () {
35
+ it('discovery:validate_pub_params', function () {
36
36
  expect(
37
37
  spec.isBidRequestValid({
38
- bidder: 'DiscoveryDSP',
38
+ bidder: 'discovery',
39
39
  params: {
40
40
  token: ['d0f4902b616cc5c38cbe0a08676d0ed9'],
41
- media: ['test_media']
41
+ tagid: ['test_tagid'],
42
+ publisher: ['test_publisher']
42
43
  },
43
44
  })
44
45
  ).to.equal(true);
45
46
  });
46
47
 
47
- it('DiscoveryDSP:validate_generated_params', function () {
48
+ it('discovery:validate_generated_params', function () {
48
49
  request = spec.buildRequests(bidRequestData.bids, bidRequestData);
49
50
  let req_data = JSON.parse(request.data);
50
51
  expect(req_data.imp).to.have.lengthOf(1);
51
52
  });
52
53
 
53
- it('DiscoveryDSP:validate_response_params', function () {
54
+ it('discovery:validate_response_params', function () {
54
55
  let tempAdm = '<link rel=\"stylesheet\" href=\"https://cdn.mediago.io/js/style/style_banner_336x280_standard.css\"><div id=\"mgcontainer-e1746bcc817beaba9d63bd4254aad533\" class=\"mediago-placement_46ee9c c336x280_standard_46ee9c mediago-placement c336x280_standard\" style=\"width:336px;height:280px;overflow:hidden\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-placement-top_46ee9c mediago-placement-top\" style=\"background-image:url(https://d2cli4kgl5uxre.cloudfront.net/ML/d8e9b4aa20fae1739d2aad8c926d3f15__scv1__306x304.png)\"></div></a><div class=\"mediago-placement-bottom_46ee9c mediago-placement-bottom\"><div class=\"mediago-middle_46ee9c mediago-middle\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-title_46ee9c mediago-title\">秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた</div></a><div style=\"margin-top:10px;\"><a class=\"mediago-ad-icon_46ee9c mediago-ad-icon\" title=\"ad\" href=\"//www.mediago.io/privacy\" target=\"_blank\">AD</a> <a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-brand-name_46ee9c mediago-brand-name\">Factable</div></a></div></div></div></div>'
55
56
  tempAdm += '%3Cscr';
56
57
  tempAdm += 'ipt%3E';
@@ -44,8 +44,9 @@ describe('TheMediaGrid Adapter', function () {
44
44
  return JSON.parse(data);
45
45
  }
46
46
  const bidderRequest = {
47
- refererInfo: {page: 'https://example.com'},
47
+ refererInfo: { page: 'https://example.com' },
48
48
  bidderRequestId: '22edbae2733bf6',
49
+ transactionId: '1239bd74-4511-4335-af21-e828852e25d7',
49
50
  auctionId: '9e2dfbfe-00c7-4f5e-9850-4044df3229c7',
50
51
  timeout: 3000
51
52
  };
@@ -67,6 +68,7 @@ describe('TheMediaGrid Adapter', function () {
67
68
  'bidId': '42dbe3a7168a6a',
68
69
  'bidderRequestId': '22edbae2733bf6',
69
70
  'auctionId': '9e2dfbfe-00c7-4f5e-9850-4044df3229c7',
71
+ transactionId: '1239bd74-4511-4335-af21-e828852e25d7',
70
72
  },
71
73
  {
72
74
  'bidder': 'grid',
@@ -78,6 +80,7 @@ describe('TheMediaGrid Adapter', function () {
78
80
  'bidId': '30b31c1838de1e',
79
81
  'bidderRequestId': '22edbae2733bf6',
80
82
  'auctionId': '9e2dfbfe-00c7-4f5e-9850-4044df3229c7',
83
+ transactionId: '1239bd74-4511-4335-af21-e828852e25d7',
81
84
  },
82
85
  {
83
86
  'bidder': 'grid',
@@ -95,6 +98,7 @@ describe('TheMediaGrid Adapter', function () {
95
98
  'bidId': '3150ccb55da321',
96
99
  'bidderRequestId': '22edbae2733bf6',
97
100
  'auctionId': '9e2dfbfe-00c7-4f5e-9850-4044df3229c7',
101
+ transactionId: '1239bd74-4511-4335-af21-e828852e25d7',
98
102
  },
99
103
  {
100
104
  'bidder': 'grid',
@@ -115,6 +119,7 @@ describe('TheMediaGrid Adapter', function () {
115
119
  'bidId': '3150ccb55da321',
116
120
  'bidderRequestId': '22edbae2733bf6',
117
121
  'auctionId': '9e2dfbfe-00c7-4f5e-9850-4044df3229c7',
122
+ transactionId: '1239bd74-4511-4335-af21-e828852e25d7',
118
123
  }
119
124
  ];
120
125
 
@@ -395,6 +400,158 @@ describe('TheMediaGrid Adapter', function () {
395
400
  getDataFromLocalStorageStub.restore();
396
401
  });
397
402
 
403
+ it('should send additional request with adUnits with withCriteo parameter', function () {
404
+ const fpdUserIdVal = '0b0f84a1-1596-4165-9742-2e1a7dfac57f';
405
+ const getDataFromLocalStorageStub = sinon.stub(storage, 'getDataFromLocalStorage').callsFake(
406
+ arg => arg === 'tmguid' ? fpdUserIdVal : null);
407
+
408
+ const bidRequestsWithCriteo = bidRequests.map((bid, i) =>
409
+ i % 2 ? bid : {
410
+ ...bid,
411
+ params: {
412
+ ...bid.params,
413
+ withCriteo: true,
414
+ networkId: 123 + i
415
+ },
416
+ mediaTypes: {
417
+ ...bid.mediaTypes,
418
+ ...(bid.mediaTypes.video && { video: {
419
+ ...bid.mediaTypes.video,
420
+ context: 'instream',
421
+ protocols: [1, 2, 3],
422
+ maxduration: 30,
423
+ api: [1, 2],
424
+ skip: 1,
425
+ placement: 1,
426
+ minduration: 0,
427
+ playbackmethod: 1,
428
+ startdelay: 0
429
+ }
430
+ })
431
+ }
432
+ });
433
+
434
+ const [request, criteoRequest] = spec.buildRequests(bidRequestsWithCriteo, bidderRequest);
435
+ expect(request.data).to.be.an('string');
436
+ expect(criteoRequest.data).to.be.an('object');
437
+ const payload = parseRequest(request.data);
438
+ const criteoPayload = criteoRequest.data;
439
+ expect(request.url).to.equal('https://grid.bidswitch.net/hbjson');
440
+ expect(criteoRequest.url.replace(/\?.*$/, ''))
441
+ .to.equal('https://bidder.criteo.com/cdb');
442
+ expect(payload).to.deep.equal({
443
+ 'id': bidderRequest.bidderRequestId,
444
+ 'site': {
445
+ 'page': referrer
446
+ },
447
+ 'tmax': bidderRequest.timeout,
448
+ 'source': {
449
+ 'tid': bidderRequest.auctionId,
450
+ 'ext': {'wrapper': 'Prebid_js', 'wrapper_version': '$prebid.version$'}
451
+ },
452
+ 'user': {
453
+ 'id': fpdUserIdVal
454
+ },
455
+ 'imp': [{
456
+ 'id': bidRequests[0].bidId,
457
+ 'tagid': bidRequests[0].params.uid,
458
+ 'ext': {'divid': bidRequests[0].adUnitCode},
459
+ 'bidfloor': bidRequests[0].params.bidFloor,
460
+ 'banner': {
461
+ 'w': 300,
462
+ 'h': 250,
463
+ 'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]
464
+ }
465
+ }, {
466
+ 'id': bidRequests[1].bidId,
467
+ 'tagid': bidRequests[1].params.uid,
468
+ 'ext': {'divid': bidRequests[1].adUnitCode},
469
+ 'banner': {
470
+ 'w': 300,
471
+ 'h': 250,
472
+ 'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]
473
+ }
474
+ }, {
475
+ 'id': bidRequests[2].bidId,
476
+ 'tagid': bidRequests[2].params.uid,
477
+ 'ext': {'divid': bidRequests[2].adUnitCode},
478
+ 'video': {
479
+ 'w': 400,
480
+ 'h': 600,
481
+ 'protocols': [1, 2, 3],
482
+ 'mimes': ['video/mp4', 'video/webm', 'application/javascript', 'video/ogg'],
483
+ }
484
+ }, {
485
+ 'id': bidRequests[3].bidId,
486
+ 'tagid': bidRequests[3].params.uid,
487
+ 'ext': {'divid': bidRequests[3].adUnitCode},
488
+ 'banner': {
489
+ 'w': 728,
490
+ 'h': 90,
491
+ 'format': [{'w': 728, 'h': 90}]
492
+ },
493
+ 'video': {
494
+ 'w': 400,
495
+ 'h': 600,
496
+ 'protocols': [1, 2, 3]
497
+ }
498
+ }]
499
+ });
500
+
501
+ expect(criteoPayload).to.deep.equal({
502
+ 'publisher': {
503
+ 'ext': undefined,
504
+ 'url': bidderRequest.refererInfo.page,
505
+ 'networkid': 125
506
+ },
507
+ 'regs': {
508
+ 'coppa': undefined
509
+ },
510
+ 'slots': [{
511
+ 'impid': bidRequests[0].adUnitCode,
512
+ 'transactionid': bidderRequest.transactionId,
513
+ 'auctionId': bidderRequest.auctionId,
514
+ 'sizes': ['300x250', '300x600']
515
+ }, {
516
+ 'impid': bidRequests[2].adUnitCode,
517
+ 'transactionid': bidderRequest.transactionId,
518
+ 'auctionId': bidderRequest.auctionId,
519
+ 'sizes': [],
520
+ 'video': {
521
+ 'api': [
522
+ 1,
523
+ 2
524
+ ],
525
+ 'maxduration': 30,
526
+ 'mimes': [
527
+ 'video/mp4',
528
+ 'video/webm',
529
+ 'application/javascript',
530
+ 'video/ogg',
531
+ ],
532
+ 'minduration': 0,
533
+ 'placement': 1,
534
+ 'playbackmethod': 1,
535
+ 'playersizes': [
536
+ '400x600'
537
+ ],
538
+ 'protocols': [
539
+ 1,
540
+ 2,
541
+ 3
542
+ ],
543
+ 'skip': 1,
544
+ 'startdelay': 0
545
+ }
546
+ }],
547
+ 'user': {
548
+ 'ext': undefined
549
+ }
550
+ });
551
+
552
+ getDataFromLocalStorageStub.restore();
553
+ });
554
+
398
555
  it('if gdprConsent is present payload must have gdpr params', function () {
399
556
  const gdprBidderRequest = Object.assign({gdprConsent: {consentString: 'AAA', gdprApplies: true}}, bidderRequest);
400
557
  const [request] = spec.buildRequests(bidRequests, gdprBidderRequest);
@@ -1365,6 +1522,137 @@ describe('TheMediaGrid Adapter', function () {
1365
1522
  expect(result).to.deep.equal(expectedResponse);
1366
1523
  });
1367
1524
 
1525
+ it('should add response with biggest price', function () {
1526
+ const mainResponse = [
1527
+ {'bid': [{'impid': '2164be6358b9', 'price': 1.15, 'adm': '<div>test content 1</div>', 'auid': 1, 'h': 250, 'w': 300, dealid: 11}], 'seat': '1'},
1528
+ {'bid': [{'impid': '4e111f1b66e4', 'price': 0.5, 'adm': '<div>test content 2</div>', 'auid': 2, 'h': 600, 'w': 300, dealid: 12}], 'seat': '1'},
1529
+ ];
1530
+ const criteoResponse = [
1531
+ {
1532
+ impid: 'adunit-code-1',
1533
+ cpm: 0.15,
1534
+ creative: '<div>test content 3</div>',
1535
+ creativecode: 1,
1536
+ bidId: '2164be6358b9',
1537
+ currency: 'USD',
1538
+ width: 300,
1539
+ height: 250,
1540
+ dealCode: 11,
1541
+ zoneid: 123,
1542
+ ttl: 360,
1543
+ adomain: ['criteo.com'],
1544
+ },
1545
+ {
1546
+ impid: 'adunit-code-1',
1547
+ cpm: 1,
1548
+ creative: '<div>test content 4</div>',
1549
+ creativecode: 2,
1550
+ bidId: '4e111f1b66e4',
1551
+ currency: 'USD',
1552
+ width: 300,
1553
+ height: 600,
1554
+ dealCode: 12,
1555
+ zoneid: 456,
1556
+ ttl: 360,
1557
+ adomain: ['criteo.com'],
1558
+ }
1559
+ ];
1560
+ const bidRequests = [
1561
+ {
1562
+ 'bidder': 'grid',
1563
+ 'params': {
1564
+ 'uid': '1',
1565
+ 'zoneId': 123,
1566
+ 'withCriteo': true
1567
+ },
1568
+ 'adUnitCode': 'adunit-code-1',
1569
+ 'sizes': [[300, 250], [300, 600]],
1570
+ 'bidId': '2164be6358b9',
1571
+ 'bidderRequestId': '106efe3247',
1572
+ 'auctionId': '32a1f276cb87cb8',
1573
+ 'transactionId': '43534f55b213ac',
1574
+ },
1575
+ {
1576
+ 'bidder': 'grid',
1577
+ 'params': {
1578
+ 'uid': '2',
1579
+ 'zoneId': 456,
1580
+ 'withCriteo': true
1581
+ },
1582
+ 'adUnitCode': 'adunit-code-1',
1583
+ 'sizes': [[300, 250], [300, 600]],
1584
+ 'bidId': '4e111f1b66e4',
1585
+ 'bidderRequestId': '106efe3247',
1586
+ 'auctionId': '32a1f276cb87cb8',
1587
+ 'transactionId': '43534f55b213ac',
1588
+ }
1589
+ ];
1590
+ const bidderRequest = {
1591
+ refererInfo: { page: 'https://example.com' },
1592
+ bidderRequestId: '106efe3247',
1593
+ transactionId: '43534f55b213ac',
1594
+ auctionId: '32a1f276cb87cb8',
1595
+ timeout: 3000
1596
+ };
1597
+ const [mainRequest, criteoRequest] = spec.buildRequests(bidRequests, bidderRequest);
1598
+ const expectedMainResponse = [
1599
+ {
1600
+ 'requestId': '2164be6358b9',
1601
+ 'cpm': 1.15,
1602
+ 'creativeId': 1,
1603
+ 'dealId': 11,
1604
+ 'width': 300,
1605
+ 'height': 250,
1606
+ 'ad': '<div>test content 1</div>',
1607
+ 'currency': 'USD',
1608
+ 'mediaType': 'banner',
1609
+ 'netRevenue': true,
1610
+ 'ttl': 360,
1611
+ 'meta': {
1612
+ advertiserDomains: []
1613
+ },
1614
+ },
1615
+ {
1616
+ 'requestId': '4e111f1b66e4',
1617
+ 'cpm': 0.5,
1618
+ 'creativeId': 2,
1619
+ 'dealId': 12,
1620
+ 'width': 300,
1621
+ 'height': 600,
1622
+ 'ad': '<div>test content 2</div>',
1623
+ 'currency': 'USD',
1624
+ 'mediaType': 'banner',
1625
+ 'netRevenue': true,
1626
+ 'ttl': 360,
1627
+ 'meta': {
1628
+ advertiserDomains: []
1629
+ },
1630
+ }
1631
+ ];
1632
+ const expectedCriteoResponse = [
1633
+ {
1634
+ 'requestId': '4e111f1b66e4',
1635
+ 'cpm': 1,
1636
+ 'creativeId': 2,
1637
+ 'dealId': 12,
1638
+ 'width': 300,
1639
+ 'height': 600,
1640
+ 'ad': '<div>test content 4</div>',
1641
+ 'currency': 'USD',
1642
+ 'netRevenue': true,
1643
+ 'ttl': 360,
1644
+ 'meta': {
1645
+ advertiserDomains: ['criteo.com']
1646
+ },
1647
+ }
1648
+ ];
1649
+
1650
+ const mainResult = spec.interpretResponse({'body': {'seatbid': mainResponse}}, mainRequest);
1651
+ const criteoResult = spec.interpretResponse({'body': {'slots': criteoResponse}}, criteoRequest);
1652
+ expect(mainResult).to.deep.equal(expectedMainResponse);
1653
+ expect(criteoResult).to.deep.equal(expectedCriteoResponse);
1654
+ });
1655
+
1368
1656
  it('response with ext.bidder.grid.demandSource', function () {
1369
1657
  const bidRequests = [
1370
1658
  {
@@ -69,7 +69,33 @@ describe('kargo adapter tests', function () {
69
69
  userId: {
70
70
  tdid: 'fake-tdid'
71
71
  },
72
- sizes: [[320, 50], [300, 250], [300, 600]]
72
+ sizes: [[320, 50], [300, 250], [300, 600]],
73
+ ortb2: {
74
+ device: {
75
+ sua: {
76
+ platform: {
77
+ brand: 'macOS',
78
+ version: [ '12', '6', '0' ]
79
+ },
80
+ browsers: [
81
+ {
82
+ brand: 'Chromium',
83
+ version: [ '106', '0', '5249', '119' ]
84
+ },
85
+ {
86
+ brand: 'Google Chrome',
87
+ version: [ '106', '0', '5249', '119' ]
88
+ },
89
+ {
90
+ brand: 'Not;A=Brand',
91
+ version: [ '99', '0', '0', '0' ]
92
+ }
93
+ ],
94
+ mobile: 0,
95
+ model: ''
96
+ }
97
+ }
98
+ }
73
99
  },
74
100
  {
75
101
  params: {
@@ -259,6 +285,28 @@ describe('kargo adapter tests', function () {
259
285
  device: {
260
286
  width: screen.width,
261
287
  height: screen.height,
288
+ sua: {
289
+ platform: {
290
+ brand: 'macOS',
291
+ version: [ '12', '6', '0' ]
292
+ },
293
+ browsers: [
294
+ {
295
+ brand: 'Chromium',
296
+ version: [ '106', '0', '5249', '119' ]
297
+ },
298
+ {
299
+ brand: 'Google Chrome',
300
+ version: [ '106', '0', '5249', '119' ]
301
+ },
302
+ {
303
+ brand: 'Not;A=Brand',
304
+ version: [ '99', '0', '0', '0' ]
305
+ }
306
+ ],
307
+ mobile: 0,
308
+ model: '',
309
+ },
262
310
  },
263
311
  userIDs: {
264
312
  kargoID: '5f108831-302d-11e7-bf6b-4595acd3bf6c',
@@ -280,13 +328,39 @@ describe('kargo adapter tests', function () {
280
328
  prebidRawBidRequests: [
281
329
  {
282
330
  bidId: 1,
331
+ ortb2: {
332
+ device: {
333
+ sua: {
334
+ platform: {
335
+ brand: 'macOS',
336
+ version: [ '12', '6', '0' ]
337
+ },
338
+ browsers: [
339
+ {
340
+ brand: 'Chromium',
341
+ version: [ '106', '0', '5249', '119' ]
342
+ },
343
+ {
344
+ brand: 'Google Chrome',
345
+ version: [ '106', '0', '5249', '119' ]
346
+ },
347
+ {
348
+ brand: 'Not;A=Brand',
349
+ version: [ '99', '0', '0', '0' ]
350
+ }
351
+ ],
352
+ mobile: 0,
353
+ model: ''
354
+ }
355
+ }
356
+ },
283
357
  params: {
284
358
  placementId: 'foo'
285
359
  },
286
360
  userId: {
287
361
  tdid: 'fake-tdid'
288
362
  },
289
- sizes: [[320, 50], [300, 250], [300, 600]]
363
+ sizes: [[320, 50], [300, 250], [300, 600]],
290
364
  },
291
365
  {
292
366
  bidId: 2,
@@ -330,7 +404,6 @@ describe('kargo adapter tests', function () {
330
404
  var payload = {
331
405
  timeout: 200,
332
406
  uspConsent: '1---',
333
- foo: 'bar',
334
407
  refererInfo: {
335
408
  page: 'https://www.prebid.org',
336
409
  },
@@ -349,7 +422,6 @@ describe('kargo adapter tests', function () {
349
422
  expect(request.method).to.equal('GET');
350
423
  expect(request.currency).to.equal('USD');
351
424
  expect(request.timeout).to.equal(200);
352
- expect(request.foo).to.equal('bar');
353
425
  expect(krakenParams).to.deep.equal(expected);
354
426
  // Make sure session ID stays the same across requests simulating multiple auctions on one page load
355
427
  for (let i in sessionIds) {
@@ -548,6 +548,26 @@ describe('magnite analytics adapter', function () {
548
548
  ]);
549
549
  });
550
550
 
551
+ it('should pass along 1x1 size if no sizes in adUnit', function () {
552
+ const auctionInit = utils.deepClone(MOCK.AUCTION_INIT);
553
+
554
+ delete auctionInit.adUnits[0].sizes;
555
+
556
+ events.emit(AUCTION_INIT, auctionInit);
557
+ events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
558
+ events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
559
+ events.emit(AUCTION_END, MOCK.AUCTION_END);
560
+ clock.tick(rubiConf.analyticsBatchTimeout + 1000);
561
+
562
+ let message = JSON.parse(server.requests[0].requestBody);
563
+ expect(message.auctions[0].adUnits[0].dimensions).to.deep.equal([
564
+ {
565
+ width: 1,
566
+ height: 1
567
+ }
568
+ ]);
569
+ });
570
+
551
571
  it('should pass along user ids', function () {
552
572
  let auctionInit = utils.deepClone(MOCK.AUCTION_INIT);
553
573
  auctionInit.bidderRequests[0].bids[0].userId = {