prebid.js 7.48.0 → 7.50.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 (219) hide show
  1. package/README.md +3 -0
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.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/admixerBidAdapter.js +1 -1
  8. package/dist/adrelevantisBidAdapter.js +1 -1
  9. package/dist/adtrgtmeBidAdapter.js +1 -1
  10. package/dist/adxcgBidAdapter.js +1 -1
  11. package/dist/adyoulikeBidAdapter.js +1 -1
  12. package/dist/aidemBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/amxBidAdapter.js +1 -1
  15. package/dist/amxIdSystem.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/asoBidAdapter.js +1 -1
  19. package/dist/axonixBidAdapter.js +1 -1
  20. package/dist/beopBidAdapter.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/confiantRtdProvider.js +1 -1
  29. package/dist/connectadBidAdapter.js +1 -1
  30. package/dist/consumableBidAdapter.js +1 -1
  31. package/dist/conversantAnalyticsAdapter.js +1 -1
  32. package/dist/conversantBidAdapter.js +1 -1
  33. package/dist/craftBidAdapter.js +1 -1
  34. package/dist/criteoBidAdapter.js +1 -1
  35. package/dist/cwireBidAdapter.js +1 -1
  36. package/dist/dependencies.json +3 -0
  37. package/dist/dspxBidAdapter.js +1 -1
  38. package/dist/eplanningBidAdapter.js +1 -1
  39. package/dist/feedadBidAdapter.js +1 -1
  40. package/dist/finativeBidAdapter.js +1 -1
  41. package/dist/freewheel-sspBidAdapter.js +1 -1
  42. package/dist/glimpseBidAdapter.js +1 -1
  43. package/dist/gmosspBidAdapter.js +1 -1
  44. package/dist/goldbachBidAdapter.js +1 -1
  45. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  46. package/dist/greenbidsRtdProvider.js +1 -1
  47. package/dist/gridBidAdapter.js +1 -1
  48. package/dist/gumgumBidAdapter.js +1 -1
  49. package/dist/h12mediaBidAdapter.js +1 -1
  50. package/dist/id5IdSystem.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/justpremiumBidAdapter.js +1 -1
  56. package/dist/kargoBidAdapter.js +1 -1
  57. package/dist/konduitAnalyticsAdapter.js +1 -1
  58. package/dist/kueezBidAdapter.js +1 -1
  59. package/dist/kueezRtbBidAdapter.js +1 -1
  60. package/dist/kulturemediaBidAdapter.js +1 -1
  61. package/dist/lassoBidAdapter.js +1 -1
  62. package/dist/lifestreetBidAdapter.js +1 -1
  63. package/dist/liveIntentIdSystem.js +1 -1
  64. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  65. package/dist/logicadBidAdapter.js +1 -1
  66. package/dist/loglyliftBidAdapter.js +1 -1
  67. package/dist/magniteAnalyticsAdapter.js +1 -1
  68. package/dist/malltvAnalyticsAdapter.js +1 -1
  69. package/dist/marsmediaBidAdapter.js +1 -1
  70. package/dist/mediafuseBidAdapter.js +1 -1
  71. package/dist/mediasquareBidAdapter.js +1 -1
  72. package/dist/mgidBidAdapter.js +1 -1
  73. package/dist/minutemediaBidAdapter.js +1 -1
  74. package/dist/minutemediaplusBidAdapter.js +1 -1
  75. package/dist/nexx360BidAdapter.js +1 -1
  76. package/dist/not-for-prod/prebid.js +136 -134
  77. package/dist/oguryBidAdapter.js +1 -1
  78. package/dist/onetagBidAdapter.js +1 -1
  79. package/dist/ooloAnalyticsAdapter.js +1 -1
  80. package/dist/optidigitalBidAdapter.js +1 -1
  81. package/dist/outbrainBidAdapter.js +1 -1
  82. package/dist/parrableIdSystem.js +1 -1
  83. package/dist/permutiveRtdProvider.js +1 -1
  84. package/dist/pixfutureBidAdapter.js +1 -1
  85. package/dist/prebid-core.js +1 -1
  86. package/dist/prebidServerBidAdapter.js +1 -1
  87. package/dist/publinkIdSystem.js +1 -1
  88. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  89. package/dist/pubmaticBidAdapter.js +1 -1
  90. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  91. package/dist/pxyzBidAdapter.js +1 -1
  92. package/dist/quantcastBidAdapter.js +1 -1
  93. package/dist/readpeakBidAdapter.js +1 -1
  94. package/dist/relaidoBidAdapter.js +1 -1
  95. package/dist/retailspotBidAdapter.js +1 -0
  96. package/dist/rhythmoneBidAdapter.js +1 -1
  97. package/dist/riseBidAdapter.js +1 -1
  98. package/dist/rubiconAnalyticsAdapter.js +1 -1
  99. package/dist/rubiconBidAdapter.js +1 -1
  100. package/dist/seedingAllianceBidAdapter.js +1 -1
  101. package/dist/seedtagBidAdapter.js +1 -1
  102. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  103. package/dist/sharethroughBidAdapter.js +1 -1
  104. package/dist/shinezBidAdapter.js +1 -1
  105. package/dist/silverpushBidAdapter.js +1 -0
  106. package/dist/smaatoBidAdapter.js +1 -1
  107. package/dist/smartadserverBidAdapter.js +1 -1
  108. package/dist/smartxBidAdapter.js +1 -1
  109. package/dist/smilewantedBidAdapter.js +1 -1
  110. package/dist/sonobiBidAdapter.js +1 -1
  111. package/dist/sovrnAnalyticsAdapter.js +1 -1
  112. package/dist/sovrnBidAdapter.js +1 -1
  113. package/dist/sspBCBidAdapter.js +1 -1
  114. package/dist/stvBidAdapter.js +1 -1
  115. package/dist/sublimeBidAdapter.js +1 -1
  116. package/dist/synacormediaBidAdapter.js +1 -1
  117. package/dist/targetVideoBidAdapter.js +1 -1
  118. package/dist/teadsBidAdapter.js +1 -1
  119. package/dist/trionBidAdapter.js +1 -1
  120. package/dist/tripleliftBidAdapter.js +1 -1
  121. package/dist/ttdBidAdapter.js +1 -1
  122. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  123. package/dist/uid2IdSystem.js +1 -1
  124. package/dist/underdogmediaBidAdapter.js +1 -1
  125. package/dist/undertoneBidAdapter.js +1 -1
  126. package/dist/vidazooBidAdapter.js +1 -1
  127. package/dist/video.js +1 -1
  128. package/dist/videoModule.js +1 -1
  129. package/dist/videobyteBidAdapter.js +1 -1
  130. package/dist/visxBidAdapter.js +1 -1
  131. package/dist/vuukleBidAdapter.js +1 -1
  132. package/dist/widespaceBidAdapter.js +1 -1
  133. package/dist/winrBidAdapter.js +1 -1
  134. package/dist/yahoosspBidAdapter.js +1 -1
  135. package/dist/yieldlabBidAdapter.js +1 -1
  136. package/dist/yieldmoBidAdapter.js +1 -1
  137. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  138. package/integrationExamples/videoModule/eventsUI/eventsUI.css +205 -0
  139. package/integrationExamples/videoModule/eventsUI/eventsUI.js +181 -0
  140. package/integrationExamples/videoModule/jwplayer/eventsUI.html +295 -0
  141. package/integrationExamples/videoModule/videojs/eventsUI.html +319 -0
  142. package/libraries/video/shared/helpers.js +14 -0
  143. package/modules/33acrossBidAdapter.js +1 -1
  144. package/modules/adgenerationBidAdapter.js +24 -15
  145. package/modules/admixerBidAdapter.js +15 -9
  146. package/modules/aidemBidAdapter.js +3 -1
  147. package/modules/appnexusBidAdapter.js +1 -0
  148. package/modules/beopBidAdapter.js +1 -0
  149. package/modules/confiantRtdProvider.js +15 -12
  150. package/modules/conversantAnalyticsAdapter.js +7 -5
  151. package/modules/conversantBidAdapter.js +1 -1
  152. package/modules/criteoBidAdapter.js +17 -1
  153. package/modules/gridBidAdapter.js +3 -0
  154. package/modules/ixBidAdapter.js +65 -47
  155. package/modules/kueezRtbBidAdapter.js +30 -33
  156. package/modules/liveIntentIdSystem.js +8 -4
  157. package/modules/magniteAnalyticsAdapter.js +26 -3
  158. package/modules/mgidBidAdapter.js +9 -8
  159. package/modules/minutemediaBidAdapter.js +6 -0
  160. package/modules/minutemediaplusBidAdapter.js +30 -32
  161. package/modules/nexx360BidAdapter.js +2 -1
  162. package/modules/permutiveRtdProvider.js +9 -38
  163. package/modules/prebidServerBidAdapter/index.js +1 -3
  164. package/modules/prebidServerBidAdapter/ortbConverter.js +5 -1
  165. package/modules/pubmaticAnalyticsAdapter.js +3 -2
  166. package/modules/retailspotBidAdapter .md +32 -0
  167. package/modules/retailspotBidAdapter.js +186 -0
  168. package/modules/riseBidAdapter.js +6 -0
  169. package/modules/rubiconBidAdapter.js +6 -2
  170. package/modules/silverpushBidAdapter.js +326 -0
  171. package/modules/silverpushBidAdapter.md +107 -0
  172. package/modules/ttdBidAdapter.js +23 -22
  173. package/modules/underdogmediaBidAdapter.js +2 -2
  174. package/modules/vidazooBidAdapter.js +28 -32
  175. package/modules/videoModule/adQueue.js +2 -2
  176. package/modules/videoModule/index.js +9 -5
  177. package/modules/yahoosspBidAdapter.js +6 -0
  178. package/modules/yahoosspBidAdapter.md +37 -0
  179. package/modules/yieldlabBidAdapter.js +27 -5
  180. package/package.json +1 -1
  181. package/src/adapterManager.js +4 -0
  182. package/src/adapters/bidderFactory.js +1 -0
  183. package/src/auction.js +2 -0
  184. package/src/prebid.js +36 -12
  185. package/src/utils/cpm.js +4 -1
  186. package/test/spec/modules/33acrossBidAdapter_spec.js +4 -3
  187. package/test/spec/modules/adgenerationBidAdapter_spec.js +6 -6
  188. package/test/spec/modules/admixerBidAdapter_spec.js +64 -25
  189. package/test/spec/modules/aidemBidAdapter_spec.js +3 -0
  190. package/test/spec/modules/beopBidAdapter_spec.js +4 -0
  191. package/test/spec/modules/confiantRtdProvider_spec.js +4 -1
  192. package/test/spec/modules/conversantBidAdapter_spec.js +2 -1
  193. package/test/spec/modules/criteoBidAdapter_spec.js +109 -0
  194. package/test/spec/modules/gridBidAdapter_spec.js +3 -0
  195. package/test/spec/modules/ixBidAdapter_spec.js +66 -1
  196. package/test/spec/modules/kueezRtbBidAdapter_spec.js +3 -2
  197. package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +28 -0
  198. package/test/spec/modules/liveIntentIdSystem_spec.js +45 -0
  199. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +16 -36
  200. package/test/spec/modules/mass_spec.js +2 -0
  201. package/test/spec/modules/mgidBidAdapter_spec.js +9 -9
  202. package/test/spec/modules/minutemediaBidAdapter_spec.js +18 -0
  203. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +3 -2
  204. package/test/spec/modules/permutiveRtdProvider_spec.js +0 -20
  205. package/test/spec/modules/prebidServerBidAdapter_spec.js +96 -1
  206. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +6 -1
  207. package/test/spec/modules/retailspotBidAdapter_spec.js +426 -0
  208. package/test/spec/modules/riseBidAdapter_spec.js +18 -0
  209. package/test/spec/modules/rubiconBidAdapter_spec.js +143 -67
  210. package/test/spec/modules/silverpushBidAdapter_spec.js +394 -0
  211. package/test/spec/modules/ttdBidAdapter_spec.js +129 -2
  212. package/test/spec/modules/underdogmediaBidAdapter_spec.js +1 -1
  213. package/test/spec/modules/vidazooBidAdapter_spec.js +3 -2
  214. package/test/spec/modules/videoModule/shared/helpers_spec.js +22 -0
  215. package/test/spec/modules/yahoosspBidAdapter_spec.js +60 -1
  216. package/test/spec/modules/yieldlabBidAdapter_spec.js +8 -1
  217. package/test/spec/unit/core/bidderFactory_spec.js +9 -9
  218. package/test/spec/unit/pbjs_api_spec.js +59 -1
  219. package/test/spec/unit/utils/cpm_spec.js +56 -1
@@ -824,19 +824,19 @@ describe('Mgid bid adapter', function () {
824
824
  const sync = spec.getUserSyncs({iframeEnabled: true})
825
825
  expect(sync).to.have.length(1)
826
826
  expect(sync[0]).to.have.property('type', 'iframe')
827
- expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&consentData=&gdprApplies=0/)
827
+ expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&gdpr_consent=&gdpr=0/)
828
828
  });
829
829
  it('should return frame object with gdpr consent', function () {
830
830
  const sync = spec.getUserSyncs({iframeEnabled: true}, undefined, {consentString: 'consent', gdprApplies: true})
831
831
  expect(sync).to.have.length(1)
832
832
  expect(sync[0]).to.have.property('type', 'iframe')
833
- expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&consentData=consent&gdprApplies=1/)
833
+ expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&gdpr_consent=consent&gdpr=1/)
834
834
  });
835
835
  it('should return frame object with gdpr + usp', function () {
836
836
  const sync = spec.getUserSyncs({iframeEnabled: true}, undefined, {consentString: 'consent1', gdprApplies: true}, {'consentString': 'consent2'})
837
837
  expect(sync).to.have.length(1)
838
838
  expect(sync[0]).to.have.property('type', 'iframe')
839
- expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2/)
839
+ expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2/)
840
840
  });
841
841
  it('should return img object with gdpr + usp', function () {
842
842
  config.setConfig({userSync: {syncsPerBidder: undefined}});
@@ -844,23 +844,23 @@ describe('Mgid bid adapter', function () {
844
844
  expect(sync).to.have.length(USERSYNC_DEFAULT_CONFIG.syncsPerBidder)
845
845
  for (let i = 0; i < USERSYNC_DEFAULT_CONFIG.syncsPerBidder; i++) {
846
846
  expect(sync[i]).to.have.property('type', 'image')
847
- expect(sync[i]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2/)
847
+ expect(sync[i]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2/)
848
848
  }
849
849
  });
850
850
  it('should return frame object with gdpr + usp', function () {
851
851
  const sync = spec.getUserSyncs({iframeEnabled: true, pixelEnabled: true}, undefined, {consentString: 'consent1', gdprApplies: true}, {'consentString': 'consent2'})
852
852
  expect(sync).to.have.length(1)
853
853
  expect(sync[0]).to.have.property('type', 'iframe')
854
- expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2/)
854
+ expect(sync[0]).to.have.property('url').match(/https:\/\/cm\.mgid\.com\/i\.html\?cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2/)
855
855
  });
856
856
  it('should return img (pixels) objects with gdpr + usp', function () {
857
857
  const response = [{body: {ext: {cm: ['http://cm.mgid.com/i.gif?cdsp=1111', 'http://cm.mgid.com/i.gif']}}}]
858
858
  const sync = spec.getUserSyncs({iframeEnabled: false, pixelEnabled: true}, response, {consentString: 'consent1', gdprApplies: true}, {'consentString': 'consent2'})
859
859
  expect(sync).to.have.length(2)
860
860
  expect(sync[0]).to.have.property('type', 'image')
861
- expect(sync[0]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cdsp=1111&cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2/)
861
+ expect(sync[0]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cdsp=1111&cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2/)
862
862
  expect(sync[1]).to.have.property('type', 'image')
863
- expect(sync[1]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2/)
863
+ expect(sync[1]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2/)
864
864
  });
865
865
  });
866
866
 
@@ -874,9 +874,9 @@ describe('Mgid bid adapter', function () {
874
874
  const sync = spec.getUserSyncs({iframeEnabled: false, pixelEnabled: true}, response, {consentString: 'consent1', gdprApplies: true}, {'consentString': 'consent2'}, {gppString: 'gpp'})
875
875
  expect(sync).to.have.length(2)
876
876
  expect(sync[0]).to.have.property('type', 'image')
877
- expect(sync[0]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cdsp=1111&cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2&gppString=gpp&coppa=1/)
877
+ expect(sync[0]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cdsp=1111&cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2&gppString=gpp&coppa=1/)
878
878
  expect(sync[1]).to.have.property('type', 'image')
879
- expect(sync[1]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&consentData=consent1&gdprApplies=1&uspString=consent2&gppString=gpp&coppa=1/)
879
+ expect(sync[1]).to.have.property('url').match(/http:\/\/cm\.mgid\.com\/i\.gif\?cbuster=\d+&gdpr_consent=consent1&gdpr=1&us_privacy=consent2&gppString=gpp&coppa=1/)
880
880
  });
881
881
  });
882
882
 
@@ -293,6 +293,24 @@ describe('minutemediaAdapter', function () {
293
293
  expect(request.data.bids[0]).to.be.an('object');
294
294
  expect(request.data.bids[0]).to.have.property('floorPrice', 1.5);
295
295
  });
296
+
297
+ describe('COPPA Param', function() {
298
+ it('should set coppa equal 0 in bid request if coppa is set to false', function() {
299
+ const request = spec.buildRequests(bidRequests, bidderRequest);
300
+ expect(request.data.bids[0].coppa).to.be.equal(0);
301
+ });
302
+
303
+ it('should set coppa equal 1 in bid request if coppa is set to true', function() {
304
+ const bid = utils.deepClone(bidRequests[0]);
305
+ bid.ortb2 = {
306
+ 'regs': {
307
+ 'coppa': true,
308
+ }
309
+ };
310
+ const request = spec.buildRequests([bid], bidderRequest);
311
+ expect(request.data.bids[0].coppa).to.be.equal(1);
312
+ });
313
+ });
296
314
  });
297
315
 
298
316
  describe('interpretResponse', function () {
@@ -1,7 +1,6 @@
1
1
  import {expect} from 'chai';
2
2
  import {
3
3
  spec as adapter,
4
- SUPPORTED_ID_SYSTEMS,
5
4
  createDomain,
6
5
  hashCode,
7
6
  extractPID,
@@ -18,6 +17,8 @@ import {useFakeTimers} from 'sinon';
18
17
  import {BANNER, VIDEO} from '../../../src/mediaTypes';
19
18
  import {config} from '../../../src/config';
20
19
 
20
+ export const TEST_ID_SYSTEMS = ['britepoolid', 'criteoId', 'id5id', 'idl_env', 'lipb', 'netId', 'parrableId', 'pubcid', 'tdid', 'pubProvidedId'];
21
+
21
22
  const SUB_DOMAIN = 'exchange';
22
23
 
23
24
  const BID = {
@@ -498,7 +499,7 @@ describe('MinuteMediaPlus Bid Adapter', function () {
498
499
  });
499
500
 
500
501
  describe('user id system', function () {
501
- Object.keys(SUPPORTED_ID_SYSTEMS).forEach((idSystemProvider) => {
502
+ TEST_ID_SYSTEMS.forEach((idSystemProvider) => {
502
503
  const id = Date.now().toString();
503
504
  const bid = utils.deepClone(BID);
504
505
 
@@ -560,26 +560,6 @@ describe('permutiveRtdProvider', function () {
560
560
  })
561
561
  })
562
562
 
563
- describe('Default segment targeting', function () {
564
- it('sets segment targeting for Ozone', function () {
565
- const data = transformedTargeting()
566
- const adUnits = getAdUnits()
567
- const config = getConfig()
568
-
569
- readAndSetCohorts({ adUnits }, config)
570
-
571
- adUnits.forEach(adUnit => {
572
- adUnit.bids.forEach(bid => {
573
- const { bidder, params } = bid
574
-
575
- if (bidder === 'ozone') {
576
- expect(deepAccess(params, 'customData.0.targeting.p_standard')).to.eql(data.ac.concat(data.ssp.cohorts))
577
- }
578
- })
579
- })
580
- })
581
- })
582
-
583
563
  describe('Existing key-value targeting', function () {
584
564
  it('doesn\'t overwrite existing key-values for Xandr', function () {
585
565
  const adUnits = getAdUnits()
@@ -2463,7 +2463,7 @@ describe('S2S Adapter', function () {
2463
2463
  };
2464
2464
  const bcat = ['IAB25', 'IAB7-39'];
2465
2465
  const badv = ['blockedAdv-1.com', 'blockedAdv-2.com'];
2466
- const allowedBidders = ['rubicon', 'appnexus'];
2466
+ const allowedBidders = ['appnexus'];
2467
2467
 
2468
2468
  const expected = allowedBidders.map(bidder => ({
2469
2469
  bidders: [bidder],
@@ -2516,6 +2516,101 @@ describe('S2S Adapter', function () {
2516
2516
  expect(parsedRequestBody.bcat).to.deep.equal(bcat);
2517
2517
  });
2518
2518
 
2519
+ it('passes first party data in request for unknown when allowUnknownBidderCodes is true', () => {
2520
+ const cfg = { ...CONFIG, allowUnknownBidderCodes: true };
2521
+ config.setConfig({ s2sConfig: cfg });
2522
+
2523
+ const clonedReq = {...REQUEST, s2sConfig: cfg}
2524
+ const s2sBidRequest = utils.deepClone(clonedReq);
2525
+ const bidRequests = utils.deepClone(BID_REQUESTS);
2526
+
2527
+ const commonSite = {
2528
+ keywords: ['power tools'],
2529
+ search: 'drill'
2530
+ };
2531
+ const commonUser = {
2532
+ keywords: ['a', 'b'],
2533
+ gender: 'M'
2534
+ };
2535
+
2536
+ const site = {
2537
+ content: {userrating: 4},
2538
+ ext: {
2539
+ data: {
2540
+ pageType: 'article',
2541
+ category: 'tools'
2542
+ }
2543
+ }
2544
+ };
2545
+ const user = {
2546
+ yob: '1984',
2547
+ geo: { country: 'ca' },
2548
+ ext: {
2549
+ data: {
2550
+ registered: true,
2551
+ interests: ['cars']
2552
+ }
2553
+ }
2554
+ };
2555
+ const bcat = ['IAB25', 'IAB7-39'];
2556
+ const badv = ['blockedAdv-1.com', 'blockedAdv-2.com'];
2557
+ const allowedBidders = ['appnexus', 'unknown'];
2558
+
2559
+ const expected = allowedBidders.map(bidder => ({
2560
+ bidders: [bidder],
2561
+ config: {
2562
+ ortb2: {
2563
+ site: {
2564
+ content: { userrating: 4 },
2565
+ ext: {
2566
+ data: {
2567
+ pageType: 'article',
2568
+ category: 'tools'
2569
+ }
2570
+ }
2571
+ },
2572
+ user: {
2573
+ yob: '1984',
2574
+ geo: { country: 'ca' },
2575
+ ext: {
2576
+ data: {
2577
+ registered: true,
2578
+ interests: ['cars']
2579
+ }
2580
+ }
2581
+ },
2582
+ bcat: ['IAB25', 'IAB7-39'],
2583
+ badv: ['blockedAdv-1.com', 'blockedAdv-2.com']
2584
+ }
2585
+ }
2586
+ }));
2587
+ const commonContextExpected = utils.mergeDeep({
2588
+ 'page': 'http://mytestpage.com',
2589
+ 'domain': 'mytestpage.com',
2590
+ 'publisher': {
2591
+ 'id': '1',
2592
+ 'domain': 'mytestpage.com'
2593
+ }
2594
+ }, commonSite);
2595
+
2596
+ const ortb2Fragments = {
2597
+ global: {site: commonSite, user: commonUser, badv, bcat},
2598
+ bidder: Object.fromEntries(allowedBidders.map(bidder => [bidder, {site, user, bcat, badv}]))
2599
+ };
2600
+
2601
+ // adapter.callBids({ ...REQUEST, s2sConfig: cfg }, BID_REQUESTS, addBidResponse, done, ajax);
2602
+
2603
+ adapter.callBids(addFpdEnrichmentsToS2SRequest({...s2sBidRequest, ortb2Fragments}, bidRequests, cfg), bidRequests, addBidResponse, done, ajax);
2604
+ const parsedRequestBody = JSON.parse(server.requests[0].requestBody);
2605
+ // eslint-disable-next-line no-console
2606
+ console.log(parsedRequestBody);
2607
+ expect(parsedRequestBody.ext.prebid.bidderconfig).to.deep.equal(expected);
2608
+ expect(parsedRequestBody.site).to.deep.equal(commonContextExpected);
2609
+ expect(parsedRequestBody.user).to.deep.equal(commonUser);
2610
+ expect(parsedRequestBody.badv).to.deep.equal(badv);
2611
+ expect(parsedRequestBody.bcat).to.deep.equal(bcat);
2612
+ });
2613
+
2519
2614
  describe('pbAdSlot config', function () {
2520
2615
  it('should not send \"imp.ext.data.pbadslot\" if \"ortb2Imp.ext\" is undefined', function () {
2521
2616
  const consentConfig = { s2sConfig: CONFIG };
@@ -371,7 +371,8 @@ describe('pubmatic analytics adapter', function () {
371
371
  expect(data.s[0].fskp).to.equal(0);
372
372
  expect(data.s[0].sz).to.deep.equal(['640x480']);
373
373
  expect(data.s[0].ps).to.be.an('array');
374
- expect(data.s[0].ps.length).to.equal(1);
374
+ expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
375
+ expect(data.s[0].ps.length).to.equal(1);
375
376
  expect(data.s[0].ps[0].pn).to.equal('pubmatic');
376
377
  expect(data.s[0].ps[0].bc).to.equal('pubmatic');
377
378
  expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
@@ -481,6 +482,7 @@ describe('pubmatic analytics adapter', function () {
481
482
  expect(data.s[0].fskp).to.equal(0);
482
483
  expect(data.s[0].sz).to.deep.equal(['640x480']);
483
484
  expect(data.s[0].ps).to.be.an('array');
485
+ expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
484
486
  expect(data.s[0].ps.length).to.equal(1);
485
487
  expect(data.s[0].ps[0].pn).to.equal('pubmatic');
486
488
  expect(data.s[0].ps[0].bc).to.equal('pubmatic');
@@ -553,6 +555,7 @@ describe('pubmatic analytics adapter', function () {
553
555
  expect(data.s[0].sz).to.deep.equal(['640x480']);
554
556
  expect(data.s[0].ps).to.be.an('array');
555
557
  expect(data.s[0].ps.length).to.equal(1);
558
+ expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
556
559
  expect(data.s[0].ps[0].pn).to.equal('pubmatic');
557
560
  expect(data.s[0].ps[0].bc).to.equal('pubmatic');
558
561
  expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
@@ -1029,6 +1032,7 @@ describe('pubmatic analytics adapter', function () {
1029
1032
  expect(data.s[0].fskp).to.equal(0);
1030
1033
  expect(data.s[0].sz).to.deep.equal(['640x480']);
1031
1034
  expect(data.s[0].ps).to.be.an('array');
1035
+ expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
1032
1036
  expect(data.s[0].ps.length).to.equal(1);
1033
1037
  expect(data.s[0].ps[0].pn).to.equal('pubmatic');
1034
1038
  expect(data.s[0].ps[0].bc).to.equal('pubmatic_alias');
@@ -1147,6 +1151,7 @@ describe('pubmatic analytics adapter', function () {
1147
1151
  expect(data.s[0].fskp).to.equal(0);
1148
1152
  expect(data.s[0].sz).to.deep.equal(['640x480']);
1149
1153
  expect(data.s[0].ps).to.be.an('array');
1154
+ expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
1150
1155
  expect(data.s[0].ps.length).to.equal(1);
1151
1156
  expect(data.s[0].ps[0].pn).to.equal('pubmatic');
1152
1157
  expect(data.s[0].ps[0].bc).to.equal('groupm');