prebid.js 7.44.0 → 7.46.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 (309) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/acuityAdsBidAdapter.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/admaticBidAdapter.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adrelevantisBidAdapter.js +1 -1
  10. package/dist/adtrgtmeBidAdapter.js +1 -1
  11. package/dist/adxcgBidAdapter.js +1 -1
  12. package/dist/adyoulikeBidAdapter.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/appushBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/beyondmediaBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/braveBidAdapter.js +1 -1
  26. package/dist/bridgewellBidAdapter.js +1 -1
  27. package/dist/brightMountainMediaBidAdapter.js +1 -1
  28. package/dist/brightcomBidAdapter.js +1 -1
  29. package/dist/brightcomSSPBidAdapter.js +1 -1
  30. package/dist/carodaBidAdapter.js +1 -1
  31. package/dist/chtnwBidAdapter.js +1 -1
  32. package/dist/coinzillaBidAdapter.js +1 -1
  33. package/dist/compassBidAdapter.js +1 -1
  34. package/dist/concertBidAdapter.js +1 -1
  35. package/dist/connectIdSystem.js +1 -1
  36. package/dist/connectadBidAdapter.js +1 -1
  37. package/dist/consumableBidAdapter.js +1 -1
  38. package/dist/contentexchangeBidAdapter.js +1 -1
  39. package/dist/conversantAnalyticsAdapter.js +1 -1
  40. package/dist/conversantBidAdapter.js +1 -1
  41. package/dist/craftBidAdapter.js +1 -1
  42. package/dist/criteoBidAdapter.js +1 -1
  43. package/dist/cwireBidAdapter.js +1 -1
  44. package/dist/debugging-standalone.js +1 -1
  45. package/dist/dependencies.json +15 -0
  46. package/dist/domainOverrideToRootDomain.js +1 -0
  47. package/dist/dspxBidAdapter.js +1 -1
  48. package/dist/eplanningBidAdapter.js +1 -1
  49. package/dist/eskimiBidAdapter.js +1 -0
  50. package/dist/feedadBidAdapter.js +1 -1
  51. package/dist/finativeBidAdapter.js +1 -1
  52. package/dist/freewheel-sspBidAdapter.js +1 -1
  53. package/dist/glimpseBidAdapter.js +1 -1
  54. package/dist/globalsunBidAdapter.js +1 -1
  55. package/dist/gmosspBidAdapter.js +1 -1
  56. package/dist/goldbachBidAdapter.js +1 -1
  57. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  58. package/dist/gridBidAdapter.js +1 -1
  59. package/dist/growthCodeIdSystem.js +1 -1
  60. package/dist/gumgumBidAdapter.js +1 -1
  61. package/dist/h12mediaBidAdapter.js +1 -1
  62. package/dist/id5IdSystem.js +1 -1
  63. package/dist/improvedigitalBidAdapter.js +1 -1
  64. package/dist/inmarBidAdapter.js +1 -1
  65. package/dist/insticatorBidAdapter.js +1 -1
  66. package/dist/iqzoneBidAdapter.js +1 -1
  67. package/dist/ivsBidAdapter.js +1 -0
  68. package/dist/ixBidAdapter.js +1 -1
  69. package/dist/justpremiumBidAdapter.js +1 -1
  70. package/dist/jwplayerVideoProvider.js +1 -1
  71. package/dist/kargoBidAdapter.js +1 -1
  72. package/dist/koblerBidAdapter.js +1 -1
  73. package/dist/konduitAnalyticsAdapter.js +1 -1
  74. package/dist/kueezBidAdapter.js +1 -1
  75. package/dist/kueezRtbBidAdapter.js +1 -1
  76. package/dist/kulturemediaBidAdapter.js +1 -1
  77. package/dist/lassoBidAdapter.js +1 -1
  78. package/dist/lifestreetBidAdapter.js +1 -1
  79. package/dist/liveIntentIdSystem.js +1 -1
  80. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  81. package/dist/logicadBidAdapter.js +1 -1
  82. package/dist/loglyliftBidAdapter.js +1 -1
  83. package/dist/luponmediaBidAdapter.js +1 -1
  84. package/dist/magniteAnalyticsAdapter.js +1 -1
  85. package/dist/malltvAnalyticsAdapter.js +1 -1
  86. package/dist/marsmediaBidAdapter.js +1 -1
  87. package/dist/mathildeadsBidAdapter.js +1 -1
  88. package/dist/mediafuseBidAdapter.js +1 -1
  89. package/dist/medianetBidAdapter.js +1 -1
  90. package/dist/mediasquareBidAdapter.js +1 -1
  91. package/dist/mgidBidAdapter.js +1 -1
  92. package/dist/minutemediaBidAdapter.js +1 -1
  93. package/dist/minutemediaplusBidAdapter.js +1 -1
  94. package/dist/nativoBidAdapter.js +1 -1
  95. package/dist/neuwoRtdProvider.js +1 -1
  96. package/dist/nexx360BidAdapter.js +1 -1
  97. package/dist/not-for-prod/prebid.js +165 -162
  98. package/dist/oguryBidAdapter.js +1 -1
  99. package/dist/onetagBidAdapter.js +1 -1
  100. package/dist/onomagicBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxBidAdapter.js +1 -1
  103. package/dist/openxOrtbBidAdapter.js +1 -1
  104. package/dist/operaadsBidAdapter.js +1 -1
  105. package/dist/optidigitalBidAdapter.js +1 -1
  106. package/dist/ortbConverter.js +1 -1
  107. package/dist/outbrainBidAdapter.js +1 -1
  108. package/dist/pairIdSystem.js +1 -0
  109. package/dist/parrableIdSystem.js +1 -1
  110. package/dist/pixfutureBidAdapter.js +1 -1
  111. package/dist/prebid-core.js +1 -1
  112. package/dist/publinkIdSystem.js +1 -1
  113. package/dist/pubmaticBidAdapter.js +1 -1
  114. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  115. package/dist/pubxBidAdapter.js +1 -1
  116. package/dist/pxyzBidAdapter.js +1 -1
  117. package/dist/quantcastBidAdapter.js +1 -1
  118. package/dist/readpeakBidAdapter.js +1 -1
  119. package/dist/relaidoBidAdapter.js +1 -1
  120. package/dist/rhythmoneBidAdapter.js +1 -1
  121. package/dist/riseBidAdapter.js +1 -1
  122. package/dist/rubiconAnalyticsAdapter.js +1 -1
  123. package/dist/rubiconBidAdapter.js +1 -1
  124. package/dist/seedingAllianceBidAdapter.js +1 -1
  125. package/dist/seedtagBidAdapter.js +1 -1
  126. package/dist/sharedIdSystem.js +1 -1
  127. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  128. package/dist/sharethroughBidAdapter.js +1 -1
  129. package/dist/shinezBidAdapter.js +1 -1
  130. package/dist/smaatoBidAdapter.js +1 -1
  131. package/dist/smartadserverBidAdapter.js +1 -1
  132. package/dist/smarthubBidAdapter.js +1 -1
  133. package/dist/smartxBidAdapter.js +1 -1
  134. package/dist/smilewantedBidAdapter.js +1 -1
  135. package/dist/sonobiBidAdapter.js +1 -1
  136. package/dist/sovrnAnalyticsAdapter.js +1 -1
  137. package/dist/sovrnBidAdapter.js +1 -1
  138. package/dist/sspBCBidAdapter.js +1 -1
  139. package/dist/stvBidAdapter.js +1 -1
  140. package/dist/sublimeBidAdapter.js +1 -1
  141. package/dist/synacormediaBidAdapter.js +1 -1
  142. package/dist/targetVideoBidAdapter.js +1 -1
  143. package/dist/teadsBidAdapter.js +1 -1
  144. package/dist/trionBidAdapter.js +1 -1
  145. package/dist/tripleliftBidAdapter.js +1 -1
  146. package/dist/truereachBidAdapter.js +1 -1
  147. package/dist/ttdBidAdapter.js +1 -1
  148. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  149. package/dist/uid2IdSystem.js +1 -1
  150. package/dist/underdogmediaBidAdapter.js +1 -1
  151. package/dist/undertoneBidAdapter.js +1 -1
  152. package/dist/userId.js +1 -1
  153. package/dist/vidazooBidAdapter.js +1 -1
  154. package/dist/videobyteBidAdapter.js +1 -1
  155. package/dist/videoheroesBidAdapter.js +1 -1
  156. package/dist/vidoomyBidAdapter.js +1 -1
  157. package/dist/visiblemeasuresBidAdapter.js +1 -1
  158. package/dist/visxBidAdapter.js +1 -1
  159. package/dist/vrtcalBidAdapter.js +1 -1
  160. package/dist/vuukleBidAdapter.js +1 -1
  161. package/dist/widespaceBidAdapter.js +1 -1
  162. package/dist/winrBidAdapter.js +1 -1
  163. package/dist/yahoosspBidAdapter.js +1 -1
  164. package/dist/yieldmoBidAdapter.js +1 -1
  165. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  166. package/dist/yieldoneBidAdapter.js +1 -1
  167. package/integrationExamples/gpt/fledge_example.html +103 -0
  168. package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
  169. package/libraries/domainOverrideToRootDomain/index.js +39 -0
  170. package/libraries/ortbConverter/processors/video.js +1 -0
  171. package/modules/acuityAdsBidAdapter.js +1 -1
  172. package/modules/admaticBidAdapter.js +7 -2
  173. package/modules/adnuntiusBidAdapter.js +3 -1
  174. package/modules/amxBidAdapter.js +1 -1
  175. package/modules/amxIdSystem.js +23 -20
  176. package/modules/amxIdSystem.md +7 -7
  177. package/modules/appnexusBidAdapter.js +108 -102
  178. package/modules/appushBidAdapter.js +1 -1
  179. package/modules/beyondmediaBidAdapter.js +1 -1
  180. package/modules/bidwatchAnalyticsAdapter.js +2 -0
  181. package/modules/braveBidAdapter.js +1 -1
  182. package/modules/brightcomBidAdapter.js +1 -1
  183. package/modules/brightcomSSPBidAdapter.js +1 -1
  184. package/modules/coinzillaBidAdapter.js +1 -2
  185. package/modules/compassBidAdapter.js +1 -1
  186. package/modules/connectIdSystem.js +96 -21
  187. package/modules/connectIdSystem.md +6 -5
  188. package/modules/contentexchangeBidAdapter.js +1 -1
  189. package/modules/conversantBidAdapter.js +3 -0
  190. package/modules/criteoBidAdapter.js +5 -1
  191. package/modules/eskimiBidAdapter.js +72 -0
  192. package/modules/eskimiBidAdapter.md +34 -0
  193. package/modules/freewheel-sspBidAdapter.js +8 -0
  194. package/modules/glimpseBidAdapter.js +1 -2
  195. package/modules/globalsunBidAdapter.js +1 -1
  196. package/modules/gridBidAdapter.js +43 -20
  197. package/modules/growthCodeIdSystem.js +18 -15
  198. package/modules/gumgumBidAdapter.js +1 -1
  199. package/modules/iqzoneBidAdapter.js +1 -1
  200. package/modules/ivsBidAdapter.js +85 -0
  201. package/modules/ivsBidAdapter.md +34 -0
  202. package/modules/ixBidAdapter.js +72 -105
  203. package/modules/jwplayerVideoProvider.js +25 -32
  204. package/modules/kargoBidAdapter.js +473 -246
  205. package/modules/koblerBidAdapter.js +1 -2
  206. package/modules/kueezBidAdapter.js +1 -1
  207. package/modules/kueezRtbBidAdapter.js +16 -4
  208. package/modules/liveIntentIdSystem.js +8 -0
  209. package/modules/luponmediaBidAdapter.js +1 -1
  210. package/modules/magniteAnalyticsAdapter.js +76 -3
  211. package/modules/mathildeadsBidAdapter.js +1 -1
  212. package/modules/medianetBidAdapter.js +1 -1
  213. package/modules/mediasquareBidAdapter.js +2 -1
  214. package/modules/mgidBidAdapter.js +178 -26
  215. package/modules/minutemediaBidAdapter.js +1 -1
  216. package/modules/minutemediaplusBidAdapter.js +16 -4
  217. package/modules/nativoBidAdapter.js +110 -21
  218. package/modules/neuwoRtdProvider.js +0 -2
  219. package/modules/oguryBidAdapter.js +3 -2
  220. package/modules/onomagicBidAdapter.js +1 -2
  221. package/modules/openxBidAdapter.js +192 -563
  222. package/modules/openxBidAdapter.md +22 -20
  223. package/modules/openxOrtbBidAdapter.js +13 -11
  224. package/modules/openxOrtbBidAdapter.md +5 -3
  225. package/modules/operaadsBidAdapter.js +1 -1
  226. package/modules/pairIdSystem.js +79 -0
  227. package/modules/pubmaticBidAdapter.js +13 -10
  228. package/modules/pubxBidAdapter.js +5 -2
  229. package/modules/riseBidAdapter.js +1 -1
  230. package/modules/sharedIdSystem.js +4 -27
  231. package/modules/sharethroughBidAdapter.js +1 -1
  232. package/modules/shinezBidAdapter.js +1 -1
  233. package/modules/smarthubBidAdapter.js +1 -1
  234. package/modules/synacormediaBidAdapter.js +1 -3
  235. package/modules/truereachBidAdapter.js +1 -2
  236. package/modules/userId/eids.js +24 -0
  237. package/modules/userId/eids.md +16 -0
  238. package/modules/videoheroesBidAdapter.js +1 -1
  239. package/modules/vidoomyBidAdapter.js +33 -4
  240. package/modules/visiblemeasuresBidAdapter.js +1 -1
  241. package/modules/vrtcalBidAdapter.js +1 -1
  242. package/modules/yieldmoBidAdapter.js +15 -5
  243. package/modules/yieldoneBidAdapter.js +1 -1
  244. package/package.json +1 -1
  245. package/src/Renderer.js +2 -1
  246. package/src/config.js +78 -127
  247. package/src/native.js +5 -1
  248. package/test/spec/auctionmanager_spec.js +2 -2
  249. package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
  250. package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
  251. package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
  252. package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
  253. package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
  254. package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
  255. package/test/spec/modules/amxIdSystem_spec.js +13 -26
  256. package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
  257. package/test/spec/modules/appushBidAdapter_spec.js +2 -1
  258. package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
  259. package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
  260. package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
  261. package/test/spec/modules/compassBidAdapter_spec.js +2 -1
  262. package/test/spec/modules/connectIdSystem_spec.js +420 -242
  263. package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
  264. package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
  265. package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
  266. package/test/spec/modules/eids_spec.js +30 -0
  267. package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
  268. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
  269. package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
  270. package/test/spec/modules/gridBidAdapter_spec.js +8 -0
  271. package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
  272. package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
  273. package/test/spec/modules/ixBidAdapter_spec.js +141 -71
  274. package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
  275. package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
  276. package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
  277. package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
  278. package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
  279. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
  280. package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
  281. package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
  282. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
  283. package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
  284. package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
  285. package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
  286. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
  287. package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
  288. package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
  289. package/test/spec/modules/pairIdSystem_spec.js +68 -0
  290. package/test/spec/modules/pubCommonId_spec.js +0 -17
  291. package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
  292. package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
  293. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
  294. package/test/spec/modules/sharedIdSystem_spec.js +0 -46
  295. package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
  296. package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
  297. package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
  298. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
  299. package/test/spec/modules/vidoomyBidAdapter_spec.js +58 -0
  300. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
  301. package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
  302. package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
  303. package/test/spec/renderer_spec.js +1 -2
  304. package/test/spec/unit/pbjs_api_spec.js +19 -3
  305. package/test/test_index.js +13 -3
  306. package/dist/gridNMBidAdapter.js +0 -1
  307. package/modules/gridNMBidAdapter.js +0 -422
  308. package/modules/gridNMBidAdapter.md +0 -39
  309. package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
@@ -79,7 +79,8 @@ describe('ContentexchangeBidAdapter', function () {
79
79
  gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
80
80
  refererInfo: {
81
81
  referer: 'https://test.com'
82
- }
82
+ },
83
+ timeout: 500
83
84
  };
84
85
 
85
86
  describe('isBidRequestValid', function () {
@@ -263,6 +263,7 @@ describe('Conversant adapter tests', function() {
263
263
  const payload = request.data;
264
264
 
265
265
  expect(payload).to.have.property('id', 'req000');
266
+ expect(payload.source).to.have.property('tid', 'req000');
266
267
  expect(payload).to.have.property('at', 1);
267
268
  expect(payload).to.have.property('imp');
268
269
  expect(payload.imp).to.be.an('array').with.lengthOf(8);
@@ -883,6 +883,38 @@ describe('The Criteo bidding adapter', function () {
883
883
  expect(request.data.user.uspIab).to.equal('1YNY');
884
884
  });
885
885
 
886
+ it('should properly build a request with device sua field', function () {
887
+ const sua = {}
888
+ const bidRequests = [
889
+ {
890
+ bidder: 'criteo',
891
+ adUnitCode: 'bid-123',
892
+ transactionId: 'transaction-123',
893
+ mediaTypes: {
894
+ banner: {
895
+ sizes: [[728, 90]]
896
+ }
897
+ },
898
+ params: {
899
+ zoneId: 123,
900
+ },
901
+ },
902
+ ];
903
+ const bidderRequest = {
904
+ timeout: 3000,
905
+ uspConsent: '1YNY',
906
+ ortb2: {
907
+ device: {
908
+ sua: sua
909
+ }
910
+ }
911
+ };
912
+
913
+ const request = spec.buildRequests(bidRequests, bidderRequest);
914
+ expect(request.data.user.ext.sua).to.not.be.null;
915
+ expect(request.data.user.ext.sua).to.equal(sua);
916
+ });
917
+
886
918
  it('should properly build a request with gpp consent field', function () {
887
919
  const bidRequests = [
888
920
  {
@@ -1475,7 +1507,7 @@ describe('The Criteo bidding adapter', function () {
1475
1507
  creativecode: 'test-crId',
1476
1508
  width: 728,
1477
1509
  height: 90,
1478
- dealCode: 'myDealCode',
1510
+ deal: 'myDealCode',
1479
1511
  adomain: ['criteo.com'],
1480
1512
  }],
1481
1513
  },
@@ -172,6 +172,36 @@ describe('eids array generation for known sub-modules', function() {
172
172
  });
173
173
  });
174
174
 
175
+ it('bidswitch', function() {
176
+ const userId = {
177
+ bidswitch: {'id': 'sample_id'}
178
+ };
179
+ const newEids = createEidsArray(userId);
180
+ expect(newEids.length).to.equal(1);
181
+ expect(newEids[0]).to.deep.equal({
182
+ source: 'bidswitch.net',
183
+ uids: [{
184
+ id: 'sample_id',
185
+ atype: 3
186
+ }]
187
+ });
188
+ });
189
+
190
+ it('medianet', function() {
191
+ const userId = {
192
+ medianet: {'id': 'sample_id'}
193
+ };
194
+ const newEids = createEidsArray(userId);
195
+ expect(newEids.length).to.equal(1);
196
+ expect(newEids[0]).to.deep.equal({
197
+ source: 'media.net',
198
+ uids: [{
199
+ id: 'sample_id',
200
+ atype: 3
201
+ }]
202
+ });
203
+ });
204
+
175
205
  it('liveIntentId; getValue call and NO ext', function() {
176
206
  const userId = {
177
207
  lipb: {
@@ -0,0 +1,155 @@
1
+ import {expect} from 'chai';
2
+ import {spec} from 'modules/eskimiBidAdapter.js';
3
+
4
+ const REQUEST = {
5
+ 'bidderCode': 'eskimi',
6
+ 'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708',
7
+ 'bidderRequestId': 'requestId',
8
+ 'bidRequest': [{
9
+ 'bidder': 'eskimi',
10
+ 'params': {
11
+ 'placementId': 1003000,
12
+ 'accId': 123
13
+ },
14
+ 'sizes': [
15
+ [300, 250]
16
+ ],
17
+ 'bidId': 'bidId1',
18
+ 'adUnitCode': 'adUnitCode1',
19
+ 'bidderRequestId': 'bidderRequestId',
20
+ 'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708'
21
+ },
22
+ {
23
+ 'bidder': 'eskimi',
24
+ 'params': {
25
+ 'placementId': 1003001,
26
+ 'accId': 123
27
+ },
28
+ 'sizes': [
29
+ [300, 250]
30
+ ],
31
+ 'bidId': 'bidId2',
32
+ 'adUnitCode': 'adUnitCode2',
33
+ 'bidderRequestId': 'bidderRequestId',
34
+ 'auctionId': 'auctionId-56a2-4f71-9098-720a68f2f708'
35
+ }],
36
+ 'start': 1487883186070,
37
+ 'auctionStart': 1487883186069,
38
+ 'timeout': 3000
39
+ };
40
+
41
+ const RESPONSE = {
42
+ 'headers': null,
43
+ 'body': {
44
+ 'id': 'requestId',
45
+ 'seatbid': [
46
+ {
47
+ 'bid': [
48
+ {
49
+ 'id': 'bidId1',
50
+ 'impid': 'bidId1',
51
+ 'price': 0.18,
52
+ 'adm': '<script>adm</script>',
53
+ 'adid': '144762342',
54
+ 'adomain': [
55
+ 'https://dummydomain.com'
56
+ ],
57
+ 'iurl': 'iurl',
58
+ 'cid': '109',
59
+ 'crid': 'creativeId',
60
+ 'cat': [],
61
+ 'w': 300,
62
+ 'h': 250,
63
+ 'ext': {
64
+ 'prebid': {
65
+ 'type': 'banner'
66
+ },
67
+ 'bidder': {
68
+ 'eskimi': {
69
+ 'brand_id': 334553,
70
+ 'auction_id': 514667951122925701,
71
+ 'bidder_id': 2,
72
+ 'bid_ad_type': 0
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ],
78
+ 'seat': 'seat'
79
+ }
80
+ ]
81
+ }
82
+ };
83
+
84
+ describe('Eskimi bid adapter', function () {
85
+ describe('isBidRequestValid', function () {
86
+ it('should accept request if placementId is passed', function () {
87
+ let bid = {
88
+ bidder: 'eskimi',
89
+ params: {
90
+ placementId: 123
91
+ }
92
+ };
93
+ expect(spec.isBidRequestValid(bid)).to.equal(true);
94
+ });
95
+ it('reject requests without params', function () {
96
+ let bid = {
97
+ bidder: 'eskimi',
98
+ params: {}
99
+ };
100
+ expect(spec.isBidRequestValid(bid)).to.equal(false);
101
+ });
102
+ });
103
+
104
+ describe('buildRequests', function () {
105
+ it('creates request data', function () {
106
+ let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
107
+ expect(request).to.exist.and.to.be.a('object');
108
+ const payload = request.data;
109
+ expect(payload.imp[0]).to.have.property('id', REQUEST.bidRequest[0].bidId);
110
+ expect(payload.imp[1]).to.have.property('id', REQUEST.bidRequest[1].bidId);
111
+ });
112
+
113
+ it('has gdpr data if applicable', function () {
114
+ const req = Object.assign({}, REQUEST, {
115
+ gdprConsent: {
116
+ consentString: 'consentString',
117
+ gdprApplies: true,
118
+ }
119
+ });
120
+ let request = spec.buildRequests(REQUEST.bidRequest, req)[0];
121
+
122
+ const payload = request.data;
123
+ expect(payload.user.ext).to.have.property('consent', req.gdprConsent.consentString);
124
+ expect(payload.regs.ext).to.have.property('gdpr', 1);
125
+ });
126
+ });
127
+
128
+ describe('interpretResponse', function () {
129
+ it('has bids', function () {
130
+ let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
131
+ let bids = spec.interpretResponse(RESPONSE, request);
132
+ expect(bids).to.be.an('array').that.is.not.empty;
133
+ validateBidOnIndex(0);
134
+
135
+ function validateBidOnIndex(index) {
136
+ expect(bids[index]).to.have.property('currency', 'USD');
137
+ expect(bids[index]).to.have.property('requestId', RESPONSE.body.seatbid[0].bid[index].id);
138
+ expect(bids[index]).to.have.property('cpm', RESPONSE.body.seatbid[0].bid[index].price);
139
+ expect(bids[index]).to.have.property('width', RESPONSE.body.seatbid[0].bid[index].w);
140
+ expect(bids[index]).to.have.property('height', RESPONSE.body.seatbid[0].bid[index].h);
141
+ expect(bids[index]).to.have.property('ad', RESPONSE.body.seatbid[0].bid[index].adm);
142
+ expect(bids[index]).to.have.property('creativeId', RESPONSE.body.seatbid[0].bid[index].crid);
143
+ expect(bids[index]).to.have.property('ttl', 30);
144
+ expect(bids[index]).to.have.property('netRevenue', true);
145
+ }
146
+ });
147
+
148
+ it('handles empty response', function () {
149
+ let request = spec.buildRequests(REQUEST.bidRequest, REQUEST)[0];
150
+ const EMPTY_RESP = Object.assign({}, RESPONSE, {'body': {}});
151
+ const bids = spec.interpretResponse(EMPTY_RESP, request);
152
+ expect(bids).to.be.empty;
153
+ });
154
+ });
155
+ });
@@ -252,6 +252,13 @@ describe('freewheelSSP BidAdapter Test', () => {
252
252
  }
253
253
  ];
254
254
 
255
+ it('should return context and placement with default values', () => {
256
+ const request = spec.buildRequests(bidRequests);
257
+ const payload = request[0].data;
258
+ expect(payload.video_context).to.equal('instream'); ;
259
+ expect(payload.video_placement).to.equal(1);
260
+ });
261
+
255
262
  it('should add parameters to the tag', () => {
256
263
  const request = spec.buildRequests(bidRequests);
257
264
  const payload = request[0].data;
@@ -319,6 +326,36 @@ describe('freewheelSSP BidAdapter Test', () => {
319
326
  });
320
327
  })
321
328
 
329
+ describe('buildRequestsForVideoWithContextAndPlacement', () => {
330
+ let bidRequests = [
331
+ {
332
+ 'bidder': 'freewheel-ssp',
333
+ 'params': {
334
+ 'zoneId': '277225'
335
+ },
336
+ 'adUnitCode': 'adunit-code',
337
+ 'mediaTypes': {
338
+ 'video': {
339
+ 'context': 'outstream',
340
+ 'placement': 2,
341
+ 'playerSize': [300, 600],
342
+ }
343
+ },
344
+ 'sizes': [[300, 250], [300, 600]],
345
+ 'bidId': '30b31c1838de1e',
346
+ 'bidderRequestId': '22edbae2733bf6',
347
+ 'auctionId': '1d1a030790a475',
348
+ }
349
+ ];
350
+
351
+ it('should return input context and placement', () => {
352
+ const request = spec.buildRequests(bidRequests);
353
+ const payload = request[0].data;
354
+ expect(payload.video_context).to.equal('outstream'); ;
355
+ expect(payload.video_placement).to.equal(2);
356
+ });
357
+ })
358
+
322
359
  describe('interpretResponseForBanner', () => {
323
360
  let bidRequests = [
324
361
  {
@@ -76,7 +76,8 @@ describe('GlobalsunBidAdapter', function () {
76
76
  gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
77
77
  refererInfo: {
78
78
  referer: 'https://test.com'
79
- }
79
+ },
80
+ timeout: 500
80
81
  };
81
82
 
82
83
  describe('isBidRequestValid', function () {
@@ -480,6 +480,14 @@ describe('TheMediaGrid Adapter', function () {
480
480
  'h': 600,
481
481
  'protocols': [1, 2, 3],
482
482
  'mimes': ['video/mp4', 'video/webm', 'application/javascript', 'video/ogg'],
483
+ 'context': 'instream',
484
+ 'maxduration': 30,
485
+ 'minduration': 0,
486
+ 'api': [1, 2],
487
+ 'skip': 1,
488
+ 'placement': 1,
489
+ 'playbackmethod': 1,
490
+ 'startdelay': 0
483
491
  }
484
492
  }, {
485
493
  'id': bidRequests[3].bidId,
@@ -76,7 +76,8 @@ describe('IQZoneBidAdapter', function () {
76
76
  gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
77
77
  refererInfo: {
78
78
  referer: 'https://test.com'
79
- }
79
+ },
80
+ timeout: 500
80
81
  };
81
82
 
82
83
  describe('isBidRequestValid', function () {
@@ -0,0 +1,197 @@
1
+ import { spec, converter } from 'modules/ivsBidAdapter.js';
2
+ import { assert } from 'chai';
3
+ import { deepClone } from '../../../src/utils';
4
+
5
+ describe('ivsBidAdapter', function () {
6
+ describe('isBidRequestValid()', function () {
7
+ let validBid = {
8
+ bidder: 'ivs',
9
+ mediaTypes: {
10
+ video: {
11
+ context: 'instream',
12
+ playerSize: [640, 480],
13
+ mimes: ['video/mp4']
14
+ }
15
+ },
16
+ params: {
17
+ bidderDomain: 'https://www.example.com',
18
+ publisherId: '3001234'
19
+ }
20
+ };
21
+
22
+ it('should return true for a valid bid', function () {
23
+ assert.isTrue(spec.isBidRequestValid(validBid));
24
+ });
25
+
26
+ it('should return false if publisherId info is missing', function () {
27
+ let bid = deepClone(validBid);
28
+ delete bid.params.publisherId;
29
+ assert.isFalse(spec.isBidRequestValid(bid));
30
+ });
31
+
32
+ it('should return false for empty video parameters', function () {
33
+ let bid = deepClone(validBid);
34
+ delete bid.mediaTypes.video;
35
+ assert.isFalse(spec.isBidRequestValid(bid));
36
+ });
37
+
38
+ it('should return false for non instream context', function () {
39
+ let bid = deepClone(validBid);
40
+ bid.mediaTypes.video.context = 'outstream';
41
+ assert.isFalse(spec.isBidRequestValid(bid));
42
+ });
43
+ });
44
+
45
+ describe('buildRequests()', function () {
46
+ let validBidRequests, validBidderRequest;
47
+
48
+ beforeEach(function () {
49
+ validBidRequests = [{
50
+ bidder: 'ivs',
51
+ mediaTypes: {
52
+ video: {
53
+ context: 'instream',
54
+ playerSize: [640, 480],
55
+ mimes: ['video/mp4']
56
+ },
57
+ adUnitCode: 'video1',
58
+ transactionId: '1f420478-a3cd-452d-8e33-ac851e7bfba6',
59
+ bidId: '2d986cea00fd01',
60
+ bidderRequestId: '1022d594d79bf5',
61
+ auctionId: '835eacc9-cfe7-4fa2-8738-ab4b5c4f26d2'
62
+ },
63
+ params: {
64
+ bidderDomain: 'https://www.example.com',
65
+ publisherId: '3001234'
66
+ }
67
+ }];
68
+
69
+ validBidderRequest = {
70
+ bidderCode: 'ivs',
71
+ auctionId: '409bd13d-d0be-43c4-9c4f-e6f81ecff475',
72
+ bidderRequestId: '17bfe74bd98e68',
73
+ refererInfo: {
74
+ domain: 'example.com',
75
+ page: 'https://www.example.com/test.html',
76
+ },
77
+ bids: [{
78
+ bidder: 'ivs',
79
+ params: {
80
+ publisherId: '3001234'
81
+ },
82
+ mediaTypes: {
83
+ video: {
84
+ context: 'instream',
85
+ playerSize: [[640, 480]],
86
+ mimes: ['video/mp4']
87
+ }
88
+ },
89
+ adUnitCode: 'video1',
90
+ transactionId: '91b1977f-d05c-45c3-af1f-69b4e7d11e86',
91
+ sizes: [
92
+ [640, 480]
93
+ ],
94
+ }],
95
+ ortb2: {
96
+ site: {
97
+ publisher: {
98
+ domain: 'example.com',
99
+ }
100
+ }
101
+ }
102
+ };
103
+ });
104
+
105
+ it('should return a validate bid request', function () {
106
+ const bidRequest = spec.buildRequests(validBidRequests, validBidderRequest);
107
+ assert.equal(bidRequest.method, 'POST');
108
+ assert.deepEqual(bidRequest.options, { contentType: 'application/json' });
109
+ assert.ok(bidRequest.data);
110
+ });
111
+
112
+ it('should contain the required parameters', function () {
113
+ const bidRequest = spec.buildRequests(validBidRequests, validBidderRequest);
114
+ const bidderRequest = bidRequest.data;
115
+ assert.equal(bidderRequest.id, validBidderRequest.auctionId);
116
+ assert.ok(bidderRequest.site);
117
+ assert.ok(bidderRequest.source);
118
+ assert.lengthOf(bidderRequest.imp, 1);
119
+ });
120
+ });
121
+
122
+ describe('interpretResponse()', function () {
123
+ let serverResponse, bidderRequest, request;
124
+
125
+ beforeEach(function () {
126
+ serverResponse = {
127
+ body: {
128
+ id: '635ba1ed-68ba-47b4-bcec-4a86565f25f9',
129
+ seatbid: [{
130
+ bid: [{
131
+ crid: 3715,
132
+ id: 'bca9823d-ca7a-4dac-b292-0e1fae5948f8',
133
+ impid: '200d1ca23b15a6',
134
+ price: 1.5,
135
+ nurl: 'https://a.ivstracker.net/dev/getvastxml?ad_creativeid=3715&domain=localhost%3A9999&ip=136.158.51.114&pageurl=http%3A%2F%2Flocalhost%3A9999%2Ftest%2Fpages%2Fivs.html&spid=3001234&adplacement=&brand=unknown&device=desktop&adsclientid=A45-fd46289e-dc60-4be2-a637-4bc8eb953ddf&clientid=3b5e435f-0351-4ba0-bd2d-8d6f3454c5ed&uastring=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F109.0.0.0%20Safari%2F537.36'
136
+ }]
137
+ }],
138
+ cur: 'USD'
139
+ },
140
+ headers: {}
141
+ };
142
+
143
+ bidderRequest = {
144
+ bidderCode: 'ivs',
145
+ auctionId: '635ba1ed-68ba-47b4-bcec-4a86565f25f9',
146
+ bidderRequestId: '1def3e1d03f5a',
147
+ bids: [{
148
+ bidder: 'ivs',
149
+ params: {
150
+ publisherId: '3001234'
151
+ },
152
+ mediaTypes: {
153
+ video: {
154
+ context: 'instream',
155
+ playerSize: [
156
+ [640, 480]
157
+ ],
158
+ mimes: ['video/mp4']
159
+ }
160
+ },
161
+ adUnitCode: 'video1',
162
+ transactionId: '89e5a3e7-df30-4ed6-a130-edfa91941e67',
163
+ bidId: '200d1ca23b15a6',
164
+ bidderRequestId: '1def3e1d03f5a',
165
+ auctionId: '635ba1ed-68ba-47b4-bcec-4a86565f25f9'
166
+ }],
167
+ };
168
+
169
+ request = { data: converter.toORTB({ bidderRequest }) };
170
+ });
171
+
172
+ if (FEATURES.VIDEO) {
173
+ it('should match parsed server response', function () {
174
+ const results = spec.interpretResponse(serverResponse, request);
175
+ const expected = {
176
+ mediaType: 'video',
177
+ playerWidth: 640,
178
+ playerHeight: 480,
179
+ vastUrl: 'https://a.ivstracker.net/dev/getvastxml?ad_creativeid=3715&domain=localhost%3A9999&ip=136.158.51.114&pageurl=http%3A%2F%2Flocalhost%3A9999%2Ftest%2Fpages%2Fivs.html&spid=3001234&adplacement=&brand=unknown&device=desktop&adsclientid=A45-fd46289e-dc60-4be2-a637-4bc8eb953ddf&clientid=3b5e435f-0351-4ba0-bd2d-8d6f3454c5ed&uastring=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F109.0.0.0%20Safari%2F537.36',
180
+ requestId: '200d1ca23b15a6',
181
+ seatBidId: 'bca9823d-ca7a-4dac-b292-0e1fae5948f8',
182
+ cpm: 1.5,
183
+ currency: 'USD',
184
+ creativeId: 3715,
185
+ ttl: 360,
186
+ };
187
+
188
+ expect(results.length).to.equal(1);
189
+ sinon.assert.match(results[0], expected);
190
+ });
191
+ }
192
+
193
+ it('should return empty when no response', function () {
194
+ assert.ok(!spec.interpretResponse({}, request));
195
+ });
196
+ });
197
+ });