prebid.js 7.35.0 → 7.37.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 (229) hide show
  1. package/.devcontainer/Dockerfile +2 -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/admaruBidAdapter.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/aolBidAdapter.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/audiencerunBidAdapter.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/bluebillywigBidAdapter.js +1 -1
  25. package/dist/bridgewellBidAdapter.js +1 -1
  26. package/dist/brightMountainMediaBidAdapter.js +1 -1
  27. package/dist/brightcomBidAdapter.js +1 -1
  28. package/dist/brightcomSSPBidAdapter.js +1 -0
  29. package/dist/carodaBidAdapter.js +1 -1
  30. package/dist/chtnwBidAdapter.js +1 -1
  31. package/dist/concertBidAdapter.js +1 -1
  32. package/dist/connectadBidAdapter.js +1 -1
  33. package/dist/consumableBidAdapter.js +1 -1
  34. package/dist/conversantBidAdapter.js +1 -1
  35. package/dist/craftBidAdapter.js +1 -1
  36. package/dist/criteoBidAdapter.js +1 -1
  37. package/dist/cwireBidAdapter.js +1 -1
  38. package/dist/dependencies.json +3 -0
  39. package/dist/discoveryBidAdapter.js +1 -1
  40. package/dist/dspxBidAdapter.js +1 -1
  41. package/dist/eplanningBidAdapter.js +1 -1
  42. package/dist/feedadBidAdapter.js +1 -1
  43. package/dist/finativeBidAdapter.js +1 -1
  44. package/dist/freewheel-sspBidAdapter.js +1 -1
  45. package/dist/glimpseBidAdapter.js +1 -1
  46. package/dist/gmosspBidAdapter.js +1 -1
  47. package/dist/goldbachBidAdapter.js +1 -1
  48. package/dist/gridBidAdapter.js +1 -1
  49. package/dist/gridNMBidAdapter.js +1 -1
  50. package/dist/gumgumBidAdapter.js +1 -1
  51. package/dist/h12mediaBidAdapter.js +1 -1
  52. package/dist/id5IdSystem.js +1 -1
  53. package/dist/impactifyBidAdapter.js +1 -1
  54. package/dist/improvedigitalBidAdapter.js +1 -1
  55. package/dist/incrxBidAdapter.js +1 -1
  56. package/dist/inmarBidAdapter.js +1 -1
  57. package/dist/insticatorBidAdapter.js +1 -1
  58. package/dist/ixBidAdapter.js +1 -1
  59. package/dist/jixieBidAdapter.js +1 -1
  60. package/dist/justpremiumBidAdapter.js +1 -1
  61. package/dist/konduitAnalyticsAdapter.js +1 -1
  62. package/dist/kueezBidAdapter.js +1 -1
  63. package/dist/kueezRtbBidAdapter.js +1 -1
  64. package/dist/lassoBidAdapter.js +1 -1
  65. package/dist/lifestreetBidAdapter.js +1 -1
  66. package/dist/limelightDigitalBidAdapter.js +1 -1
  67. package/dist/liveIntentIdSystem.js +1 -1
  68. package/dist/livewrappedBidAdapter.js +1 -1
  69. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  70. package/dist/logicadBidAdapter.js +1 -1
  71. package/dist/loglyliftBidAdapter.js +1 -1
  72. package/dist/magniteAnalyticsAdapter.js +1 -1
  73. package/dist/malltvAnalyticsAdapter.js +1 -1
  74. package/dist/marsmediaBidAdapter.js +1 -1
  75. package/dist/mediafuseBidAdapter.js +1 -1
  76. package/dist/mediagoBidAdapter.js +1 -1
  77. package/dist/mediakeysBidAdapter.js +1 -1
  78. package/dist/mediasquareBidAdapter.js +1 -1
  79. package/dist/mgidBidAdapter.js +1 -1
  80. package/dist/minutemediaBidAdapter.js +1 -1
  81. package/dist/minutemediaplusBidAdapter.js +1 -0
  82. package/dist/neuwoRtdProvider.js +1 -0
  83. package/dist/nextMillenniumBidAdapter.js +1 -1
  84. package/dist/nexx360BidAdapter.js +1 -1
  85. package/dist/not-for-prod/prebid.js +141 -137
  86. package/dist/oguryBidAdapter.js +1 -1
  87. package/dist/onetagBidAdapter.js +1 -1
  88. package/dist/ooloAnalyticsAdapter.js +1 -1
  89. package/dist/outbrainBidAdapter.js +1 -1
  90. package/dist/parrableIdSystem.js +1 -1
  91. package/dist/pixfutureBidAdapter.js +1 -1
  92. package/dist/prebid-core.js +1 -1
  93. package/dist/prebidServerBidAdapter.js +1 -1
  94. package/dist/proxistoreBidAdapter.js +1 -1
  95. package/dist/publinkIdSystem.js +1 -1
  96. package/dist/pubmaticBidAdapter.js +1 -1
  97. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  98. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  99. package/dist/pxyzBidAdapter.js +1 -1
  100. package/dist/quantcastBidAdapter.js +1 -1
  101. package/dist/readpeakBidAdapter.js +1 -1
  102. package/dist/relaidoBidAdapter.js +1 -1
  103. package/dist/rhythmoneBidAdapter.js +1 -1
  104. package/dist/riseBidAdapter.js +1 -1
  105. package/dist/rubiconAnalyticsAdapter.js +1 -1
  106. package/dist/rubiconBidAdapter.js +1 -1
  107. package/dist/scatteredBidAdapter.js +1 -0
  108. package/dist/seedingAllianceBidAdapter.js +1 -1
  109. package/dist/seedtagBidAdapter.js +1 -1
  110. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  111. package/dist/sharethroughBidAdapter.js +1 -1
  112. package/dist/shinezBidAdapter.js +1 -1
  113. package/dist/sirdataRtdProvider.js +1 -1
  114. package/dist/smaatoBidAdapter.js +1 -1
  115. package/dist/smartadserverBidAdapter.js +1 -1
  116. package/dist/smartxBidAdapter.js +1 -1
  117. package/dist/smilewantedBidAdapter.js +1 -1
  118. package/dist/sonobiBidAdapter.js +1 -1
  119. package/dist/sovrnAnalyticsAdapter.js +1 -1
  120. package/dist/sovrnBidAdapter.js +1 -1
  121. package/dist/sspBCBidAdapter.js +1 -1
  122. package/dist/sublimeBidAdapter.js +1 -1
  123. package/dist/synacormediaBidAdapter.js +1 -1
  124. package/dist/targetVideoBidAdapter.js +1 -1
  125. package/dist/teadsBidAdapter.js +1 -1
  126. package/dist/trionBidAdapter.js +1 -1
  127. package/dist/tripleliftBidAdapter.js +1 -1
  128. package/dist/ttdBidAdapter.js +1 -1
  129. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  130. package/dist/uid2IdSystem.js +1 -1
  131. package/dist/underdogmediaBidAdapter.js +1 -1
  132. package/dist/undertoneBidAdapter.js +1 -1
  133. package/dist/userId.js +1 -1
  134. package/dist/vidazooBidAdapter.js +1 -1
  135. package/dist/videobyteBidAdapter.js +1 -1
  136. package/dist/visxBidAdapter.js +1 -1
  137. package/dist/vuukleBidAdapter.js +1 -1
  138. package/dist/widespaceBidAdapter.js +1 -1
  139. package/dist/winrBidAdapter.js +1 -1
  140. package/dist/yahoosspBidAdapter.js +1 -1
  141. package/dist/yieldmoBidAdapter.js +1 -1
  142. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  143. package/integrationExamples/gpt/neuwoRtdProvider_example.html +190 -0
  144. package/modules/33acrossBidAdapter.js +13 -4
  145. package/modules/adagioBidAdapter.js +14 -14
  146. package/modules/adagioBidAdapter.md +3 -1
  147. package/modules/admaruBidAdapter.js +19 -1
  148. package/modules/aidemBidAdapter.js +90 -65
  149. package/modules/aidemBidAdapter.md +10 -7
  150. package/modules/ajaBidAdapter.js +6 -1
  151. package/modules/amxIdSystem.md +2 -10
  152. package/modules/aolBidAdapter.js +1 -1
  153. package/modules/appnexusBidAdapter.js +45 -48
  154. package/modules/brightcomBidAdapter.js +1 -0
  155. package/modules/brightcomSSPBidAdapter.js +323 -0
  156. package/modules/brightcomSSPBidAdapter.md +46 -0
  157. package/modules/criteoBidAdapter.js +4 -5
  158. package/modules/cwireBidAdapter.md +9 -3
  159. package/modules/discoveryBidAdapter.js +22 -12
  160. package/modules/feedadBidAdapter.js +35 -15
  161. package/modules/fpdModule/index.md +5 -2
  162. package/modules/freewheel-sspBidAdapter.js +5 -1
  163. package/modules/gridBidAdapter.js +3 -1
  164. package/modules/incrxBidAdapter.js +2 -0
  165. package/modules/ixBidAdapter.js +318 -175
  166. package/modules/kueezRtbBidAdapter.js +54 -20
  167. package/modules/limelightDigitalBidAdapter.js +6 -1
  168. package/modules/limelightDigitalBidAdapter.md +12 -2
  169. package/modules/liveIntentIdSystem.js +1 -1
  170. package/modules/livewrappedBidAdapter.js +28 -16
  171. package/modules/mediagoBidAdapter.js +22 -17
  172. package/modules/minutemediaplusBidAdapter.js +291 -0
  173. package/modules/minutemediaplusBidAdapter.md +35 -0
  174. package/modules/neuwoRtdProvider.js +171 -0
  175. package/modules/neuwoRtdProvider.md +40 -0
  176. package/modules/nextMillenniumBidAdapter.js +9 -1
  177. package/modules/nexx360BidAdapter.js +1 -1
  178. package/modules/prebidServerBidAdapter/ortbConverter.js +6 -0
  179. package/modules/proxistoreBidAdapter.js +2 -2
  180. package/modules/pubmaticBidAdapter.js +4 -0
  181. package/modules/pubxaiAnalyticsAdapter.js +2 -2
  182. package/modules/scatteredBidAdapter.js +72 -0
  183. package/modules/scatteredBidAdapter.md +36 -0
  184. package/modules/sirdataRtdProvider.js +262 -284
  185. package/modules/smartxBidAdapter.js +2 -0
  186. package/modules/smilewantedBidAdapter.js +5 -0
  187. package/modules/sonobiBidAdapter.js +1 -10
  188. package/modules/topicsFpdModule.md +62 -0
  189. package/modules/tripleliftBidAdapter.js +4 -0
  190. package/modules/userId/eids.js +1 -1
  191. package/modules/vidazooBidAdapter.js +3 -1
  192. package/modules/yahoosspBidAdapter.js +1 -1
  193. package/modules/yieldmoBidAdapter.js +1 -0
  194. package/package.json +2 -2
  195. package/src/adapterManager.js +30 -14
  196. package/src/utils.js +1 -1
  197. package/test/spec/modules/33acrossBidAdapter_spec.js +51 -18
  198. package/test/spec/modules/adagioBidAdapter_spec.js +2 -2
  199. package/test/spec/modules/admaruBidAdapter_spec.js +48 -0
  200. package/test/spec/modules/aidemBidAdapter_spec.js +77 -10
  201. package/test/spec/modules/ajaBidAdapter_spec.js +21 -1
  202. package/test/spec/modules/aolBidAdapter_spec.js +2 -2
  203. package/test/spec/modules/appnexusBidAdapter_spec.js +123 -16
  204. package/test/spec/modules/brightcomSSPBidAdapter_spec.js +411 -0
  205. package/test/spec/modules/criteoBidAdapter_spec.js +24 -1
  206. package/test/spec/modules/eids_spec.js +1 -1
  207. package/test/spec/modules/feedadBidAdapter_spec.js +47 -77
  208. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +1 -1
  209. package/test/spec/modules/incrxBidAdapter_spec.js +4 -0
  210. package/test/spec/modules/ixBidAdapter_spec.js +24 -54
  211. package/test/spec/modules/kueezRtbBidAdapter_spec.js +63 -22
  212. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +35 -5
  213. package/test/spec/modules/livewrappedBidAdapter_spec.js +267 -2
  214. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +519 -0
  215. package/test/spec/modules/neuwoRtdProvider_spec.js +123 -0
  216. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +11 -0
  217. package/test/spec/modules/prebidServerBidAdapter_spec.js +56 -0
  218. package/test/spec/modules/proxistoreBidAdapter_spec.js +2 -2
  219. package/test/spec/modules/pubmaticBidAdapter_spec.js +15 -0
  220. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +3 -1
  221. package/test/spec/modules/scatteredBidAdapter_spec.js +210 -0
  222. package/test/spec/modules/sirdataRtdProvider_spec.js +116 -22
  223. package/test/spec/modules/smilewantedBidAdapter_spec.js +54 -3
  224. package/test/spec/modules/sonobiBidAdapter_spec.js +3 -25
  225. package/test/spec/modules/tripleliftBidAdapter_spec.js +9 -2
  226. package/test/spec/modules/userId_spec.js +1 -1
  227. package/test/spec/modules/vidazooBidAdapter_spec.js +4 -1
  228. package/test/spec/modules/yahoosspBidAdapter_spec.js +1 -1
  229. package/test/spec/unit/core/adapterManager_spec.js +147 -0
@@ -10,7 +10,12 @@ describe('limelightDigitalAdapter', function () {
10
10
  host: 'exchange.ortb.net',
11
11
  adUnitId: 123,
12
12
  adUnitType: 'banner',
13
- publisherId: 'perfectPublisher'
13
+ publisherId: 'perfectPublisher',
14
+ custom1: 'custom1',
15
+ custom2: 'custom2',
16
+ custom3: 'custom3',
17
+ custom4: 'custom4',
18
+ custom5: 'custom5'
14
19
  },
15
20
  placementCode: 'placement_0',
16
21
  auctionId: '74f78609-a92d-4cf1-869f-1b244bbfb5d2',
@@ -49,7 +54,12 @@ describe('limelightDigitalAdapter', function () {
49
54
  params: {
50
55
  host: 'ads.project-limelight.com',
51
56
  adUnitId: 456,
52
- adUnitType: 'banner'
57
+ adUnitType: 'banner',
58
+ custom1: 'custom1',
59
+ custom2: 'custom2',
60
+ custom3: 'custom3',
61
+ custom4: 'custom4',
62
+ custom5: 'custom5'
53
63
  },
54
64
  placementCode: 'placement_1',
55
65
  auctionId: '482f88de-29ab-45c8-981a-d25e39454a34',
@@ -90,7 +100,12 @@ describe('limelightDigitalAdapter', function () {
90
100
  host: 'exchange.ortb.net',
91
101
  adUnitId: 789,
92
102
  adUnitType: 'video',
93
- publisherId: 'secondPerfectPublisher'
103
+ publisherId: 'secondPerfectPublisher',
104
+ custom1: 'custom1',
105
+ custom2: 'custom2',
106
+ custom3: 'custom3',
107
+ custom4: 'custom4',
108
+ custom5: 'custom5'
94
109
  },
95
110
  placementCode: 'placement_2',
96
111
  auctionId: 'e4771143-6aa7-41ec-8824-ced4342c96c8',
@@ -128,7 +143,12 @@ describe('limelightDigitalAdapter', function () {
128
143
  params: {
129
144
  host: 'exchange.ortb.net',
130
145
  adUnitId: 789,
131
- adUnitType: 'video'
146
+ adUnitType: 'video',
147
+ custom1: 'custom1',
148
+ custom2: 'custom2',
149
+ custom3: 'custom3',
150
+ custom4: 'custom4',
151
+ custom5: 'custom5'
132
152
  },
133
153
  placementCode: 'placement_2',
134
154
  auctionId: 'e4771143-6aa7-41ec-8824-ced4342c96c8',
@@ -196,7 +216,12 @@ describe('limelightDigitalAdapter', function () {
196
216
  'transactionId',
197
217
  'publisherId',
198
218
  'userIdAsEids',
199
- 'supplyChain'
219
+ 'supplyChain',
220
+ 'custom1',
221
+ 'custom2',
222
+ 'custom3',
223
+ 'custom4',
224
+ 'custom5'
200
225
  );
201
226
  expect(adUnit.id).to.be.a('number');
202
227
  expect(adUnit.bidId).to.be.a('string');
@@ -205,6 +230,11 @@ describe('limelightDigitalAdapter', function () {
205
230
  expect(adUnit.sizes).to.be.an('array');
206
231
  expect(adUnit.userIdAsEids).to.be.an('array');
207
232
  expect(adUnit.supplyChain).to.be.an('object');
233
+ expect(adUnit.custom1).to.be.a('string');
234
+ expect(adUnit.custom2).to.be.a('string');
235
+ expect(adUnit.custom3).to.be.a('string');
236
+ expect(adUnit.custom4).to.be.a('string');
237
+ expect(adUnit.custom5).to.be.a('string');
208
238
  })
209
239
  })
210
240
  })
@@ -13,6 +13,10 @@ describe('Livewrapped adapter tests', function () {
13
13
 
14
14
  window.livewrapped = undefined;
15
15
 
16
+ config.setConfig({
17
+ device: { w: 100, h: 100 }
18
+ });
19
+
16
20
  bidderRequest = {
17
21
  bidderCode: 'livewrapped',
18
22
  auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',
@@ -43,6 +47,7 @@ describe('Livewrapped adapter tests', function () {
43
47
 
44
48
  afterEach(function () {
45
49
  sandbox.restore();
50
+ config.resetConfig();
46
51
  });
47
52
 
48
53
  describe('isBidRequestValid', function() {
@@ -351,7 +356,7 @@ describe('Livewrapped adapter tests', function () {
351
356
  expect(data).to.deep.equal(expectedQuery);
352
357
  });
353
358
 
354
- it('should make a well-formed single request object with ad blocker revovered parameter', function() {
359
+ it('should make a well-formed single request object with ad blocker recovered parameter', function() {
355
360
  sandbox.stub(utils, 'getWindowTop').returns({ I12C: { Morph: 1 } });
356
361
  sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
357
362
  sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
@@ -489,7 +494,7 @@ describe('Livewrapped adapter tests', function () {
489
494
  return {bundle: 'bundle', domain: 'https://appdomain.com'};
490
495
  }
491
496
  if (key === 'device') {
492
- return {ifa: 'ifa', width: 300, height: 200};
497
+ return {ifa: 'ifa', w: 300, h: 200};
493
498
  }
494
499
  return origGetConfig.apply(config, arguments);
495
500
  });
@@ -839,6 +844,266 @@ describe('Livewrapped adapter tests', function () {
839
844
 
840
845
  expect(data).to.deep.equal(expectedQuery);
841
846
  });
847
+
848
+ it('width and height should default to values from window when not set in config', function() {
849
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
850
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
851
+
852
+ config.resetConfig();
853
+
854
+ let testbidRequest = clone(bidderRequest);
855
+ let result = spec.buildRequests(testbidRequest.bids, testbidRequest);
856
+ let data = JSON.parse(result.data);
857
+
858
+ expect(result.url).to.equal('https://lwadm.com/ad');
859
+
860
+ let expectedQuery = {
861
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
862
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
863
+ userId: 'user id',
864
+ url: 'https://www.domain.com',
865
+ seats: {'dsp': ['seat 1']},
866
+ version: '1.4',
867
+ width: window.innerWidth,
868
+ height: window.innerHeight,
869
+ cookieSupport: true,
870
+ adRequests: [{
871
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
872
+ callerAdUnitId: 'panorama_d_1',
873
+ bidId: '2ffb201a808da7',
874
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
875
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}]
876
+ }]
877
+ };
878
+
879
+ expect(data).to.deep.equal(expectedQuery);
880
+ });
881
+ });
882
+
883
+ describe('price floors module', function() {
884
+ it('price floors module disabled', function() {
885
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
886
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
887
+
888
+ let testbidRequest = clone(bidderRequest);
889
+ let result = spec.buildRequests(testbidRequest.bids, testbidRequest);
890
+ let data = JSON.parse(result.data);
891
+
892
+ expect(result.url).to.equal('https://lwadm.com/ad');
893
+
894
+ let expectedQuery = {
895
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
896
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
897
+ userId: 'user id',
898
+ url: 'https://www.domain.com',
899
+ seats: {'dsp': ['seat 1']},
900
+ version: '1.4',
901
+ width: 100,
902
+ height: 100,
903
+ cookieSupport: true,
904
+ adRequests: [{
905
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
906
+ callerAdUnitId: 'panorama_d_1',
907
+ bidId: '2ffb201a808da7',
908
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
909
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}]
910
+ }]
911
+ };
912
+
913
+ expect(data).to.deep.equal(expectedQuery);
914
+ });
915
+
916
+ it('getFloor does not return an object', function() {
917
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
918
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
919
+
920
+ let testbidRequest = clone(bidderRequest);
921
+ let bids = testbidRequest.bids.map(b => {
922
+ b.getFloor = function () { return undefined; }
923
+ return b;
924
+ });
925
+ let result = spec.buildRequests(bids, testbidRequest);
926
+ let data = JSON.parse(result.data);
927
+
928
+ expect(result.url).to.equal('https://lwadm.com/ad');
929
+
930
+ let expectedQuery = {
931
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
932
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
933
+ userId: 'user id',
934
+ url: 'https://www.domain.com',
935
+ seats: {'dsp': ['seat 1']},
936
+ version: '1.4',
937
+ width: 100,
938
+ height: 100,
939
+ cookieSupport: true,
940
+ adRequests: [{
941
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
942
+ callerAdUnitId: 'panorama_d_1',
943
+ bidId: '2ffb201a808da7',
944
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
945
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}]
946
+ }]
947
+ };
948
+
949
+ expect(data).to.deep.equal(expectedQuery);
950
+ });
951
+
952
+ it('getFloor returns a NaN floor', function() {
953
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
954
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
955
+
956
+ let testbidRequest = clone(bidderRequest);
957
+ let bids = testbidRequest.bids.map(b => {
958
+ b.getFloor = function () { return { floor: undefined }; }
959
+ return b;
960
+ });
961
+ let result = spec.buildRequests(bids, testbidRequest);
962
+ let data = JSON.parse(result.data);
963
+
964
+ expect(result.url).to.equal('https://lwadm.com/ad');
965
+
966
+ let expectedQuery = {
967
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
968
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
969
+ userId: 'user id',
970
+ url: 'https://www.domain.com',
971
+ seats: {'dsp': ['seat 1']},
972
+ version: '1.4',
973
+ width: 100,
974
+ height: 100,
975
+ cookieSupport: true,
976
+ adRequests: [{
977
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
978
+ callerAdUnitId: 'panorama_d_1',
979
+ bidId: '2ffb201a808da7',
980
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
981
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}]
982
+ }]
983
+ };
984
+
985
+ expect(data).to.deep.equal(expectedQuery);
986
+ });
987
+
988
+ it('getFloor returns unexpected currency', function() {
989
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
990
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
991
+
992
+ let testbidRequest = clone(bidderRequest);
993
+ let bids = testbidRequest.bids.map(b => {
994
+ b.getFloor = function () { return { floor: 10, currency: 'EUR' }; }
995
+ return b;
996
+ });
997
+ let result = spec.buildRequests(bids, testbidRequest);
998
+ let data = JSON.parse(result.data);
999
+
1000
+ expect(result.url).to.equal('https://lwadm.com/ad');
1001
+
1002
+ let expectedQuery = {
1003
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
1004
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
1005
+ userId: 'user id',
1006
+ url: 'https://www.domain.com',
1007
+ seats: {'dsp': ['seat 1']},
1008
+ version: '1.4',
1009
+ width: 100,
1010
+ height: 100,
1011
+ cookieSupport: true,
1012
+ adRequests: [{
1013
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
1014
+ callerAdUnitId: 'panorama_d_1',
1015
+ bidId: '2ffb201a808da7',
1016
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
1017
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}]
1018
+ }]
1019
+ };
1020
+
1021
+ expect(data).to.deep.equal(expectedQuery);
1022
+ });
1023
+
1024
+ it('getFloor returns valid floor - ad server currency', function() {
1025
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
1026
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
1027
+
1028
+ let origGetConfig = config.getConfig;
1029
+ sandbox.stub(config, 'getConfig').callsFake(function (key) {
1030
+ if (key === 'currency.adServerCurrency') {
1031
+ return 'EUR';
1032
+ }
1033
+ return origGetConfig.apply(config, arguments);
1034
+ });
1035
+
1036
+ let testbidRequest = clone(bidderRequest);
1037
+ let bids = testbidRequest.bids.map(b => {
1038
+ b.getFloor = function () { return { floor: 10, currency: 'EUR' }; }
1039
+ return b;
1040
+ });
1041
+ let result = spec.buildRequests(bids, testbidRequest);
1042
+ let data = JSON.parse(result.data);
1043
+
1044
+ expect(result.url).to.equal('https://lwadm.com/ad');
1045
+
1046
+ let expectedQuery = {
1047
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
1048
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
1049
+ userId: 'user id',
1050
+ url: 'https://www.domain.com',
1051
+ seats: {'dsp': ['seat 1']},
1052
+ version: '1.4',
1053
+ width: 100,
1054
+ height: 100,
1055
+ cookieSupport: true,
1056
+ flrCur: 'EUR',
1057
+ adRequests: [{
1058
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
1059
+ callerAdUnitId: 'panorama_d_1',
1060
+ bidId: '2ffb201a808da7',
1061
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
1062
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}],
1063
+ flr: 10
1064
+ }]
1065
+ };
1066
+
1067
+ expect(data).to.deep.equal(expectedQuery);
1068
+ });
1069
+
1070
+ it('getFloor returns valid floor - default currency', function() {
1071
+ sandbox.stub(utils, 'isSafariBrowser').callsFake(() => false);
1072
+ sandbox.stub(storage, 'cookiesAreEnabled').callsFake(() => true);
1073
+
1074
+ let testbidRequest = clone(bidderRequest);
1075
+ let bids = testbidRequest.bids.map(b => {
1076
+ b.getFloor = function () { return { floor: 10, currency: 'USD' }; }
1077
+ return b;
1078
+ });
1079
+ let result = spec.buildRequests(bids, testbidRequest);
1080
+ let data = JSON.parse(result.data);
1081
+
1082
+ expect(result.url).to.equal('https://lwadm.com/ad');
1083
+
1084
+ let expectedQuery = {
1085
+ auctionId: 'F7557995-65F5-4682-8782-7D5D34D82A8C',
1086
+ publisherId: '26947112-2289-405D-88C1-A7340C57E63E',
1087
+ userId: 'user id',
1088
+ url: 'https://www.domain.com',
1089
+ seats: {'dsp': ['seat 1']},
1090
+ version: '1.4',
1091
+ width: 100,
1092
+ height: 100,
1093
+ cookieSupport: true,
1094
+ flrCur: 'USD',
1095
+ adRequests: [{
1096
+ adUnitId: '9E153CED-61BC-479E-98DF-24DC0D01BA37',
1097
+ callerAdUnitId: 'panorama_d_1',
1098
+ bidId: '2ffb201a808da7',
1099
+ transactionId: '3D1C8CF7-D288-4D7F-8ADD-97C553056C3D',
1100
+ formats: [{width: 980, height: 240}, {width: 980, height: 120}],
1101
+ flr: 10
1102
+ }]
1103
+ };
1104
+
1105
+ expect(data).to.deep.equal(expectedQuery);
1106
+ });
842
1107
  });
843
1108
 
844
1109
  it('should make use of user ids if available', function() {