prebid.js 8.44.0 → 8.45.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 (472) hide show
  1. package/README.md +7 -1
  2. package/creative/constants.js +7 -7
  3. package/creative/renderers/display/constants.js +2 -2
  4. package/creative/renderers/native/constants.js +2 -2
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adWMGAnalyticsAdapter.js +1 -1
  10. package/dist/adagioAnalyticsAdapter.js +1 -1
  11. package/dist/adagioBidAdapter.js +1 -1
  12. package/dist/adbookpspBidAdapter.js +1 -1
  13. package/dist/adgenerationBidAdapter.js +1 -1
  14. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  15. package/dist/adkernelBidAdapter.js +1 -1
  16. package/dist/adlooxAdServerVideo.js +1 -1
  17. package/dist/adlooxAnalyticsAdapter.js +1 -1
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/adnuntiusBidAdapter.js +1 -1
  20. package/dist/adomikAnalyticsAdapter.js +1 -1
  21. package/dist/adpod.js +1 -1
  22. package/dist/adqueryBidAdapter.js +1 -1
  23. package/dist/adrelevantisBidAdapter.js +1 -1
  24. package/dist/adstirBidAdapter.js +1 -1
  25. package/dist/adtrgtmeBidAdapter.js +1 -1
  26. package/dist/adxcgAnalyticsAdapter.js +1 -1
  27. package/dist/adxcgBidAdapter.js +1 -1
  28. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  29. package/dist/adyoulikeBidAdapter.js +1 -1
  30. package/dist/agmaAnalyticsAdapter.js +1 -1
  31. package/dist/ajaBidAdapter.js +1 -1
  32. package/dist/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/analyticsAdapter.js +1 -1
  35. package/dist/appierAnalyticsAdapter.js +1 -1
  36. package/dist/appnexusBidAdapter.js +1 -1
  37. package/dist/asoBidAdapter.js +1 -1
  38. package/dist/asteriobidAnalyticsAdapter.js +1 -1
  39. package/dist/atsAnalyticsAdapter.js +1 -1
  40. package/dist/automatadAnalyticsAdapter.js +1 -1
  41. package/dist/axonixBidAdapter.js +1 -1
  42. package/dist/bidViewability.js +1 -1
  43. package/dist/bidViewabilityIO.js +1 -1
  44. package/dist/bidglassBidAdapter.js +1 -1
  45. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  46. package/dist/big-richmediaBidAdapter.js +1 -1
  47. package/dist/brandmetricsRtdProvider.js +1 -1
  48. package/dist/bridBidAdapter.js +1 -1
  49. package/dist/bridgewellBidAdapter.js +1 -1
  50. package/dist/brightMountainMediaBidAdapter.js +1 -1
  51. package/dist/browsiRtdProvider.js +1 -1
  52. package/dist/byDataAnalyticsAdapter.js +1 -1
  53. package/dist/carodaBidAdapter.js +1 -1
  54. package/dist/chtnwBidAdapter.js +1 -1
  55. package/dist/chunk-core.js +1 -1
  56. package/dist/chunk-paapi.js +1 -1
  57. package/dist/cleanioRtdProvider.js +1 -1
  58. package/dist/concertAnalyticsAdapter.js +1 -1
  59. package/dist/concertBidAdapter.js +1 -1
  60. package/dist/confiantRtdProvider.js +1 -1
  61. package/dist/connectadBidAdapter.js +1 -1
  62. package/dist/consentManagementUsp.js +1 -1
  63. package/dist/consumableBidAdapter.js +1 -1
  64. package/dist/conversantAnalyticsAdapter.js +1 -1
  65. package/dist/conversantBidAdapter.js +1 -1
  66. package/dist/craftBidAdapter.js +1 -1
  67. package/dist/creative-renderer-native.js +1 -1
  68. package/dist/criteoBidAdapter.js +1 -1
  69. package/dist/currency.js +1 -1
  70. package/dist/cwireBidAdapter.js +1 -1
  71. package/dist/dailymotionBidAdapter.js +1 -0
  72. package/dist/datablocksAnalyticsAdapter.js +1 -1
  73. package/dist/datawrkzBidAdapter.js +1 -1
  74. package/dist/debugging-standalone.js +1 -1
  75. package/dist/debugging.js +1 -1
  76. package/dist/dependencies.json +3 -3
  77. package/dist/dfpAdServerVideo.js +1 -1
  78. package/dist/dsaControl.js +1 -1
  79. package/dist/dspxBidAdapter.js +1 -1
  80. package/dist/dxkultureBidAdapter.js +1 -1
  81. package/dist/eplanningAnalyticsAdapter.js +1 -1
  82. package/dist/eplanningBidAdapter.js +1 -1
  83. package/dist/euidIdSystem.js +1 -1
  84. package/dist/feedadBidAdapter.js +1 -1
  85. package/dist/finativeBidAdapter.js +1 -1
  86. package/dist/fintezaAnalyticsAdapter.js +1 -1
  87. package/dist/freewheel-sspBidAdapter.js +1 -1
  88. package/dist/gdprEnforcement.js +1 -1
  89. package/dist/genericAnalyticsAdapter.js +1 -1
  90. package/dist/geoedgeRtdProvider.js +1 -1
  91. package/dist/gmosspBidAdapter.js +1 -1
  92. package/dist/goldbachBidAdapter.js +1 -1
  93. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  94. package/dist/greenbidsRtdProvider.js +1 -1
  95. package/dist/gridBidAdapter.js +1 -1
  96. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  97. package/dist/gumgumBidAdapter.js +1 -1
  98. package/dist/h12mediaBidAdapter.js +1 -1
  99. package/dist/hadronAnalyticsAdapter.js +1 -1
  100. package/dist/holidBidAdapter.js +1 -1
  101. package/dist/hypelabBidAdapter.js +1 -1
  102. package/dist/id5AnalyticsAdapter.js +1 -1
  103. package/dist/id5IdSystem.js +1 -1
  104. package/dist/illuminBidAdapter.js +1 -1
  105. package/dist/imdsBidAdapter.js +1 -1
  106. package/dist/improvedigitalBidAdapter.js +1 -1
  107. package/dist/insticatorBidAdapter.js +1 -1
  108. package/dist/instreamTracking.js +1 -1
  109. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  110. package/dist/ixBidAdapter.js +1 -1
  111. package/dist/jixieBidAdapter.js +1 -1
  112. package/dist/justpremiumBidAdapter.js +1 -1
  113. package/dist/kargoAnalyticsAdapter.js +1 -1
  114. package/dist/kargoBidAdapter.js +1 -1
  115. package/dist/kimberliteBidAdapter.js +1 -1
  116. package/dist/konduitAnalyticsAdapter.js +1 -1
  117. package/dist/kueezBidAdapter.js +1 -1
  118. package/dist/kueezRtbBidAdapter.js +1 -1
  119. package/dist/lassoBidAdapter.js +1 -1
  120. package/dist/lifestreetBidAdapter.js +1 -1
  121. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  122. package/dist/liveIntentIdSystem.js +1 -1
  123. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  124. package/dist/logicadBidAdapter.js +1 -1
  125. package/dist/loglyliftBidAdapter.js +1 -1
  126. package/dist/luceadBidAdapter.js +1 -1
  127. package/dist/magniteAnalyticsAdapter.js +1 -1
  128. package/dist/malltvAnalyticsAdapter.js +1 -1
  129. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  130. package/dist/marsmediaBidAdapter.js +1 -1
  131. package/dist/mediafilterRtdProvider.js +1 -1
  132. package/dist/mediafuseBidAdapter.js +1 -1
  133. package/dist/medianetAnalyticsAdapter.js +1 -1
  134. package/dist/medianetBidAdapter.js +1 -1
  135. package/dist/mediasquareBidAdapter.js +1 -1
  136. package/dist/mgidBidAdapter.js +1 -1
  137. package/dist/minutemediaBidAdapter.js +1 -1
  138. package/dist/minutemediaplusBidAdapter.js +1 -1
  139. package/dist/missenaBidAdapter.js +1 -1
  140. package/dist/multibid.js +1 -1
  141. package/dist/neuwoRtdProvider.js +1 -1
  142. package/dist/nextMillenniumBidAdapter.js +1 -1
  143. package/dist/nexx360BidAdapter.js +1 -1
  144. package/dist/nobidAnalyticsAdapter.js +1 -1
  145. package/dist/not-for-prod/prebid.js +237 -235
  146. package/dist/oguryBidAdapter.js +1 -1
  147. package/dist/onetagBidAdapter.js +1 -1
  148. package/dist/ooloAnalyticsAdapter.js +1 -1
  149. package/dist/openwebBidAdapter.js +1 -1
  150. package/dist/openxBidAdapter.js +1 -1
  151. package/dist/optidigitalBidAdapter.js +1 -1
  152. package/dist/optimonAnalyticsAdapter.js +1 -1
  153. package/dist/outbrainBidAdapter.js +1 -1
  154. package/dist/oxxionAnalyticsAdapter.js +1 -1
  155. package/dist/oxxionRtdProvider.js +1 -1
  156. package/dist/parrableIdSystem.js +1 -1
  157. package/dist/pbsExtensions.js +1 -1
  158. package/dist/permutiveRtdProvider.js +1 -1
  159. package/dist/pgamsspBidAdapter.js +1 -1
  160. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  161. package/dist/pirIdSystem.js +1 -0
  162. package/dist/pixfutureBidAdapter.js +1 -1
  163. package/dist/prebidServerBidAdapter.js +1 -1
  164. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  165. package/dist/priceFloors.js +1 -1
  166. package/dist/publinkIdSystem.js +1 -1
  167. package/dist/publirBidAdapter.js +1 -1
  168. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  169. package/dist/pubmaticBidAdapter.js +1 -1
  170. package/dist/pubperfAnalyticsAdapter.js +1 -1
  171. package/dist/pubstackAnalyticsAdapter.js +1 -1
  172. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  173. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  174. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  175. package/dist/pxyzBidAdapter.js +1 -1
  176. package/dist/qortexRtdProvider.js +1 -1
  177. package/dist/quantcastBidAdapter.js +1 -1
  178. package/dist/readpeakBidAdapter.js +1 -1
  179. package/dist/relaidoBidAdapter.js +1 -1
  180. package/dist/relevantAnalyticsAdapter.js +1 -1
  181. package/dist/retailspotBidAdapter.js +1 -1
  182. package/dist/rhythmoneBidAdapter.js +1 -1
  183. package/dist/riseBidAdapter.js +1 -1
  184. package/dist/rivrAnalyticsAdapter.js +1 -1
  185. package/dist/roxotAnalyticsAdapter.js +1 -1
  186. package/dist/rtdModule.js +1 -1
  187. package/dist/rubiconBidAdapter.js +1 -1
  188. package/dist/s2sTesting.js +1 -1
  189. package/dist/scaleableAnalyticsAdapter.js +1 -1
  190. package/dist/schain.js +1 -1
  191. package/dist/seedingAllianceBidAdapter.js +1 -1
  192. package/dist/seedtagBidAdapter.js +1 -1
  193. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  194. package/dist/sharethroughBidAdapter.js +1 -1
  195. package/dist/shinezBidAdapter.js +1 -1
  196. package/dist/shinezRtbBidAdapter.js +1 -1
  197. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  198. package/dist/sizeMapping.js +1 -1
  199. package/dist/smaatoBidAdapter.js +1 -1
  200. package/dist/smartadserverBidAdapter.js +1 -1
  201. package/dist/smartxBidAdapter.js +1 -1
  202. package/dist/smilewantedBidAdapter.js +1 -1
  203. package/dist/sonobiAnalyticsAdapter.js +1 -1
  204. package/dist/sonobiBidAdapter.js +1 -1
  205. package/dist/sovrnAnalyticsAdapter.js +1 -1
  206. package/dist/sovrnBidAdapter.js +1 -1
  207. package/dist/sspBCBidAdapter.js +1 -1
  208. package/dist/staqAnalyticsAdapter.js +1 -1
  209. package/dist/stnBidAdapter.js +1 -1
  210. package/dist/stvBidAdapter.js +1 -1
  211. package/dist/sublimeBidAdapter.js +1 -1
  212. package/dist/taboolaBidAdapter.js +1 -1
  213. package/dist/tagorasBidAdapter.js +1 -1
  214. package/dist/targetVideoBidAdapter.js +1 -1
  215. package/dist/teadsBidAdapter.js +1 -1
  216. package/dist/terceptAnalyticsAdapter.js +1 -1
  217. package/dist/themoneytizerBidAdapter.js +1 -1
  218. package/dist/topicsFpdModule.js +1 -1
  219. package/dist/trionBidAdapter.js +1 -1
  220. package/dist/tripleliftBidAdapter.js +1 -1
  221. package/dist/ttdBidAdapter.js +1 -1
  222. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  223. package/dist/uid2IdSystem.js +1 -1
  224. package/dist/underdogmediaBidAdapter.js +1 -1
  225. package/dist/undertoneBidAdapter.js +1 -1
  226. package/dist/unrulyBidAdapter.js +1 -1
  227. package/dist/userId.js +1 -1
  228. package/dist/vidazooBidAdapter.js +1 -1
  229. package/dist/videoModule.js +1 -1
  230. package/dist/videobyteBidAdapter.js +1 -1
  231. package/dist/visxBidAdapter.js +1 -1
  232. package/dist/vuukleBidAdapter.js +1 -1
  233. package/dist/weboramaRtdProvider.js +1 -1
  234. package/dist/widespaceBidAdapter.js +1 -1
  235. package/dist/winrBidAdapter.js +1 -1
  236. package/dist/yahoosspBidAdapter.js +1 -1
  237. package/dist/yandexAnalyticsAdapter.js +1 -1
  238. package/dist/yieldmoBidAdapter.js +1 -1
  239. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  240. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  241. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  242. package/dist/zeta_global_sspBidAdapter.js +1 -1
  243. package/gulpfile.js +9 -1
  244. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  245. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  246. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  247. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  248. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  249. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  250. package/libraries/creative-renderer-native/renderer.js +1 -1
  251. package/modules/33acrossAnalyticsAdapter.js +2 -4
  252. package/modules/33acrossIdSystem.js +1 -1
  253. package/modules/adWMGAnalyticsAdapter.js +9 -11
  254. package/modules/adagioAnalyticsAdapter.js +8 -8
  255. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  256. package/modules/adkernelBidAdapter.js +9 -3
  257. package/modules/adlooxAdServerVideo.js +2 -2
  258. package/modules/adlooxAnalyticsAdapter.js +4 -4
  259. package/modules/adnuntiusBidAdapter.js +49 -31
  260. package/modules/adomikAnalyticsAdapter.js +7 -7
  261. package/modules/adpod.js +3 -3
  262. package/modules/adxcgAnalyticsAdapter.js +10 -10
  263. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  264. package/modules/agmaAnalyticsAdapter.js +2 -6
  265. package/modules/appierAnalyticsAdapter.js +5 -7
  266. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  267. package/modules/atsAnalyticsAdapter.js +4 -4
  268. package/modules/automatadAnalyticsAdapter.js +20 -20
  269. package/modules/azerionedgeRtdProvider.md +4 -2
  270. package/modules/bidViewability.js +3 -3
  271. package/modules/bidViewabilityIO.js +3 -3
  272. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  273. package/modules/brandmetricsRtdProvider.js +6 -6
  274. package/modules/browsiRtdProvider.js +3 -3
  275. package/modules/byDataAnalyticsAdapter.js +3 -3
  276. package/modules/cleanioRtdProvider.js +3 -3
  277. package/modules/concertAnalyticsAdapter.js +5 -7
  278. package/modules/confiantRtdProvider.js +2 -2
  279. package/modules/conversantAnalyticsAdapter.js +2 -4
  280. package/modules/criteoBidAdapter.js +51 -8
  281. package/modules/currency.js +7 -7
  282. package/modules/dailymotionBidAdapter.js +139 -0
  283. package/modules/dailymotionBidAdapter.md +140 -0
  284. package/modules/datawrkzBidAdapter.js +4 -4
  285. package/modules/debugging/pbsInterceptor.js +2 -2
  286. package/modules/dfpAdServerVideo.js +2 -2
  287. package/modules/dsaControl.js +5 -5
  288. package/modules/eplanningAnalyticsAdapter.js +8 -8
  289. package/modules/fintezaAnalyticsAdapter.js +5 -5
  290. package/modules/gdprEnforcement.js +3 -3
  291. package/modules/geoedgeRtdProvider.js +2 -2
  292. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  293. package/modules/greenbidsRtdProvider.js +2 -2
  294. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  295. package/modules/hadronAnalyticsAdapter.js +14 -14
  296. package/modules/holidBidAdapter.js +2 -2
  297. package/modules/id5AnalyticsAdapter.js +7 -9
  298. package/modules/improvedigitalBidAdapter.js +2 -1
  299. package/modules/insticatorBidAdapter.js +137 -27
  300. package/modules/instreamTracking.js +4 -4
  301. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  302. package/modules/ixBidAdapter.js +3 -3
  303. package/modules/kargoAnalyticsAdapter.js +3 -3
  304. package/modules/kargoBidAdapter.js +5 -11
  305. package/modules/konduitAnalyticsAdapter.js +13 -13
  306. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  307. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  308. package/modules/magniteAnalyticsAdapter.js +25 -23
  309. package/modules/malltvAnalyticsAdapter.js +4 -6
  310. package/modules/mediafilterRtdProvider.js +2 -2
  311. package/modules/medianetAnalyticsAdapter.js +12 -12
  312. package/modules/medianetBidAdapter.js +1 -1
  313. package/modules/multibid/index.js +2 -2
  314. package/modules/neuwoRtdProvider.js +2 -2
  315. package/modules/nextMillenniumBidAdapter.js +4 -4
  316. package/modules/nobidAnalyticsAdapter.js +9 -11
  317. package/modules/ooloAnalyticsAdapter.js +2 -2
  318. package/modules/oxxionAnalyticsAdapter.js +7 -9
  319. package/modules/paapi.js +20 -6
  320. package/modules/permutiveRtdProvider.js +21 -2
  321. package/modules/pgamsspBidAdapter.js +26 -3
  322. package/modules/pirIdSystem.js +62 -0
  323. package/modules/pirIdSystem.md +27 -0
  324. package/modules/prebidServerBidAdapter/index.js +8 -8
  325. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  326. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  327. package/modules/priceFloors.js +10 -5
  328. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  329. package/modules/pubmaticBidAdapter.js +1 -17
  330. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  331. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  332. package/modules/qortexRtdProvider.js +2 -2
  333. package/modules/roxotAnalyticsAdapter.js +8 -10
  334. package/modules/rtdModule/index.js +7 -7
  335. package/modules/scaleableAnalyticsAdapter.js +5 -5
  336. package/modules/seedtagBidAdapter.js +12 -3
  337. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  338. package/modules/smaatoBidAdapter.js +1 -2
  339. package/modules/sonobiAnalyticsAdapter.js +10 -12
  340. package/modules/sovrnAnalyticsAdapter.js +7 -9
  341. package/modules/sovrnBidAdapter.js +1 -1
  342. package/modules/staqAnalyticsAdapter.js +9 -9
  343. package/modules/terceptAnalyticsAdapter.js +7 -7
  344. package/modules/topicsFpdModule.js +3 -0
  345. package/modules/topicsFpdModule.md +4 -0
  346. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  347. package/modules/userId/index.js +3 -3
  348. package/modules/videoModule/index.js +4 -4
  349. package/modules/yandexAnalyticsAdapter.js +2 -2
  350. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  351. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  352. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  353. package/modules/zeta_global_sspBidAdapter.js +8 -1
  354. package/package.json +1 -1
  355. package/src/adRendering.js +15 -15
  356. package/src/adUnits.js +9 -21
  357. package/src/adapterManager.js +23 -13
  358. package/src/adapters/bidderFactory.js +8 -8
  359. package/src/auction.js +26 -28
  360. package/src/auctionManager.js +4 -4
  361. package/src/bidderSettings.js +2 -2
  362. package/src/config.js +2 -2
  363. package/src/constants.js +190 -0
  364. package/src/events.js +3 -3
  365. package/src/native.js +6 -8
  366. package/src/prebid.js +6 -10
  367. package/src/secureCreatives.js +5 -5
  368. package/src/targeting.js +13 -13
  369. package/src/utils.js +4 -4
  370. package/test/fixtures/fixtures.js +44 -44
  371. package/test/helpers/analytics.js +6 -6
  372. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  373. package/test/spec/auctionmanager_spec.js +82 -82
  374. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  375. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  376. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  377. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
  378. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  379. package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
  380. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  381. package/test/spec/modules/adnuntiusBidAdapter_spec.js +8 -5
  382. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  383. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  384. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  385. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
  386. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  387. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  388. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  389. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  390. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  391. package/test/spec/modules/bidViewability_spec.js +4 -4
  392. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  393. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  394. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  395. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  396. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  397. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  398. package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
  399. package/test/spec/modules/currency_spec.js +6 -6
  400. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  401. package/test/spec/modules/dsaControl_spec.js +4 -4
  402. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  403. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  404. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  405. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  406. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  407. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  408. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  409. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  410. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  411. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  412. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  413. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  414. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  415. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  416. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  417. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  418. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  419. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  420. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  421. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  422. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  423. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  424. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  425. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  426. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  427. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  428. package/test/spec/modules/paapi_spec.js +40 -14
  429. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  430. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  431. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  432. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  433. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  434. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  435. package/test/spec/modules/priceFloors_spec.js +6 -5
  436. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  437. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  438. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  439. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  440. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  441. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  442. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  443. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  444. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  445. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  446. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  447. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  448. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  449. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  450. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  451. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  452. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  453. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  454. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  455. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  456. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  457. package/test/spec/modules/userId_spec.js +4 -4
  458. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  459. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  460. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  461. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  462. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  463. package/test/spec/native_spec.js +19 -19
  464. package/test/spec/unit/adRendering_spec.js +14 -14
  465. package/test/spec/unit/adUnits_spec.js +1 -1
  466. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  467. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  468. package/test/spec/unit/core/targeting_spec.js +47 -47
  469. package/test/spec/unit/pbjs_api_spec.js +81 -81
  470. package/test/spec/unit/secureCreatives_spec.js +27 -27
  471. package/test/spec/utils_spec.js +2 -2
  472. package/src/constants.json +0 -196
@@ -38,7 +38,66 @@ describe('The Criteo bidding adapter', function () {
38
38
  ajaxStub.restore();
39
39
  });
40
40
 
41
- describe('getUserSyncs', function () {
41
+ describe('getUserSyncs in pixel mode', function () {
42
+ const syncOptions = {
43
+ pixelEnabled: true
44
+ };
45
+
46
+ it('should not trigger sync if publisher did not enable pixel based syncs', function () {
47
+ const userSyncs = spec.getUserSyncs({
48
+ iframeEnabled: false
49
+ }, undefined, undefined, undefined);
50
+
51
+ expect(userSyncs).to.eql([]);
52
+ });
53
+
54
+ it('should not trigger sync if purpose one is not granted', function () {
55
+ const gdprConsent = {
56
+ gdprApplies: true,
57
+ consentString: 'ABC',
58
+ vendorData: {
59
+ purpose: {
60
+ consents: {
61
+ 1: false
62
+ }
63
+ }
64
+ }
65
+ };
66
+ const userSyncs = spec.getUserSyncs(syncOptions, undefined, gdprConsent, undefined);
67
+
68
+ expect(userSyncs).to.eql([]);
69
+ });
70
+
71
+ it('should trigger sync with consent data', function () {
72
+ const usPrivacy = 'usp_string';
73
+
74
+ const gppConsent = {
75
+ gppString: 'gpp_string',
76
+ applicableSections: [ 1, 2 ]
77
+ };
78
+
79
+ const gdprConsent = {
80
+ gdprApplies: true,
81
+ consentString: 'ABC',
82
+ vendorData: {
83
+ purpose: {
84
+ consents: {
85
+ 1: true
86
+ }
87
+ }
88
+ }
89
+ };
90
+
91
+ const userSyncs = spec.getUserSyncs(syncOptions, undefined, gdprConsent, usPrivacy, gppConsent);
92
+
93
+ expect(userSyncs).to.eql([{
94
+ type: 'image',
95
+ url: 'https://ssp-sync.criteo.com/user-sync/redirect?profile=207&gdprapplies=true&gdpr=ABC&ccpa=usp_string&gpp=gpp_string&gpp_sid=1&gpp_sid=2'
96
+ }]);
97
+ });
98
+ });
99
+
100
+ describe('getUserSyncs in iframe mode', function () {
42
101
  const syncOptionsIframeEnabled = {
43
102
  iframeEnabled: true
44
103
  };
@@ -151,7 +210,7 @@ describe('The Criteo bidding adapter', function () {
151
210
 
152
211
  expect(userSyncs).to.eql([{
153
212
  type: 'iframe',
154
- url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com#${JSON.stringify(expectedHashWithCookieData, Object.keys(expectedHashWithCookieData).sort()).replace(/"/g, '%22')}`
213
+ url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&gpp=#${JSON.stringify(expectedHashWithCookieData, Object.keys(expectedHashWithCookieData).sort()).replace(/"/g, '%22')}`
155
214
  }]);
156
215
  });
157
216
 
@@ -175,7 +234,7 @@ describe('The Criteo bidding adapter', function () {
175
234
 
176
235
  expect(userSyncs).to.eql([{
177
236
  type: 'iframe',
178
- url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com#${JSON.stringify(expectedHashWithLocalStorageData, Object.keys(expectedHashWithLocalStorageData).sort()).replace(/"/g, '%22')}`
237
+ url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&gpp=#${JSON.stringify(expectedHashWithLocalStorageData, Object.keys(expectedHashWithLocalStorageData).sort()).replace(/"/g, '%22')}`
179
238
  }]);
180
239
  });
181
240
 
@@ -195,7 +254,7 @@ describe('The Criteo bidding adapter', function () {
195
254
 
196
255
  expect(userSyncs).to.eql([{
197
256
  type: 'iframe',
198
- url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&gdpr=1&gdpr_consent=ABC#${JSON.stringify(expectedHash).replace(/"/g, '%22')}`
257
+ url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&gdpr=1&gdpr_consent=ABC&gpp=#${JSON.stringify(expectedHash).replace(/"/g, '%22')}`
199
258
  }]);
200
259
  });
201
260
 
@@ -204,7 +263,7 @@ describe('The Criteo bidding adapter', function () {
204
263
 
205
264
  expect(userSyncs).to.eql([{
206
265
  type: 'iframe',
207
- url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&us_privacy=ABC#${JSON.stringify(expectedHash).replace(/"/g, '%22')}`
266
+ url: `https://gum.criteo.com/syncframe?origin=criteoPrebidAdapter&topUrl=www.abc.com&us_privacy=ABC&gpp=#${JSON.stringify(expectedHash).replace(/"/g, '%22')}`
208
267
  }]);
209
268
  });
210
269
 
@@ -1949,6 +2008,53 @@ describe('The Criteo bidding adapter', function () {
1949
2008
  expect(request.data.slots[0].ext).to.not.have.property('ae');
1950
2009
  });
1951
2010
 
2011
+ it('should properly transmit the pubid and slot uid if available', function () {
2012
+ const bidderRequest = {};
2013
+ const bidRequests = [
2014
+ {
2015
+ bidder: 'criteo',
2016
+ adUnitCode: 'bid-123',
2017
+ ortb2Imp: {
2018
+ ext: {
2019
+ tid: 'transaction-123',
2020
+ },
2021
+ },
2022
+ mediaTypes: {
2023
+ banner: {
2024
+ sizes: [[728, 90]]
2025
+ }
2026
+ },
2027
+ params: {
2028
+ zoneId: 123,
2029
+ },
2030
+ },
2031
+ {
2032
+ bidder: 'criteo',
2033
+ adUnitCode: 'bid-234',
2034
+ ortb2Imp: {
2035
+ ext: {
2036
+ tid: 'transaction-234',
2037
+ },
2038
+ },
2039
+ mediaTypes: {
2040
+ banner: {
2041
+ sizes: [[300, 250], [728, 90]]
2042
+ }
2043
+ },
2044
+ params: {
2045
+ networkId: 456,
2046
+ pubid: 'pub-888',
2047
+ uid: 888
2048
+ },
2049
+ },
2050
+ ];
2051
+ const request = spec.buildRequests(bidRequests, bidderRequest);
2052
+ const ortbRequest = request.data;
2053
+ expect(ortbRequest.publisher.id).to.equal('pub-888');
2054
+ expect(request.data.slots[0].ext.bidder).to.be.undefined;
2055
+ expect(request.data.slots[1].ext.bidder.uid).to.equal(888);
2056
+ });
2057
+
1952
2058
  it('should properly transmit device.ext.cdep if available', function () {
1953
2059
  const bidderRequest = {
1954
2060
  ortb2: {
@@ -13,7 +13,7 @@ import {
13
13
  responseReady
14
14
  } from 'modules/currency.js';
15
15
  import {createBid} from '../../../src/bidfactory.js';
16
- import CONSTANTS from '../../../src/constants.json';
16
+ import { EVENTS, STATUS, REJECTION_REASON } from '../../../src/constants.js';
17
17
  import {server} from '../../mocks/xhr.js';
18
18
  import * as events from 'src/events.js';
19
19
 
@@ -28,7 +28,7 @@ describe('currency', function () {
28
28
  let fn = sinon.spy();
29
29
 
30
30
  function makeBid(bidProps) {
31
- return Object.assign(createBid(CONSTANTS.STATUS.GOOD), bidProps);
31
+ return Object.assign(createBid(STATUS.GOOD), bidProps);
32
32
  }
33
33
 
34
34
  beforeEach(function () {
@@ -335,7 +335,7 @@ describe('currency', function () {
335
335
  addBidResponseHook(addBidResponse, 'au', bid, reject);
336
336
  fakeCurrencyFileServer.respond();
337
337
  sinon.assert.notCalled(addBidResponse);
338
- sinon.assert.calledWith(reject, CONSTANTS.REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
338
+ sinon.assert.calledWith(reject, REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
339
339
  });
340
340
 
341
341
  it('attempts to load rates again on the next auction', () => {
@@ -344,7 +344,7 @@ describe('currency', function () {
344
344
  });
345
345
  fakeCurrencyFileServer.respond();
346
346
  fakeCurrencyFileServer.respondWith(JSON.stringify(getCurrencyRates()));
347
- events.emit(CONSTANTS.EVENTS.AUCTION_INIT, {});
347
+ events.emit(EVENTS.AUCTION_INIT, {});
348
348
  addBidResponseHook(addBidResponse, 'au', bid, reject);
349
349
  fakeCurrencyFileServer.respond();
350
350
  sinon.assert.calledWith(addBidResponse, 'au', bid, reject);
@@ -462,12 +462,12 @@ describe('currency', function () {
462
462
  const addBidResponse = sinon.spy();
463
463
  addBidResponseHook(addBidResponse, 'au', bid, reject);
464
464
  addBidResponseHook(addBidResponse, 'au', noConversionBid, reject);
465
- events.emit(CONSTANTS.EVENTS.AUCTION_TIMEOUT, {auctionId: 'aid'});
465
+ events.emit(EVENTS.AUCTION_TIMEOUT, { auctionId: 'aid' });
466
466
  fakeCurrencyFileServer.respond();
467
467
  sinon.assert.calledOnce(addBidResponse);
468
468
  sinon.assert.calledWith(addBidResponse, 'au', noConversionBid, reject);
469
469
  sinon.assert.calledOnce(reject);
470
- sinon.assert.calledWith(reject, CONSTANTS.REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
470
+ sinon.assert.calledWith(reject, REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
471
471
  })
472
472
 
473
473
  it('should return 1 when currency support is enabled and same currency code is requested as is set to adServerCurrency', function () {
@@ -0,0 +1,369 @@
1
+ import { config } from 'src/config.js';
2
+ import { expect } from 'chai';
3
+ import { spec } from 'modules/dailymotionBidAdapter.js';
4
+ import { VIDEO } from '../../../src/mediaTypes';
5
+
6
+ describe('dailymotionBidAdapterTests', () => {
7
+ // Validate that isBidRequestValid only validates requests with apiKey
8
+ it('validates isBidRequestValid', () => {
9
+ expect(config.runWithBidder('dailymotion', () => spec.isBidRequestValid())).to.be.false;
10
+
11
+ const bidWithEmptyApi = {
12
+ params: {
13
+ apiKey: '',
14
+ },
15
+ };
16
+
17
+ expect(config.runWithBidder('dailymotion', () => spec.isBidRequestValid(bidWithEmptyApi))).to.be.false;
18
+
19
+ const bidWithApi = {
20
+ params: {
21
+ apiKey: 'test_api_key',
22
+ },
23
+ };
24
+
25
+ expect(config.runWithBidder('dailymotion', () => spec.isBidRequestValid(bidWithApi))).to.be.true;
26
+ });
27
+
28
+ // Validate request generation
29
+ it('validates buildRequests', () => {
30
+ const bidRequestData = [{
31
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
32
+ bidId: 123456,
33
+ adUnitCode: 'preroll',
34
+ mediaTypes: {
35
+ video: {
36
+ playerSize: [[1280, 720]],
37
+ api: [2, 7],
38
+ description: 'this is a test video',
39
+ duration: 300,
40
+ iabcat2: ['6', '17'],
41
+ lang: 'ENG',
42
+ startdelay: 0,
43
+ },
44
+ },
45
+ sizes: [[1920, 1080]],
46
+ params: {
47
+ apiKey: 'test_api_key',
48
+ video: {
49
+ duration: 556,
50
+ id: '54321',
51
+ lang: 'FR',
52
+ private: false,
53
+ tags: 'tag_1,tag_2,tag_3',
54
+ title: 'test video',
55
+ topics: 'topic_1, topic_2',
56
+ xid: 'x123456',
57
+ },
58
+ },
59
+ }];
60
+
61
+ const bidderRequestData = {
62
+ refererInfo: {
63
+ page: 'https://publisher.com',
64
+ },
65
+ uspConsent: '1YN-',
66
+ gdprConsent: {
67
+ apiVersion: 2,
68
+ consentString: 'xxx',
69
+ gdprApplies: true,
70
+ },
71
+ gppConsent: {
72
+ gppString: 'xxx',
73
+ applicableSections: [5],
74
+ },
75
+ ortb2: {
76
+ regs: {
77
+ coppa: 1,
78
+ },
79
+ site: {
80
+ content: {
81
+ data: [
82
+ {
83
+ name: 'dataprovider.com',
84
+ ext: { segtax: 4 },
85
+ segment: [{ id: 'IAB-1' }],
86
+ },
87
+ {
88
+ name: 'dataprovider.com',
89
+ ext: { segtax: 5 },
90
+ segment: [{ id: '200' }],
91
+ },
92
+ ],
93
+ },
94
+ },
95
+ },
96
+ };
97
+
98
+ const [request] = config.runWithBidder(
99
+ 'dailymotion',
100
+ () => spec.buildRequests(bidRequestData, bidderRequestData),
101
+ );
102
+
103
+ const { data: reqData } = request;
104
+
105
+ expect(request.url).to.equal('https://pb.dmxleo.com');
106
+
107
+ expect(reqData.bidder_request).to.eql({
108
+ refererInfo: bidderRequestData.refererInfo,
109
+ uspConsent: bidderRequestData.uspConsent,
110
+ gdprConsent: bidderRequestData.gdprConsent,
111
+ gppConsent: bidderRequestData.gppConsent,
112
+ });
113
+ expect(reqData.config.api_key).to.eql(bidRequestData[0].params.apiKey);
114
+ expect(reqData.coppa).to.be.true;
115
+ expect(reqData.request.auctionId).to.eql(bidRequestData[0].auctionId);
116
+ expect(reqData.request.bidId).to.eql(bidRequestData[0].bidId);
117
+ expect(reqData.request.mediaTypes.video.api).to.eql(bidRequestData[0].mediaTypes.video.api);
118
+ expect(reqData.request.mediaTypes.video.playerSize).to.eql(bidRequestData[0].mediaTypes.video.playerSize);
119
+ expect(reqData.request.mediaTypes.video.startDelay).to.eql(bidRequestData[0].mediaTypes.video.startdelay);
120
+ expect(reqData.video_metadata).to.eql({
121
+ description: bidRequestData[0].mediaTypes.video.description,
122
+ iabcat1: ['IAB-1'], // Taxonomy v2 or higher is excluded
123
+ iabcat2: bidRequestData[0].mediaTypes.video.iabcat2,
124
+ id: bidRequestData[0].params.video.id,
125
+ lang: bidRequestData[0].params.video.lang,
126
+ private: bidRequestData[0].params.video.private,
127
+ tags: bidRequestData[0].params.video.tags,
128
+ title: bidRequestData[0].params.video.title,
129
+ topics: bidRequestData[0].params.video.topics,
130
+ xid: bidRequestData[0].params.video.xid,
131
+ // Overriden through bidder params
132
+ duration: bidRequestData[0].params.video.duration,
133
+ });
134
+ });
135
+
136
+ it('validates buildRequests with fallback values on ortb2 for gpp & iabcat', () => {
137
+ const bidRequestData = [{
138
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
139
+ bidId: 123456,
140
+ adUnitCode: 'preroll',
141
+ mediaTypes: {
142
+ video: {
143
+ playerSize: [[1280, 720]],
144
+ api: [2, 7],
145
+ description: 'this is a test video',
146
+ duration: 300,
147
+ lang: 'ENG',
148
+ startdelay: 0,
149
+ },
150
+ },
151
+ sizes: [[1920, 1080]],
152
+ params: {
153
+ apiKey: 'test_api_key',
154
+ video: {
155
+ duration: 556,
156
+ id: '54321',
157
+ lang: 'FR',
158
+ private: false,
159
+ tags: 'tag_1,tag_2,tag_3',
160
+ title: 'test video',
161
+ topics: 'topic_1, topic_2',
162
+ xid: 'x123456',
163
+ },
164
+ },
165
+ }];
166
+
167
+ const bidderRequestData = {
168
+ refererInfo: {
169
+ page: 'https://publisher.com',
170
+ },
171
+ uspConsent: '1YN-',
172
+ gdprConsent: {
173
+ apiVersion: 2,
174
+ consentString: 'xxx',
175
+ gdprApplies: true,
176
+ },
177
+ ortb2: {
178
+ regs: {
179
+ gpp: 'xxx',
180
+ gpp_sid: [5],
181
+ coppa: 0,
182
+ },
183
+ site: {
184
+ content: {
185
+ data: [
186
+ undefined, // Undefined to check proper handling of edge cases
187
+ {}, // Empty object to check proper handling of edge cases
188
+ { ext: {} }, // Empty ext to check proper handling of edge cases
189
+ {
190
+ name: 'dataprovider.com',
191
+ ext: { segtax: 22 }, // Invalid segtax to check proper handling of edge cases
192
+ segment: [{ id: '400' }],
193
+ },
194
+ {
195
+ name: 'dataprovider.com',
196
+ ext: { segtax: 5 },
197
+ segment: undefined, // Invalid segment to check proper handling of edge cases
198
+ },
199
+ {
200
+ name: 'dataprovider.com',
201
+ ext: { segtax: 4 },
202
+ segment: undefined, // Invalid segment to check proper handling of edge cases
203
+ },
204
+ {
205
+ name: 'dataprovider.com',
206
+ ext: { segtax: 4 },
207
+ segment: [{ id: 2222 }], // Invalid segment id to check proper handling of edge cases
208
+ },
209
+ {
210
+ name: 'dataprovider.com',
211
+ ext: { segtax: 5 },
212
+ segment: [{ id: '6' }],
213
+ },
214
+ {
215
+ name: 'dataprovider.com',
216
+ ext: { segtax: 5 },
217
+ segment: [{ id: '6' }], // Check that same cat won't be duplicated
218
+ },
219
+ {
220
+ name: 'dataprovider.com',
221
+ ext: { segtax: 5 },
222
+ segment: [{ id: '17' }, { id: '20' }],
223
+ },
224
+ ],
225
+ },
226
+ },
227
+ },
228
+ };
229
+
230
+ const [request] = config.runWithBidder(
231
+ 'dailymotion',
232
+ () => spec.buildRequests(bidRequestData, bidderRequestData),
233
+ );
234
+
235
+ const { data: reqData } = request;
236
+
237
+ expect(request.url).to.equal('https://pb.dmxleo.com');
238
+
239
+ expect(reqData.bidder_request).to.eql({
240
+ refererInfo: bidderRequestData.refererInfo,
241
+ uspConsent: bidderRequestData.uspConsent,
242
+ gdprConsent: bidderRequestData.gdprConsent,
243
+ gppConsent: {
244
+ gppString: bidderRequestData.ortb2.regs.gpp,
245
+ applicableSections: bidderRequestData.ortb2.regs.gpp_sid,
246
+ },
247
+ });
248
+ expect(reqData.config.api_key).to.eql(bidRequestData[0].params.apiKey);
249
+ expect(reqData.coppa).to.be.false;
250
+ expect(reqData.request.auctionId).to.eql(bidRequestData[0].auctionId);
251
+ expect(reqData.request.bidId).to.eql(bidRequestData[0].bidId);
252
+ expect(reqData.request.mediaTypes.video.api).to.eql(bidRequestData[0].mediaTypes.video.api);
253
+ expect(reqData.request.mediaTypes.video.playerSize).to.eql(bidRequestData[0].mediaTypes.video.playerSize);
254
+ expect(reqData.request.mediaTypes.video.startDelay).to.eql(bidRequestData[0].mediaTypes.video.startdelay);
255
+ expect(reqData.video_metadata).to.eql({
256
+ description: bidRequestData[0].mediaTypes.video.description,
257
+ // No iabcat1 here because nothing matches taxonomy
258
+ iabcat1: [],
259
+ iabcat2: ['6', '17', '20'],
260
+ id: bidRequestData[0].params.video.id,
261
+ lang: bidRequestData[0].params.video.lang,
262
+ private: bidRequestData[0].params.video.private,
263
+ tags: bidRequestData[0].params.video.tags,
264
+ title: bidRequestData[0].params.video.title,
265
+ topics: bidRequestData[0].params.video.topics,
266
+ xid: bidRequestData[0].params.video.xid,
267
+ // Overriden through bidder params
268
+ duration: bidRequestData[0].params.video.duration,
269
+ });
270
+ });
271
+
272
+ it('validates buildRequests - with default values on empty bid & bidder request', () => {
273
+ const bidRequestDataWithApi = [{
274
+ params: {
275
+ apiKey: 'test_api_key',
276
+ },
277
+ }];
278
+
279
+ const [request] = config.runWithBidder(
280
+ 'dailymotion',
281
+ () => spec.buildRequests(bidRequestDataWithApi, {}),
282
+ );
283
+
284
+ const { data: reqData } = request;
285
+
286
+ expect(request.url).to.equal('https://pb.dmxleo.com');
287
+
288
+ expect(reqData.config.api_key).to.eql(bidRequestDataWithApi[0].params.apiKey);
289
+ expect(reqData.coppa).to.be.false;
290
+
291
+ expect(reqData.bidder_request).to.eql({
292
+ gdprConsent: {
293
+ apiVersion: 1,
294
+ consentString: '',
295
+ gdprApplies: false,
296
+ },
297
+ refererInfo: {
298
+ page: '',
299
+ },
300
+ uspConsent: '',
301
+ gppConsent: {
302
+ gppString: '',
303
+ applicableSections: [],
304
+ },
305
+ });
306
+
307
+ expect(reqData.request).to.eql({
308
+ auctionId: '',
309
+ bidId: '',
310
+ adUnitCode: '',
311
+ mediaTypes: {
312
+ video: {
313
+ playerSize: [],
314
+ startDelay: 0,
315
+ api: [],
316
+ },
317
+ },
318
+ sizes: [],
319
+ });
320
+
321
+ expect(reqData.video_metadata).to.eql({
322
+ description: '',
323
+ duration: 0,
324
+ iabcat1: [],
325
+ iabcat2: [],
326
+ id: '',
327
+ lang: '',
328
+ private: false,
329
+ tags: '',
330
+ title: '',
331
+ topics: '',
332
+ xid: '',
333
+ });
334
+ });
335
+
336
+ it('validates buildRequests - with empty/undefined validBidRequests', () => {
337
+ expect(spec.buildRequests([], {})).to.have.lengthOf(0);
338
+
339
+ expect(spec.buildRequests(undefined, {})).to.have.lengthOf(0);
340
+ });
341
+
342
+ it('validates interpretResponse', () => {
343
+ const serverResponse = {
344
+ body: {
345
+ ad: 'https://fakecacheserver/cache?uuid=1234',
346
+ cacheId: '1234',
347
+ cpm: 20.0,
348
+ creativeId: '5678',
349
+ currency: 'USD',
350
+ dealId: 'deal123',
351
+ nurl: 'https://bid/nurl',
352
+ requestId: 'test_requestid',
353
+ vastUrl: 'https://fakecacheserver/cache?uuid=1234',
354
+ },
355
+ };
356
+
357
+ const bids = spec.interpretResponse(serverResponse);
358
+ expect(bids).to.have.lengthOf(1);
359
+
360
+ const [bid] = bids;
361
+ expect(bid).to.eql(serverResponse.body);
362
+ });
363
+
364
+ it('validates interpretResponse - with empty/undefined serverResponse', () => {
365
+ expect(spec.interpretResponse({})).to.have.lengthOf(0);
366
+
367
+ expect(spec.interpretResponse(undefined)).to.have.lengthOf(0);
368
+ });
369
+ });
@@ -1,5 +1,5 @@
1
1
  import {addBidResponseHook, setMetaDsa, reset} from '../../../modules/dsaControl.js';
2
- import CONSTANTS from 'src/constants.json';
2
+ import { REJECTION_REASON } from 'src/constants.js';
3
3
  import {auctionManager} from '../../../src/auctionManager.js';
4
4
  import {AuctionIndex} from '../../../src/auctionIndex.js';
5
5
 
@@ -51,7 +51,7 @@ describe('DSA transparency', () => {
51
51
  });
52
52
 
53
53
  it('should reject bids that have no meta.dsa', () => {
54
- expectRejection(CONSTANTS.REJECTION_REASON.DSA_REQUIRED);
54
+ expectRejection(REJECTION_REASON.DSA_REQUIRED);
55
55
  });
56
56
 
57
57
  it('should accept bids that do', () => {
@@ -66,7 +66,7 @@ describe('DSA transparency', () => {
66
66
 
67
67
  it('should reject bids with adrender = 0 (advertiser will not render)', () => {
68
68
  bid.meta = {dsa: {adrender: 0}};
69
- expectRejection(CONSTANTS.REJECTION_REASON.DSA_MISMATCH);
69
+ expectRejection(REJECTION_REASON.DSA_MISMATCH);
70
70
  });
71
71
 
72
72
  it('should accept bids with adrender = 1 (advertiser will render)', () => {
@@ -81,7 +81,7 @@ describe('DSA transparency', () => {
81
81
 
82
82
  it('should reject bids with adrender = 1 (advertiser will render)', () => {
83
83
  bid.meta = {dsa: {adrender: 1}};
84
- expectRejection(CONSTANTS.REJECTION_REASON.DSA_MISMATCH);
84
+ expectRejection(REJECTION_REASON.DSA_MISMATCH);
85
85
  });
86
86
 
87
87
  it('should accept bids with adrender = 0 (advertiser will not render)', () => {
@@ -3,9 +3,10 @@ import {includes} from 'src/polyfill.js';
3
3
  import { expect } from 'chai';
4
4
  import { parseUrl } from 'src/utils.js';
5
5
  import { server } from 'test/mocks/xhr.js';
6
+ import { EVENTS } from 'src/constants.js';
7
+
6
8
  let adapterManager = require('src/adapterManager').default;
7
9
  let events = require('src/events');
8
- let constants = require('src/constants.json');
9
10
 
10
11
  describe('eplanning analytics adapter', function () {
11
12
  beforeEach(function () {
@@ -82,22 +83,22 @@ describe('eplanning analytics adapter', function () {
82
83
  // Emit the events with the "real" arguments
83
84
 
84
85
  // Step 1: Send auction init event
85
- events.emit(constants.EVENTS.AUCTION_INIT, {
86
+ events.emit(EVENTS.AUCTION_INIT, {
86
87
  auctionId: pauctionId,
87
88
  timestamp: auctionTimestamp
88
89
  });
89
90
 
90
91
  // Step 2: Send bid requested event
91
- events.emit(constants.EVENTS.BID_REQUESTED, bidRequest);
92
+ events.emit(EVENTS.BID_REQUESTED, bidRequest);
92
93
 
93
94
  // Step 3: Send bid response event
94
- events.emit(constants.EVENTS.BID_RESPONSE, bidResponse);
95
+ events.emit(EVENTS.BID_RESPONSE, bidResponse);
95
96
 
96
97
  // Step 4: Send bid time out event
97
- events.emit(constants.EVENTS.BID_TIMEOUT, bidTimeout);
98
+ events.emit(EVENTS.BID_TIMEOUT, bidTimeout);
98
99
 
99
100
  // Step 5: Send auction bid won event
100
- events.emit(constants.EVENTS.BID_WON, {
101
+ events.emit(EVENTS.BID_WON, {
101
102
  adId: 'adIdData',
102
103
  ad: 'adContent',
103
104
  auctionId: pauctionId,
@@ -106,7 +107,7 @@ describe('eplanning analytics adapter', function () {
106
107
  });
107
108
 
108
109
  // Step 6: Send auction end event
109
- events.emit(constants.EVENTS.AUCTION_END, {auctionId: pauctionId});
110
+ events.emit(EVENTS.AUCTION_END, { auctionId: pauctionId });
110
111
 
111
112
  // Step 7: Find the request data sent (filtering other hosts)
112
113
  let requests = server.requests.filter(req => {
@@ -127,22 +128,28 @@ describe('eplanning analytics adapter', function () {
127
128
  // Step 9 verify that we only receive the parameters we need
128
129
  let expectedEventValues = [
129
130
  // AUCTION INIT
130
- {ec: constants.EVENTS.AUCTION_INIT,
131
+ {
132
+ ec: EVENTS.AUCTION_INIT,
131
133
  p: {auctionId: pauctionId, time: auctionTimestamp}},
132
134
  // BID REQ
133
- {ec: constants.EVENTS.BID_REQUESTED,
135
+ {
136
+ ec: EVENTS.BID_REQUESTED,
134
137
  p: {auctionId: pauctionId, time: 1509369418389, bidder: pbidderCode, bids: [{time: 1509369418389, sizes: [[300, 250]], bidder: pbidderCode, placementCode: 'container-1', auctionId: pauctionId}]}},
135
138
  // BID RESP
136
- {ec: constants.EVENTS.BID_RESPONSE,
139
+ {
140
+ ec: EVENTS.BID_RESPONSE,
137
141
  p: {auctionId: pauctionId, bidder: pbidderCode, cpm: 0.015, size: '300x250', time: 1509369418832}},
138
142
  // BID T.O.
139
- {ec: constants.EVENTS.BID_TIMEOUT,
143
+ {
144
+ ec: EVENTS.BID_TIMEOUT,
140
145
  p: [{auctionId: pauctionId, bidder: pbidderCode}]},
141
146
  // BID WON
142
- {ec: constants.EVENTS.BID_WON,
147
+ {
148
+ ec: EVENTS.BID_WON,
143
149
  p: {auctionId: pauctionId, size: '300x250'}},
144
150
  // AUCTION END
145
- {ec: constants.EVENTS.AUCTION_END,
151
+ {
152
+ ec: EVENTS.AUCTION_END,
146
153
  p: {auctionId: pauctionId}}
147
154
  ];
148
155