prebid.js 7.4.0 → 7.7.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 (239) hide show
  1. package/.circleci/config.yml +11 -6
  2. package/dist/1plusXRtdProvider.js +1 -0
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/adnuntiusBidAdapter.js +1 -1
  8. package/dist/adoceanBidAdapter.js +1 -1
  9. package/dist/adotBidAdapter.js +1 -1
  10. package/dist/adrelevantisBidAdapter.js +1 -1
  11. package/dist/adrinoBidAdapter.js +1 -1
  12. package/dist/adtelligentBidAdapter.js +1 -1
  13. package/dist/adxcgBidAdapter.js +1 -1
  14. package/dist/ajaBidAdapter.js +1 -1
  15. package/dist/amxBidAdapter.js +1 -1
  16. package/dist/amxIdSystem.js +1 -1
  17. package/dist/appierAnalyticsAdapter.js +1 -1
  18. package/dist/appnexusBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/atsAnalyticsAdapter.js +1 -1
  21. package/dist/axonixBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/big-richmediaBidAdapter.js +1 -1
  24. package/dist/bliinkBidAdapter.js +1 -1
  25. package/dist/bridgewellBidAdapter.js +1 -1
  26. package/dist/brightMountainMediaBidAdapter.js +1 -1
  27. package/dist/byDataAnalyticsAdapter.js +1 -1
  28. package/dist/concertBidAdapter.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/currency.js +1 -1
  35. package/dist/dspxBidAdapter.js +1 -1
  36. package/dist/eplanningBidAdapter.js +1 -1
  37. package/dist/finativeBidAdapter.js +1 -1
  38. package/dist/gdprEnforcement.js +1 -1
  39. package/dist/glimpseBidAdapter.js +1 -1
  40. package/dist/gmosspBidAdapter.js +1 -1
  41. package/dist/goldbachBidAdapter.js +1 -1
  42. package/dist/gridBidAdapter.js +1 -1
  43. package/dist/gridNMBidAdapter.js +1 -1
  44. package/dist/gumgumBidAdapter.js +1 -1
  45. package/dist/h12mediaBidAdapter.js +1 -1
  46. package/dist/hadronIdSystem.js +1 -1
  47. package/dist/hadronRtdProvider.js +1 -1
  48. package/dist/id5IdSystem.js +1 -1
  49. package/dist/imRtdProvider.js +1 -1
  50. package/dist/impactifyBidAdapter.js +1 -1
  51. package/dist/improvedigitalBidAdapter.js +1 -1
  52. package/dist/inmarBidAdapter.js +1 -1
  53. package/dist/insticatorBidAdapter.js +1 -1
  54. package/dist/ixBidAdapter.js +1 -1
  55. package/dist/jixieBidAdapter.js +1 -1
  56. package/dist/justpremiumBidAdapter.js +1 -1
  57. package/dist/kargoAnalyticsAdapter.js +1 -1
  58. package/dist/konduitAnalyticsAdapter.js +1 -1
  59. package/dist/kueezBidAdapter.js +1 -1
  60. package/dist/lassoBidAdapter.js +1 -1
  61. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  62. package/dist/logicadBidAdapter.js +1 -1
  63. package/dist/loglyliftBidAdapter.js +1 -1
  64. package/dist/malltvAnalyticsAdapter.js +1 -1
  65. package/dist/marsmediaBidAdapter.js +1 -1
  66. package/dist/mediafuseBidAdapter.js +1 -1
  67. package/dist/mediasquareBidAdapter.js +1 -1
  68. package/dist/mgidBidAdapter.js +1 -1
  69. package/dist/minutemediaBidAdapter.js +1 -1
  70. package/dist/naveggIdSystem.js +1 -1
  71. package/dist/newspassidBidAdapter.js +1 -0
  72. package/dist/nextMillenniumBidAdapter.js +1 -1
  73. package/dist/not-for-prod/prebid.js +131 -128
  74. package/dist/oguryBidAdapter.js +1 -1
  75. package/dist/onetagBidAdapter.js +1 -1
  76. package/dist/ooloAnalyticsAdapter.js +1 -1
  77. package/dist/outbrainBidAdapter.js +1 -1
  78. package/dist/parrableIdSystem.js +1 -1
  79. package/dist/pixfutureBidAdapter.js +1 -1
  80. package/dist/prebid-core.js +1 -1
  81. package/dist/prebidServerBidAdapter.js +1 -1
  82. package/dist/priceFloors.js +1 -1
  83. package/dist/pubCommonId.js +1 -1
  84. package/dist/publinkIdSystem.js +1 -1
  85. package/dist/pubmaticBidAdapter.js +1 -1
  86. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  87. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  88. package/dist/pxyzBidAdapter.js +1 -1
  89. package/dist/quantcastBidAdapter.js +1 -1
  90. package/dist/rasBidAdapter.js +1 -0
  91. package/dist/readpeakBidAdapter.js +1 -1
  92. package/dist/relaidoBidAdapter.js +1 -1
  93. package/dist/rhythmoneBidAdapter.js +1 -1
  94. package/dist/riseBidAdapter.js +1 -1
  95. package/dist/rubiconAnalyticsAdapter.js +1 -1
  96. package/dist/rubiconBidAdapter.js +1 -1
  97. package/dist/seedingAllianceBidAdapter.js +1 -1
  98. package/dist/seedtagBidAdapter.js +1 -1
  99. package/dist/sharedIdSystem.js +1 -1
  100. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  101. package/dist/sharethroughBidAdapter.js +1 -1
  102. package/dist/shinezBidAdapter.js +1 -1
  103. package/dist/smaatoBidAdapter.js +1 -1
  104. package/dist/smartadserverBidAdapter.js +1 -1
  105. package/dist/smartxBidAdapter.js +1 -1
  106. package/dist/smilewantedBidAdapter.js +1 -1
  107. package/dist/sonobiBidAdapter.js +1 -1
  108. package/dist/sovrnAnalyticsAdapter.js +1 -1
  109. package/dist/sovrnBidAdapter.js +1 -1
  110. package/dist/sspBCBidAdapter.js +1 -1
  111. package/dist/sublimeBidAdapter.js +1 -1
  112. package/dist/synacormediaBidAdapter.js +1 -1
  113. package/dist/taboolaBidAdapter.js +1 -1
  114. package/dist/targetVideoBidAdapter.js +1 -1
  115. package/dist/teadsBidAdapter.js +1 -1
  116. package/dist/trionBidAdapter.js +1 -1
  117. package/dist/tripleliftBidAdapter.js +1 -1
  118. package/dist/ttdBidAdapter.js +1 -1
  119. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  120. package/dist/underdogmediaBidAdapter.js +1 -1
  121. package/dist/undertoneBidAdapter.js +1 -1
  122. package/dist/userId.js +1 -1
  123. package/dist/vidazooBidAdapter.js +1 -1
  124. package/dist/videobyteBidAdapter.js +1 -1
  125. package/dist/visxBidAdapter.js +1 -1
  126. package/dist/vuukleBidAdapter.js +1 -1
  127. package/dist/widespaceBidAdapter.js +1 -1
  128. package/dist/winrBidAdapter.js +1 -1
  129. package/dist/yahoosspBidAdapter.js +1 -1
  130. package/dist/yieldmoBidAdapter.js +1 -1
  131. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  132. package/integrationExamples/gpt/1plusXRtdProviderExample.html +112 -0
  133. package/karma.conf.maker.js +3 -1
  134. package/modules/.submodules.json +2 -1
  135. package/modules/1plusXRtdProvider.js +251 -0
  136. package/modules/1plusXRtdProvider.md +65 -0
  137. package/modules/adgenerationBidAdapter.js +24 -1
  138. package/modules/adnuntiusBidAdapter.js +26 -8
  139. package/modules/adoceanBidAdapter.js +10 -3
  140. package/modules/adotBidAdapter.js +13 -4
  141. package/modules/adrinoBidAdapter.js +10 -2
  142. package/modules/adrinoBidAdapter.md +6 -0
  143. package/modules/adtelligentBidAdapter.js +2 -1
  144. package/modules/appnexusBidAdapter.js +3 -3
  145. package/modules/atsAnalyticsAdapter.js +4 -5
  146. package/modules/big-richmediaBidAdapter.js +3 -3
  147. package/modules/bliinkBidAdapter.js +120 -193
  148. package/modules/bliinkBidAdapter.md +2 -5
  149. package/modules/byDataAnalyticsAdapter.js +172 -74
  150. package/modules/byDataAnalyticsAdapter.md +5 -6
  151. package/modules/consumableBidAdapter.js +21 -1
  152. package/modules/criteoBidAdapter.js +7 -1
  153. package/modules/currency.js +2 -2
  154. package/modules/cwireBidAdapter.md +1 -1
  155. package/modules/eplanningBidAdapter.js +82 -97
  156. package/modules/gdprEnforcement.js +8 -14
  157. package/modules/gridNMBidAdapter.js +45 -4
  158. package/modules/hadronAnalyticsAdapter.md +5 -5
  159. package/modules/hadronIdSystem.js +18 -5
  160. package/modules/hadronIdSystem.md +15 -11
  161. package/modules/hadronRtdProvider.js +14 -1
  162. package/modules/hadronRtdProvider.md +17 -13
  163. package/modules/imRtdProvider.js +0 -8
  164. package/modules/impactifyBidAdapter.js +6 -2
  165. package/modules/ixBidAdapter.js +133 -23
  166. package/modules/ixBidAdapter.md +2 -5
  167. package/modules/jixieBidAdapter.js +10 -10
  168. package/modules/kargoAnalyticsAdapter.js +88 -6
  169. package/modules/kargoAnalyticsAdapter.md +33 -0
  170. package/modules/minutemediaBidAdapter.js +1 -0
  171. package/modules/naveggIdSystem.js +1 -12
  172. package/modules/newspassidBidAdapter.js +649 -0
  173. package/modules/nextMillenniumBidAdapter.js +17 -1
  174. package/modules/nextMillenniumBidAdapter.md +1 -1
  175. package/modules/oguryBidAdapter.js +2 -0
  176. package/modules/onetagBidAdapter.js +44 -7
  177. package/modules/prebidServerBidAdapter/index.js +7 -0
  178. package/modules/priceFloors.js +1 -1
  179. package/modules/pubCommonId.js +1 -2
  180. package/modules/pubxaiAnalyticsAdapter.js +6 -1
  181. package/modules/rasBidAdapter.js +149 -0
  182. package/modules/rasBidAdapter.md +50 -0
  183. package/modules/rubiconBidAdapter.js +5 -0
  184. package/modules/seedingAllianceBidAdapter.js +3 -0
  185. package/modules/seedtagBidAdapter.js +37 -1
  186. package/modules/sharedIdSystem.js +11 -5
  187. package/modules/sharethroughBidAdapter.js +9 -24
  188. package/modules/taboolaBidAdapter.js +1 -1
  189. package/modules/taboolaBidAdapter.md +3 -3
  190. package/modules/targetVideoBidAdapter.js +18 -0
  191. package/modules/userId/index.js +39 -21
  192. package/package.json +1 -1
  193. package/src/auction.js +6 -5
  194. package/src/consentHandler.js +11 -11
  195. package/src/debugging.js +5 -3
  196. package/src/hook.js +2 -2
  197. package/src/storageManager.js +4 -5
  198. package/src/utils/promise.js +96 -21
  199. package/src/utils.js +3 -2
  200. package/test/helpers/consentData.js +2 -1
  201. package/test/spec/auctionmanager_spec.js +1 -6
  202. package/test/spec/debugging_spec.js +2 -2
  203. package/test/spec/modules/1plusXRtdProvider_spec.js +430 -0
  204. package/test/spec/modules/adgenerationBidAdapter_spec.js +52 -4
  205. package/test/spec/modules/adnuntiusBidAdapter_spec.js +126 -14
  206. package/test/spec/modules/adoceanBidAdapter_spec.js +4 -1
  207. package/test/spec/modules/adotBidAdapter_spec.js +12 -9
  208. package/test/spec/modules/adrinoBidAdapter_spec.js +22 -0
  209. package/test/spec/modules/appnexusBidAdapter_spec.js +165 -156
  210. package/test/spec/modules/bliinkBidAdapter_spec.js +323 -136
  211. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +74 -24
  212. package/test/spec/modules/consumableBidAdapter_spec.js +122 -1
  213. package/test/spec/modules/criteoBidAdapter_spec.js +15 -5
  214. package/test/spec/modules/eplanningBidAdapter_spec.js +58 -18
  215. package/test/spec/modules/gdprEnforcement_spec.js +53 -100
  216. package/test/spec/modules/gridNMBidAdapter_spec.js +32 -0
  217. package/test/spec/modules/hadronIdSystem_spec.js +2 -2
  218. package/test/spec/modules/idxIdSystem_spec.js +1 -1
  219. package/test/spec/modules/imRtdProvider_spec.js +0 -1
  220. package/test/spec/modules/ixBidAdapter_spec.js +212 -5
  221. package/test/spec/modules/jixieBidAdapter_spec.js +8 -8
  222. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +42 -0
  223. package/test/spec/modules/minutemediaBidAdapter_spec.js +3 -0
  224. package/test/spec/modules/newspassidBidAdapter_spec.js +1793 -0
  225. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +20 -0
  226. package/test/spec/modules/onetagBidAdapter_spec.js +53 -4
  227. package/test/spec/modules/parrableIdSystem_spec.js +2 -1
  228. package/test/spec/modules/prebidServerBidAdapter_spec.js +20 -0
  229. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +5 -0
  230. package/test/spec/modules/rasBidAdapter_spec.js +190 -0
  231. package/test/spec/modules/rubiconBidAdapter_spec.js +27 -0
  232. package/test/spec/modules/seedtagBidAdapter_spec.js +29 -0
  233. package/test/spec/modules/sharethroughBidAdapter_spec.js +4 -4
  234. package/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
  235. package/test/spec/modules/targetVideoBidAdapter_spec.js +43 -0
  236. package/test/spec/modules/userId_spec.js +15 -2
  237. package/test/spec/unit/pbjs_api_spec.js +1 -5
  238. package/test/spec/unit/utils/promise_spec.js +283 -38
  239. package/test/helpers/syncPromise.js +0 -71
@@ -121,6 +121,11 @@ describe('IndexexchangeAdapter', function () {
121
121
  playerSize: [[400, 100]]
122
122
  }
123
123
  },
124
+ ortb2Imp: {
125
+ ext: {
126
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47230'
127
+ }
128
+ },
124
129
  adUnitCode: 'div-gpt-ad-1460505748562-0',
125
130
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
126
131
  bidId: '1a2b3c4e',
@@ -143,6 +148,11 @@ describe('IndexexchangeAdapter', function () {
143
148
  sizes: [[300, 250]]
144
149
  }
145
150
  },
151
+ ortb2Imp: {
152
+ ext: {
153
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47229'
154
+ }
155
+ },
146
156
  adUnitCode: 'div-gpt-ad-1460505748561-0',
147
157
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47229',
148
158
  bidId: '1a2b3c4d',
@@ -165,6 +175,11 @@ describe('IndexexchangeAdapter', function () {
165
175
  sizes: [[300, 250], [300, 600]]
166
176
  }
167
177
  },
178
+ ortb2Imp: {
179
+ ext: {
180
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47229'
181
+ }
182
+ },
168
183
  adUnitCode: 'div-gpt-ad-1460505748561-0',
169
184
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47229',
170
185
  bidId: '1a2b3c4d',
@@ -185,6 +200,11 @@ describe('IndexexchangeAdapter', function () {
185
200
  sizes: [[300, 250], [300, 600]]
186
201
  }
187
202
  },
203
+ ortb2Imp: {
204
+ ext: {
205
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47229'
206
+ }
207
+ },
188
208
  adUnitCode: 'div-gpt-ad-1460505748561-0',
189
209
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47229',
190
210
  bidId: '1a2b3c4d',
@@ -214,6 +234,11 @@ describe('IndexexchangeAdapter', function () {
214
234
  protocols: [2]
215
235
  }
216
236
  },
237
+ ortb2Imp: {
238
+ ext: {
239
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47230'
240
+ }
241
+ },
217
242
  adUnitCode: 'div-gpt-ad-1460505748562-0',
218
243
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
219
244
  bidId: '1a2b3c4e',
@@ -247,6 +272,11 @@ describe('IndexexchangeAdapter', function () {
247
272
  playerSize: [[400, 100], [200, 400]]
248
273
  }
249
274
  },
275
+ ortb2Imp: {
276
+ ext: {
277
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47230'
278
+ }
279
+ },
250
280
  adUnitCode: 'div-gpt-ad-1460505748562-0',
251
281
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
252
282
  bidId: '1a2b3c4e',
@@ -260,6 +290,7 @@ describe('IndexexchangeAdapter', function () {
260
290
  {
261
291
  bidder: 'ix',
262
292
  params: {
293
+ tagId: '123',
263
294
  siteId: '123',
264
295
  size: [300, 250],
265
296
  },
@@ -272,6 +303,14 @@ describe('IndexexchangeAdapter', function () {
272
303
  sizes: [[300, 250], [300, 600], [400, 500]]
273
304
  }
274
305
  },
306
+ ortb2Imp: {
307
+ ext: {
308
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47230',
309
+ data: {
310
+ pbadslot: 'div-gpt-ad-1460505748562-0'
311
+ }
312
+ }
313
+ },
275
314
  adUnitCode: 'div-gpt-ad-1460505748562-0',
276
315
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
277
316
  bidId: '1a2b3c4e',
@@ -285,6 +324,7 @@ describe('IndexexchangeAdapter', function () {
285
324
  {
286
325
  bidder: 'ix',
287
326
  params: {
327
+ tagId: '123',
288
328
  siteId: '456',
289
329
  video: {
290
330
  skippable: false,
@@ -307,6 +347,14 @@ describe('IndexexchangeAdapter', function () {
307
347
  sizes: [[300, 250], [300, 600]]
308
348
  }
309
349
  },
350
+ ortb2Imp: {
351
+ ext: {
352
+ tid: '173f49a8-7549-4218-a23c-e7ba59b47230',
353
+ data: {
354
+ pbadslot: 'div-gpt-ad-1460505748562-0'
355
+ }
356
+ }
357
+ },
310
358
  adUnitCode: 'div-gpt-ad-1460505748562-0',
311
359
  transactionId: '273f49a8-7549-4218-a23c-e7ba59b47230',
312
360
  bidId: '1a2b3c4e',
@@ -677,18 +725,109 @@ describe('IndexexchangeAdapter', function () {
677
725
  const syncOptions = {
678
726
  'iframeEnabled': true
679
727
  }
680
- let userSync = spec.getUserSyncs(syncOptions);
728
+ let userSync = spec.getUserSyncs(syncOptions, []);
681
729
  expect(userSync[0].type).to.equal('iframe');
682
730
  const USER_SYNC_URL = 'https://js-sec.indexww.com/um/ixmatch.html';
683
731
  expect(userSync[0].url).to.equal(USER_SYNC_URL);
684
732
  });
685
733
 
686
- it('When iframeEnabled is false, no userSync should be returned', function () {
734
+ it('When iframeEnabled = false, default to img', function () {
735
+ const syncOptions = {
736
+ 'iframeEnabled': false,
737
+ }
738
+ let userSync = spec.getUserSyncs(syncOptions, []);
739
+ expect(userSync[0].type).to.equal('image');
740
+ const USER_SYNC_URL = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=1&i=0&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
741
+ expect(userSync[0].url).to.equal(USER_SYNC_URL);
742
+ });
743
+
744
+ it('UserSync test : check type = pixel, check usermatch URL, no exchange data, only drop 1', function () {
745
+ const syncOptions = {
746
+ 'pixelEnabled': true
747
+ }
748
+ config.setConfig({
749
+ userSync: {
750
+ pixelEnabled: true,
751
+ syncsPerBidder: 3
752
+ }
753
+ })
754
+ let userSync = spec.getUserSyncs(syncOptions, []);
755
+ expect(userSync[0].type).to.equal('image');
756
+ const USER_SYNC_URL = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=1&i=0&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
757
+ expect(userSync[0].url).to.equal(USER_SYNC_URL);
758
+ });
759
+
760
+ it('UserSync test : check type = pixel, check usermatch URL with override set to 0', function () {
761
+ const syncOptions = {
762
+ 'pixelEnabled': true
763
+ }
764
+ config.setConfig({
765
+ userSync: {
766
+ pixelEnabled: true,
767
+ syncsPerBidder: 3
768
+ }
769
+ });
770
+ let userSync = spec.getUserSyncs(syncOptions, [{'body': {'ext': {'publishersyncsperbidderoverride': 0}}}]);
771
+ expect(userSync.length).to.equal(0);
772
+ });
773
+
774
+ it('UserSync test : check type = pixel, check usermatch URL with override set', function () {
775
+ const syncOptions = {
776
+ 'pixelEnabled': true
777
+ }
778
+ config.setConfig({
779
+ userSync: {
780
+ pixelEnabled: true,
781
+ syncsPerBidder: 3
782
+ }
783
+ });
784
+ let userSync = spec.getUserSyncs(syncOptions, [{'body': {'ext': {'publishersyncsperbidderoverride': 2}}}]);
785
+ expect(userSync[0].type).to.equal('image');
786
+ const USER_SYNC_URL_0 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=2&i=0&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
787
+ const USER_SYNC_URL_1 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=2&i=1&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
788
+ expect(userSync[0].url).to.equal(USER_SYNC_URL_0);
789
+ expect(userSync[1].url).to.equal(USER_SYNC_URL_1);
790
+ expect(userSync.length).to.equal(2);
791
+ });
792
+
793
+ it('UserSync test : check type = pixel, check usermatch URL with override greater than publisher syncs per bidder , use syncsperbidder', function () {
687
794
  const syncOptions = {
688
- 'iframeEnabled': false
795
+ 'pixelEnabled': true
689
796
  }
690
- let userSync = spec.getUserSyncs(syncOptions);
691
- expect(userSync).to.be.an('array').that.is.empty;
797
+ config.setConfig({
798
+ userSync: {
799
+ pixelEnabled: true,
800
+ syncsPerBidder: 3
801
+ }
802
+ });
803
+ let userSync = spec.getUserSyncs(syncOptions, [{'body': {'ext': {'publishersyncsperbidderoverride': 4}}}]);
804
+ expect(userSync[0].type).to.equal('image');
805
+ const USER_SYNC_URL_0 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=3&i=0&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
806
+ const USER_SYNC_URL_1 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=3&i=1&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
807
+ const USER_SYNC_URL_2 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=3&i=2&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
808
+ expect(userSync[0].url).to.equal(USER_SYNC_URL_0);
809
+ expect(userSync[1].url).to.equal(USER_SYNC_URL_1);
810
+ expect(userSync[2].url).to.equal(USER_SYNC_URL_2);
811
+ expect(userSync.length).to.equal(3);
812
+ });
813
+
814
+ it('UserSync test : check type = pixel, syncsPerBidder = 0, still use override', function () {
815
+ const syncOptions = {
816
+ 'pixelEnabled': true
817
+ }
818
+ config.setConfig({
819
+ userSync: {
820
+ pixelEnabled: true,
821
+ syncsPerBidder: 0
822
+ }
823
+ });
824
+ let userSync = spec.getUserSyncs(syncOptions, [{'body': {'ext': {'publishersyncsperbidderoverride': 2}}}]);
825
+ expect(userSync[0].type).to.equal('image');
826
+ const USER_SYNC_URL_0 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=2&i=0&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
827
+ const USER_SYNC_URL_1 = 'https://dsum.casalemedia.com/pbusermatch?origin=prebid&site_id=123&p=2&i=1&gdpr=1&gdpr_consent=3huaa11=qu3198ae&us_privacy=';
828
+ expect(userSync[0].url).to.equal(USER_SYNC_URL_0);
829
+ expect(userSync[1].url).to.equal(USER_SYNC_URL_1);
830
+ expect(userSync.length).to.equal(2);
692
831
  });
693
832
  });
694
833
 
@@ -1518,6 +1657,70 @@ describe('IndexexchangeAdapter', function () {
1518
1657
  expect(gpid).to.equal(GPID);
1519
1658
  });
1520
1659
 
1660
+ it('should still build gpid in request if ortb2Imp.ext.gpid does not exist', function () {
1661
+ const AD_UNIT_CODE = '/1111/home';
1662
+ const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID);
1663
+ sinon.stub(utils, 'getGptSlotInfoForAdUnitCode')
1664
+ .returns({ gptSlot: AD_UNIT_CODE, divId: 'adunit-code-3-div-id' });
1665
+ validBids[0].ortb2Imp = {
1666
+ ext: {
1667
+ data: {
1668
+ adserver: {
1669
+ name: 'gam',
1670
+ adslot: AD_UNIT_CODE
1671
+ }
1672
+ }
1673
+ }
1674
+ }
1675
+ const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
1676
+ const { ext: { gpid } } = JSON.parse(requests[0].data.r).imp[0];
1677
+ utils.getGptSlotInfoForAdUnitCode.restore();
1678
+ expect(gpid).to.equal(`${AD_UNIT_CODE}#adunit-code-3-div-id`);
1679
+ });
1680
+
1681
+ it('should not build gpid if divid doesnt exist when ortb2Imp.ext.gpid does not exist', function () {
1682
+ const AD_UNIT_CODE = '/1111/home';
1683
+ const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID);
1684
+ sinon.stub(utils, 'getGptSlotInfoForAdUnitCode')
1685
+ .returns({ gptSlot: AD_UNIT_CODE });
1686
+ validBids[0].ortb2Imp = {
1687
+ ext: {
1688
+ data: {
1689
+ adserver: {
1690
+ name: 'gam',
1691
+ adslot: AD_UNIT_CODE
1692
+ }
1693
+ }
1694
+ }
1695
+ }
1696
+ const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
1697
+ const imp = JSON.parse(requests[0].data.r).imp[0];
1698
+ utils.getGptSlotInfoForAdUnitCode.restore();
1699
+ expect(imp.ext.gpid).to.be.undefined;
1700
+ expect(imp.ext.dfp_ad_unit_code).to.equal(AD_UNIT_CODE)
1701
+ });
1702
+
1703
+ it('should not build gpid if dfp ad unit code / divid doesnt exist when ortb2Imp.ext.gpid does not exist', function () {
1704
+ const AD_UNIT_CODE = '/1111/home';
1705
+ const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID);
1706
+ sinon.stub(utils, 'getGptSlotInfoForAdUnitCode')
1707
+ .returns({});
1708
+ validBids[0].ortb2Imp = {
1709
+ ext: {
1710
+ data: {
1711
+ adserver: {
1712
+ name: 'gam',
1713
+ }
1714
+ }
1715
+ }
1716
+ }
1717
+ const requests = spec.buildRequests(validBids, DEFAULT_OPTION);
1718
+
1719
+ const imp = JSON.parse(requests[0].data.r).imp[0];
1720
+ utils.getGptSlotInfoForAdUnitCode.restore();
1721
+ expect(imp.ext).to.be.undefined;
1722
+ });
1723
+
1521
1724
  it('should send gpid in request if ortb2Imp.ext.gpid exists when no size present', function () {
1522
1725
  const validBids = utils.deepClone(DEFAULT_BANNER_VALID_BID_PARAM_NO_SIZE);
1523
1726
  validBids[0].ortb2Imp = {
@@ -1629,6 +1832,7 @@ describe('IndexexchangeAdapter', function () {
1629
1832
  expect(impression.id).to.equal(DEFAULT_BANNER_VALID_BID[0].bidId);
1630
1833
  expect(impression.banner.format).to.be.length(2);
1631
1834
  expect(impression.banner.topframe).to.be.oneOf([0, 1]);
1835
+ expect(impression.ext.tid).to.equal(DEFAULT_BANNER_VALID_BID[0].transactionId);
1632
1836
 
1633
1837
  impression.banner.format.map(({ w, h, ext }, index) => {
1634
1838
  const size = DEFAULT_BANNER_VALID_BID[0].mediaTypes.banner.sizes[index];
@@ -2482,6 +2686,9 @@ describe('IndexexchangeAdapter', function () {
2482
2686
  expect(diagObj.allu).to.equal(2);
2483
2687
  expect(diagObj.version).to.equal('$prebid.version$');
2484
2688
  expect(diagObj.url).to.equal('http://localhost:9876/context.html')
2689
+ expect(diagObj.pbadslot).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].ortb2Imp.ext.data.pbadslot)
2690
+ expect(diagObj.tagid).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].params.tagId)
2691
+ expect(diagObj.adunitcode).to.equal(DEFAULT_MULTIFORMAT_VIDEO_VALID_BID[0].adUnitCode)
2485
2692
  });
2486
2693
  });
2487
2694
  });
@@ -199,16 +199,16 @@ describe('jixie Adapter', function () {
199
199
  let getCookieStub = sinon.stub(storage, 'getCookie');
200
200
  let getLocalStorageStub = sinon.stub(storage, 'getDataFromLocalStorage');
201
201
  getCookieStub
202
- .withArgs('_jx')
202
+ .withArgs('_jxx')
203
203
  .returns(clientIdTest1_);
204
204
  getCookieStub
205
- .withArgs('_jxs')
205
+ .withArgs('_jxxs')
206
206
  .returns(sessionIdTest1_);
207
207
  getLocalStorageStub
208
- .withArgs('_jx')
208
+ .withArgs('_jxx')
209
209
  .returns(clientIdTest1_);
210
210
  getLocalStorageStub
211
- .withArgs('_jxs')
211
+ .withArgs('_jxxs')
212
212
  .returns(sessionIdTest1_
213
213
  );
214
214
  let miscDimsStub = sinon.stub(jixieaux, 'getMiscDims');
@@ -528,10 +528,10 @@ describe('jixie Adapter', function () {
528
528
  let setCookieSpy = sinon.spy(storage, 'setCookie');
529
529
  let setLocalStorageSpy = sinon.spy(storage, 'setDataInLocalStorage');
530
530
  const result = spec.interpretResponse({body: responseBody_}, requestObj_)
531
- expect(setLocalStorageSpy.calledWith('_jx', '43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
532
- expect(setLocalStorageSpy.calledWith('_jxs', '1600057934-43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
533
- expect(setCookieSpy.calledWith('_jxs', '1600057934-43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
534
- expect(setCookieSpy.calledWith('_jx', '43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
531
+ expect(setLocalStorageSpy.calledWith('_jxx', '43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
532
+ expect(setLocalStorageSpy.calledWith('_jxxs', '1600057934-43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
533
+ expect(setCookieSpy.calledWith('_jxxs', '1600057934-43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
534
+ expect(setCookieSpy.calledWith('_jxx', '43aacc10-f643-11ea-8a10-c5fe2d394e7e')).to.equal(true);
535
535
 
536
536
  // video ad with vastUrl returned by adserver
537
537
  expect(result[0].requestId).to.equal('62847e4c696edcb')
@@ -0,0 +1,42 @@
1
+ import kargoAnalyticsAdapter from 'modules/kargoAnalyticsAdapter.js';
2
+ import { expect } from 'chai';
3
+ import { server } from 'test/mocks/xhr.js';
4
+ let events = require('src/events');
5
+ let constants = require('src/constants.json');
6
+
7
+ describe('Kargo Analytics Adapter', function () {
8
+ const adapterConfig = {
9
+ provider: 'kargoAnalytics',
10
+ };
11
+
12
+ after(function () {
13
+ kargoAnalyticsAdapter.disableAnalytics();
14
+ });
15
+
16
+ describe('main test flow', function () {
17
+ beforeEach(function () {
18
+ kargoAnalyticsAdapter.enableAnalytics(adapterConfig);
19
+ sinon.stub(events, 'getEvents').returns([]);
20
+ });
21
+
22
+ afterEach(function () {
23
+ events.getEvents.restore();
24
+ });
25
+
26
+ it('bid response data should send one request with auction ID, auction timeout, and response time', function() {
27
+ const bidResponse = {
28
+ bidder: 'kargo',
29
+ auctionId: '66529d4c-8998-47c2-ab3e-5b953490b98f',
30
+ timeToRespond: 192,
31
+ };
32
+
33
+ events.emit(constants.EVENTS.AUCTION_INIT, {
34
+ timeout: 1000
35
+ });
36
+ events.emit(constants.EVENTS.BID_RESPONSE, bidResponse);
37
+
38
+ expect(server.requests.length).to.equal(1);
39
+ expect(server.requests[0].url).to.equal('https://krk.kargo.com/api/v1/event/auction-data?aid=66529d4c-8998-47c2-ab3e-5b953490b98f&ato=1000&rt=192&it=0');
40
+ });
41
+ });
42
+ });
@@ -53,6 +53,7 @@ describe('minutemediaAdapter', function () {
53
53
  'org': 'jdye8weeyirk00000001'
54
54
  },
55
55
  'bidId': '299ffc8cca0b87',
56
+ 'loop': 1,
56
57
  'bidderRequestId': '1144f487e563f9',
57
58
  'auctionId': 'bfc420c3-8577-4568-9766-a8a935fb620d',
58
59
  'mediaTypes': {
@@ -71,6 +72,7 @@ describe('minutemediaAdapter', function () {
71
72
  'org': 'jdye8weeyirk00000001'
72
73
  },
73
74
  'bidId': '299ffc8cca0b87',
75
+ 'loop': 1,
74
76
  'bidderRequestId': '1144f487e563f9',
75
77
  'auctionId': 'bfc420c3-8577-4568-9766-a8a935fb620d',
76
78
  'mediaTypes': {
@@ -91,6 +93,7 @@ describe('minutemediaAdapter', function () {
91
93
  'testMode': true
92
94
  },
93
95
  'bidId': '299ffc8cca0b87',
96
+ 'loop': 2,
94
97
  'bidderRequestId': '1144f487e563f9',
95
98
  'auctionId': 'bfc420c3-8577-4568-9766-a8a935fb620d',
96
99
  }