prebid.js 9.4.1 → 9.6.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 (397) hide show
  1. package/.eslintrc.js +31 -5
  2. package/.github/workflows/jscpd.yml +2 -2
  3. package/.github/workflows/linter.yml +107 -0
  4. package/creative/crossDomain.js +6 -3
  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/adagioAnalyticsAdapter.js +1 -1
  10. package/dist/adagioBidAdapter.js +1 -1
  11. package/dist/adagioRtdProvider.js +1 -1
  12. package/dist/adagioUtils.js +1 -1
  13. package/dist/addefendBidAdapter.js +1 -1
  14. package/dist/adgenerationBidAdapter.js +1 -1
  15. package/dist/adkernelAdnBidAdapter.js +1 -1
  16. package/dist/adkernelBidAdapter.js +1 -1
  17. package/dist/adkernelUtils.js +1 -0
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/admixerBidAdapter.js +1 -1
  20. package/dist/adqueryBidAdapter.js +1 -1
  21. package/dist/adrelevantisBidAdapter.js +1 -1
  22. package/dist/adstirBidAdapter.js +1 -1
  23. package/dist/adtrgtmeBidAdapter.js +1 -1
  24. package/dist/advRedAnalyticsAdapter.js +1 -0
  25. package/dist/adxcgAnalyticsAdapter.js +1 -1
  26. package/dist/adxcgBidAdapter.js +1 -1
  27. package/dist/adyoulikeBidAdapter.js +1 -1
  28. package/dist/agmaAnalyticsAdapter.js +1 -1
  29. package/dist/aidemBidAdapter.js +1 -1
  30. package/dist/ajaBidAdapter.js +1 -1
  31. package/dist/akamaiDapRtdProvider.js +1 -1
  32. package/dist/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/anonymisedRtdProvider.js +1 -1
  35. package/dist/apacdexBidAdapter.js +1 -1
  36. package/dist/appierAnalyticsAdapter.js +1 -1
  37. package/dist/appnexusBidAdapter.js +1 -1
  38. package/dist/asoBidAdapter.js +1 -1
  39. package/dist/axonixBidAdapter.js +1 -1
  40. package/dist/azerionedgeRtdProvider.js +1 -1
  41. package/dist/bidglassBidAdapter.js +1 -1
  42. package/dist/big-richmediaBidAdapter.js +1 -1
  43. package/dist/bridBidAdapter.js +1 -1
  44. package/dist/bridgewellBidAdapter.js +1 -1
  45. package/dist/brightMountainMediaBidAdapter.js +1 -1
  46. package/dist/carodaBidAdapter.js +1 -1
  47. package/dist/chtnwBidAdapter.js +1 -1
  48. package/dist/chunk-core.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connatixBidAdapter.js +1 -1
  51. package/dist/connectIdSystem.js +1 -1
  52. package/dist/connectadBidAdapter.js +1 -1
  53. package/dist/consumableBidAdapter.js +1 -1
  54. package/dist/contxtfulRtdProvider.js +1 -1
  55. package/dist/conversantAnalyticsAdapter.js +1 -1
  56. package/dist/conversantBidAdapter.js +1 -1
  57. package/dist/craftBidAdapter.js +1 -1
  58. package/dist/criteoBidAdapter.js +1 -1
  59. package/dist/currencyUtils.js +1 -1
  60. package/dist/cwireBidAdapter.js +1 -1
  61. package/dist/dailymotionBidAdapter.js +1 -1
  62. package/dist/debugging-standalone.js +1 -1
  63. package/dist/dependencies.json +69 -8
  64. package/dist/dfpAdServerVideo.js +1 -1
  65. package/dist/dfpAdpod.js +1 -1
  66. package/dist/dfpUtils.js +1 -1
  67. package/dist/discoveryBidAdapter.js +1 -1
  68. package/dist/dspxBidAdapter.js +1 -1
  69. package/dist/dxkultureBidAdapter.js +1 -1
  70. package/dist/eightPodAnalyticsAdapter.js +1 -1
  71. package/dist/eightPodBidAdapter.js +1 -1
  72. package/dist/eplanningBidAdapter.js +1 -1
  73. package/dist/euidIdSystem.js +1 -1
  74. package/dist/exadsBidAdapter.js +1 -1
  75. package/dist/feedadBidAdapter.js +1 -1
  76. package/dist/finativeBidAdapter.js +1 -1
  77. package/dist/fintezaAnalyticsAdapter.js +1 -1
  78. package/dist/fpdUtils.js +1 -0
  79. package/dist/freewheel-sspBidAdapter.js +1 -1
  80. package/dist/gmosspBidAdapter.js +1 -1
  81. package/dist/goldbachBidAdapter.js +1 -1
  82. package/dist/gptPreAuction.js +1 -1
  83. package/dist/gptUtils.js +1 -1
  84. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  85. package/dist/greenbidsRtdProvider.js +1 -1
  86. package/dist/gridBidAdapter.js +1 -1
  87. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  88. package/dist/growthCodeRtdProvider.js +1 -1
  89. package/dist/gumgumBidAdapter.js +1 -1
  90. package/dist/h12mediaBidAdapter.js +1 -1
  91. package/dist/hypelabBidAdapter.js +1 -1
  92. package/dist/id5AnalyticsAdapter.js +1 -1
  93. package/dist/id5IdSystem.js +1 -1
  94. package/dist/imdsBidAdapter.js +1 -1
  95. package/dist/improvedigitalBidAdapter.js +1 -1
  96. package/dist/insticatorBidAdapter.js +1 -1
  97. package/dist/intentIqAnalyticsAdapter.js +1 -0
  98. package/dist/ixBidAdapter.js +1 -1
  99. package/dist/jixieBidAdapter.js +1 -1
  100. package/dist/justpremiumBidAdapter.js +1 -1
  101. package/dist/jwplayerBidAdapter.js +1 -1
  102. package/dist/jwplayerRtdProvider.js +1 -1
  103. package/dist/kargoBidAdapter.js +1 -1
  104. package/dist/kimberliteBidAdapter.js +1 -1
  105. package/dist/konduitAnalyticsAdapter.js +1 -1
  106. package/dist/kueezBidAdapter.js +1 -1
  107. package/dist/lassoBidAdapter.js +1 -1
  108. package/dist/lifestreetBidAdapter.js +1 -1
  109. package/dist/liveIntentIdSystem.js +1 -1
  110. package/dist/logicadBidAdapter.js +1 -1
  111. package/dist/loglyliftBidAdapter.js +1 -1
  112. package/dist/luceadBidAdapter.js +1 -1
  113. package/dist/mabidderBidAdapter.js +1 -1
  114. package/dist/magniteAnalyticsAdapter.js +1 -1
  115. package/dist/malltvAnalyticsAdapter.js +1 -1
  116. package/dist/marsmediaBidAdapter.js +1 -1
  117. package/dist/mediafuseBidAdapter.js +1 -1
  118. package/dist/mediagoBidAdapter.js +1 -1
  119. package/dist/medianetAnalyticsAdapter.js +1 -1
  120. package/dist/medianetBidAdapter.js +1 -1
  121. package/dist/mediasquareBidAdapter.js +1 -1
  122. package/dist/mgidBidAdapter.js +1 -1
  123. package/dist/minutemediaBidAdapter.js +1 -1
  124. package/dist/missenaBidAdapter.js +1 -1
  125. package/dist/mobianRtdProvider.js +1 -1
  126. package/dist/nextMillenniumBidAdapter.js +1 -1
  127. package/dist/nexx360BidAdapter.js +1 -1
  128. package/dist/nobidAnalyticsAdapter.js +1 -1
  129. package/dist/nobidBidAdapter.js +1 -1
  130. package/dist/not-for-prod/prebid.js +208 -199
  131. package/dist/oguryBidAdapter.js +1 -1
  132. package/dist/onetagBidAdapter.js +1 -1
  133. package/dist/ooloAnalyticsAdapter.js +1 -1
  134. package/dist/openwebBidAdapter.js +1 -1
  135. package/dist/openxBidAdapter.js +1 -1
  136. package/dist/optidigitalBidAdapter.js +1 -1
  137. package/dist/optoutBidAdapter.js +1 -1
  138. package/dist/orbidderBidAdapter.js +1 -1
  139. package/dist/outbrainBidAdapter.js +1 -1
  140. package/dist/paapi.js +1 -1
  141. package/dist/permutiveRtdProvider.js +1 -1
  142. package/dist/pixfutureBidAdapter.js +1 -1
  143. package/dist/playdigoBidAdapter.js +1 -1
  144. package/dist/prebidServerBidAdapter.js +1 -1
  145. package/dist/programmaticaBidAdapter.js +1 -1
  146. package/dist/publinkIdSystem.js +1 -1
  147. package/dist/publirBidAdapter.js +1 -1
  148. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  149. package/dist/pubmaticBidAdapter.js +1 -1
  150. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  151. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  152. package/dist/pxyzBidAdapter.js +1 -1
  153. package/dist/quantcastBidAdapter.js +1 -1
  154. package/dist/readpeakBidAdapter.js +1 -1
  155. package/dist/relaidoBidAdapter.js +1 -1
  156. package/dist/relevatehealthBidAdapter.js +1 -1
  157. package/dist/retailspotBidAdapter.js +1 -1
  158. package/dist/rhythmoneBidAdapter.js +1 -1
  159. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  160. package/dist/riseBidAdapter.js +1 -1
  161. package/dist/riseUtils.js +1 -0
  162. package/dist/rubiconBidAdapter.js +1 -1
  163. package/dist/schainSerializer.js +1 -0
  164. package/dist/seedingAllianceBidAdapter.js +1 -1
  165. package/dist/seedtagBidAdapter.js +1 -1
  166. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  167. package/dist/sharethroughBidAdapter.js +1 -1
  168. package/dist/shinezBidAdapter.js +1 -1
  169. package/dist/sizeMapping.js +1 -1
  170. package/dist/sizeUtils.js +1 -1
  171. package/dist/smaatoBidAdapter.js +1 -1
  172. package/dist/smartadserverBidAdapter.js +1 -1
  173. package/dist/smarthubBidAdapter.js +1 -1
  174. package/dist/smartxBidAdapter.js +1 -1
  175. package/dist/smilewantedBidAdapter.js +1 -1
  176. package/dist/snigelBidAdapter.js +1 -1
  177. package/dist/sonobiBidAdapter.js +1 -1
  178. package/dist/sovrnBidAdapter.js +1 -1
  179. package/dist/sspBCBidAdapter.js +1 -1
  180. package/dist/stnBidAdapter.js +1 -1
  181. package/dist/stvBidAdapter.js +1 -1
  182. package/dist/sublimeBidAdapter.js +1 -1
  183. package/dist/symitriDapRtdProvider.js +1 -0
  184. package/dist/taboolaBidAdapter.js +1 -1
  185. package/dist/tappxBidAdapter.js +1 -1
  186. package/dist/targetVideoBidAdapter.js +1 -1
  187. package/dist/targetVideoUtils.js +1 -0
  188. package/dist/teadsBidAdapter.js +1 -1
  189. package/dist/telariaBidAdapter.js +1 -1
  190. package/dist/teqblazeUtils.js +1 -1
  191. package/dist/terceptAnalyticsAdapter.js +1 -1
  192. package/dist/themoneytizerBidAdapter.js +1 -1
  193. package/dist/trionBidAdapter.js +1 -1
  194. package/dist/tripleliftBidAdapter.js +1 -1
  195. package/dist/ttdBidAdapter.js +1 -1
  196. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  197. package/dist/uid2IdSystem.js +1 -1
  198. package/dist/uid2IdSystem_shared.js +1 -1
  199. package/dist/underdogmediaBidAdapter.js +1 -1
  200. package/dist/undertoneBidAdapter.js +1 -1
  201. package/dist/unrulyBidAdapter.js +1 -1
  202. package/dist/userAgentUtils.js +1 -0
  203. package/dist/utiqIdSystem.js +1 -1
  204. package/dist/vidazooUtils.js +1 -1
  205. package/dist/videobyteBidAdapter.js +1 -1
  206. package/dist/visxBidAdapter.js +1 -1
  207. package/dist/vuukleBidAdapter.js +1 -1
  208. package/dist/widespaceBidAdapter.js +1 -1
  209. package/dist/winrBidAdapter.js +1 -1
  210. package/dist/yahooAdsBidAdapter.js +1 -1
  211. package/dist/yandexIdSystem.js +1 -1
  212. package/dist/yieldmoBidAdapter.js +1 -1
  213. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  214. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  215. package/libraries/adkernelUtils/adkernelUtils.js +11 -0
  216. package/libraries/currencyUtils/floor.js +23 -0
  217. package/libraries/dfpUtils/dfpUtils.js +7 -0
  218. package/libraries/fpdUtils/deviceInfo.js +58 -0
  219. package/libraries/fpdUtils/pageInfo.js +73 -0
  220. package/libraries/gptUtils/gptUtils.js +23 -1
  221. package/libraries/riseUtils/index.js +330 -0
  222. package/libraries/schainSerializer/schainSerializer.js +24 -0
  223. package/libraries/sizeUtils/tranformSize.js +43 -0
  224. package/libraries/targetVideoUtils/bidderUtils.js +178 -0
  225. package/libraries/targetVideoUtils/constants.js +23 -0
  226. package/libraries/teqblazeUtils/bidderUtils.js +15 -11
  227. package/libraries/userAgentUtils/index.js +58 -0
  228. package/libraries/userAgentUtils/userAgentTypes.enums.js +22 -0
  229. package/modules/.submodules.json +1 -0
  230. package/modules/33acrossAnalyticsAdapter.js +2 -0
  231. package/modules/adagioAnalyticsAdapter.js +101 -84
  232. package/modules/adagioAnalyticsAdapter.md +4 -0
  233. package/modules/adagioBidAdapter.js +5 -17
  234. package/modules/adagioRtdProvider.js +18 -4
  235. package/modules/adkernelAdnBidAdapter.js +1 -12
  236. package/modules/adkernelBidAdapter.js +4 -13
  237. package/modules/adlooxAnalyticsAdapter.js +1 -0
  238. package/modules/admixerBidAdapter.js +10 -6
  239. package/modules/admixerBidAdapter.md +7 -10
  240. package/modules/adtrgtmeBidAdapter.js +1 -1
  241. package/modules/advRedAnalyticsAdapter.js +198 -0
  242. package/modules/advRedAnalyticsAdapter.md +30 -0
  243. package/modules/aidemBidAdapter.js +2 -0
  244. package/modules/akamaiDapRtdProvider.js +19 -798
  245. package/modules/anonymisedRtdProvider.js +5 -1
  246. package/modules/anonymisedRtdProvider.md +1 -1
  247. package/modules/apacdexBidAdapter.js +1 -1
  248. package/modules/appnexusBidAdapter.js +56 -2
  249. package/modules/automatadAnalyticsAdapter.js +2 -0
  250. package/modules/azerionedgeRtdProvider.js +13 -3
  251. package/modules/azerionedgeRtdProvider.md +0 -17
  252. package/modules/bridBidAdapter.js +47 -47
  253. package/modules/cleanioRtdProvider.js +1 -0
  254. package/modules/concertBidAdapter.js +1 -1
  255. package/modules/connatixBidAdapter.js +36 -8
  256. package/modules/connectIdSystem.js +6 -2
  257. package/modules/contxtfulRtdProvider.js +20 -2
  258. package/modules/contxtfulRtdProvider.md +1 -0
  259. package/modules/craftBidAdapter.js +1 -1
  260. package/modules/criteoBidAdapter.js +1 -1
  261. package/modules/cwireBidAdapter.js +5 -1
  262. package/modules/dailymotionBidAdapter.js +85 -65
  263. package/modules/debugging/debugging.js +3 -0
  264. package/modules/dfpAdServerVideo.js +15 -33
  265. package/modules/dfpAdpod.js +2 -6
  266. package/modules/dgkeywordRtdProvider.js +2 -0
  267. package/modules/discoveryBidAdapter.js +26 -210
  268. package/modules/dspxBidAdapter.js +176 -54
  269. package/modules/eightPodAnalyticsAdapter.js +28 -34
  270. package/modules/eightPodBidAdapter.js +113 -57
  271. package/modules/fintezaAnalyticsAdapter.js +9 -4
  272. package/modules/goldbachBidAdapter.js +1 -1
  273. package/modules/gptPreAuction.js +63 -4
  274. package/modules/growthCodeAnalyticsAdapter.js +1 -1
  275. package/modules/growthCodeRtdProvider.js +1 -1
  276. package/modules/gumgumBidAdapter.js +14 -10
  277. package/modules/improvedigitalBidAdapter.js +1 -1
  278. package/modules/insticatorBidAdapter.js +35 -31
  279. package/modules/intentIqAnalyticsAdapter.js +234 -0
  280. package/modules/intentIqAnalyticsAdapter.md +27 -0
  281. package/modules/intentIqIdSystem.md +0 -0
  282. package/modules/jwplayerBidAdapter.js +1 -1
  283. package/modules/jwplayerRtdProvider.js +26 -6
  284. package/modules/jwplayerVideoProvider.js +6 -0
  285. package/modules/kargoBidAdapter.js +11 -14
  286. package/modules/kimberliteBidAdapter.js +24 -7
  287. package/modules/kimberliteBidAdapter.md +30 -1
  288. package/modules/mediafuseBidAdapter.js +1 -1
  289. package/modules/mediagoBidAdapter.js +7 -176
  290. package/modules/medianetBidAdapter.js +101 -40
  291. package/modules/mgidBidAdapter.js +3 -1
  292. package/modules/minutemediaBidAdapter.js +21 -398
  293. package/modules/mobianRtdProvider.js +16 -2
  294. package/modules/nextMillenniumBidAdapter.js +1 -27
  295. package/modules/nexx360BidAdapter.js +3 -2
  296. package/modules/nobidBidAdapter.js +1 -1
  297. package/modules/openwebBidAdapter.js +18 -396
  298. package/modules/optoutBidAdapter.js +1 -1
  299. package/modules/paapi.js +48 -35
  300. package/modules/permutiveRtdProvider.js +72 -22
  301. package/modules/playdigoBidAdapter.js +4 -2
  302. package/modules/prebidServerBidAdapter/index.js +4 -2
  303. package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
  304. package/modules/programmaticaBidAdapter.js +1 -1
  305. package/modules/publirBidAdapter.js +20 -273
  306. package/modules/pubmaticBidAdapter.js +12 -0
  307. package/modules/pubxaiAnalyticsAdapter.js +306 -164
  308. package/modules/relevatehealthBidAdapter.js +2 -1
  309. package/modules/resetdigitalBidAdapter.md +54 -45
  310. package/modules/richaudienceBidAdapter.js +1 -1
  311. package/modules/riseBidAdapter.js +19 -400
  312. package/modules/rtdModule/index.js +5 -3
  313. package/modules/shinezBidAdapter.js +17 -361
  314. package/modules/sirdataRtdProvider.js +2 -0
  315. package/modules/sizeMapping.js +2 -5
  316. package/modules/smaatoBidAdapter.js +18 -1
  317. package/modules/smarthubBidAdapter.js +45 -177
  318. package/modules/smilewantedBidAdapter.js +26 -22
  319. package/modules/snigelBidAdapter.js +1 -1
  320. package/modules/sonobiBidAdapter.js +5 -10
  321. package/modules/stnBidAdapter.js +22 -398
  322. package/modules/symitriDapRtdProvider.js +812 -0
  323. package/modules/symitriDapRtdProvider.md +49 -0
  324. package/modules/targetVideoBidAdapter.js +120 -152
  325. package/modules/targetVideoBidAdapter.md +20 -3
  326. package/modules/telariaBidAdapter.js +2 -32
  327. package/modules/uid2IdSystem_shared.js +51 -39
  328. package/modules/userId/eids.js +3 -0
  329. package/modules/utiqIdSystem.js +12 -10
  330. package/modules/validationFpdModule/index.js +22 -17
  331. package/modules/videojsVideoProvider.js +3 -0
  332. package/modules/visxBidAdapter.js +1 -1
  333. package/modules/winrBidAdapter.js +2 -27
  334. package/modules/yahooAdsBidAdapter.js +1 -1
  335. package/modules/yandexIdSystem.js +1 -1
  336. package/package.json +4 -4
  337. package/plugins/eslint/index.js +73 -45
  338. package/src/adloader.js +1 -0
  339. package/src/ajax.js +15 -0
  340. package/src/config.js +0 -4
  341. package/src/debugging.js +1 -0
  342. package/src/prebid.js +4 -0
  343. package/src/secureCreatives.js +1 -1
  344. package/src/storageManager.js +62 -73
  345. package/src/targeting.js +26 -20
  346. package/src/utils.js +9 -0
  347. package/test/pages/consent_mgt_gdpr.html +1 -1
  348. package/test/spec/ajax_spec.js +11 -0
  349. package/test/spec/creative/crossDomainCreative_spec.js +26 -9
  350. package/test/spec/fpd/gdpr_spec.js +1 -1
  351. package/test/spec/libraries/userAgentUtils_spec.js +109 -0
  352. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
  353. package/test/spec/modules/adagioBidAdapter_spec.js +32 -66
  354. package/test/spec/modules/adagioRtdProvider_spec.js +72 -0
  355. package/test/spec/modules/admixerBidAdapter_spec.js +21 -17
  356. package/test/spec/modules/advRedAnalyticsAdapter_spec.js +114 -0
  357. package/test/spec/modules/adxcgBidAdapter_spec.js +1 -1
  358. package/test/spec/modules/appnexusBidAdapter_spec.js +36 -0
  359. package/test/spec/modules/azerionedgeRtdProvider_spec.js +36 -21
  360. package/test/spec/modules/connatixBidAdapter_spec.js +55 -2
  361. package/test/spec/modules/connectIdSystem_spec.js +27 -28
  362. package/test/spec/modules/consentManagement_spec.js +1 -1
  363. package/test/spec/modules/contxtfulRtdProvider_spec.js +6 -0
  364. package/test/spec/modules/dailymotionBidAdapter_spec.js +497 -4
  365. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -6
  366. package/test/spec/modules/dspxBidAdapter_spec.js +188 -7
  367. package/test/spec/modules/eightPodAnalyticsAdapter_spec.js +22 -13
  368. package/test/spec/modules/gptPreAuction_spec.js +143 -1
  369. package/test/spec/modules/gumgumBidAdapter_spec.js +17 -0
  370. package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
  371. package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +172 -0
  372. package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
  373. package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
  374. package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
  375. package/test/spec/modules/mediagoBidAdapter_spec.js +34 -37
  376. package/test/spec/modules/medianetBidAdapter_spec.js +297 -16
  377. package/test/spec/modules/mgidBidAdapter_spec.js +15 -5
  378. package/test/spec/modules/mobianRtdProvider_spec.js +1 -3
  379. package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
  380. package/test/spec/modules/paapi_spec.js +177 -111
  381. package/test/spec/modules/permutiveRtdProvider_spec.js +42 -8
  382. package/test/spec/modules/prebidServerBidAdapter_spec.js +17 -3
  383. package/test/spec/modules/proxistoreBidAdapter_spec.js +1 -1
  384. package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
  385. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +970 -603
  386. package/test/spec/modules/pulsepointBidAdapter_spec.js +4 -4
  387. package/test/spec/modules/smaatoBidAdapter_spec.js +36 -1
  388. package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
  389. package/test/spec/modules/smilewantedBidAdapter_spec.js +57 -1
  390. package/test/spec/modules/symitriDapRtdProvider_spec.js +600 -0
  391. package/test/spec/modules/targetVideoBidAdapter_spec.js +112 -11
  392. package/test/spec/modules/yandexIdSystem_spec.js +6 -1
  393. package/test/spec/schainSerializer/schainSerializer_spec.js +138 -0
  394. package/test/spec/unit/core/storageManager_spec.js +68 -51
  395. package/test/spec/unit/pbjs_api_spec.js +11 -0
  396. package/test/spec/utils_spec.js +19 -0
  397. /package/src/utils/{gpdr.js → gdpr.js} +0 -0
@@ -277,8 +277,6 @@ describe('Adagio bid adapter', () => {
277
277
  it('should send bid request to ENDPOINT_PB via POST', function() {
278
278
  sandbox.stub(_internal, 'getDevice').returns({ a: 'a' });
279
279
  sandbox.stub(_internal, 'getSite').returns({ domain: 'adagio.io', 'page': 'https://adagio.io/hb' });
280
- // sandbox.stub(_internal, 'getPageviewId').returns('1234-567');
281
- // sandbox.stub(utils, 'generateUUID').returns('blabla');
282
280
 
283
281
  const bid01 = new BidRequestBuilder().withParams().build();
284
282
  const bidderRequest = new BidderRequestBuilder().build();
@@ -292,7 +290,31 @@ describe('Adagio bid adapter', () => {
292
290
  expect(requests[0].data).to.have.all.keys(expectedDataKeys);
293
291
  });
294
292
 
295
- it('should use a custom generated auctionId and remove transactionId', function() {
293
+ it('should use a custom generated auctionId from ortb2.site.ext.data.adg_rtd.uid when available', function() {
294
+ const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
295
+
296
+ const bid01 = new BidRequestBuilder().withParams().build();
297
+ let ortb = {
298
+ ortb2: {
299
+ site: {
300
+ ext: {
301
+ data: {
302
+ adg_rtd: {
303
+ uid: expectedAuctionId
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
309
+ }
310
+ const bidderRequest = new BidderRequestBuilder(ortb).build();
311
+
312
+ const requests = spec.buildRequests([bid01], bidderRequest);
313
+ expect(requests[0].data.adUnits[0].auctionId).eq(expectedAuctionId);
314
+ expect(requests[0].data.adUnits[0].transactionId).to.not.exist;
315
+ });
316
+
317
+ it('should use a custom generated auctionId when ortb2.site.ext.data.adg_rtd.uid is absent and remove transactionId', function() {
296
318
  const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
297
319
  sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
298
320
 
@@ -305,9 +327,7 @@ describe('Adagio bid adapter', () => {
305
327
  });
306
328
 
307
329
  it('should enrich prebid bid requests params', function() {
308
- const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
309
330
  const expectedPageviewId = '56befc26-8cf0-472d-b105-73896df8eb89';
310
- sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
311
331
  sandbox.stub(_internal, 'getAdagioNs').returns({ pageviewId: expectedPageviewId });
312
332
 
313
333
  const bid01 = new BidRequestBuilder().withParams().build();
@@ -315,7 +335,6 @@ describe('Adagio bid adapter', () => {
315
335
 
316
336
  spec.buildRequests([bid01], bidderRequest);
317
337
 
318
- expect(bid01.params.adagioAuctionId).eq(expectedAuctionId);
319
338
  expect(bid01.params.pageviewId).eq(expectedPageviewId);
320
339
  });
321
340
 
@@ -782,77 +801,24 @@ describe('Adagio bid adapter', () => {
782
801
  describe('with GPP', function() {
783
802
  const bid01 = new BidRequestBuilder().withParams().build();
784
803
 
785
- const regsGpp = 'regs_gpp_consent_string';
786
- const regsApplicableSections = [2];
787
-
788
- const ortb2Gpp = 'ortb2_gpp_consent_string';
789
- const ortb2GppSid = [1];
790
-
791
- context('When GPP in regs module', function() {
792
- it('send gpp and gppSid to the server', function() {
793
- const bidderRequest = new BidderRequestBuilder({
794
- gppConsent: {
795
- gppString: regsGpp,
796
- applicableSections: regsApplicableSections,
797
- }
798
- }).build();
799
-
800
- const requests = spec.buildRequests([bid01], bidderRequest);
801
-
802
- expect(requests[0].data.regs.gpp).to.equal(regsGpp);
803
- expect(requests[0].data.regs.gppSid).to.equal(regsApplicableSections);
804
- });
805
- });
806
-
807
- context('When GPP partially defined in regs module', function() {
808
- it('send gpp and gppSid coming from ortb2 to the server', function() {
809
- const bidderRequest = new BidderRequestBuilder({
810
- gppConsent: {
811
- gppString: regsGpp,
812
- },
813
- ortb2: {
814
- regs: {
815
- gpp: ortb2Gpp,
816
- gpp_sid: ortb2GppSid,
817
- }
818
- }
819
- }).build();
820
-
821
- const requests = spec.buildRequests([bid01], bidderRequest);
822
-
823
- expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
824
- expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
825
- });
826
-
827
- it('send empty gpp and gppSid if no ortb2 fields to the server', function() {
828
- const bidderRequest = new BidderRequestBuilder({
829
- gppConsent: {
830
- gppString: regsGpp,
831
- }
832
- }).build();
833
-
834
- const requests = spec.buildRequests([bid01], bidderRequest);
835
-
836
- expect(requests[0].data.regs.gpp).to.equal('');
837
- expect(requests[0].data.regs.gppSid).to.be.empty;
838
- });
839
- });
804
+ const gpp = 'gpp_consent_string';
805
+ const gppSid = [1];
840
806
 
841
- context('When GPP defined in ortb2 module', function() {
807
+ context('When GPP is defined', function() {
842
808
  it('send gpp and gppSid coming from ortb2 to the server', function() {
843
809
  const bidderRequest = new BidderRequestBuilder({
844
810
  ortb2: {
845
811
  regs: {
846
- gpp: ortb2Gpp,
847
- gpp_sid: ortb2GppSid,
812
+ gpp,
813
+ gpp_sid: gppSid,
848
814
  }
849
815
  }
850
816
  }).build();
851
817
 
852
818
  const requests = spec.buildRequests([bid01], bidderRequest);
853
819
 
854
- expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
855
- expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
820
+ expect(requests[0].data.regs.gpp).to.equal(gpp);
821
+ expect(requests[0].data.regs.gppSid).to.equal(gppSid);
856
822
  });
857
823
  });
858
824
 
@@ -118,6 +118,7 @@ describe('Adagio Rtd Provider', function () {
118
118
  describe('store session data in localStorage', function () {
119
119
  const session = {
120
120
  lastActivityTime: 1714116520700,
121
+ id: 'uid-1234',
121
122
  rnd: 0.5697,
122
123
  vwSmplg: 0.1,
123
124
  vwSmplgNxt: 0.1
@@ -128,6 +129,7 @@ describe('Adagio Rtd Provider', function () {
128
129
  sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
129
130
  sandbox.stub(Date, 'now').returns(1714116520710);
130
131
  sandbox.stub(Math, 'random').returns(0.8);
132
+ sandbox.stub(utils, 'generateUUID').returns('uid-1234');
131
133
 
132
134
  const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
133
135
 
@@ -136,6 +138,7 @@ describe('Adagio Rtd Provider', function () {
136
138
  const expected = {
137
139
  session: {
138
140
  new: true,
141
+ id: utils.generateUUID(),
139
142
  rnd: Math.random()
140
143
  }
141
144
  }
@@ -176,6 +179,7 @@ describe('Adagio Rtd Provider', function () {
176
179
  sandbox.stub(Date, 'now').returns(1715679344351);
177
180
  sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
178
181
  sandbox.stub(Math, 'random').returns(0.8);
182
+ sandbox.stub(utils, 'generateUUID').returns('uid-5678');
179
183
 
180
184
  const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
181
185
 
@@ -185,6 +189,7 @@ describe('Adagio Rtd Provider', function () {
185
189
  session: {
186
190
  ...session,
187
191
  new: true,
192
+ id: utils.generateUUID(),
188
193
  rnd: Math.random(),
189
194
  }
190
195
  }
@@ -196,6 +201,73 @@ describe('Adagio Rtd Provider', function () {
196
201
  }).calledOnce).to.be.true;
197
202
  });
198
203
  });
204
+
205
+ describe('store session data in localStorage when used with external AB Test snippet', function () {
206
+ const sessionWithABTest = {
207
+ lastActivityTime: 1714116520700,
208
+ id: 'uid-1234',
209
+ rnd: 0.5697,
210
+ vwSmplg: 0.1,
211
+ vwSmplgNxt: 0.1,
212
+ testName: 'adg-test',
213
+ testVersion: 'srv',
214
+ initiator: 'snippet'
215
+ };
216
+
217
+ it('store new session data instancied by the AB Test snippet for further usage', function () {
218
+ const sessionWithNewFlag = { ...sessionWithABTest, new: true };
219
+ const storageValue = JSON.stringify({session: sessionWithNewFlag});
220
+ sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
221
+ sandbox.stub(Date, 'now').returns(1714116520710);
222
+ sandbox.stub(Math, 'random').returns(0.8);
223
+
224
+ const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
225
+
226
+ adagioRtdSubmodule.init(config);
227
+
228
+ const expected = {
229
+ session: {
230
+ ...sessionWithNewFlag
231
+ }
232
+ }
233
+
234
+ expect(spy.withArgs({
235
+ action: 'session',
236
+ ts: Date.now(),
237
+ data: expected,
238
+ }).calledOnce).to.be.true;
239
+ });
240
+
241
+ it('store new session data after removing AB Test props when initiator is not the snippet', function () {
242
+ const sessionWithNewFlag = { ...sessionWithABTest, new: false, initiator: 'adgjs' };
243
+ const storageValue = JSON.stringify({session: sessionWithNewFlag});
244
+ sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
245
+ sandbox.stub(Date, 'now').returns(1714116520710);
246
+ sandbox.stub(Math, 'random').returns(0.8);
247
+ sandbox.stub(utils, 'generateUUID').returns('uid-5678');
248
+
249
+ const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
250
+
251
+ adagioRtdSubmodule.init(config);
252
+
253
+ const expected = {
254
+ session: {
255
+ ...sessionWithNewFlag,
256
+ new: true,
257
+ id: utils.generateUUID(),
258
+ rnd: Math.random(),
259
+ }
260
+ }
261
+ delete expected.session.testName;
262
+ delete expected.session.testVersion;
263
+
264
+ expect(spy.withArgs({
265
+ action: 'session',
266
+ ts: Date.now(),
267
+ data: expected,
268
+ }).calledOnce).to.be.true;
269
+ });
270
+ });
199
271
  });
200
272
 
201
273
  describe('submodule `getBidRequestData`', function () {
@@ -4,7 +4,7 @@ import {newBidder} from 'src/adapters/bidderFactory.js';
4
4
  import {config} from '../../../src/config.js';
5
5
 
6
6
  const BIDDER_CODE = 'admixer';
7
- const WL_BIDDER_CODE = 'admixerwl'
7
+ const RTB_BIDDER_CODE = 'rtbstack'
8
8
  const ENDPOINT_URL = 'https://inv-nets.admixer.net/prebid.1.2.aspx';
9
9
  const ENDPOINT_URL_CUSTOM = 'https://custom.admixer.net/prebid.aspx';
10
10
  const ZONE_ID = '2eb6bd58-865c-47ce-af7f-a918108c3fd2';
@@ -37,11 +37,10 @@ describe('AdmixerAdapter', function () {
37
37
  auctionId: '1d1a030790a475',
38
38
  };
39
39
 
40
- let wlBid = {
41
- bidder: WL_BIDDER_CODE,
40
+ let rtbBid = {
41
+ bidder: RTB_BIDDER_CODE,
42
42
  params: {
43
- clientId: CLIENT_ID,
44
- endpointId: ENDPOINT_ID,
43
+ tagId: ENDPOINT_ID,
45
44
  },
46
45
  adUnitCode: 'adunit-code',
47
46
  sizes: [
@@ -56,8 +55,8 @@ describe('AdmixerAdapter', function () {
56
55
  it('should return true when required params found', function () {
57
56
  expect(spec.isBidRequestValid(bid)).to.equal(true);
58
57
  });
59
- it('should return true when params required by WL found', function () {
60
- expect(spec.isBidRequestValid(wlBid)).to.equal(true);
58
+ it('should return true when params required by RTB found', function () {
59
+ expect(spec.isBidRequestValid(rtbBid)).to.equal(true);
61
60
  });
62
61
 
63
62
  it('should return false when required params are not passed', function () {
@@ -68,8 +67,8 @@ describe('AdmixerAdapter', function () {
68
67
  };
69
68
  expect(spec.isBidRequestValid(invalidBid)).to.equal(false);
70
69
  });
71
- it('should return false when params required by WL are not passed', function () {
72
- let invalidBid = Object.assign({}, wlBid);
70
+ it('should return false when params required by RTB are not passed', function () {
71
+ let invalidBid = Object.assign({}, rtbBid);
73
72
  delete invalidBid.params;
74
73
  invalidBid.params = {
75
74
  clientId: 0,
@@ -118,7 +117,7 @@ describe('AdmixerAdapter', function () {
118
117
  it('sends bid request to CUSTOM_ENDPOINT via GET', function () {
119
118
  config.setBidderConfig({
120
119
  bidders: [BIDDER_CODE], // one or more bidders
121
- config: { [BIDDER_CODE]: { endpoint_url: ENDPOINT_URL_CUSTOM } },
120
+ config: { bidderURL: ENDPOINT_URL_CUSTOM },
122
121
  });
123
122
  const request = config.runWithBidder(BIDDER_CODE, () =>
124
123
  spec.buildRequests(validRequest, bidderRequest)
@@ -133,9 +132,8 @@ describe('AdmixerAdapter', function () {
133
132
  validRequest: [
134
133
  {
135
134
  bidder: bidder,
136
- params: bidder === 'admixerwl' ? {
137
- clientId: CLIENT_ID,
138
- endpointId: ENDPOINT_ID
135
+ params: bidder === 'rtbstack' ? {
136
+ tagId: ENDPOINT_ID
139
137
  } : {
140
138
  zone: ZONE_ID,
141
139
  },
@@ -193,10 +191,16 @@ describe('AdmixerAdapter', function () {
193
191
  expect(request.url).to.equal('https://inv-nets.admixer.net/adxprebid.1.2.aspx');
194
192
  expect(request.method).to.equal('POST');
195
193
  });
196
- it('build request for admixerwl', function () {
197
- const requestParams = requestParamsFor('admixerwl');
198
- const request = spec.buildRequests(requestParams.validRequest, requestParams.bidderRequest);
199
- expect(request.url).to.equal(`https://inv-nets-adxwl.admixer.com/adxwlprebid.aspx?client=${CLIENT_ID}`);
194
+ it('build request for rtbstack', function () {
195
+ const requestParams = requestParamsFor('rtbstack');
196
+ config.setBidderConfig({
197
+ bidders: ['rtbstack'],
198
+ config: { bidderURL: ENDPOINT_URL_CUSTOM },
199
+ });
200
+ const request = config.runWithBidder(BIDDER_CODE, () =>
201
+ spec.buildRequests(requestParams.validRequest, requestParams.bidderRequest)
202
+ );
203
+ expect(request.url).to.equal(ENDPOINT_URL_CUSTOM);
200
204
  expect(request.method).to.equal('POST');
201
205
  });
202
206
  });
@@ -0,0 +1,114 @@
1
+ import advRedAnalytics from 'modules/advRedAnalyticsAdapter.js';
2
+ import {expect} from 'chai';
3
+ import {server} from 'test/mocks/xhr.js';
4
+ import {expectEvents} from '../../helpers/analytics.js';
5
+ import { EVENTS } from 'src/constants.js';
6
+ import sinon from 'sinon';
7
+
8
+ let events = require('src/events');
9
+
10
+ describe('AdvRed Analytics Adapter', function () {
11
+ let bidWonEvent = {
12
+ 'bidderCode': 'appnexus',
13
+ 'width': 300,
14
+ 'height': 250,
15
+ 'adId': '1ebb82ec35375e',
16
+ 'mediaType': 'banner',
17
+ 'cpm': 0.5,
18
+ 'requestId': '1582271863760569973',
19
+ 'creative_id': '96846035',
20
+ 'creativeId': '96846035',
21
+ 'ttl': 60,
22
+ 'currency': 'USD',
23
+ 'netRevenue': true,
24
+ 'auctionId': '9c7b70b9-b6ab-4439-9e71-b7b382797c18',
25
+ 'responseTimestamp': 1537521629657,
26
+ 'requestTimestamp': 1537521629331,
27
+ 'bidder': 'appnexus',
28
+ 'adUnitCode': 'div-gpt-ad-1460505748561-0',
29
+ 'timeToRespond': 326,
30
+ 'size': '300x250',
31
+ 'status': 'rendered',
32
+ 'eventType': 'bidWon',
33
+ 'ad': 'some ad',
34
+ 'adUrl': 'ad url'
35
+ };
36
+
37
+ describe('AdvRed Analytic tests', function () {
38
+ beforeEach(function () {
39
+ sinon.stub(events, 'getEvents').returns([]);
40
+ });
41
+
42
+ afterEach(function () {
43
+ advRedAnalytics.disableAnalytics();
44
+ events.getEvents.restore();
45
+ });
46
+
47
+ it('support custom endpoint', function () {
48
+ let custom_endpoint = 'custom url';
49
+ advRedAnalytics.enableAnalytics({
50
+ provider: 'advRed',
51
+ options: {
52
+ url: custom_endpoint,
53
+ publisherId: '1234567890'
54
+ }
55
+ });
56
+
57
+ expect(advRedAnalytics.getOptions().url).to.equal(custom_endpoint);
58
+ });
59
+
60
+ it('bid won event', function() {
61
+ let publisherId = '1234567890';
62
+ advRedAnalytics.enableAnalytics({
63
+ provider: 'advRed',
64
+ options: {
65
+ publisherId: publisherId
66
+ }
67
+ });
68
+
69
+ events.emit(EVENTS.BID_WON, bidWonEvent);
70
+ advRedAnalytics.sendEvents();
71
+
72
+ expect(server.requests.length).to.equal(1);
73
+ expect(server.requests[0].url).to.equal('https://api.adv.red/api/event');
74
+
75
+ const message = JSON.parse(server.requests[0].requestBody);
76
+ expect(message.pwId).to.exist;
77
+ expect(message.publisherId).to.equal(publisherId);
78
+ expect(message.events.length).to.equal(1);
79
+ expect(message.events[0].eventType).to.equal('bidWon');
80
+ expect(message.events[0].ad).to.be.undefined;
81
+ expect(message.events[0].adUrl).to.be.undefined;
82
+ });
83
+
84
+ it('track event', function () {
85
+ sinon.spy(advRedAnalytics, 'track');
86
+
87
+ advRedAnalytics.enableAnalytics({
88
+ provider: 'advRed',
89
+ options: {
90
+ publisherId: '1234567890'
91
+ }
92
+ });
93
+
94
+ expectEvents().to.beTrackedBy(advRedAnalytics.track);
95
+ });
96
+ });
97
+
98
+ describe('pageUrl detection', function () {
99
+ afterEach(function () {
100
+ advRedAnalytics.disableAnalytics()
101
+ });
102
+ it('check pageUrl property', function () {
103
+ advRedAnalytics.enableAnalytics({
104
+ provider: 'advRed',
105
+ options: {
106
+ publisherId: '1234567890'
107
+ }
108
+ });
109
+
110
+ const message = JSON.parse(server.requests[0].requestBody);
111
+ expect(message.pageUrl).to.equal(window.top.location.href);
112
+ });
113
+ });
114
+ });
@@ -459,7 +459,7 @@ describe('adxcg v8 oRtbConverter Adapter Tests', function () {
459
459
  },
460
460
  gdprConsent: {
461
461
  gdprApplies: true,
462
- consentString: 'serialized_gpdr_data'
462
+ consentString: 'serialized_gdpr_data'
463
463
  },
464
464
  ortb2: {
465
465
  user: {
@@ -431,6 +431,42 @@ describe('AppNexusAdapter', function () {
431
431
  expect(payload.tags[0].video_frameworks).to.deep.equal([1, 4])
432
432
  });
433
433
 
434
+ it('should convert and include ORTB2 device data when available', function () {
435
+ const bidRequest = deepClone(bidRequests[0]);
436
+ const bidderRequest = {
437
+ ortb2: {
438
+ device: {
439
+ w: 980,
440
+ h: 1720,
441
+ dnt: 0,
442
+ ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/125.0.6422.80 Mobile/15E148 Safari/604.1',
443
+ language: 'en',
444
+ devicetype: 1,
445
+ make: 'Apple',
446
+ model: 'iPhone 12 Pro Max',
447
+ os: 'iOS',
448
+ osv: '17.4',
449
+ },
450
+ },
451
+ };
452
+
453
+ const expectedDeviceResult = {
454
+ useragent: bidderRequest.ortb2.device.ua,
455
+ devicetype: 'Mobile/Tablet - General',
456
+ make: bidderRequest.ortb2.device.make,
457
+ model: bidderRequest.ortb2.device.model,
458
+ os: bidderRequest.ortb2.device.os,
459
+ os_version: bidderRequest.ortb2.device.osv,
460
+ w: bidderRequest.ortb2.device.w,
461
+ h: bidderRequest.ortb2.device.h,
462
+ };
463
+
464
+ const request = spec.buildRequests([bidRequest], bidderRequest);
465
+ const payload = JSON.parse(request.data);
466
+
467
+ expect(payload.device).to.deep.equal(expectedDeviceResult);
468
+ });
469
+
434
470
  it('should add video property when adUnit includes a renderer', function () {
435
471
  const videoData = {
436
472
  mediaTypes: {
@@ -8,11 +8,17 @@ describe('Azerion Edge RTD submodule', function () {
8
8
  { id: '1', visits: 123 },
9
9
  { id: '2', visits: 456 },
10
10
  ];
11
-
11
+ const IMPROVEDIGITAL_GVLID = '253';
12
12
  const key = 'publisher123';
13
13
  const bidders = ['appnexus', 'improvedigital'];
14
14
  const process = { key: 'value' };
15
15
  const dataProvider = { name: 'azerionedge', waitForIt: true };
16
+ const userConsent = {gdpr: {gdprApplies: 'gdpr-applies', consentString: 'consent-string'}, usp: 'usp'};
17
+
18
+ const resetAll = () => {
19
+ window.azerionPublisherAudiences.resetHistory();
20
+ loadExternalScript.resetHistory();
21
+ }
16
22
 
17
23
  let reqBidsConfigObj;
18
24
  let storageStub;
@@ -33,7 +39,11 @@ describe('Azerion Edge RTD submodule', function () {
33
39
  let returned;
34
40
 
35
41
  beforeEach(function () {
36
- returned = azerionedgeRTD.azerionedgeSubmodule.init(dataProvider);
42
+ returned = azerionedgeRTD.azerionedgeSubmodule.init(dataProvider, userConsent);
43
+ });
44
+
45
+ it('should have the correct gvlid', () => {
46
+ expect(azerionedgeRTD.azerionedgeSubmodule.gvlid).to.equal(IMPROVEDIGITAL_GVLID);
37
47
  });
38
48
 
39
49
  it('should return true', function () {
@@ -49,18 +59,21 @@ describe('Azerion Edge RTD submodule', function () {
49
59
  expect(loadExternalScript.args[0][0]).to.deep.equal(expected);
50
60
  });
51
61
 
52
- it('should call azerionPublisherAudiencesStub with empty configuration', function () {
53
- expect(window.azerionPublisherAudiences.args[0][0]).to.deep.equal({});
62
+ [
63
+ ['gdprApplies', userConsent.gdpr.gdprApplies],
64
+ ['gdprConsent', userConsent.gdpr.consentString],
65
+ ['uspConsent', userConsent.usp],
66
+ ].forEach(([key, value]) => {
67
+ it(`should call azerionPublisherAudiencesStub with ${key}:${value}`, function () {
68
+ expect(window.azerionPublisherAudiences.args[0][0]).to.include({[key]: value});
69
+ });
54
70
  });
55
71
 
56
72
  describe('with key', function () {
57
73
  beforeEach(function () {
58
- window.azerionPublisherAudiences.resetHistory();
59
- loadExternalScript.resetHistory();
60
- returned = azerionedgeRTD.azerionedgeSubmodule.init({
61
- ...dataProvider,
62
- params: { key },
63
- });
74
+ resetAll();
75
+ const config = { ...dataProvider, params: { key } };
76
+ returned = azerionedgeRTD.azerionedgeSubmodule.init(config, userConsent);
64
77
  });
65
78
 
66
79
  it('should return true', function () {
@@ -75,22 +88,24 @@ describe('Azerion Edge RTD submodule', function () {
75
88
 
76
89
  describe('with process configuration', function () {
77
90
  beforeEach(function () {
78
- window.azerionPublisherAudiences.resetHistory();
79
- loadExternalScript.resetHistory();
80
- returned = azerionedgeRTD.azerionedgeSubmodule.init({
81
- ...dataProvider,
82
- params: { process },
83
- });
91
+ resetAll();
92
+ const config = { ...dataProvider, params: { process } };
93
+ returned = azerionedgeRTD.azerionedgeSubmodule.init(config, userConsent);
84
94
  });
85
95
 
86
96
  it('should return true', function () {
87
97
  expect(returned).to.equal(true);
88
98
  });
89
99
 
90
- it('should call azerionPublisherAudiencesStub with process configuration', function () {
91
- expect(window.azerionPublisherAudiences.args[0][0]).to.deep.equal(
92
- process
93
- );
100
+ [
101
+ ['gdprApplies', userConsent.gdpr.gdprApplies],
102
+ ['gdprConsent', userConsent.gdpr.consentString],
103
+ ['uspConsent', userConsent.usp],
104
+ ...Object.entries(process),
105
+ ].forEach(([key, value]) => {
106
+ it(`should call azerionPublisherAudiencesStub with ${key}:${value}`, function () {
107
+ expect(window.azerionPublisherAudiences.args[0][0]).to.include({[key]: value});
108
+ });
94
109
  });
95
110
  });
96
111
  });
@@ -111,7 +126,7 @@ describe('Azerion Edge RTD submodule', function () {
111
126
  );
112
127
  });
113
128
 
114
- it('does not run apply audiences to bidders', function () {
129
+ it('does not apply audiences to bidders', function () {
115
130
  expect(reqBidsConfigObj.ortb2Fragments.bidder).to.deep.equal({});
116
131
  });
117
132