prebid.js 9.5.0 → 9.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 (253) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  2. package/.github/release-drafter.yml +4 -0
  3. package/README.md +4 -4
  4. package/dist/33acrossAnalyticsAdapter.js +1 -1
  5. package/dist/33acrossBidAdapter.js +1 -1
  6. package/dist/33acrossIdSystem.js +1 -1
  7. package/dist/BTBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioUtils.js +1 -1
  11. package/dist/addefendBidAdapter.js +1 -1
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/adkernelBidAdapter.js +1 -1
  14. package/dist/adlooxRtdProvider.js +1 -1
  15. package/dist/adqueryBidAdapter.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adstirBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgAnalyticsAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adyoulikeBidAdapter.js +1 -1
  22. package/dist/agmaAnalyticsAdapter.js +1 -1
  23. package/dist/aidemBidAdapter.js +1 -1
  24. package/dist/ajaBidAdapter.js +1 -1
  25. package/dist/amxBidAdapter.js +1 -1
  26. package/dist/amxIdSystem.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/bidglassBidAdapter.js +1 -1
  32. package/dist/big-richmediaBidAdapter.js +1 -1
  33. package/dist/bridBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/carodaBidAdapter.js +1 -1
  37. package/dist/chtnwBidAdapter.js +1 -1
  38. package/dist/chunk-core.js +1 -1
  39. package/dist/cleanmedianetBidAdapter.js +1 -1
  40. package/dist/concertBidAdapter.js +1 -1
  41. package/dist/connectIdSystem.js +1 -1
  42. package/dist/connectadBidAdapter.js +1 -1
  43. package/dist/connectionInfo.js +1 -0
  44. package/dist/consumableBidAdapter.js +1 -1
  45. package/dist/conversantAnalyticsAdapter.js +1 -1
  46. package/dist/conversantBidAdapter.js +1 -1
  47. package/dist/craftBidAdapter.js +1 -1
  48. package/dist/criteoBidAdapter.js +1 -1
  49. package/dist/cwireBidAdapter.js +1 -1
  50. package/dist/dailymotionBidAdapter.js +1 -1
  51. package/dist/dependencies.json +31 -2
  52. package/dist/docereeAdManagerBidAdapter.js +1 -1
  53. package/dist/dspxBidAdapter.js +1 -1
  54. package/dist/dxkultureBidAdapter.js +1 -1
  55. package/dist/eplanningBidAdapter.js +1 -1
  56. package/dist/euidIdSystem.js +1 -1
  57. package/dist/exadsBidAdapter.js +1 -1
  58. package/dist/feedadBidAdapter.js +1 -1
  59. package/dist/finativeBidAdapter.js +1 -1
  60. package/dist/freewheel-sspBidAdapter.js +1 -1
  61. package/dist/gamoshiBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  65. package/dist/greenbidsRtdProvider.js +1 -1
  66. package/dist/gridBidAdapter.js +1 -1
  67. package/dist/gumgumBidAdapter.js +1 -1
  68. package/dist/h12mediaBidAdapter.js +1 -1
  69. package/dist/hypelabBidAdapter.js +1 -1
  70. package/dist/id5AnalyticsAdapter.js +1 -1
  71. package/dist/id5IdSystem.js +1 -1
  72. package/dist/idImportLibrary.js +1 -1
  73. package/dist/imdsBidAdapter.js +1 -1
  74. package/dist/improvedigitalBidAdapter.js +1 -1
  75. package/dist/insticatorBidAdapter.js +1 -1
  76. package/dist/intentIqAnalyticsAdapter.js +1 -1
  77. package/dist/ixBidAdapter.js +1 -1
  78. package/dist/jixieBidAdapter.js +1 -1
  79. package/dist/justpremiumBidAdapter.js +1 -1
  80. package/dist/kargoBidAdapter.js +1 -1
  81. package/dist/kimberliteBidAdapter.js +1 -1
  82. package/dist/konduitAnalyticsAdapter.js +1 -1
  83. package/dist/kueezBidAdapter.js +1 -1
  84. package/dist/lassoBidAdapter.js +1 -1
  85. package/dist/lifestreetBidAdapter.js +1 -1
  86. package/dist/liveIntentIdSystem.js +1 -1
  87. package/dist/logicadBidAdapter.js +1 -1
  88. package/dist/loglyliftBidAdapter.js +1 -1
  89. package/dist/luceadBidAdapter.js +1 -1
  90. package/dist/mabidderBidAdapter.js +1 -1
  91. package/dist/magniteAnalyticsAdapter.js +1 -1
  92. package/dist/malltvAnalyticsAdapter.js +1 -1
  93. package/dist/marsmediaBidAdapter.js +1 -1
  94. package/dist/mediafuseBidAdapter.js +1 -1
  95. package/dist/medianetAnalyticsAdapter.js +1 -1
  96. package/dist/medianetBidAdapter.js +1 -1
  97. package/dist/mediasquareBidAdapter.js +1 -1
  98. package/dist/mgidBidAdapter.js +1 -1
  99. package/dist/minutemediaBidAdapter.js +1 -1
  100. package/dist/missenaBidAdapter.js +1 -1
  101. package/dist/mobianRtdProvider.js +1 -1
  102. package/dist/nexx360BidAdapter.js +1 -1
  103. package/dist/nobidAnalyticsAdapter.js +1 -1
  104. package/dist/nobidBidAdapter.js +1 -1
  105. package/dist/not-for-prod/prebid.js +174 -170
  106. package/dist/oguryBidAdapter.js +1 -1
  107. package/dist/onetagBidAdapter.js +1 -1
  108. package/dist/ooloAnalyticsAdapter.js +1 -1
  109. package/dist/openwebBidAdapter.js +1 -1
  110. package/dist/openxBidAdapter.js +1 -1
  111. package/dist/optidigitalBidAdapter.js +1 -1
  112. package/dist/orbidderBidAdapter.js +1 -1
  113. package/dist/ortbConverter.js +1 -1
  114. package/dist/outbrainBidAdapter.js +1 -1
  115. package/dist/ownadxBidAdapter.js +1 -0
  116. package/dist/pixfutureBidAdapter.js +1 -1
  117. package/dist/prismaBidAdapter.js +1 -1
  118. package/dist/publinkIdSystem.js +1 -1
  119. package/dist/publirBidAdapter.js +1 -1
  120. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  121. package/dist/pubmaticBidAdapter.js +1 -1
  122. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  123. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  124. package/dist/pxyzBidAdapter.js +1 -1
  125. package/dist/quantcastBidAdapter.js +1 -1
  126. package/dist/readpeakBidAdapter.js +1 -1
  127. package/dist/relaidoBidAdapter.js +1 -1
  128. package/dist/retailspotBidAdapter.js +1 -1
  129. package/dist/rhythmoneBidAdapter.js +1 -1
  130. package/dist/riseBidAdapter.js +1 -1
  131. package/dist/riseUtils.js +1 -0
  132. package/dist/rubiconBidAdapter.js +1 -1
  133. package/dist/seedingAllianceBidAdapter.js +1 -1
  134. package/dist/seedtagBidAdapter.js +1 -1
  135. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  136. package/dist/sharethroughBidAdapter.js +1 -1
  137. package/dist/shinezBidAdapter.js +1 -1
  138. package/dist/smaatoBidAdapter.js +1 -1
  139. package/dist/smartadserverBidAdapter.js +1 -1
  140. package/dist/smarthubBidAdapter.js +1 -1
  141. package/dist/smartxBidAdapter.js +1 -1
  142. package/dist/smilewantedBidAdapter.js +1 -1
  143. package/dist/snigelBidAdapter.js +1 -1
  144. package/dist/sonobiBidAdapter.js +1 -1
  145. package/dist/sovrnBidAdapter.js +1 -1
  146. package/dist/sspBCBidAdapter.js +1 -1
  147. package/dist/stnBidAdapter.js +1 -1
  148. package/dist/stvBidAdapter.js +1 -1
  149. package/dist/sublimeBidAdapter.js +1 -1
  150. package/dist/taboolaBidAdapter.js +1 -1
  151. package/dist/tappxBidAdapter.js +1 -1
  152. package/dist/targetVideoBidAdapter.js +1 -1
  153. package/dist/teadsBidAdapter.js +1 -1
  154. package/dist/telariaBidAdapter.js +1 -1
  155. package/dist/teqblazeUtils.js +1 -1
  156. package/dist/terceptAnalyticsAdapter.js +1 -1
  157. package/dist/themoneytizerBidAdapter.js +1 -1
  158. package/dist/trionBidAdapter.js +1 -1
  159. package/dist/tripleliftBidAdapter.js +1 -1
  160. package/dist/ttdBidAdapter.js +1 -1
  161. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  162. package/dist/uid2IdSystem.js +1 -1
  163. package/dist/uid2IdSystem_shared.js +1 -1
  164. package/dist/underdogmediaBidAdapter.js +1 -1
  165. package/dist/undertoneBidAdapter.js +1 -1
  166. package/dist/unrulyBidAdapter.js +1 -1
  167. package/dist/viantOrtbBidAdapter.js +1 -1
  168. package/dist/vidazooUtils.js +1 -1
  169. package/dist/videobyteBidAdapter.js +1 -1
  170. package/dist/visxBidAdapter.js +1 -1
  171. package/dist/vuukleBidAdapter.js +1 -1
  172. package/dist/widespaceBidAdapter.js +1 -1
  173. package/dist/winrBidAdapter.js +1 -1
  174. package/dist/wurflRtdProvider.js +1 -0
  175. package/dist/yahooAdsBidAdapter.js +1 -1
  176. package/dist/yieldmoBidAdapter.js +1 -1
  177. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  178. package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
  179. package/libraries/connectionInfo/connectionUtils.js +33 -0
  180. package/libraries/ortbConverter/processors/video.js +2 -24
  181. package/libraries/riseUtils/index.js +331 -0
  182. package/libraries/teqblazeUtils/bidderUtils.js +15 -11
  183. package/libraries/vidazooUtils/bidderUtils.js +16 -0
  184. package/modules/.submodules.json +3 -1
  185. package/modules/51DegreesRtdProvider.md +11 -7
  186. package/modules/adagioAnalyticsAdapter.js +101 -84
  187. package/modules/adagioAnalyticsAdapter.md +4 -0
  188. package/modules/adagioBidAdapter.js +14 -66
  189. package/modules/adkernelBidAdapter.js +2 -2
  190. package/modules/aidemBidAdapter.js +2 -0
  191. package/modules/appnexusBidAdapter.js +1 -1
  192. package/modules/cleanmedianetBidAdapter.js +1 -1
  193. package/modules/connectIdSystem.js +5 -3
  194. package/modules/dailymotionBidAdapter.js +19 -0
  195. package/modules/docereeAdManagerBidAdapter.js +9 -12
  196. package/modules/gamoshiBidAdapter.js +1 -1
  197. package/modules/greenbidsAnalyticsAdapter.js +7 -4
  198. package/modules/greenbidsRtdProvider.js +15 -5
  199. package/modules/id5IdSystem.js +14 -93
  200. package/modules/idImportLibrary.js +14 -6
  201. package/modules/insticatorBidAdapter.js +35 -31
  202. package/modules/kargoBidAdapter.js +11 -14
  203. package/modules/kimberliteBidAdapter.js +24 -7
  204. package/modules/kimberliteBidAdapter.md +30 -1
  205. package/modules/minutemediaBidAdapter.js +21 -398
  206. package/modules/mobianRtdProvider.js +28 -14
  207. package/modules/nexx360BidAdapter.js +3 -2
  208. package/modules/openwebBidAdapter.js +18 -396
  209. package/modules/ownadxBidAdapter.js +99 -0
  210. package/modules/prismaBidAdapter.js +1 -27
  211. package/modules/publirBidAdapter.js +20 -273
  212. package/modules/pubmaticBidAdapter.js +2 -1
  213. package/modules/resetdigitalBidAdapter.md +54 -45
  214. package/modules/riseBidAdapter.js +19 -400
  215. package/modules/sharethroughBidAdapter.js +5 -0
  216. package/modules/shinezBidAdapter.js +17 -361
  217. package/modules/smarthubBidAdapter.js +45 -177
  218. package/modules/stnBidAdapter.js +22 -398
  219. package/modules/telariaBidAdapter.js +2 -32
  220. package/modules/ttdBidAdapter.js +14 -32
  221. package/modules/uid2IdSystem_shared.js +51 -39
  222. package/modules/viantOrtbBidAdapter.js +1 -1
  223. package/modules/wurflRtdProvider.js +213 -0
  224. package/modules/wurflRtdProvider.md +67 -0
  225. package/package.json +1 -1
  226. package/src/adloader.js +1 -0
  227. package/src/prebid.js +6 -1
  228. package/src/video.js +78 -1
  229. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
  230. package/test/spec/modules/adagioBidAdapter_spec.js +32 -67
  231. package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
  232. package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
  233. package/test/spec/modules/connectIdSystem_spec.js +27 -28
  234. package/test/spec/modules/dailymotionBidAdapter_spec.js +50 -0
  235. package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
  236. package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
  237. package/test/spec/modules/id5IdSystem_spec.js +25 -98
  238. package/test/spec/modules/idImportLibrary_spec.js +14 -0
  239. package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
  240. package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
  241. package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
  242. package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
  243. package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
  244. package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
  245. package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
  246. package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
  247. package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
  248. package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
  249. package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
  250. package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
  251. package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
  252. package/test/spec/unit/pbjs_api_spec.js +11 -0
  253. package/test/spec/video_spec.js +103 -1
@@ -277,8 +277,6 @@ describe('Adagio bid adapter', () => {
277
277
  it('should send bid request to ENDPOINT_PB via POST', function() {
278
278
  sandbox.stub(_internal, 'getDevice').returns({ a: 'a' });
279
279
  sandbox.stub(_internal, 'getSite').returns({ domain: 'adagio.io', 'page': 'https://adagio.io/hb' });
280
- // sandbox.stub(_internal, 'getPageviewId').returns('1234-567');
281
- // sandbox.stub(utils, 'generateUUID').returns('blabla');
282
280
 
283
281
  const bid01 = new BidRequestBuilder().withParams().build();
284
282
  const bidderRequest = new BidderRequestBuilder().build();
@@ -292,7 +290,31 @@ describe('Adagio bid adapter', () => {
292
290
  expect(requests[0].data).to.have.all.keys(expectedDataKeys);
293
291
  });
294
292
 
295
- it('should use a custom generated auctionId and remove transactionId', function() {
293
+ it('should use a custom generated auctionId from ortb2.site.ext.data.adg_rtd.uid when available', function() {
294
+ const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
295
+
296
+ const bid01 = new BidRequestBuilder().withParams().build();
297
+ let ortb = {
298
+ ortb2: {
299
+ site: {
300
+ ext: {
301
+ data: {
302
+ adg_rtd: {
303
+ uid: expectedAuctionId
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
309
+ }
310
+ const bidderRequest = new BidderRequestBuilder(ortb).build();
311
+
312
+ const requests = spec.buildRequests([bid01], bidderRequest);
313
+ expect(requests[0].data.adUnits[0].auctionId).eq(expectedAuctionId);
314
+ expect(requests[0].data.adUnits[0].transactionId).to.not.exist;
315
+ });
316
+
317
+ it('should use a custom generated auctionId when ortb2.site.ext.data.adg_rtd.uid is absent and remove transactionId', function() {
296
318
  const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
297
319
  sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
298
320
 
@@ -305,9 +327,7 @@ describe('Adagio bid adapter', () => {
305
327
  });
306
328
 
307
329
  it('should enrich prebid bid requests params', function() {
308
- const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
309
330
  const expectedPageviewId = '56befc26-8cf0-472d-b105-73896df8eb89';
310
- sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
311
331
  sandbox.stub(_internal, 'getAdagioNs').returns({ pageviewId: expectedPageviewId });
312
332
 
313
333
  const bid01 = new BidRequestBuilder().withParams().build();
@@ -315,7 +335,6 @@ describe('Adagio bid adapter', () => {
315
335
 
316
336
  spec.buildRequests([bid01], bidderRequest);
317
337
 
318
- expect(bid01.params.adagioAuctionId).eq(expectedAuctionId);
319
338
  expect(bid01.params.pageviewId).eq(expectedPageviewId);
320
339
  });
321
340
 
@@ -584,7 +603,6 @@ describe('Adagio bid adapter', () => {
584
603
  const requests = spec.buildRequests([bid01], bidderRequest);
585
604
  expect(requests).to.have.lengthOf(1);
586
605
  expect(requests[0].data.adUnits[0].mediaTypes.video).to.deep.equal(expected);
587
- sinon.assert.calledTwice(utils.logWarn.withArgs(sinon.match(new RegExp(/^Adagio: The OpenRTB/))));
588
606
  });
589
607
  });
590
608
 
@@ -782,77 +800,24 @@ describe('Adagio bid adapter', () => {
782
800
  describe('with GPP', function() {
783
801
  const bid01 = new BidRequestBuilder().withParams().build();
784
802
 
785
- const regsGpp = 'regs_gpp_consent_string';
786
- const regsApplicableSections = [2];
787
-
788
- const ortb2Gpp = 'ortb2_gpp_consent_string';
789
- const ortb2GppSid = [1];
790
-
791
- context('When GPP in regs module', function() {
792
- it('send gpp and gppSid to the server', function() {
793
- const bidderRequest = new BidderRequestBuilder({
794
- gppConsent: {
795
- gppString: regsGpp,
796
- applicableSections: regsApplicableSections,
797
- }
798
- }).build();
799
-
800
- const requests = spec.buildRequests([bid01], bidderRequest);
801
-
802
- expect(requests[0].data.regs.gpp).to.equal(regsGpp);
803
- expect(requests[0].data.regs.gppSid).to.equal(regsApplicableSections);
804
- });
805
- });
806
-
807
- context('When GPP partially defined in regs module', function() {
808
- it('send gpp and gppSid coming from ortb2 to the server', function() {
809
- const bidderRequest = new BidderRequestBuilder({
810
- gppConsent: {
811
- gppString: regsGpp,
812
- },
813
- ortb2: {
814
- regs: {
815
- gpp: ortb2Gpp,
816
- gpp_sid: ortb2GppSid,
817
- }
818
- }
819
- }).build();
820
-
821
- const requests = spec.buildRequests([bid01], bidderRequest);
822
-
823
- expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
824
- expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
825
- });
826
-
827
- it('send empty gpp and gppSid if no ortb2 fields to the server', function() {
828
- const bidderRequest = new BidderRequestBuilder({
829
- gppConsent: {
830
- gppString: regsGpp,
831
- }
832
- }).build();
833
-
834
- const requests = spec.buildRequests([bid01], bidderRequest);
835
-
836
- expect(requests[0].data.regs.gpp).to.equal('');
837
- expect(requests[0].data.regs.gppSid).to.be.empty;
838
- });
839
- });
803
+ const gpp = 'gpp_consent_string';
804
+ const gppSid = [1];
840
805
 
841
- context('When GPP defined in ortb2 module', function() {
806
+ context('When GPP is defined', function() {
842
807
  it('send gpp and gppSid coming from ortb2 to the server', function() {
843
808
  const bidderRequest = new BidderRequestBuilder({
844
809
  ortb2: {
845
810
  regs: {
846
- gpp: ortb2Gpp,
847
- gpp_sid: ortb2GppSid,
811
+ gpp,
812
+ gpp_sid: gppSid,
848
813
  }
849
814
  }
850
815
  }).build();
851
816
 
852
817
  const requests = spec.buildRequests([bid01], bidderRequest);
853
818
 
854
- expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
855
- expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
819
+ expect(requests[0].data.regs.gpp).to.equal(gpp);
820
+ expect(requests[0].data.regs.gppSid).to.equal(gppSid);
856
821
  });
857
822
  });
858
823
 
@@ -1783,7 +1783,6 @@ describe('AppNexusAdapter', function () {
1783
1783
  'cpm': 0.5,
1784
1784
  'cpm_publisher_currency': 0.5,
1785
1785
  'publisher_currency_code': '$',
1786
- 'publisher_currency_codename': 'USD',
1787
1786
  'client_initiated_ad_counting': true,
1788
1787
  'viewability': {
1789
1788
  'config': '<script type=\'text/javascript\' async=\'true\' src=\'https://cdn.adnxs.com/v/s/152/trk.js#v;vk=appnexus.com-omid;tv=native1-18h;dom_id=%native_dom_id%;st=0;d=1x1;vc=iab;vid_ccr=1;tag_id=13232354;cb=https%3A%2F%2Fams1-ib.adnxs.com%2Fvevent%3Freferrer%3Dhttps253A%252F%252Ftestpages-pmahe.tp.adnxs.net%252F01_basic_single%26e%3DwqT_3QLNB6DNAwAAAwDWAAUBCLfl_-MFEMStk8u3lPTjRxih88aF0fq_2QsqNgkAAAECCCRAEQEHEAAAJEAZEQkAIREJACkRCQAxEQmoMOLRpwY47UhA7UhIAlCDy74uWJzxW2AAaM26dXjzjwWAAQGKAQNVU0SSAQEG8FCYAQGgAQGoAQGwAQC4AQHAAQTIAQLQAQDYAQDgAQDwAQCKAjt1ZignYScsIDI1Mjk4ODUsIDE1NTE4ODkwNzkpO3VmKCdyJywgOTc0OTQ0MDM2HgDwjZIC8QEha0RXaXBnajgtTHdLRUlQTHZpNFlBQ0NjOFZzd0FEZ0FRQVJJN1VoUTR0R25CbGdBWU1rR2FBQndMSGlrTDRBQlVvZ0JwQy1RQVFHWUFRR2dBUUdvQVFPd0FRQzVBZk90YXFRQUFDUkF3UUh6cldxa0FBQWtRTWtCbWo4dDA1ZU84VF9aQVFBQUEBAyRQQV80QUVBOVFFAQ4sQW1BSUFvQUlBdFFJBRAAdg0IeHdBSUF5QUlBNEFJQTZBSUEtQUlBZ0FNQm1BTUJxQVAFzIh1Z01KUVUxVE1UbzBNekl3NEFPVENBLi6aAmEhUXcxdGNRagUoEfQkblBGYklBUW9BRAl8AEEBqAREbzJEABRRSk1JU1EBGwRBQQGsAFURDAxBQUFXHQzwWNgCAOACrZhI6gIzaHR0cDovL3Rlc3RwYWdlcy1wbWFoZS50cC5hZG54cy5uZXQvMDFfYmFzaWNfc2luZ2xl8gITCg9DVVNUT01fTU9ERUxfSUQSAPICGgoWMhYAPExFQUZfTkFNRRIA8gIeCho2HQAIQVNUAT7wnElGSUVEEgCAAwCIAwGQAwCYAxegAwGqAwDAA-CoAcgDANgD8ao-4AMA6AMA-AMBgAQAkgQNL3V0L3YzL3ByZWJpZJgEAKIECjEwLjIuMTIuMzioBIqpB7IEDggAEAEYACAAKAAwADgCuAQAwAQAyAQA0gQOOTMyNSNBTVMxOjQzMjDaBAIIAeAEAfAEg8u-LogFAZgFAKAF______8BAxgBwAUAyQUABQEU8D_SBQkJBQt8AAAA2AUB4AUB8AWZ9CH6BQQIABAAkAYBmAYAuAYAwQYBITAAAPA_yAYA2gYWChAAOgEAGBAAGADgBgw.%26s%3D971dce9d49b6bee447c8a58774fb30b40fe98171;ts=1551889079;cet=0;cecb=\'></script>'
@@ -1868,38 +1867,6 @@ describe('AppNexusAdapter', function () {
1868
1867
  expect(Object.keys(result[0])).to.have.members(Object.keys(expectedResponse[0]));
1869
1868
  });
1870
1869
 
1871
- it('should parse non-default currency', function () {
1872
- let eurCpmResponse = deepClone(response);
1873
- eurCpmResponse.tags[0].ads[0].publisher_currency_codename = 'EUR';
1874
-
1875
- let bidderRequest = {
1876
- bidderCode: 'appnexus',
1877
- bids: [{
1878
- bidId: '3db3773286ee59',
1879
- adUnitCode: 'code'
1880
- }]
1881
- };
1882
-
1883
- let result = spec.interpretResponse({ body: eurCpmResponse }, { bidderRequest });
1884
- expect(result[0].currency).to.equal('EUR');
1885
- });
1886
-
1887
- it('should parse default currency', function () {
1888
- let defaultCpmResponse = deepClone(response);
1889
- delete defaultCpmResponse.tags[0].ads[0].publisher_currency_codename;
1890
-
1891
- let bidderRequest = {
1892
- bidderCode: 'appnexus',
1893
- bids: [{
1894
- bidId: '3db3773286ee59',
1895
- adUnitCode: 'code'
1896
- }]
1897
- };
1898
-
1899
- let result = spec.interpretResponse({ body: defaultCpmResponse }, { bidderRequest });
1900
- expect(result[0].currency).to.equal('USD');
1901
- });
1902
-
1903
1870
  it('should reject 0 cpm bids', function () {
1904
1871
  let zeroCpmResponse = deepClone(response);
1905
1872
  zeroCpmResponse.tags[0].ads[0].cpm = 0;
@@ -395,7 +395,7 @@ describe('CleanmedianetAdapter', () => {
395
395
 
396
396
  expect(response.data.imp[0].video.mimes).to.equal(bidRequestWithVideo.mediaTypes.video.mimes);
397
397
  expect(response.data.imp[0].video.skip).to.not.exist;
398
- expect(response.data.imp[0].video.placement).to.equal(1);
398
+ expect(response.data.imp[0].video.plcmt).to.equal(1);
399
399
  expect(response.data.imp[0].video.minduration).to.equal(1);
400
400
  expect(response.data.imp[0].video.playbackmethod).to.equal(1);
401
401
  expect(response.data.imp[0].video.startdelay).to.equal(1);
@@ -549,24 +549,28 @@ describe('Yahoo ConnectID Submodule', () => {
549
549
  expect(result.callback).to.be.a('function');
550
550
  });
551
551
 
552
+ function mockOptout(value) {
553
+ getLocalStorageStub.callsFake((key) => {
554
+ if (key === 'connectIdOptOut') return value;
555
+ })
556
+ }
557
+
552
558
  it('returns an undefined if the Yahoo specific opt-out key is present in local storage', () => {
553
- localStorage.setItem('connectIdOptOut', '1');
559
+ mockOptout('1');
554
560
  expect(invokeGetIdAPI({
555
561
  he: HASHED_EMAIL,
556
562
  pixelId: PIXEL_ID
557
563
  }, consentData)).to.be.undefined;
558
- localStorage.removeItem('connectIdOptOut');
559
564
  });
560
565
 
561
566
  it('returns an object with the callback function if the correct params are passed and Yahoo opt-out value is not "1"', () => {
562
- localStorage.setItem('connectIdOptOut', 'true');
567
+ mockOptout('true');
563
568
  let result = invokeGetIdAPI({
564
569
  he: HASHED_EMAIL,
565
570
  pixelId: PIXEL_ID
566
571
  }, consentData);
567
572
  expect(result).to.be.an('object').that.has.all.keys('callback');
568
573
  expect(result.callback).to.be.a('function');
569
- localStorage.removeItem('connectIdOptOut');
570
574
  });
571
575
 
572
576
  it('Makes an ajax GET request to the production API endpoint with pixelId and he query params', () => {
@@ -804,6 +808,25 @@ describe('Yahoo ConnectID Submodule', () => {
804
808
  });
805
809
  });
806
810
  });
811
+ describe('userHasOptedOut()', () => {
812
+ it('should return a function', () => {
813
+ expect(connectIdSubmodule.userHasOptedOut).to.be.a('function');
814
+ });
815
+
816
+ it('should return false when local storage key has not been set function', () => {
817
+ expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
818
+ });
819
+
820
+ it('should return true when local storage key has been set to "1"', () => {
821
+ getLocalStorageStub.returns('1');
822
+ expect(connectIdSubmodule.userHasOptedOut()).to.be.true;
823
+ });
824
+
825
+ it('should return false when local storage key has not been set to "1"', () => {
826
+ getLocalStorageStub.returns('hello');
827
+ expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
828
+ });
829
+ });
807
830
  });
808
831
 
809
832
  describe('decode()', () => {
@@ -884,28 +907,4 @@ describe('Yahoo ConnectID Submodule', () => {
884
907
  })).to.be.true;
885
908
  });
886
909
  });
887
-
888
- describe('userHasOptedOut()', () => {
889
- afterEach(() => {
890
- localStorage.removeItem('connectIdOptOut');
891
- });
892
-
893
- it('should return a function', () => {
894
- expect(connectIdSubmodule.userHasOptedOut).to.be.a('function');
895
- });
896
-
897
- it('should return false when local storage key has not been set function', () => {
898
- expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
899
- });
900
-
901
- it('should return true when local storage key has been set to "1"', () => {
902
- localStorage.setItem('connectIdOptOut', '1');
903
- expect(connectIdSubmodule.userHasOptedOut()).to.be.true;
904
- });
905
-
906
- it('should return false when local storage key has not been set to "1"', () => {
907
- localStorage.setItem('connectIdOptOut', 'hello');
908
- expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
909
- });
910
- });
911
910
  });
@@ -158,6 +158,18 @@ describe('dailymotionBidAdapterTests', () => {
158
158
  },
159
159
  };
160
160
 
161
+ config.setConfig({
162
+ userSync: {
163
+ syncEnabled: true,
164
+ filterSettings: {
165
+ all: {
166
+ bidders: '*',
167
+ filter: 'include'
168
+ }
169
+ }
170
+ }
171
+ });
172
+
161
173
  const [request] = config.runWithBidder(
162
174
  'dailymotion',
163
175
  () => spec.buildRequests(bidRequestData, bidderRequestData),
@@ -169,6 +181,7 @@ describe('dailymotionBidAdapterTests', () => {
169
181
  expect(request.url).to.equal('https://pb.dmxleo.com');
170
182
 
171
183
  expect(reqData.pbv).to.eql('$prebid.version$');
184
+ expect(reqData.userSyncEnabled).to.be.true;
172
185
  expect(reqData.bidder_request).to.eql({
173
186
  refererInfo: bidderRequestData.refererInfo,
174
187
  uspConsent: bidderRequestData.uspConsent,
@@ -790,6 +803,18 @@ describe('dailymotionBidAdapterTests', () => {
790
803
  },
791
804
  };
792
805
 
806
+ config.setConfig({
807
+ userSync: {
808
+ syncEnabled: true,
809
+ filterSettings: {
810
+ iframe: {
811
+ bidders: ['dailymotion'],
812
+ filter: 'include'
813
+ }
814
+ }
815
+ }
816
+ });
817
+
793
818
  const [request] = config.runWithBidder(
794
819
  'dailymotion',
795
820
  () => spec.buildRequests(bidRequestData, bidderRequestData),
@@ -800,6 +825,7 @@ describe('dailymotionBidAdapterTests', () => {
800
825
  expect(request.url).to.equal('https://pb.dmxleo.com');
801
826
 
802
827
  expect(reqData.pbv).to.eql('$prebid.version$');
828
+ expect(reqData.userSyncEnabled).to.be.true;
803
829
  expect(reqData.bidder_request).to.eql({
804
830
  refererInfo: bidderRequestData.refererInfo,
805
831
  uspConsent: bidderRequestData.uspConsent,
@@ -942,6 +968,22 @@ describe('dailymotionBidAdapterTests', () => {
942
968
  },
943
969
  };
944
970
 
971
+ config.setConfig({
972
+ userSync: {
973
+ syncEnabled: true,
974
+ filterSettings: {
975
+ image: {
976
+ bidders: ['dailymotion'],
977
+ filter: 'include'
978
+ },
979
+ iframe: {
980
+ bidders: ['dailymotion'],
981
+ filter: 'exclude',
982
+ },
983
+ }
984
+ }
985
+ });
986
+
945
987
  const [request] = config.runWithBidder(
946
988
  'dailymotion',
947
989
  () => spec.buildRequests(bidRequestData, bidderRequestData),
@@ -952,6 +994,7 @@ describe('dailymotionBidAdapterTests', () => {
952
994
  expect(request.url).to.equal('https://pb.dmxleo.com');
953
995
 
954
996
  expect(reqData.pbv).to.eql('$prebid.version$');
997
+ expect(reqData.userSyncEnabled).to.be.true;
955
998
  expect(reqData.bidder_request).to.eql({
956
999
  refererInfo: bidderRequestData.refererInfo,
957
1000
  uspConsent: bidderRequestData.uspConsent,
@@ -1012,6 +1055,12 @@ describe('dailymotionBidAdapterTests', () => {
1012
1055
  },
1013
1056
  }];
1014
1057
 
1058
+ config.setConfig({
1059
+ userSync: {
1060
+ syncEnabled: false,
1061
+ }
1062
+ });
1063
+
1015
1064
  const [request] = config.runWithBidder(
1016
1065
  'dailymotion',
1017
1066
  () => spec.buildRequests(bidRequestDataWithApi, {}),
@@ -1025,6 +1074,7 @@ describe('dailymotionBidAdapterTests', () => {
1025
1074
  expect(reqData.coppa).to.be.false;
1026
1075
 
1027
1076
  expect(reqData.pbv).to.eql('$prebid.version$');
1077
+ expect(reqData.userSyncEnabled).to.be.false;
1028
1078
  expect(reqData.bidder_request).to.eql({
1029
1079
  gdprConsent: {
1030
1080
  apiVersion: 1,
@@ -25,6 +25,7 @@ describe('docereeadmanager', function () {
25
25
  userid: '',
26
26
  zipcode: '',
27
27
  userconsent: '',
28
+ platformUid: ''
28
29
  },
29
30
  },
30
31
  },
@@ -398,7 +398,7 @@ describe('GamoshiAdapter', () => {
398
398
 
399
399
  expect(response.data.imp[0].video.mimes).to.equal(bidRequestWithVideo.mediaTypes.video.mimes);
400
400
  expect(response.data.imp[0].video.skip).to.not.exist;
401
- expect(response.data.imp[0].video.placement).to.equal(1);
401
+ expect(response.data.imp[0].video.plcmt).to.equal(1);
402
402
  expect(response.data.imp[0].video.minduration).to.equal(1);
403
403
  expect(response.data.imp[0].video.playbackmethod).to.equal(1);
404
404
  expect(response.data.imp[0].video.startdelay).to.equal(1);
@@ -93,6 +93,15 @@ describe('ID5 ID System', function () {
93
93
  'Content-Type': 'application/json'
94
94
  };
95
95
 
96
+ function expDaysStr(expDays) {
97
+ return (new Date(Date.now() + (1000 * 60 * 60 * 24 * expDays))).toUTCString();
98
+ }
99
+
100
+ function storeInStorage(key, value, expDays) {
101
+ id5System.storage.setDataInLocalStorage(`${key}_exp`, expDaysStr(expDays));
102
+ id5System.storage.setDataInLocalStorage(`${key}`, value);
103
+ }
104
+
96
105
  function getId5FetchConfig(partner = ID5_TEST_PARTNER_ID, storageName = id5System.ID5_STORAGE_NAME, storageType = 'html5') {
97
106
  return {
98
107
  name: ID5_MODULE_NAME,
@@ -637,8 +646,6 @@ describe('ID5 ID System', function () {
637
646
 
638
647
  it('should call the ID5 server with nb=1 when no stored value exists and reset after', async function () {
639
648
  const xhrServerMock = new XhrServerMock(server);
640
- const TEST_PARTNER_ID = 189;
641
- coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(TEST_PARTNER_ID));
642
649
 
643
650
  // Trigger the fetch but we await on it later
644
651
  const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
@@ -648,28 +655,28 @@ describe('ID5 ID System', function () {
648
655
  expect(requestBody.nbPage).is.eq(1);
649
656
 
650
657
  fetchRequest.respond(200, responseHeader, JSON.stringify(ID5_JSON_RESPONSE));
651
- await submoduleResponsePromise;
658
+ const response = await submoduleResponsePromise;
652
659
 
653
- expect(id5System.getNbFromCache(TEST_PARTNER_ID)).is.eq(0);
660
+ expect(response.nbPage).is.undefined;
654
661
  });
655
662
 
656
663
  it('should call the ID5 server with incremented nb when stored value exists and reset after', async function () {
657
664
  const xhrServerMock = new XhrServerMock(server);
658
665
  const TEST_PARTNER_ID = 189;
659
666
  const config = getId5FetchConfig(TEST_PARTNER_ID);
660
- id5System.storeNbInCache(TEST_PARTNER_ID, 1);
667
+ const storedObj = {...ID5_STORED_OBJ, nbPage: 1};
661
668
 
662
669
  // Trigger the fetch but we await on it later
663
- const submoduleResponsePromise = callSubmoduleGetId(config, undefined, ID5_STORED_OBJ);
670
+ const submoduleResponsePromise = callSubmoduleGetId(config, undefined, storedObj);
664
671
 
665
672
  const fetchRequest = await xhrServerMock.expectFetchRequest();
666
673
  const requestBody = JSON.parse(fetchRequest.requestBody);
667
674
  expect(requestBody.nbPage).is.eq(2);
668
675
 
669
676
  fetchRequest.respond(200, responseHeader, JSON.stringify(ID5_JSON_RESPONSE));
670
- await submoduleResponsePromise;
677
+ const response = await submoduleResponsePromise;
671
678
 
672
- expect(id5System.getNbFromCache(TEST_PARTNER_ID)).is.eq(0);
679
+ expect(response.nbPage).is.undefined;
673
680
  });
674
681
 
675
682
  it('should call the ID5 server with ab_testing object when abTesting is turned on', async function () {
@@ -720,45 +727,6 @@ describe('ID5 ID System', function () {
720
727
  await submoduleResponsePromise;
721
728
  });
722
729
 
723
- it('should store the privacy object from the ID5 server response', async function () {
724
- const xhrServerMock = new XhrServerMock(server);
725
-
726
- // Trigger the fetch but we await on it later
727
- const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
728
-
729
- const privacy = {
730
- jurisdiction: 'gdpr',
731
- id5_consent: true
732
- };
733
-
734
- const fetchRequest = await xhrServerMock.expectFetchRequest();
735
- const responseObject = utils.deepClone(ID5_JSON_RESPONSE);
736
- responseObject.privacy = privacy;
737
-
738
- fetchRequest.respond(200, responseHeader, JSON.stringify(responseObject));
739
- await submoduleResponsePromise;
740
-
741
- expect(id5System.getFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME)).is.eq(JSON.stringify(privacy));
742
- coreStorage.removeDataFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME);
743
- });
744
-
745
- it('should not store a privacy object if not part of ID5 server response', async function () {
746
- const xhrServerMock = new XhrServerMock(server);
747
- coreStorage.removeDataFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME);
748
-
749
- // Trigger the fetch but we await on it later
750
- const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
751
-
752
- const fetchRequest = await xhrServerMock.expectFetchRequest();
753
- const responseObject = utils.deepClone(ID5_JSON_RESPONSE);
754
- responseObject.privacy = undefined;
755
-
756
- fetchRequest.respond(200, responseHeader, JSON.stringify(responseObject));
757
- await submoduleResponsePromise;
758
-
759
- expect(id5System.getFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME)).is.null;
760
- });
761
-
762
730
  describe('with successful external module call', function () {
763
731
  const MOCK_RESPONSE = {
764
732
  ...ID5_JSON_RESPONSE,
@@ -926,7 +894,6 @@ describe('ID5 ID System', function () {
926
894
  sinon.stub(events, 'getEvents').returns([]);
927
895
  coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME);
928
896
  coreStorage.removeDataFromLocalStorage(`${id5System.ID5_STORAGE_NAME}_last`);
929
- coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
930
897
  coreStorage.setDataInLocalStorage(id5System.ID5_STORAGE_NAME + '_cst', getConsentHash());
931
898
  adUnits = [getAdUnitMock()];
932
899
  });
@@ -934,19 +901,18 @@ describe('ID5 ID System', function () {
934
901
  events.getEvents.restore();
935
902
  coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME);
936
903
  coreStorage.removeDataFromLocalStorage(`${id5System.ID5_STORAGE_NAME}_last`);
937
- coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
938
904
  coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME + '_cst');
939
905
  sandbox.restore();
940
906
  });
941
907
 
942
908
  it('should add stored ID from cache to bids', function (done) {
943
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
909
+ storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
944
910
 
945
911
  init(config);
946
912
  setSubmoduleRegistry([id5System.id5IdSubmodule]);
947
913
  config.setConfig(getFetchLocalStorageConfig());
948
914
 
949
- requestBidsHook(function () {
915
+ requestBidsHook(wrapAsyncExpects(done, () => {
950
916
  adUnits.forEach(unit => {
951
917
  unit.bids.forEach(bid => {
952
918
  expect(bid).to.have.deep.nested.property(`userId.${ID5_EIDS_NAME}`);
@@ -964,11 +930,11 @@ describe('ID5 ID System', function () {
964
930
  });
965
931
  });
966
932
  done();
967
- }, {adUnits});
933
+ }), {adUnits});
968
934
  });
969
935
 
970
936
  it('should add stored EUID from cache to bids', function (done) {
971
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_EUID), 1);
937
+ storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_EUID), 1);
972
938
 
973
939
  init(config);
974
940
  setSubmoduleRegistry([id5System.id5IdSubmodule]);
@@ -997,7 +963,7 @@ describe('ID5 ID System', function () {
997
963
  });
998
964
 
999
965
  it('should add stored TRUE_LINK_ID from cache to bids', function (done) {
1000
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_TRUE_LINK), 1);
966
+ storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_TRUE_LINK), 1);
1001
967
 
1002
968
  init(config);
1003
969
  setSubmoduleRegistry([id5System.id5IdSubmodule]);
@@ -1041,48 +1007,20 @@ describe('ID5 ID System', function () {
1041
1007
  }, {adUnits});
1042
1008
  });
1043
1009
 
1044
- it('should set nb=1 in cache when no stored nb value exists and cached ID', function (done) {
1045
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
1046
- coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
1047
-
1048
- init(config);
1049
- setSubmoduleRegistry([id5System.id5IdSubmodule]);
1050
- config.setConfig(getFetchLocalStorageConfig());
1051
-
1052
- requestBidsHook((adUnitConfig) => {
1053
- expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(1);
1054
- done();
1055
- }, {adUnits});
1056
- });
1057
-
1058
- it('should increment nb in cache when stored nb value exists and cached ID', function (done) {
1059
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
1060
- id5System.storeNbInCache(ID5_TEST_PARTNER_ID, 1);
1061
-
1062
- init(config);
1063
- setSubmoduleRegistry([id5System.id5IdSubmodule]);
1064
- config.setConfig(getFetchLocalStorageConfig());
1065
-
1066
- requestBidsHook(() => {
1067
- expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(2);
1068
- done();
1069
- }, {adUnits});
1070
- });
1071
-
1072
1010
  it('should call ID5 servers with signature and incremented nb post auction if refresh needed', function () {
1073
1011
  const xhrServerMock = new XhrServerMock(server);
1074
- const initialLocalStorageValue = JSON.stringify(ID5_STORED_OBJ);
1075
- id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, initialLocalStorageValue, 1);
1076
- id5System.storeInLocalStorage(`${id5System.ID5_STORAGE_NAME}_last`, id5System.expDaysStr(-1), 1);
1012
+ let storedObject = ID5_STORED_OBJ;
1013
+ storedObject.nbPage = 1;
1014
+ const initialLocalStorageValue = JSON.stringify(storedObject);
1015
+ storeInStorage(id5System.ID5_STORAGE_NAME, initialLocalStorageValue, 1);
1016
+ storeInStorage(`${id5System.ID5_STORAGE_NAME}_last`, expDaysStr(-1), 1);
1077
1017
 
1078
- id5System.storeNbInCache(ID5_TEST_PARTNER_ID, 1);
1079
1018
  let id5Config = getFetchLocalStorageConfig();
1080
1019
  id5Config.userSync.userIds[0].storage.refreshInSeconds = 2;
1081
1020
  id5Config.userSync.auctionDelay = 0; // do not trigger callback before auction
1082
1021
  init(config);
1083
1022
  setSubmoduleRegistry([id5System.id5IdSubmodule]);
1084
1023
  config.setConfig(id5Config);
1085
-
1086
1024
  return new Promise((resolve) => {
1087
1025
  requestBidsHook(() => {
1088
1026
  resolve();
@@ -1095,18 +1033,7 @@ describe('ID5 ID System', function () {
1095
1033
  const requestBody = JSON.parse(request.requestBody);
1096
1034
  expect(requestBody.s).is.eq(ID5_STORED_SIGNATURE);
1097
1035
  expect(requestBody.nbPage).is.eq(2);
1098
- expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(0);
1099
1036
  request.respond(200, HEADERS_CONTENT_TYPE_JSON, JSON.stringify(ID5_JSON_RESPONSE));
1100
-
1101
- return new Promise(function (resolve) {
1102
- (function waitForCondition() {
1103
- if (id5System.getFromLocalStorage(id5System.ID5_STORAGE_NAME) !== initialLocalStorageValue) return resolve();
1104
- setTimeout(waitForCondition, 30);
1105
- })();
1106
- });
1107
- }).then(() => {
1108
- expect(decodeURIComponent(id5System.getFromLocalStorage(id5System.ID5_STORAGE_NAME))).is.eq(JSON.stringify(ID5_JSON_RESPONSE));
1109
- expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(0);
1110
1037
  });
1111
1038
  });
1112
1039
  });
@@ -4,6 +4,10 @@ import * as idImportlibrary from 'modules/idImportLibrary.js';
4
4
  import {getGlobal} from '../../../src/prebidGlobal.js';
5
5
  import {config} from 'src/config.js';
6
6
  import {hook} from '../../../src/hook.js';
7
+ import * as activities from '../../../src/activities/rules.js';
8
+ import { ACTIVITY_ENRICH_UFPD } from '../../../src/activities/activities.js';
9
+ import { CONF_DEFAULT_FULL_BODY_SCAN, CONF_DEFAULT_INPUT_SCAN } from '../../../modules/idImportLibrary.js';
10
+
7
11
  var expect = require('chai').expect;
8
12
 
9
13
  const mockMutationObserver = {
@@ -86,6 +90,16 @@ describe('IdImportLibrary Tests', function () {
86
90
  idImportlibrary.setConfig(config);
87
91
  expect(config.inputscan).to.be.equal(true);
88
92
  });
93
+ it('results when activity is not allowed', function () {
94
+ sandbox.stub(activities, 'isActivityAllowed').callsFake((activity) => {
95
+ return !(activity === ACTIVITY_ENRICH_UFPD);
96
+ });
97
+ let config = { 'url': 'URL', 'debounce': 0 };
98
+ idImportlibrary.setConfig(config);
99
+ sinon.assert.called(utils.logError);
100
+ expect(config.inputscan).to.be.not.equal(CONF_DEFAULT_INPUT_SCAN);
101
+ expect(config.fullscan).to.be.not.equal(CONF_DEFAULT_FULL_BODY_SCAN);
102
+ });
89
103
  });
90
104
  describe('Test with email is found', function () {
91
105
  let mutationObserverStub;