prebid.js 7.8.0 → 7.11.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 (483) hide show
  1. package/README.md +0 -2
  2. package/RELEASE_SCHEDULE.md +1 -1
  3. package/allowedModules.js +3 -0
  4. package/babelConfig.js +10 -4
  5. package/dist/33acrossBidAdapter.js +1 -1
  6. package/dist/adWMGAnalyticsAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adbookpspBidAdapter.js +1 -1
  10. package/dist/adgenerationBidAdapter.js +1 -1
  11. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adlooxAdServerVideo.js +1 -1
  14. package/dist/adlooxAnalyticsAdapter.js +1 -1
  15. package/dist/adlooxRtdProvider.js +1 -1
  16. package/dist/adnuntiusBidAdapter.js +1 -1
  17. package/dist/adomikAnalyticsAdapter.js +1 -1
  18. package/dist/adrelevantisBidAdapter.js +1 -1
  19. package/dist/adtelligentBidAdapter.js +1 -1
  20. package/dist/adtrgtmeBidAdapter.js +1 -0
  21. package/dist/adxcgAnalyticsAdapter.js +1 -1
  22. package/dist/adxcgBidAdapter.js +1 -1
  23. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  24. package/dist/adyoulikeBidAdapter.js +1 -1
  25. package/dist/ajaBidAdapter.js +1 -1
  26. package/dist/amxBidAdapter.js +1 -1
  27. package/dist/amxIdSystem.js +1 -1
  28. package/dist/analyticsAdapter.js +1 -0
  29. package/dist/andBeyondMediaBidAdapter.js +1 -0
  30. package/dist/aniviewBidAdapter.js +1 -1
  31. package/dist/appierAnalyticsAdapter.js +1 -1
  32. package/dist/appnexusBidAdapter.js +1 -1
  33. package/dist/asoBidAdapter.js +1 -1
  34. package/dist/atsAnalyticsAdapter.js +1 -1
  35. package/dist/audiencerunBidAdapter.js +1 -1
  36. package/dist/axonixBidAdapter.js +1 -1
  37. package/dist/bidglassBidAdapter.js +1 -1
  38. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  39. package/dist/big-richmediaBidAdapter.js +1 -1
  40. package/dist/bluebillywigBidAdapter.js +1 -1
  41. package/dist/boldwinBidAdapter.js +1 -1
  42. package/dist/bridgewellBidAdapter.js +1 -1
  43. package/dist/brightMountainMediaBidAdapter.js +1 -1
  44. package/dist/browsiRtdProvider.js +1 -1
  45. package/dist/byDataAnalyticsAdapter.js +1 -1
  46. package/dist/c1xBidAdapter.js +1 -0
  47. package/dist/cleanioRtdProvider.js +1 -1
  48. package/dist/concertAnalyticsAdapter.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connectadBidAdapter.js +1 -1
  51. package/dist/consentManagementUsp.js +1 -1
  52. package/dist/consumableBidAdapter.js +1 -1
  53. package/dist/conversantBidAdapter.js +1 -1
  54. package/dist/cpmstarBidAdapter.js +1 -1
  55. package/dist/craftBidAdapter.js +1 -1
  56. package/dist/criteoBidAdapter.js +1 -1
  57. package/dist/datablocksAnalyticsAdapter.js +1 -1
  58. package/dist/datawrkzBidAdapter.js +1 -0
  59. package/dist/debugging-standalone.js +1 -1
  60. package/dist/dependencies.json +171 -0
  61. package/dist/dspxBidAdapter.js +1 -1
  62. package/dist/eplanningAnalyticsAdapter.js +1 -1
  63. package/dist/eplanningBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/fintezaAnalyticsAdapter.js +1 -1
  66. package/dist/freewheel-sspBidAdapter.js +1 -1
  67. package/dist/getOrigin.js +1 -1
  68. package/dist/glimpseBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gridNMBidAdapter.js +1 -1
  73. package/dist/gumgumBidAdapter.js +1 -1
  74. package/dist/h12mediaBidAdapter.js +1 -1
  75. package/dist/hadronAnalyticsAdapter.js +1 -1
  76. package/dist/id5AnalyticsAdapter.js +1 -1
  77. package/dist/id5IdSystem.js +1 -1
  78. package/dist/impactifyBidAdapter.js +1 -1
  79. package/dist/improvedigitalBidAdapter.js +1 -1
  80. package/dist/imuIdSystem.js +1 -1
  81. package/dist/inmarBidAdapter.js +1 -1
  82. package/dist/insticatorBidAdapter.js +1 -1
  83. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  84. package/dist/ixBidAdapter.js +1 -1
  85. package/dist/jixieBidAdapter.js +1 -1
  86. package/dist/justpremiumBidAdapter.js +1 -1
  87. package/dist/kargoAnalyticsAdapter.js +1 -1
  88. package/dist/kargoBidAdapter.js +1 -1
  89. package/dist/konduitAnalyticsAdapter.js +1 -1
  90. package/dist/kueezBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  93. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/malltvAnalyticsAdapter.js +1 -1
  97. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  98. package/dist/marsmediaBidAdapter.js +1 -1
  99. package/dist/mediafuseBidAdapter.js +1 -1
  100. package/dist/mediakeysBidAdapter.js +1 -1
  101. package/dist/medianetAnalyticsAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/minutemediaBidAdapter.js +1 -1
  105. package/dist/nextMillenniumBidAdapter.js +1 -1
  106. package/dist/nobidBidAdapter.js +1 -1
  107. package/dist/not-for-prod/prebid.js +182 -176
  108. package/dist/oguryBidAdapter.js +1 -1
  109. package/dist/onetagBidAdapter.js +1 -1
  110. package/dist/ooloAnalyticsAdapter.js +1 -1
  111. package/dist/openxAnalyticsAdapter.js +1 -1
  112. package/dist/openxBidAdapter.js +1 -1
  113. package/dist/openxOrtbBidAdapter.js +1 -1
  114. package/dist/optimonAnalyticsAdapter.js +1 -1
  115. package/dist/outbrainBidAdapter.js +1 -1
  116. package/dist/ozoneBidAdapter.js +1 -1
  117. package/dist/parrableIdSystem.js +1 -1
  118. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  119. package/dist/pixfutureBidAdapter.js +1 -1
  120. package/dist/prebid-core.js +1 -1
  121. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  122. package/dist/publinkIdSystem.js +1 -1
  123. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  124. package/dist/pubmaticBidAdapter.js +1 -1
  125. package/dist/pubperfAnalyticsAdapter.js +1 -1
  126. package/dist/pubstackAnalyticsAdapter.js +1 -1
  127. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  128. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  129. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  130. package/dist/pxyzBidAdapter.js +1 -1
  131. package/dist/quantcastBidAdapter.js +1 -1
  132. package/dist/readpeakBidAdapter.js +1 -1
  133. package/dist/realvuAnalyticsAdapter.js +1 -1
  134. package/dist/relaidoBidAdapter.js +1 -1
  135. package/dist/relevantAnalyticsAdapter.js +1 -1
  136. package/dist/rhythmoneBidAdapter.js +1 -1
  137. package/dist/riseBidAdapter.js +1 -1
  138. package/dist/rivrAnalyticsAdapter.js +1 -1
  139. package/dist/roxotAnalyticsAdapter.js +1 -1
  140. package/dist/rtbhouseBidAdapter.js +1 -1
  141. package/dist/rubiconAnalyticsAdapter.js +1 -1
  142. package/dist/rubiconBidAdapter.js +1 -1
  143. package/dist/scaleableAnalyticsAdapter.js +1 -1
  144. package/dist/seedingAllianceBidAdapter.js +1 -1
  145. package/dist/seedtagBidAdapter.js +1 -1
  146. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  147. package/dist/sharethroughBidAdapter.js +1 -1
  148. package/dist/shinezBidAdapter.js +1 -1
  149. package/dist/showheroes-bsBidAdapter.js +1 -1
  150. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  151. package/dist/smaatoBidAdapter.js +1 -1
  152. package/dist/smartadserverBidAdapter.js +1 -1
  153. package/dist/smartxBidAdapter.js +1 -1
  154. package/dist/smilewantedBidAdapter.js +1 -1
  155. package/dist/snigelBidAdapter.js +1 -0
  156. package/dist/sonobiAnalyticsAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnAnalyticsAdapter.js +1 -1
  159. package/dist/sovrnBidAdapter.js +1 -1
  160. package/dist/sspBCBidAdapter.js +1 -1
  161. package/dist/staqAnalyticsAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/synacormediaBidAdapter.js +1 -1
  164. package/dist/tappxBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/terceptAnalyticsAdapter.js +1 -1
  168. package/dist/trionBidAdapter.js +1 -1
  169. package/dist/tripleliftBidAdapter.js +1 -1
  170. package/dist/trustpidSystem.js +1 -1
  171. package/dist/ttdBidAdapter.js +1 -1
  172. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  173. package/dist/underdogmediaBidAdapter.js +1 -1
  174. package/dist/undertoneBidAdapter.js +1 -1
  175. package/dist/userId.js +1 -1
  176. package/dist/vidazooBidAdapter.js +1 -1
  177. package/dist/videobyteBidAdapter.js +1 -1
  178. package/dist/visxBidAdapter.js +1 -1
  179. package/dist/vuukleBidAdapter.js +1 -1
  180. package/dist/widespaceBidAdapter.js +1 -1
  181. package/dist/winrBidAdapter.js +1 -1
  182. package/dist/yahoosspBidAdapter.js +1 -1
  183. package/dist/yieldmoBidAdapter.js +1 -1
  184. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  185. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  186. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  187. package/dist/zeta_global_sspBidAdapter.js +1 -1
  188. package/gulpHelpers.js +22 -55
  189. package/gulpfile.js +12 -5
  190. package/integrationExamples/gpt/1plusXRtdProviderExample.html +2 -4
  191. package/integrationExamples/gpt/airgridRtdProvider_example.html +1 -4
  192. package/integrationExamples/gpt/amp/remote.html +1 -1
  193. package/integrationExamples/gpt/blueconicRtdProvider_example.html +2 -4
  194. package/integrationExamples/gpt/hadronRtdProvider_example.html +1 -3
  195. package/integrationExamples/gpt/inskin_example.html +1 -3
  196. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  197. package/integrationExamples/gpt/prebidServer_example.html +1 -3
  198. package/integrationExamples/gpt/serverbidServer_example.html +1 -3
  199. package/integrationExamples/gpt/userId_example.html +1 -3
  200. package/integrationExamples/postbid/oas/postbid-config.js +5 -5
  201. package/karma.conf.maker.js +2 -13
  202. package/libraries/LIBRARIES.md +5 -0
  203. package/{src → libraries/analyticsAdapter}/AnalyticsAdapter.js +5 -6
  204. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example.js +1 -1
  205. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example2.js +1 -1
  206. package/modules/.submodules.json +0 -12
  207. package/modules/1plusXRtdProvider.js +1 -1
  208. package/modules/33acrossBidAdapter.js +3 -3
  209. package/modules/adWMGAnalyticsAdapter.js +1 -1
  210. package/modules/adagioAnalyticsAdapter.js +1 -1
  211. package/modules/adagioBidAdapter.js +3 -4
  212. package/modules/adgenerationBidAdapter.js +1 -1
  213. package/modules/adkernelAdnAnalyticsAdapter.js +1 -1
  214. package/modules/adkernelBidAdapter.js +2 -1
  215. package/modules/adlooxAnalyticsAdapter.js +1 -1
  216. package/modules/admixerBidAdapter.js +1 -1
  217. package/modules/adnowBidAdapter.js +1 -1
  218. package/modules/adnuntiusBidAdapter.js +3 -1
  219. package/modules/adomikAnalyticsAdapter.js +1 -1
  220. package/modules/adpod.js +1 -1
  221. package/modules/adrelevantisBidAdapter.js +2 -2
  222. package/modules/adriverBidAdapter.js +1 -1
  223. package/modules/adtargetBidAdapter.js +1 -1
  224. package/modules/adtelligentBidAdapter.js +4 -2
  225. package/modules/adtrgtmeBidAdapter.js +333 -0
  226. package/modules/adtrgtmeBidAdapter.md +69 -0
  227. package/modules/adtrueBidAdapter.js +1 -1
  228. package/modules/adxcgAnalyticsAdapter.js +1 -1
  229. package/modules/adxpremiumAnalyticsAdapter.js +2 -2
  230. package/modules/adyoulikeBidAdapter.js +12 -8
  231. package/modules/akamaiDapRtdProvider.js +2 -2
  232. package/modules/andBeyondMediaBidAdapter.js +202 -0
  233. package/modules/andBeyondMediaBidAdapter.md +79 -0
  234. package/modules/aniviewBidAdapter.js +2 -2
  235. package/modules/apacdexBidAdapter.js +3 -3
  236. package/modules/appierAnalyticsAdapter.js +1 -1
  237. package/modules/appnexusBidAdapter.js +9 -9
  238. package/modules/apstreamBidAdapter.js +2 -2
  239. package/modules/atsAnalyticsAdapter.js +1 -1
  240. package/modules/betweenBidAdapter.js +1 -1
  241. package/modules/bidwatchAnalyticsAdapter.js +71 -12
  242. package/modules/bizzclickBidAdapter.js +1 -1
  243. package/modules/bliinkBidAdapter.js +1 -1
  244. package/modules/boldwinBidAdapter.js +16 -7
  245. package/modules/boldwinBidAdapter.md +17 -0
  246. package/modules/brightMountainMediaBidAdapter.js +1 -1
  247. package/modules/browsiRtdProvider.js +26 -12
  248. package/modules/byDataAnalyticsAdapter.js +2 -2
  249. package/modules/c1xBidAdapter.js +209 -0
  250. package/modules/c1xBidAdapter.md +70 -0
  251. package/modules/cleanioRtdProvider.js +29 -0
  252. package/modules/cleanmedianetBidAdapter.js +1 -1
  253. package/modules/colossussspBidAdapter.js +2 -2
  254. package/modules/concertAnalyticsAdapter.js +1 -1
  255. package/modules/consentManagementUsp.js +2 -2
  256. package/modules/consumableBidAdapter.js +21 -3
  257. package/modules/cpmstarBidAdapter.js +23 -13
  258. package/modules/criteoBidAdapter.js +47 -5
  259. package/modules/cwireBidAdapter.js +1 -1
  260. package/modules/datablocksAnalyticsAdapter.js +1 -1
  261. package/modules/datablocksBidAdapter.js +1 -1
  262. package/modules/datawrkzBidAdapter.js +633 -0
  263. package/modules/datawrkzBidAdapter.md +160 -0
  264. package/modules/dfpAdServerVideo.js +2 -2
  265. package/modules/dgkeywordRtdProvider.js +1 -1
  266. package/modules/dspxBidAdapter.js +1 -1
  267. package/modules/e_volutionBidAdapter.js +3 -3
  268. package/modules/ebdrBidAdapter.js +1 -1
  269. package/modules/emx_digitalBidAdapter.js +1 -1
  270. package/modules/eplanningAnalyticsAdapter.js +1 -1
  271. package/modules/eplanningBidAdapter.js +3 -3
  272. package/modules/fabrickIdSystem.js +2 -2
  273. package/modules/fintezaAnalyticsAdapter.js +2 -2
  274. package/modules/freewheel-sspBidAdapter.js +1 -1
  275. package/modules/gamoshiBidAdapter.js +1 -1
  276. package/modules/getintentBidAdapter.js +1 -1
  277. package/modules/gjirafaBidAdapter.js +2 -2
  278. package/modules/goldbachBidAdapter.js +8 -8
  279. package/modules/gothamadsBidAdapter.js +2 -2
  280. package/modules/gridBidAdapter.js +1 -1
  281. package/modules/gridNMBidAdapter.js +1 -1
  282. package/modules/gumgumBidAdapter.js +3 -3
  283. package/modules/h12mediaBidAdapter.js +1 -1
  284. package/modules/hadronAnalyticsAdapter.js +3 -3
  285. package/modules/hadronRtdProvider.js +1 -1
  286. package/modules/id5AnalyticsAdapter.js +2 -2
  287. package/modules/impactifyBidAdapter.js +1 -1
  288. package/modules/improvedigitalBidAdapter.js +5 -2
  289. package/modules/imuIdSystem.js +40 -28
  290. package/modules/imuIdSystem.md +1 -0
  291. package/modules/inskinBidAdapter.js +1 -1
  292. package/modules/integr8BidAdapter.js +2 -2
  293. package/modules/intentIqIdSystem.js +2 -2
  294. package/modules/interactiveOffersBidAdapter.js +1 -1
  295. package/modules/invisiblyAnalyticsAdapter.js +1 -1
  296. package/modules/iqmBidAdapter.js +1 -1
  297. package/modules/ixBidAdapter.js +15 -15
  298. package/modules/kargoAnalyticsAdapter.js +1 -1
  299. package/modules/kargoBidAdapter.js +4 -5
  300. package/modules/konduitAnalyticsAdapter.js +1 -1
  301. package/modules/krushmediaBidAdapter.js +2 -2
  302. package/modules/kueezBidAdapter.js +2 -2
  303. package/modules/lassoBidAdapter.js +3 -3
  304. package/modules/livewrappedAnalyticsAdapter.js +4 -4
  305. package/modules/liveyieldAnalyticsAdapter.js +1 -1
  306. package/modules/lkqdBidAdapter.js +3 -3
  307. package/modules/loganBidAdapter.js +2 -2
  308. package/modules/luponmediaBidAdapter.js +3 -3
  309. package/modules/malltvAnalyticsAdapter.js +1 -1
  310. package/modules/malltvBidAdapter.js +2 -2
  311. package/modules/marsmediaAnalyticsAdapter.js +1 -1
  312. package/modules/mediafuseBidAdapter.js +8 -8
  313. package/modules/mediakeysBidAdapter.js +2 -2
  314. package/modules/medianetAnalyticsAdapter.js +1 -1
  315. package/modules/merkleIdSystem.js +2 -2
  316. package/modules/mgidBidAdapter.js +2 -2
  317. package/modules/microadBidAdapter.js +1 -1
  318. package/modules/mobfoxpbBidAdapter.js +2 -2
  319. package/modules/newspassidBidAdapter.js +1 -1
  320. package/modules/nextMillenniumBidAdapter.js +21 -2
  321. package/modules/nobidBidAdapter.js +3 -3
  322. package/modules/novatiqIdSystem.js +1 -1
  323. package/modules/oguryBidAdapter.js +1 -1
  324. package/modules/ooloAnalyticsAdapter.js +1 -1
  325. package/modules/open8BidAdapter.js +1 -1
  326. package/modules/openwebBidAdapter.js +1 -1
  327. package/modules/openxAnalyticsAdapter.js +6 -745
  328. package/modules/openxAnalyticsAdapter.md +4 -0
  329. package/modules/openxBidAdapter.js +3 -5
  330. package/modules/openxOrtbBidAdapter.js +8 -4
  331. package/modules/operaadsBidAdapter.js +1 -1
  332. package/modules/optimonAnalyticsAdapter.js +1 -1
  333. package/modules/ozoneBidAdapter.js +102 -271
  334. package/modules/ozoneBidAdapter.md +37 -0
  335. package/modules/pianoDmpAnalyticsAdapter.js +1 -1
  336. package/modules/pixfutureBidAdapter.js +1 -1
  337. package/modules/prebidServerBidAdapter/index.js +7 -7
  338. package/modules/prebidmanagerAnalyticsAdapter.js +2 -2
  339. package/modules/priceFloors.js +1 -1
  340. package/modules/pubmaticAnalyticsAdapter.js +2 -2
  341. package/modules/pubmaticBidAdapter.js +28 -8
  342. package/modules/pubperfAnalyticsAdapter.js +1 -1
  343. package/modules/pubstackAnalyticsAdapter.js +1 -1
  344. package/modules/pubwiseAnalyticsAdapter.js +2 -2
  345. package/modules/pubwiseBidAdapter.js +3 -3
  346. package/modules/pubxBidAdapter.js +1 -1
  347. package/modules/pubxaiAnalyticsAdapter.js +3 -3
  348. package/modules/pulsepointAnalyticsAdapter.js +1 -1
  349. package/modules/pulsepointBidAdapter.js +1 -1
  350. package/modules/quantcastIdSystem.js +1 -1
  351. package/modules/radsBidAdapter.js +1 -1
  352. package/modules/realvuAnalyticsAdapter.js +1 -1
  353. package/modules/relaidoBidAdapter.js +23 -18
  354. package/modules/relevantAnalyticsAdapter.js +1 -1
  355. package/modules/revcontentBidAdapter.js +1 -1
  356. package/modules/richaudienceBidAdapter.js +1 -1
  357. package/modules/riseBidAdapter.js +8 -5
  358. package/modules/riseBidAdapter.md +3 -1
  359. package/modules/rivrAnalyticsAdapter.js +1 -1
  360. package/modules/roxotAnalyticsAdapter.js +1 -1
  361. package/modules/rtbhouseBidAdapter.js +1 -1
  362. package/modules/rubiconAnalyticsAdapter.js +1 -1
  363. package/modules/rubiconBidAdapter.js +2 -2
  364. package/modules/scaleableAnalyticsAdapter.js +1 -1
  365. package/modules/schain.js +1 -1
  366. package/modules/sharethroughAnalyticsAdapter.js +1 -1
  367. package/modules/sharethroughBidAdapter.js +3 -3
  368. package/modules/shinezBidAdapter.js +2 -2
  369. package/modules/showheroes-bsBidAdapter.js +131 -49
  370. package/modules/showheroes-bsBidAdapter.md +49 -0
  371. package/modules/sigmoidAnalyticsAdapter.js +1 -1
  372. package/modules/sirdataRtdProvider.js +3 -3
  373. package/modules/sizeMappingV2.js +1 -1
  374. package/modules/smaatoBidAdapter.js +2 -2
  375. package/modules/smartxBidAdapter.js +2 -2
  376. package/modules/snigelBidAdapter.js +150 -0
  377. package/modules/snigelBidAdapter.md +46 -0
  378. package/modules/sonobiAnalyticsAdapter.js +2 -2
  379. package/modules/sonobiBidAdapter.js +3 -3
  380. package/modules/sovrnAnalyticsAdapter.js +1 -1
  381. package/modules/spotxBidAdapter.js +5 -5
  382. package/modules/sspBCBidAdapter.js +15 -18
  383. package/modules/staqAnalyticsAdapter.js +2 -2
  384. package/modules/synacormediaBidAdapter.js +1 -1
  385. package/modules/taboolaBidAdapter.js +1 -1
  386. package/modules/tappxBidAdapter.js +4 -4
  387. package/modules/targetVideoBidAdapter.js +1 -1
  388. package/modules/terceptAnalyticsAdapter.js +1 -1
  389. package/modules/theAdxBidAdapter.js +2 -2
  390. package/modules/tpmnBidAdapter.js +1 -1
  391. package/modules/trionBidAdapter.js +2 -2
  392. package/modules/tripleliftBidAdapter.js +46 -20
  393. package/modules/trustpidSystem.js +2 -2
  394. package/modules/ttdBidAdapter.js +41 -26
  395. package/modules/ttdBidAdapter.md +4 -10
  396. package/modules/ucfunnelAnalyticsAdapter.js +1 -1
  397. package/modules/underdogmediaBidAdapter.js +1 -1
  398. package/modules/userId/eids.js +5 -0
  399. package/modules/userId/index.js +11 -7
  400. package/modules/vdoaiBidAdapter.js +1 -1
  401. package/modules/vidazooBidAdapter.js +9 -5
  402. package/modules/videoheroesBidAdapter.js +1 -1
  403. package/modules/vidoomyBidAdapter.js +1 -1
  404. package/modules/visxBidAdapter.js +1 -1
  405. package/modules/vrtcalBidAdapter.js +1 -1
  406. package/modules/weboramaRtdProvider.js +3 -3
  407. package/modules/winrBidAdapter.js +1 -1
  408. package/modules/yahoosspBidAdapter.js +4 -3
  409. package/modules/yandexBidAdapter.js +1 -1
  410. package/modules/yieldmoBidAdapter.js +3 -3
  411. package/modules/yieldoneAnalyticsAdapter.js +1 -1
  412. package/modules/yieldoneBidAdapter.js +2 -2
  413. package/modules/yuktamediaAnalyticsAdapter.js +1 -1
  414. package/modules/zeta_global_sspAnalyticsAdapter.js +1 -1
  415. package/modules/zeta_global_sspBidAdapter.js +25 -22
  416. package/package.json +4 -3
  417. package/src/Renderer.js +1 -1
  418. package/src/adapterManager.js +3 -3
  419. package/src/adapters/bidderFactory.js +1 -0
  420. package/src/auction.js +2 -2
  421. package/src/bidfactory.js +1 -1
  422. package/src/config.js +7 -7
  423. package/src/native.js +53 -58
  424. package/src/sizeMapping.js +1 -1
  425. package/src/targeting.js +1 -1
  426. package/src/userSync.js +1 -1
  427. package/src/utils.js +1 -1
  428. package/test/mocks/analyticsStub.js +1 -1
  429. package/test/spec/AnalyticsAdapter_spec.js +1 -1
  430. package/test/spec/config_spec.js +4 -0
  431. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  432. package/test/spec/modules/adnuntiusBidAdapter_spec.js +7 -3
  433. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  434. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  435. package/test/spec/modules/adyoulikeBidAdapter_spec.js +8 -3
  436. package/test/spec/modules/andBeyondMediaBidAdapter_spec.js +400 -0
  437. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +17 -1
  438. package/test/spec/modules/boldwinBidAdapter_spec.js +2 -1
  439. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  440. package/test/spec/modules/c1xBidAdapter_spec.js +189 -0
  441. package/test/spec/modules/cleanioRtdProvider_spec.js +23 -0
  442. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -1
  443. package/test/spec/modules/consumableBidAdapter_spec.js +139 -0
  444. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  445. package/test/spec/modules/criteoBidAdapter_spec.js +169 -38
  446. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  447. package/test/spec/modules/eids_spec.js +32 -0
  448. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +2 -2
  449. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +2 -1
  450. package/test/spec/modules/improvedigitalBidAdapter_spec.js +4 -4
  451. package/test/spec/modules/imuIdSystem_spec.js +20 -4
  452. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +8 -3
  453. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  454. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +2 -1
  455. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +17 -0
  456. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  457. package/test/spec/modules/openxOrtbBidAdapter_spec.js +32 -1
  458. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +2 -1
  459. package/test/spec/modules/ozoneBidAdapter_spec.js +367 -511
  460. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -0
  461. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -1
  462. package/test/spec/modules/pubmaticBidAdapter_spec.js +111 -5
  463. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +2 -1
  464. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +2 -1
  465. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +3 -3
  466. package/test/spec/modules/relaidoBidAdapter_spec.js +40 -33
  467. package/test/spec/modules/riseBidAdapter_spec.js +17 -0
  468. package/test/spec/modules/sharethroughBidAdapter_spec.js +10 -1
  469. package/test/spec/modules/showheroes-bsBidAdapter_spec.js +173 -2
  470. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +1 -1
  471. package/test/spec/modules/snigelBidAdapter_spec.js +296 -0
  472. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -1
  473. package/test/spec/modules/sspBCBidAdapter_spec.js +2 -2
  474. package/test/spec/modules/tripleliftBidAdapter_spec.js +378 -10
  475. package/test/spec/modules/ttdBidAdapter_spec.js +113 -34
  476. package/test/spec/modules/userId_spec.js +38 -2
  477. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  478. package/test/spec/modules/yahoosspBidAdapter_spec.js +13 -0
  479. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -1
  480. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +61 -2
  481. package/test/spec/native_spec.js +96 -0
  482. package/test/spec/unit/core/bidderFactory_spec.js +27 -2
  483. package/webpack.conf.js +47 -11
@@ -7,12 +7,6 @@ import * as utils from '../../../src/utils.js';
7
7
  const OZONEURI = 'https://elb.the-ozone-project.com/openrtb2/auction';
8
8
  const BIDDER_CODE = 'ozone';
9
9
 
10
- /*
11
-
12
- NOTE - use firefox console to deep copy the objects to use here
13
-
14
- */
15
- var originalPropertyBag = {'pageId': null};
16
10
  var validBidRequests = [
17
11
  {
18
12
  adUnitCode: 'div-gpt-ad-1460505748561-0',
@@ -147,7 +141,6 @@ var validBidRequestsWithUserIdData = [
147
141
  }]
148
142
  }
149
143
  ]
150
-
151
144
  }
152
145
  ];
153
146
  var validBidRequestsMinimal = [
@@ -176,7 +169,6 @@ var validBidRequestsNoSizes = [
176
169
  transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
177
170
  }
178
171
  ];
179
-
180
172
  var validBidRequestsWithBannerMediaType = [
181
173
  {
182
174
  adUnitCode: 'div-gpt-ad-1460505748561-0',
@@ -205,7 +197,6 @@ var validBidRequestsWithNonBannerMediaTypesAndValidOutstreamVideo = [
205
197
  transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
206
198
  }
207
199
  ];
208
-
209
200
  var validBidRequests1OutstreamVideo2020 = [
210
201
  {
211
202
  'bidder': 'ozone',
@@ -288,7 +279,6 @@ var validBidRequests1OutstreamVideo2020 = [
288
279
  'bidderWinsCount': 0
289
280
  }
290
281
  ];
291
-
292
282
  var validBidderRequest1OutstreamVideo2020 = {
293
283
  bidderRequest: {
294
284
  auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
@@ -392,84 +382,79 @@ var validBidderRequest1OutstreamVideo2020 = {
392
382
  }
393
383
  };
394
384
  var validBidderRequest = {
395
- bidderRequest: {
385
+ auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
386
+ auctionStart: 1536838908986,
387
+ bidderCode: 'ozone',
388
+ bidderRequestId: '1c1586b27a1b5c8',
389
+ bids: [{
390
+ adUnitCode: 'div-gpt-ad-1460505748561-0',
396
391
  auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
397
- auctionStart: 1536838908986,
398
- bidderCode: 'ozone',
392
+ bidId: '2899ec066a91ff8',
393
+ bidRequestsCount: 1,
394
+ bidder: 'ozone',
399
395
  bidderRequestId: '1c1586b27a1b5c8',
400
- bids: [{
401
- adUnitCode: 'div-gpt-ad-1460505748561-0',
402
- auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
403
- bidId: '2899ec066a91ff8',
404
- bidRequestsCount: 1,
405
- bidder: 'ozone',
406
- bidderRequestId: '1c1586b27a1b5c8',
407
- crumbs: {pubcid: '203a0692-f728-4856-87f6-9a25a6b63715'},
408
- params: { publisherId: '9876abcd12-3', customData: [{'settings': {}, 'targeting': {'gender': 'bart', 'age': 'low'}}], placementId: '1310000099', siteId: '1234567890', id: 'fea37168-78f1-4a23-a40e-88437a99377e', auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99', imp: [ { banner: { topframe: 1, w: 300, h: 250, format: [{ w: 300, h: 250 }, { w: 300, h: 600 }] }, id: '2899ec066a91ff8', secure: 1, tagid: 'undefined' } ] },
409
- sizes: [[300, 250], [300, 600]],
410
- transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
411
- }],
412
- doneCbCallCount: 1,
413
- start: 1536838908987,
414
- timeout: 3000
415
- }
396
+ crumbs: {pubcid: '203a0692-f728-4856-87f6-9a25a6b63715'},
397
+ params: { publisherId: '9876abcd12-3', customData: [{'settings': {}, 'targeting': {'gender': 'bart', 'age': 'low'}}], placementId: '1310000099', siteId: '1234567890', id: 'fea37168-78f1-4a23-a40e-88437a99377e', auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99', imp: [ { banner: { topframe: 1, w: 300, h: 250, format: [{ w: 300, h: 250 }, { w: 300, h: 600 }] }, id: '2899ec066a91ff8', secure: 1, tagid: 'undefined' } ] },
398
+ sizes: [[300, 250], [300, 600]],
399
+ transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
400
+ }],
401
+ doneCbCallCount: 1,
402
+ start: 1536838908987,
403
+ timeout: 3000
416
404
  };
417
-
418
405
  var bidderRequestWithFullGdpr = {
419
- bidderRequest: {
406
+ auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
407
+ auctionStart: 1536838908986,
408
+ bidderCode: 'ozone',
409
+ bidderRequestId: '1c1586b27a1b5c8',
410
+ bids: [{
411
+ adUnitCode: 'div-gpt-ad-1460505748561-0',
420
412
  auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
421
- auctionStart: 1536838908986,
422
- bidderCode: 'ozone',
413
+ bidId: '2899ec066a91ff8',
414
+ bidRequestsCount: 1,
415
+ bidder: 'ozone',
423
416
  bidderRequestId: '1c1586b27a1b5c8',
424
- bids: [{
425
- adUnitCode: 'div-gpt-ad-1460505748561-0',
426
- auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
427
- bidId: '2899ec066a91ff8',
428
- bidRequestsCount: 1,
429
- bidder: 'ozone',
430
- bidderRequestId: '1c1586b27a1b5c8',
431
- crumbs: {pubcid: '203a0692-f728-4856-87f6-9a25a6b63715'},
432
- params: { publisherId: '9876abcd12-3', customData: [{'settings': {}, 'targeting': {'gender': 'bart', 'age': 'low'}}], placementId: '1310000099', siteId: '1234567890', id: 'fea37168-78f1-4a23-a40e-88437a99377e', auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99', imp: [ { banner: { topframe: 1, w: 300, h: 250, format: [{ w: 300, h: 250 }, { w: 300, h: 600 }] }, id: '2899ec066a91ff8', secure: 1, tagid: 'undefined' } ] },
433
- sizes: [[300, 250], [300, 600]],
434
- transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
435
- }],
436
- doneCbCallCount: 1,
437
- start: 1536838908987,
438
- timeout: 3000,
439
- gdprConsent: {
440
- 'consentString': 'BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA',
441
- 'vendorData': {
442
- 'metadata': 'BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA',
443
- 'gdprApplies': true,
444
- 'hasGlobalScope': false,
445
- 'cookieVersion': '1',
446
- 'created': '2019-05-31T12:46:48.825',
447
- 'lastUpdated': '2019-05-31T12:46:48.825',
448
- 'cmpId': '28',
449
- 'cmpVersion': '1',
450
- 'consentLanguage': 'en',
451
- 'consentScreen': '1',
452
- 'vendorListVersion': 148,
453
- 'maxVendorId': 631,
454
- 'purposeConsents': {
455
- '1': true,
456
- '2': true,
457
- '3': true,
458
- '4': true,
459
- '5': true
460
- },
461
- 'vendorConsents': {
462
- '468': true,
463
- '522': true,
464
- '524': true, /* 524 is ozone */
465
- '565': true,
466
- '591': true
467
- }
417
+ crumbs: {pubcid: '203a0692-f728-4856-87f6-9a25a6b63715'},
418
+ params: { publisherId: '9876abcd12-3', customData: [{'settings': {}, 'targeting': {'gender': 'bart', 'age': 'low'}}], placementId: '1310000099', siteId: '1234567890', id: 'fea37168-78f1-4a23-a40e-88437a99377e', auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99', imp: [ { banner: { topframe: 1, w: 300, h: 250, format: [{ w: 300, h: 250 }, { w: 300, h: 600 }] }, id: '2899ec066a91ff8', secure: 1, tagid: 'undefined' } ] },
419
+ sizes: [[300, 250], [300, 600]],
420
+ transactionId: '2e63c0ed-b10c-4008-aed5-84582cecfe87'
421
+ }],
422
+ doneCbCallCount: 1,
423
+ start: 1536838908987,
424
+ timeout: 3000,
425
+ gdprConsent: {
426
+ 'consentString': 'BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA',
427
+ 'vendorData': {
428
+ 'metadata': 'BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA',
429
+ 'gdprApplies': true,
430
+ 'hasGlobalScope': false,
431
+ 'cookieVersion': '1',
432
+ 'created': '2019-05-31T12:46:48.825',
433
+ 'lastUpdated': '2019-05-31T12:46:48.825',
434
+ 'cmpId': '28',
435
+ 'cmpVersion': '1',
436
+ 'consentLanguage': 'en',
437
+ 'consentScreen': '1',
438
+ 'vendorListVersion': 148,
439
+ 'maxVendorId': 631,
440
+ 'purposeConsents': {
441
+ '1': true,
442
+ '2': true,
443
+ '3': true,
444
+ '4': true,
445
+ '5': true
468
446
  },
469
- 'gdprApplies': true
470
- }, }
447
+ 'vendorConsents': {
448
+ '468': true,
449
+ '522': true,
450
+ '524': true, /* 524 is ozone */
451
+ '565': true,
452
+ '591': true
453
+ }
454
+ },
455
+ 'gdprApplies': true
456
+ }
471
457
  };
472
-
473
458
  var gdpr1 = {
474
459
  'consentString': 'BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA',
475
460
  'vendorData': {
@@ -502,7 +487,6 @@ var gdpr1 = {
502
487
  },
503
488
  'gdprApplies': true
504
489
  };
505
-
506
490
  var bidderRequestWithPartialGdpr = {
507
491
  bidderRequest: {
508
492
  auctionId: '27dcb421-95c6-4024-a624-3c03816c5f99',
@@ -547,7 +531,6 @@ var bidderRequestWithPartialGdpr = {
547
531
  }
548
532
  }
549
533
  };
550
-
551
534
  var validResponse = {
552
535
  'body': {
553
536
  'id': 'd6198807-7a53-4141-b2db-d2cb754d68ba',
@@ -604,7 +587,6 @@ var validResponse = {
604
587
  },
605
588
  'headers': {}
606
589
  };
607
-
608
590
  var validResponse2Bids = {
609
591
  'body': {
610
592
  'id': 'd6198807-7a53-4141-b2db-d2cb754d68ba',
@@ -691,9 +673,6 @@ var validResponse2Bids = {
691
673
  },
692
674
  'headers': {}
693
675
  };
694
- /*
695
- A bidder returns a bid for both sizes in an adunit
696
- */
697
676
  var validResponse2BidsSameAdunit = {
698
677
  'body': {
699
678
  'id': 'd6198807-7a53-4141-b2db-d2cb754d68ba',
@@ -780,14 +759,6 @@ var validResponse2BidsSameAdunit = {
780
759
  },
781
760
  'headers': {}
782
761
  };
783
- /*
784
-
785
- SPECIAL CONSIDERATION FOR VIDEO TESTS:
786
-
787
- DO NOT USE _validVideoResponse directly - the interpretResponse function will modify it (adding a renderer!!!) so all
788
- subsequent calls will already have a renderer attached!!!
789
-
790
- */
791
762
  function getCleanValidVideoResponse() {
792
763
  return JSON.parse(JSON.stringify(_validVideoResponse));
793
764
  }
@@ -873,7 +844,6 @@ var _validVideoResponse = {
873
844
  },
874
845
  'headers': {}
875
846
  };
876
-
877
847
  var validBidResponse1adWith2Bidders = {
878
848
  'body': {
879
849
  'id': '91221f96-b931-4acc-8f05-c2a1186fa5ac',
@@ -964,11 +934,6 @@ var validBidResponse1adWith2Bidders = {
964
934
  },
965
935
  'headers': {}
966
936
  };
967
-
968
- /*
969
- testing 2 ads, 2 bidders, one bidder bids for both slots in one adunit
970
- */
971
-
972
937
  var multiRequest1 = [
973
938
  {
974
939
  'bidder': 'ozone',
@@ -1101,182 +1066,178 @@ var multiRequest1 = [
1101
1066
  'bidderWinsCount': 0
1102
1067
  }
1103
1068
  ];
1104
-
1105
1069
  var multiBidderRequest1 = {
1106
- bidderRequest: {
1107
- 'bidderCode': 'ozone',
1108
- 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1109
- 'bidderRequestId': '1d03a1dfc563fc',
1110
- 'bids': [
1111
- {
1112
- 'bidder': 'ozone',
1113
- 'params': {
1114
- 'publisherId': 'OZONERUP0001',
1115
- 'siteId': '4204204201',
1116
- 'placementId': '0420420421',
1117
- 'customData': [
1118
- {
1119
- 'settings': {},
1120
- 'targeting': {
1121
- 'sens': 'f',
1122
- 'pt1': '/uk',
1123
- 'pt2': 'uk',
1124
- 'pt3': 'network-front',
1125
- 'pt4': 'ng',
1126
- 'pt5': [
1127
- 'uk'
1128
- ],
1129
- 'pt7': 'desktop',
1130
- 'pt8': [
1131
- 'tfmqxwj7q',
1132
- 'txeh7uyo0',
1133
- 't8nxz6qzd',
1134
- 't8nyiude5',
1135
- 'sek9ghqwi'
1136
- ],
1137
- 'pt9': '|k0xw2vqzp33kklb3j5w4|||'
1138
- }
1139
- }
1140
- ]
1141
- },
1142
- 'mediaTypes': {
1143
- 'banner': {
1144
- 'sizes': [
1145
- [
1146
- 300,
1147
- 250
1070
+ 'bidderCode': 'ozone',
1071
+ 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1072
+ 'bidderRequestId': '1d03a1dfc563fc',
1073
+ 'bids': [
1074
+ {
1075
+ 'bidder': 'ozone',
1076
+ 'params': {
1077
+ 'publisherId': 'OZONERUP0001',
1078
+ 'siteId': '4204204201',
1079
+ 'placementId': '0420420421',
1080
+ 'customData': [
1081
+ {
1082
+ 'settings': {},
1083
+ 'targeting': {
1084
+ 'sens': 'f',
1085
+ 'pt1': '/uk',
1086
+ 'pt2': 'uk',
1087
+ 'pt3': 'network-front',
1088
+ 'pt4': 'ng',
1089
+ 'pt5': [
1090
+ 'uk'
1148
1091
  ],
1149
- [
1150
- 300,
1151
- 600
1152
- ]
1153
- ]
1092
+ 'pt7': 'desktop',
1093
+ 'pt8': [
1094
+ 'tfmqxwj7q',
1095
+ 'txeh7uyo0',
1096
+ 't8nxz6qzd',
1097
+ 't8nyiude5',
1098
+ 'sek9ghqwi'
1099
+ ],
1100
+ 'pt9': '|k0xw2vqzp33kklb3j5w4|||'
1101
+ }
1154
1102
  }
1155
- },
1156
- 'adUnitCode': 'mpu',
1157
- 'transactionId': '6480bac7-31b5-4723-9145-ad8966660651',
1158
- 'sizes': [
1159
- [
1160
- 300,
1161
- 250
1162
- ],
1163
- [
1164
- 300,
1165
- 600
1166
- ]
1167
- ],
1168
- 'bidId': '2d30e86db743a8',
1169
- 'bidderRequestId': '1d03a1dfc563fc',
1170
- 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1171
- 'src': 'client',
1172
- 'bidRequestsCount': 1,
1173
- 'bidderRequestsCount': 1,
1174
- 'bidderWinsCount': 0
1103
+ ]
1175
1104
  },
1176
- {
1177
- 'bidder': 'ozone',
1178
- 'params': {
1179
- 'publisherId': 'OZONERUP0001',
1180
- 'siteId': '4204204201',
1181
- 'placementId': '0420420421',
1182
- 'customData': [
1183
- {
1184
- 'settings': {},
1185
- 'targeting': {
1186
- 'sens': 'f',
1187
- 'pt1': '/uk',
1188
- 'pt2': 'uk',
1189
- 'pt3': 'network-front',
1190
- 'pt4': 'ng',
1191
- 'pt5': [
1192
- 'uk'
1193
- ],
1194
- 'pt7': 'desktop',
1195
- 'pt8': [
1196
- 'tfmqxwj7q',
1197
- 'penl4dfdk',
1198
- 't8nxz6qzd',
1199
- 't8nyiude5',
1200
- 'sek9ghqwi'
1201
- ],
1202
- 'pt9': '|k0xw2vqzp33kklb3j5w4|||'
1203
- }
1204
- }
1205
- ]
1206
- },
1207
- 'mediaTypes': {
1208
- 'banner': {
1209
- 'sizes': [
1210
- [
1211
- 728,
1212
- 90
1213
- ],
1214
- [
1215
- 970,
1216
- 250
1217
- ]
1105
+ 'mediaTypes': {
1106
+ 'banner': {
1107
+ 'sizes': [
1108
+ [
1109
+ 300,
1110
+ 250
1111
+ ],
1112
+ [
1113
+ 300,
1114
+ 600
1218
1115
  ]
1219
- }
1220
- },
1221
- 'adUnitCode': 'leaderboard',
1222
- 'transactionId': 'a49988e6-ae7c-46c4-9598-f18db49892a0',
1223
- 'sizes': [
1224
- [
1225
- 728,
1226
- 90
1227
- ],
1228
- [
1229
- 970,
1230
- 250
1231
1116
  ]
1117
+ }
1118
+ },
1119
+ 'adUnitCode': 'mpu',
1120
+ 'transactionId': '6480bac7-31b5-4723-9145-ad8966660651',
1121
+ 'sizes': [
1122
+ [
1123
+ 300,
1124
+ 250
1232
1125
  ],
1233
- 'bidId': '3025f169863b7f8',
1234
- 'bidderRequestId': '1d03a1dfc563fc',
1235
- 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1236
- 'src': 'client',
1237
- 'bidRequestsCount': 1,
1238
- 'bidderRequestsCount': 1,
1239
- 'bidderWinsCount': 0
1240
- }
1241
- ],
1242
- 'auctionStart': 1592918645574,
1243
- 'timeout': 3000,
1244
- 'refererInfo': {
1245
- 'referer': 'http://ozone.ardm.io/adapter/2.4.0/620x350-switch.html?guardian=true&pbjs_debug=true',
1246
- 'reachedTop': true,
1247
- 'numIframes': 0,
1248
- 'stack': [
1249
- 'http://ozone.ardm.io/adapter/2.4.0/620x350-switch.html?guardian=true&pbjs_debug=true'
1250
- ]
1126
+ [
1127
+ 300,
1128
+ 600
1129
+ ]
1130
+ ],
1131
+ 'bidId': '2d30e86db743a8',
1132
+ 'bidderRequestId': '1d03a1dfc563fc',
1133
+ 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1134
+ 'src': 'client',
1135
+ 'bidRequestsCount': 1,
1136
+ 'bidderRequestsCount': 1,
1137
+ 'bidderWinsCount': 0
1251
1138
  },
1252
- 'gdprConsent': {
1253
- 'consentString': 'BOvy5sFO1dBa2AKAiBENDP-AAAAwVrv7_77-_9f-_f__9uj3Gr_v_f__32ccL5tv3h_7v-_7fi_-0nV4u_1tft9ydk1-5ctDztp507iakiPHmqNeb9n_mz1eZpRP58E09j53z7Ew_v8_v-b7BCPN_Y3v-8K96kA',
1254
- 'vendorData': {
1255
- 'metadata': 'BOvy5sFO1dBa2AKAiBENDPA',
1256
- 'gdprApplies': true,
1257
- 'hasGlobalConsent': false,
1258
- 'hasGlobalScope': false,
1259
- 'purposeConsents': {
1260
- '1': true,
1261
- '2': true,
1262
- '3': true,
1263
- '4': true,
1264
- '5': true
1265
- },
1266
- 'vendorConsents': {
1267
- '1': true,
1268
- '2': true,
1269
- '3': false,
1270
- '4': true,
1271
- '5': true
1139
+ {
1140
+ 'bidder': 'ozone',
1141
+ 'params': {
1142
+ 'publisherId': 'OZONERUP0001',
1143
+ 'siteId': '4204204201',
1144
+ 'placementId': '0420420421',
1145
+ 'customData': [
1146
+ {
1147
+ 'settings': {},
1148
+ 'targeting': {
1149
+ 'sens': 'f',
1150
+ 'pt1': '/uk',
1151
+ 'pt2': 'uk',
1152
+ 'pt3': 'network-front',
1153
+ 'pt4': 'ng',
1154
+ 'pt5': [
1155
+ 'uk'
1156
+ ],
1157
+ 'pt7': 'desktop',
1158
+ 'pt8': [
1159
+ 'tfmqxwj7q',
1160
+ 'penl4dfdk',
1161
+ 't8nxz6qzd',
1162
+ 't8nyiude5',
1163
+ 'sek9ghqwi'
1164
+ ],
1165
+ 'pt9': '|k0xw2vqzp33kklb3j5w4|||'
1166
+ }
1167
+ }
1168
+ ]
1169
+ },
1170
+ 'mediaTypes': {
1171
+ 'banner': {
1172
+ 'sizes': [
1173
+ [
1174
+ 728,
1175
+ 90
1176
+ ],
1177
+ [
1178
+ 970,
1179
+ 250
1180
+ ]
1181
+ ]
1272
1182
  }
1273
1183
  },
1274
- 'gdprApplies': true
1184
+ 'adUnitCode': 'leaderboard',
1185
+ 'transactionId': 'a49988e6-ae7c-46c4-9598-f18db49892a0',
1186
+ 'sizes': [
1187
+ [
1188
+ 728,
1189
+ 90
1190
+ ],
1191
+ [
1192
+ 970,
1193
+ 250
1194
+ ]
1195
+ ],
1196
+ 'bidId': '3025f169863b7f8',
1197
+ 'bidderRequestId': '1d03a1dfc563fc',
1198
+ 'auctionId': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
1199
+ 'src': 'client',
1200
+ 'bidRequestsCount': 1,
1201
+ 'bidderRequestsCount': 1,
1202
+ 'bidderWinsCount': 0
1203
+ }
1204
+ ],
1205
+ 'auctionStart': 1592918645574,
1206
+ 'timeout': 3000,
1207
+ 'refererInfo': {
1208
+ 'referer': 'http://ozone.ardm.io/adapter/2.4.0/620x350-switch.html?guardian=true&pbjs_debug=true',
1209
+ 'reachedTop': true,
1210
+ 'numIframes': 0,
1211
+ 'stack': [
1212
+ 'http://ozone.ardm.io/adapter/2.4.0/620x350-switch.html?guardian=true&pbjs_debug=true'
1213
+ ]
1214
+ },
1215
+ 'gdprConsent': {
1216
+ 'consentString': 'BOvy5sFO1dBa2AKAiBENDP-AAAAwVrv7_77-_9f-_f__9uj3Gr_v_f__32ccL5tv3h_7v-_7fi_-0nV4u_1tft9ydk1-5ctDztp507iakiPHmqNeb9n_mz1eZpRP58E09j53z7Ew_v8_v-b7BCPN_Y3v-8K96kA',
1217
+ 'vendorData': {
1218
+ 'metadata': 'BOvy5sFO1dBa2AKAiBENDPA',
1219
+ 'gdprApplies': true,
1220
+ 'hasGlobalConsent': false,
1221
+ 'hasGlobalScope': false,
1222
+ 'purposeConsents': {
1223
+ '1': true,
1224
+ '2': true,
1225
+ '3': true,
1226
+ '4': true,
1227
+ '5': true
1228
+ },
1229
+ 'vendorConsents': {
1230
+ '1': true,
1231
+ '2': true,
1232
+ '3': false,
1233
+ '4': true,
1234
+ '5': true
1235
+ }
1275
1236
  },
1276
- 'start': 1592918645578
1277
- }
1237
+ 'gdprApplies': true
1238
+ },
1239
+ 'start': 1592918645578
1278
1240
  };
1279
-
1280
1241
  var multiResponse1 = {
1281
1242
  'body': {
1282
1243
  'id': '592ee33b-fb2e-4c00-b2d5-383e99cac57f',
@@ -1488,11 +1449,6 @@ var multiResponse1 = {
1488
1449
  },
1489
1450
  'headers': {}
1490
1451
  };
1491
-
1492
- /*
1493
- --------------------end of 2 slots, 2 ----------------------------
1494
- */
1495
-
1496
1452
  describe('ozone Adapter', function () {
1497
1453
  describe('isBidRequestValid', function () {
1498
1454
  let validBidReq = {
@@ -1503,13 +1459,10 @@ describe('ozone Adapter', function () {
1503
1459
  siteId: '1234567890'
1504
1460
  }
1505
1461
  };
1506
-
1507
1462
  it('should return true when required params found', function () {
1508
1463
  expect(spec.isBidRequestValid(validBidReq)).to.equal(true);
1509
1464
  });
1510
-
1511
1465
  var validBidReq2 = {
1512
-
1513
1466
  bidder: BIDDER_CODE,
1514
1467
  params: {
1515
1468
  placementId: '1310000099',
@@ -1519,11 +1472,9 @@ describe('ozone Adapter', function () {
1519
1472
  },
1520
1473
  siteId: 1234567890
1521
1474
  }
1522
-
1523
1475
  it('should return true when required params found and all optional params are valid', function () {
1524
1476
  expect(spec.isBidRequestValid(validBidReq2)).to.equal(true);
1525
1477
  });
1526
-
1527
1478
  var xEmptyPlacement = {
1528
1479
  bidder: BIDDER_CODE,
1529
1480
  params: {
@@ -1532,11 +1483,9 @@ describe('ozone Adapter', function () {
1532
1483
  siteId: '1234567890'
1533
1484
  }
1534
1485
  };
1535
-
1536
1486
  it('should not validate empty placementId', function () {
1537
1487
  expect(spec.isBidRequestValid(xEmptyPlacement)).to.equal(false);
1538
1488
  });
1539
-
1540
1489
  var xMissingPlacement = {
1541
1490
  bidder: BIDDER_CODE,
1542
1491
  params: {
@@ -1544,11 +1493,9 @@ describe('ozone Adapter', function () {
1544
1493
  siteId: '1234567890'
1545
1494
  }
1546
1495
  };
1547
-
1548
1496
  it('should not validate missing placementId', function () {
1549
1497
  expect(spec.isBidRequestValid(xMissingPlacement)).to.equal(false);
1550
1498
  });
1551
-
1552
1499
  var xBadPlacement = {
1553
1500
  bidder: BIDDER_CODE,
1554
1501
  params: {
@@ -1557,11 +1504,9 @@ describe('ozone Adapter', function () {
1557
1504
  siteId: '1234567890'
1558
1505
  }
1559
1506
  };
1560
-
1561
1507
  it('should not validate placementId with a non-numeric value', function () {
1562
1508
  expect(spec.isBidRequestValid(xBadPlacement)).to.equal(false);
1563
1509
  });
1564
-
1565
1510
  var xBadPlacementTooShort = {
1566
1511
  bidder: BIDDER_CODE,
1567
1512
  params: {
@@ -1570,11 +1515,9 @@ describe('ozone Adapter', function () {
1570
1515
  siteId: '1234567890'
1571
1516
  }
1572
1517
  };
1573
-
1574
1518
  it('should not validate placementId with a numeric value of wrong length', function () {
1575
1519
  expect(spec.isBidRequestValid(xBadPlacementTooShort)).to.equal(false);
1576
1520
  });
1577
-
1578
1521
  var xBadPlacementTooLong = {
1579
1522
  bidder: BIDDER_CODE,
1580
1523
  params: {
@@ -1583,11 +1526,9 @@ describe('ozone Adapter', function () {
1583
1526
  siteId: '1234567890'
1584
1527
  }
1585
1528
  };
1586
-
1587
1529
  it('should not validate placementId with a numeric value of wrong length', function () {
1588
1530
  expect(spec.isBidRequestValid(xBadPlacementTooLong)).to.equal(false);
1589
1531
  });
1590
-
1591
1532
  var xMissingPublisher = {
1592
1533
  bidder: BIDDER_CODE,
1593
1534
  params: {
@@ -1595,11 +1536,9 @@ describe('ozone Adapter', function () {
1595
1536
  siteId: '1234567890'
1596
1537
  }
1597
1538
  };
1598
-
1599
1539
  it('should not validate missing publisherId', function () {
1600
1540
  expect(spec.isBidRequestValid(xMissingPublisher)).to.equal(false);
1601
1541
  });
1602
-
1603
1542
  var xMissingSiteId = {
1604
1543
  bidder: BIDDER_CODE,
1605
1544
  params: {
@@ -1607,11 +1546,9 @@ describe('ozone Adapter', function () {
1607
1546
  placementId: '1234567890',
1608
1547
  }
1609
1548
  };
1610
-
1611
1549
  it('should not validate missing sitetId', function () {
1612
1550
  expect(spec.isBidRequestValid(xMissingSiteId)).to.equal(false);
1613
1551
  });
1614
-
1615
1552
  var xBadPublisherTooShort = {
1616
1553
  bidder: BIDDER_CODE,
1617
1554
  params: {
@@ -1620,11 +1557,9 @@ describe('ozone Adapter', function () {
1620
1557
  siteId: '1234567890'
1621
1558
  }
1622
1559
  };
1623
-
1624
1560
  it('should not validate publisherId being too short', function () {
1625
1561
  expect(spec.isBidRequestValid(xBadPublisherTooShort)).to.equal(false);
1626
1562
  });
1627
-
1628
1563
  var xBadPublisherTooLong = {
1629
1564
  bidder: BIDDER_CODE,
1630
1565
  params: {
@@ -1633,11 +1568,9 @@ describe('ozone Adapter', function () {
1633
1568
  siteId: '1234567890'
1634
1569
  }
1635
1570
  };
1636
-
1637
1571
  it('should not validate publisherId being too long', function () {
1638
1572
  expect(spec.isBidRequestValid(xBadPublisherTooLong)).to.equal(false);
1639
1573
  });
1640
-
1641
1574
  var publisherNumericOk = {
1642
1575
  bidder: BIDDER_CODE,
1643
1576
  params: {
@@ -1646,11 +1579,9 @@ describe('ozone Adapter', function () {
1646
1579
  siteId: '1234567890'
1647
1580
  }
1648
1581
  };
1649
-
1650
1582
  it('should validate publisherId being 12 digits', function () {
1651
1583
  expect(spec.isBidRequestValid(publisherNumericOk)).to.equal(true);
1652
1584
  });
1653
-
1654
1585
  var xEmptyPublisher = {
1655
1586
  bidder: BIDDER_CODE,
1656
1587
  params: {
@@ -1659,11 +1590,9 @@ describe('ozone Adapter', function () {
1659
1590
  siteId: '1234567890'
1660
1591
  }
1661
1592
  };
1662
-
1663
1593
  it('should not validate empty publisherId', function () {
1664
1594
  expect(spec.isBidRequestValid(xEmptyPublisher)).to.equal(false);
1665
1595
  });
1666
-
1667
1596
  var xBadSite = {
1668
1597
  bidder: BIDDER_CODE,
1669
1598
  params: {
@@ -1672,37 +1601,15 @@ describe('ozone Adapter', function () {
1672
1601
  siteId: '12345Z'
1673
1602
  }
1674
1603
  };
1675
-
1676
1604
  it('should not validate bad siteId', function () {
1677
1605
  expect(spec.isBidRequestValid(xBadSite)).to.equal(false);
1678
1606
  });
1679
-
1680
- var xBadSiteTooLong = {
1681
- bidder: BIDDER_CODE,
1682
- params: {
1683
- placementId: '1234567890',
1684
- publisherId: '9876abcd12-3',
1685
- siteId: '12345678901'
1686
- }
1687
- };
1688
-
1689
1607
  it('should not validate siteId too long', function () {
1690
1608
  expect(spec.isBidRequestValid(xBadSite)).to.equal(false);
1691
1609
  });
1692
-
1693
- var xBadSiteTooShort = {
1694
- bidder: BIDDER_CODE,
1695
- params: {
1696
- placementId: '1234567890',
1697
- publisherId: '9876abcd12-3',
1698
- siteId: '123456789'
1699
- }
1700
- };
1701
-
1702
1610
  it('should not validate siteId too short', function () {
1703
1611
  expect(spec.isBidRequestValid(xBadSite)).to.equal(false);
1704
1612
  });
1705
-
1706
1613
  var allNonStrings = {
1707
1614
  bidder: BIDDER_CODE,
1708
1615
  params: {
@@ -1711,11 +1618,9 @@ describe('ozone Adapter', function () {
1711
1618
  siteId: 1234567890
1712
1619
  }
1713
1620
  };
1714
-
1715
1621
  it('should validate all numeric values being sent as non-string numbers', function () {
1716
1622
  expect(spec.isBidRequestValid(allNonStrings)).to.equal(true);
1717
1623
  });
1718
-
1719
1624
  var emptySiteId = {
1720
1625
  bidder: BIDDER_CODE,
1721
1626
  params: {
@@ -1724,11 +1629,9 @@ describe('ozone Adapter', function () {
1724
1629
  siteId: ''
1725
1630
  }
1726
1631
  };
1727
-
1728
1632
  it('should not validate siteId being empty string (it is required now)', function () {
1729
1633
  expect(spec.isBidRequestValid(emptySiteId)).to.equal(false);
1730
1634
  });
1731
-
1732
1635
  var xBadCustomData = {
1733
1636
  bidder: BIDDER_CODE,
1734
1637
  params: {
@@ -1738,12 +1641,10 @@ describe('ozone Adapter', function () {
1738
1641
  'customData': 'this aint gonna work'
1739
1642
  }
1740
1643
  };
1741
-
1742
1644
  it('should not validate customData not being an array', function () {
1743
1645
  expect(spec.isBidRequestValid(xBadCustomData)).to.equal(false);
1744
1646
  });
1745
-
1746
- var xBadCustomData_OLD_CUSTOMDATA_VALUE = {
1647
+ var xBadCustomDataOldCustomdataValue = {
1747
1648
  bidder: BIDDER_CODE,
1748
1649
  params: {
1749
1650
  'placementId': '1234567890',
@@ -1752,12 +1653,10 @@ describe('ozone Adapter', function () {
1752
1653
  'customData': {'gender': 'bart', 'age': 'low'}
1753
1654
  }
1754
1655
  };
1755
-
1756
1656
  it('should not validate customData being an object, not an array', function () {
1757
- expect(spec.isBidRequestValid(xBadCustomData_OLD_CUSTOMDATA_VALUE)).to.equal(false);
1657
+ expect(spec.isBidRequestValid(xBadCustomDataOldCustomdataValue)).to.equal(false);
1758
1658
  });
1759
-
1760
- var xBadCustomData_zerocd = {
1659
+ var xBadCustomDataZerocd = {
1761
1660
  bidder: BIDDER_CODE,
1762
1661
  params: {
1763
1662
  'placementId': '1111111110',
@@ -1766,12 +1665,10 @@ describe('ozone Adapter', function () {
1766
1665
  'customData': []
1767
1666
  }
1768
1667
  };
1769
-
1770
1668
  it('should not validate customData array having no elements', function () {
1771
- expect(spec.isBidRequestValid(xBadCustomData_zerocd)).to.equal(false);
1669
+ expect(spec.isBidRequestValid(xBadCustomDataZerocd)).to.equal(false);
1772
1670
  });
1773
-
1774
- var xBadCustomData_notargeting = {
1671
+ var xBadCustomDataNotargeting = {
1775
1672
  bidder: BIDDER_CODE,
1776
1673
  params: {
1777
1674
  'placementId': '1234567890',
@@ -1781,10 +1678,9 @@ describe('ozone Adapter', function () {
1781
1678
  }
1782
1679
  };
1783
1680
  it('should not validate customData[] having no "targeting"', function () {
1784
- expect(spec.isBidRequestValid(xBadCustomData_notargeting)).to.equal(false);
1681
+ expect(spec.isBidRequestValid(xBadCustomDataNotargeting)).to.equal(false);
1785
1682
  });
1786
-
1787
- var xBadCustomData_tgt_not_obj = {
1683
+ var xBadCustomDataTgtNotObj = {
1788
1684
  bidder: BIDDER_CODE,
1789
1685
  params: {
1790
1686
  'placementId': '1234567890',
@@ -1794,9 +1690,8 @@ describe('ozone Adapter', function () {
1794
1690
  }
1795
1691
  };
1796
1692
  it('should not validate customData[0].targeting not being an object', function () {
1797
- expect(spec.isBidRequestValid(xBadCustomData_tgt_not_obj)).to.equal(false);
1693
+ expect(spec.isBidRequestValid(xBadCustomDataTgtNotObj)).to.equal(false);
1798
1694
  });
1799
-
1800
1695
  var xBadCustomParams = {
1801
1696
  bidder: BIDDER_CODE,
1802
1697
  params: {
@@ -1821,11 +1716,9 @@ describe('ozone Adapter', function () {
1821
1716
  mimes: ['video/mp4']}
1822
1717
  }
1823
1718
  };
1824
-
1825
1719
  it('should not validate video without context attribute', function () {
1826
1720
  expect(spec.isBidRequestValid(xBadVideoContext2)).to.equal(false);
1827
1721
  });
1828
-
1829
1722
  let validVideoBidReq = {
1830
1723
  bidder: BIDDER_CODE,
1831
1724
  params: {
@@ -1839,7 +1732,6 @@ describe('ozone Adapter', function () {
1839
1732
  'context': 'outstream'},
1840
1733
  }
1841
1734
  };
1842
-
1843
1735
  it('should validate video outstream being sent', function () {
1844
1736
  expect(spec.isBidRequestValid(validVideoBidReq)).to.equal(true);
1845
1737
  });
@@ -1849,47 +1741,44 @@ describe('ozone Adapter', function () {
1849
1741
  expect(spec.isBidRequestValid(instreamVid)).to.equal(true);
1850
1742
  });
1851
1743
  });
1852
-
1853
1744
  describe('buildRequests', function () {
1745
+ beforeEach(function () {
1746
+ config.resetConfig()
1747
+ });
1854
1748
  it('sends bid request to OZONEURI via POST', function () {
1855
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1749
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
1856
1750
  expect(request.url).to.equal(OZONEURI);
1857
1751
  expect(request.method).to.equal('POST');
1858
1752
  });
1859
-
1860
1753
  it('sends data as a string', function () {
1861
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1754
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
1862
1755
  expect(request.data).to.be.a('string');
1863
1756
  });
1864
-
1865
1757
  it('sends all bid parameters', function () {
1866
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1758
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
1867
1759
  expect(request).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1868
1760
  });
1869
-
1870
1761
  it('adds all parameters inside the ext object only', function () {
1871
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1762
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
1872
1763
  expect(request.data).to.be.a('string');
1873
1764
  var data = JSON.parse(request.data);
1874
1765
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
1875
1766
  expect(request).not.to.have.key('lotameData');
1876
1767
  expect(request).not.to.have.key('customData');
1877
1768
  });
1878
-
1879
1769
  it('adds all parameters inside the ext object only - lightning', function () {
1880
1770
  let localBidReq = JSON.parse(JSON.stringify(validBidRequests));
1881
- const request = spec.buildRequests(localBidReq, validBidderRequest.bidderRequest);
1771
+ const request = spec.buildRequests(localBidReq, validBidderRequest);
1882
1772
  expect(request.data).to.be.a('string');
1883
1773
  var data = JSON.parse(request.data);
1884
1774
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
1885
1775
  expect(request).not.to.have.key('lotameData');
1886
1776
  expect(request).not.to.have.key('customData');
1887
1777
  });
1888
-
1889
1778
  it('ignores ozoneData in & after version 2.1.1', function () {
1890
1779
  let validBidRequestsWithOzoneData = JSON.parse(JSON.stringify(validBidRequests));
1891
1780
  validBidRequestsWithOzoneData[0].params.ozoneData = {'networkID': '3048', 'dfpSiteID': 'd.thesun', 'sectionID': 'homepage', 'path': '/', 'sec_id': 'null', 'sec': 'sec', 'topics': 'null', 'kw': 'null', 'aid': 'null', 'search': 'null', 'article_type': 'null', 'hide_ads': '', 'article_slug': 'null'};
1892
- const request = spec.buildRequests(validBidRequestsWithOzoneData, validBidderRequest.bidderRequest);
1781
+ const request = spec.buildRequests(validBidRequestsWithOzoneData, validBidderRequest);
1893
1782
  expect(request.data).to.be.a('string');
1894
1783
  var data = JSON.parse(request.data);
1895
1784
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
@@ -1897,43 +1786,36 @@ describe('ozone Adapter', function () {
1897
1786
  expect(request).not.to.have.key('lotameData');
1898
1787
  expect(request).not.to.have.key('customData');
1899
1788
  });
1900
-
1901
1789
  it('has correct bidder', function () {
1902
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1790
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
1903
1791
  expect(request.bidderRequest.bids[0].bidder).to.equal(BIDDER_CODE);
1904
1792
  });
1905
-
1906
1793
  it('handles mediaTypes element correctly', function () {
1907
- const request = spec.buildRequests(validBidRequestsWithBannerMediaType, validBidderRequest.bidderRequest);
1794
+ const request = spec.buildRequests(validBidRequestsWithBannerMediaType, validBidderRequest);
1908
1795
  expect(request).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1909
1796
  });
1910
-
1911
1797
  it('handles no ozone or custom data', function () {
1912
- const request = spec.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
1798
+ const request = spec.buildRequests(validBidRequestsMinimal, validBidderRequest);
1913
1799
  expect(request).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1914
1800
  });
1915
-
1916
1801
  it('handles video mediaType element correctly, with outstream video', function () {
1917
- const request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest.bidderRequest);
1802
+ const request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest);
1918
1803
  expect(request).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1919
1804
  });
1920
-
1921
1805
  it('should not crash when there is no sizes element at all', function () {
1922
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
1806
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
1923
1807
  expect(request).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1924
1808
  });
1925
-
1926
1809
  it('should be able to handle non-single requests', function () {
1927
1810
  config.setConfig({'ozone': {'singleRequest': false}});
1928
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
1811
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
1929
1812
  expect(request).to.be.a('array');
1930
1813
  expect(request[0]).to.have.all.keys(['bidderRequest', 'data', 'method', 'url']);
1931
1814
  config.setConfig({'ozone': {'singleRequest': true}});
1932
1815
  });
1933
-
1934
1816
  it('should add gdpr consent information to the request when ozone is true', function () {
1935
1817
  let consentString = 'BOcocyaOcocyaAfEYDENCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NphLgA==';
1936
- let bidderRequest = validBidderRequest.bidderRequest;
1818
+ let bidderRequest = validBidderRequest;
1937
1819
  bidderRequest.gdprConsent = {
1938
1820
  consentString: consentString,
1939
1821
  gdprApplies: true,
@@ -1944,16 +1826,14 @@ describe('ozone Adapter', function () {
1944
1826
  purposeConsents: {1: true, 2: true, 3: true, 4: true, 5: true}
1945
1827
  }
1946
1828
  }
1947
-
1948
1829
  const request = spec.buildRequests(validBidRequestsNoSizes, bidderRequest);
1949
1830
  const payload = JSON.parse(request.data);
1950
1831
  expect(payload.regs.ext.gdpr).to.equal(1);
1951
1832
  expect(payload.user.ext.consent).to.equal(consentString);
1952
1833
  });
1953
-
1954
1834
  it('should add gdpr consent information to the request when vendorData is missing vendorConsents (Mirror)', function () {
1955
1835
  let consentString = 'BOcocyaOcocyaAfEYDENCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NphLgA==';
1956
- let bidderRequest = validBidderRequest.bidderRequest;
1836
+ let bidderRequest = validBidderRequest;
1957
1837
  bidderRequest.gdprConsent = {
1958
1838
  consentString: consentString,
1959
1839
  gdprApplies: true,
@@ -1962,16 +1842,14 @@ describe('ozone Adapter', function () {
1962
1842
  gdprApplies: true
1963
1843
  }
1964
1844
  }
1965
-
1966
1845
  const request = spec.buildRequests(validBidRequestsNoSizes, bidderRequest);
1967
1846
  const payload = JSON.parse(request.data);
1968
1847
  expect(payload.regs.ext.gdpr).to.equal(1);
1969
1848
  expect(payload.user.ext.consent).to.equal(consentString);
1970
1849
  });
1971
-
1972
1850
  it('should set regs.ext.gdpr flag to 0 when gdprApplies is false', function () {
1973
1851
  let consentString = 'BOcocyaOcocyaAfEYDENCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NphLgA==';
1974
- let bidderRequest = validBidderRequest.bidderRequest;
1852
+ let bidderRequest = validBidderRequest;
1975
1853
  bidderRequest.gdprConsent = {
1976
1854
  consentString: consentString,
1977
1855
  gdprApplies: false,
@@ -1982,15 +1860,13 @@ describe('ozone Adapter', function () {
1982
1860
  purposeConsents: {1: true, 2: true, 3: true, 4: true, 5: true}
1983
1861
  }
1984
1862
  };
1985
-
1986
1863
  const request = spec.buildRequests(validBidRequestsNoSizes, bidderRequest);
1987
1864
  const payload = JSON.parse(request.data);
1988
1865
  expect(payload.regs.ext.gdpr).to.equal(0);
1989
1866
  });
1990
-
1991
1867
  it('should not have imp[N].ext.ozone.userId', function () {
1992
1868
  let consentString = 'BOcocyaOcocyaAfEYDENCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NphLgA==';
1993
- let bidderRequest = validBidderRequest.bidderRequest;
1869
+ let bidderRequest = validBidderRequest;
1994
1870
  bidderRequest.gdprConsent = {
1995
1871
  consentString: consentString,
1996
1872
  gdprApplies: false,
@@ -2001,7 +1877,6 @@ describe('ozone Adapter', function () {
2001
1877
  purposeConsents: {1: true, 2: true, 3: true, 4: true, 5: true}
2002
1878
  }
2003
1879
  };
2004
-
2005
1880
  let bidRequests = validBidRequests;
2006
1881
  bidRequests[0]['userId'] = {
2007
1882
  'digitrustid': {data: {id: 'DTID', keyv: 4, privacy: {optout: false}, producer: 'ABC', version: 2}},
@@ -2019,7 +1894,6 @@ describe('ozone Adapter', function () {
2019
1894
  expect(firstBid).to.not.have.property('userId');
2020
1895
  delete validBidRequests[0].userId; // tidy up now, else it will screw with other tests
2021
1896
  });
2022
-
2023
1897
  it('should pick up the value of pubcid when built using the pubCommonId module (not userId)', function () {
2024
1898
  let bidRequests = validBidRequests;
2025
1899
  bidRequests[0]['userId'] = {
@@ -2031,23 +1905,13 @@ describe('ozone Adapter', function () {
2031
1905
  'sharedid': {'id': '01EAJWWNEPN3CYMM5N8M5VXY22', 'third': '01EAJWWNEPN3CYMM5N8M5VXY22'}
2032
1906
  };
2033
1907
  bidRequests[0]['userIdAsEids'] = validBidRequestsWithUserIdData[0]['userIdAsEids'];
2034
- const request = spec.buildRequests(bidRequests, validBidderRequest.bidderRequest);
1908
+ const request = spec.buildRequests(bidRequests, validBidderRequest);
2035
1909
  const payload = JSON.parse(request.data);
2036
1910
  expect(payload.ext.ozone.pubcid).to.equal(bidRequests[0]['crumbs']['pubcid']);
2037
1911
  delete validBidRequests[0].userId; // tidy up now, else it will screw with other tests
2038
1912
  });
2039
-
2040
1913
  it('should add a user.ext.eids object to contain user ID data in the new location (Nov 2019) Updated Aug 2020', function() {
2041
- const request = spec.buildRequests(validBidRequestsWithUserIdData, validBidderRequest.bidderRequest);
2042
- /*
2043
- 'pubcid': '12345678',
2044
- 'tdid': '1111tdid',
2045
- 'id5id': { uid: '1111', ext: { linkType: 2, abTestingControlGroup: false } },
2046
- 'criteoId': '1111criteoId',
2047
- 'idl_env': 'liverampId',
2048
- 'parrableId': {'eid': '01.5678.parrableid'}
2049
- */
2050
-
1914
+ const request = spec.buildRequests(validBidRequestsWithUserIdData, validBidderRequest);
2051
1915
  const payload = JSON.parse(request.data);
2052
1916
  expect(payload.user).to.exist;
2053
1917
  expect(payload.user.ext).to.exist;
@@ -2067,12 +1931,11 @@ describe('ozone Adapter', function () {
2067
1931
  expect(payload.user.ext.eids[6]['source']).to.equal('parrableId');
2068
1932
  expect(payload.user.ext.eids[6]['uids'][0]['id']['eid']).to.equal('01.5678.parrableid');
2069
1933
  });
2070
-
2071
1934
  it('replaces the auction url for a config override', function () {
2072
1935
  spec.propertyBag.whitelabel = null;
2073
1936
  let fakeOrigin = 'http://sometestendpoint';
2074
1937
  config.setConfig({'ozone': {'endpointOverride': {'origin': fakeOrigin}}});
2075
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1938
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2076
1939
  expect(request.url).to.equal(fakeOrigin + '/openrtb2/auction');
2077
1940
  expect(request.method).to.equal('POST');
2078
1941
  const data = JSON.parse(request.data);
@@ -2080,12 +1943,11 @@ describe('ozone Adapter', function () {
2080
1943
  config.setConfig({'ozone': {'kvpPrefix': null, 'endpointOverride': null}});
2081
1944
  spec.propertyBag.whitelabel = null;
2082
1945
  });
2083
-
2084
1946
  it('replaces the FULL auction url for a config override', function () {
2085
1947
  spec.propertyBag.whitelabel = null;
2086
1948
  let fakeurl = 'http://sometestendpoint/myfullurl';
2087
1949
  config.setConfig({'ozone': {'endpointOverride': {'auctionUrl': fakeurl}}});
2088
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1950
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2089
1951
  expect(request.url).to.equal(fakeurl);
2090
1952
  expect(request.method).to.equal('POST');
2091
1953
  const data = JSON.parse(request.data);
@@ -2093,7 +1955,6 @@ describe('ozone Adapter', function () {
2093
1955
  config.setConfig({'ozone': {'kvpPrefix': null, 'endpointOverride': null}});
2094
1956
  spec.propertyBag.whitelabel = null;
2095
1957
  });
2096
-
2097
1958
  it('replaces the renderer url for a config override', function () {
2098
1959
  spec.propertyBag.whitelabel = null;
2099
1960
  let fakeUrl = 'http://renderer.com';
@@ -2107,9 +1968,8 @@ describe('ozone Adapter', function () {
2107
1968
  spec.propertyBag.whitelabel = null;
2108
1969
  });
2109
1970
  it('should generate all the adservertargeting keys correctly named', function () {
2110
- var specMock = utils.deepClone(spec);
2111
1971
  config.setConfig({'ozone': {'kvpPrefix': 'xx'}});
2112
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1972
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2113
1973
  const result = spec.interpretResponse(validResponse, request);
2114
1974
  expect(result[0].adserverTargeting).to.have.own.property('xx_appnexus_crid');
2115
1975
  expect(utils.deepAccess(result[0].adserverTargeting, 'xx_appnexus_crid')).to.equal('98493581');
@@ -2118,33 +1978,28 @@ describe('ozone Adapter', function () {
2118
1978
  expect(utils.deepAccess(result[0].adserverTargeting, 'xx_size')).to.equal('300x600');
2119
1979
  expect(utils.deepAccess(result[0].adserverTargeting, 'xx_pb_r')).to.equal('0.50');
2120
1980
  expect(utils.deepAccess(result[0].adserverTargeting, 'xx_bid')).to.equal('true');
2121
- config.resetConfig();
2122
1981
  });
2123
1982
  it('should create a meta object on each bid returned', function () {
2124
- var specMock = utils.deepClone(spec);
2125
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1983
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2126
1984
  const result = spec.interpretResponse(validResponse, request);
2127
1985
  expect(result[0]).to.have.own.property('meta');
2128
1986
  expect(result[0].meta.advertiserDomains[0]).to.equal('http://prebid.org');
2129
- config.resetConfig();
2130
1987
  });
2131
-
2132
1988
  it('replaces the kvp prefix ', function () {
2133
1989
  spec.propertyBag.whitelabel = null;
2134
1990
  config.setConfig({'ozone': {'kvpPrefix': 'test'}});
2135
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
1991
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2136
1992
  const data = JSON.parse(request.data);
2137
1993
  expect(data.ext.ozone).to.haveOwnProperty('test_rw');
2138
1994
  config.setConfig({'ozone': {'kvpPrefix': null}});
2139
1995
  spec.propertyBag.whitelabel = null;
2140
1996
  });
2141
-
2142
1997
  it('handles an alias ', function () {
2143
1998
  spec.propertyBag.whitelabel = null;
2144
1999
  config.setConfig({'lmc': {'kvpPrefix': 'test'}});
2145
2000
  let br = JSON.parse(JSON.stringify(validBidRequests));
2146
2001
  br[0]['bidder'] = 'lmc';
2147
- const request = spec.buildRequests(br, validBidderRequest.bidderRequest);
2002
+ const request = spec.buildRequests(br, validBidderRequest);
2148
2003
  const data = JSON.parse(request.data);
2149
2004
  expect(data.ext.lmc).to.haveOwnProperty('test_rw');
2150
2005
  config.setConfig({'lmc': {'kvpPrefix': null}}); // I cant remove the key so set the value to null
@@ -2155,7 +2010,7 @@ describe('ozone Adapter', function () {
2155
2010
  specMock.getGetParametersAsObject = function() {
2156
2011
  return {'oztestmode': 'mytestvalue_123'};
2157
2012
  };
2158
- const request = specMock.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2013
+ const request = specMock.buildRequests(validBidRequests, validBidderRequest);
2159
2014
  const data = JSON.parse(request.data);
2160
2015
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
2161
2016
  expect(data.imp[0].ext.ozone.customData[0].targeting.oztestmode).to.equal('mytestvalue_123');
@@ -2165,7 +2020,7 @@ describe('ozone Adapter', function () {
2165
2020
  specMock.getGetParametersAsObject = function() {
2166
2021
  return {ozf: '1', ozpf: '0', ozrp: '2', ozip: '123'};
2167
2022
  };
2168
- const request = specMock.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2023
+ const request = specMock.buildRequests(validBidRequests, validBidderRequest);
2169
2024
  const data = JSON.parse(request.data);
2170
2025
  expect(data.ext.ozone.ozf).to.equal(1);
2171
2026
  expect(data.ext.ozone.ozpf).to.equal(0);
@@ -2177,7 +2032,7 @@ describe('ozone Adapter', function () {
2177
2032
  specMock.getGetParametersAsObject = function() {
2178
2033
  return {ozf: 'false', ozpf: 'true', ozrp: 'xyz', ozip: 'hello'};
2179
2034
  };
2180
- const request = specMock.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2035
+ const request = specMock.buildRequests(validBidRequests, validBidderRequest);
2181
2036
  const data = JSON.parse(request.data);
2182
2037
  expect(data.ext.ozone.ozf).to.equal(0);
2183
2038
  expect(data.ext.ozone.ozpf).to.equal(1);
@@ -2189,7 +2044,7 @@ describe('ozone Adapter', function () {
2189
2044
  specMock.getGetParametersAsObject = function() {
2190
2045
  return {'oztestmode': 'mytestvalue_123'};
2191
2046
  };
2192
- const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
2047
+ const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest);
2193
2048
  const data = JSON.parse(request.data);
2194
2049
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
2195
2050
  expect(data.imp[0].ext.ozone.customData[0].targeting.oztestmode).to.equal('mytestvalue_123');
@@ -2199,17 +2054,16 @@ describe('ozone Adapter', function () {
2199
2054
  specMock.getGetParametersAsObject = function() {
2200
2055
  return {};
2201
2056
  };
2202
- let request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
2057
+ let request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest);
2203
2058
  let url = request.url;
2204
2059
  expect(url).to.equal('https://elb.the-ozone-project.com/openrtb2/auction');
2205
2060
  let cookieUrl = specMock.getCookieSyncUrl();
2206
2061
  expect(cookieUrl).to.equal('https://elb.the-ozone-project.com/static/load-cookie.html');
2207
-
2208
2062
  specMock = utils.deepClone(spec);
2209
2063
  specMock.getGetParametersAsObject = function() {
2210
2064
  return {'auction': 'dev', 'cookiesync': 'dev'};
2211
2065
  };
2212
- request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
2066
+ request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest);
2213
2067
  url = request.url;
2214
2068
  expect(url).to.equal('https://test.ozpr.net/openrtb2/auction');
2215
2069
  cookieUrl = specMock.getCookieSyncUrl();
@@ -2220,7 +2074,7 @@ describe('ozone Adapter', function () {
2220
2074
  specMock.getGetParametersAsObject = function() {
2221
2075
  return {'ozstoredrequest': '1122334455'}; // 10 digits are valid
2222
2076
  };
2223
- const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
2077
+ const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest);
2224
2078
  const data = JSON.parse(request.data);
2225
2079
  expect(data.ext.ozone.oz_rw).to.equal(1);
2226
2080
  expect(data.imp[0].ext.prebid.storedrequest.id).to.equal('1122334455');
@@ -2230,71 +2084,65 @@ describe('ozone Adapter', function () {
2230
2084
  specMock.getGetParametersAsObject = function() {
2231
2085
  return {'ozstoredrequest': 'BADVAL'}; // 10 digits are valid
2232
2086
  };
2233
- const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest.bidderRequest);
2087
+ const request = specMock.buildRequests(validBidRequestsMinimal, validBidderRequest);
2234
2088
  const data = JSON.parse(request.data);
2235
2089
  expect(data.ext.ozone.oz_rw).to.equal(0);
2236
2090
  expect(data.imp[0].ext.prebid.storedrequest.id).to.equal('1310000099');
2237
2091
  });
2238
-
2239
2092
  it('should pick up the config value of coppa & set it in the request', function () {
2240
2093
  config.setConfig({'coppa': true});
2241
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
2094
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
2242
2095
  const payload = JSON.parse(request.data);
2243
2096
  expect(payload.regs).to.include.keys('coppa');
2244
2097
  expect(payload.regs.coppa).to.equal(1);
2245
- config.resetConfig();
2246
2098
  });
2247
2099
  it('should pick up the config value of coppa & only set it in the request if its true', function () {
2248
2100
  config.setConfig({'coppa': false});
2249
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
2101
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
2250
2102
  const payload = JSON.parse(request.data);
2251
2103
  expect(utils.deepAccess(payload, 'regs.coppa')).to.be.undefined;
2252
- config.resetConfig();
2253
2104
  });
2254
2105
  it('should handle oz_omp_floor correctly', function () {
2255
2106
  config.setConfig({'ozone': {'oz_omp_floor': 1.56}});
2256
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
2107
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
2257
2108
  const payload = JSON.parse(request.data);
2258
2109
  expect(utils.deepAccess(payload, 'ext.ozone.oz_omp_floor')).to.equal(1.56);
2259
- config.resetConfig();
2260
2110
  });
2261
2111
  it('should ignore invalid oz_omp_floor values', function () {
2262
2112
  config.setConfig({'ozone': {'oz_omp_floor': '1.56'}});
2263
- const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest.bidderRequest);
2113
+ const request = spec.buildRequests(validBidRequestsNoSizes, validBidderRequest);
2264
2114
  const payload = JSON.parse(request.data);
2265
2115
  expect(utils.deepAccess(payload, 'ext.ozone.oz_omp_floor')).to.be.undefined;
2266
- config.resetConfig();
2267
2116
  });
2268
2117
  it('should should contain a unique page view id in the auction request which persists across calls', function () {
2269
- let request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2118
+ let request = spec.buildRequests(validBidRequests, validBidderRequest);
2270
2119
  let payload = JSON.parse(request.data);
2271
2120
  expect(utils.deepAccess(payload, 'ext.ozone.pv')).to.be.a('string');
2272
- request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest.bidderRequest);
2121
+ request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest);
2273
2122
  let payload2 = JSON.parse(request.data);
2274
2123
  expect(utils.deepAccess(payload2, 'ext.ozone.pv')).to.be.a('string');
2275
2124
  expect(utils.deepAccess(payload2, 'ext.ozone.pv')).to.equal(utils.deepAccess(payload, 'ext.ozone.pv'));
2276
2125
  });
2277
2126
  it('should indicate that the whitelist was used when it contains valid data', function () {
2278
2127
  config.setConfig({'ozone': {'oz_whitelist_adserver_keys': ['oz_ozappnexus_pb', 'oz_ozappnexus_imp_id']}});
2279
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2128
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2280
2129
  const payload = JSON.parse(request.data);
2281
2130
  expect(payload.ext.ozone.oz_kvp_rw).to.equal(1);
2282
- config.resetConfig();
2283
2131
  });
2284
2132
  it('should indicate that the whitelist was not used when it contains no data', function () {
2285
2133
  config.setConfig({'ozone': {'oz_whitelist_adserver_keys': []}});
2286
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2134
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2287
2135
  const payload = JSON.parse(request.data);
2288
2136
  expect(payload.ext.ozone.oz_kvp_rw).to.equal(0);
2289
- config.resetConfig();
2290
2137
  });
2291
2138
  it('should indicate that the whitelist was not used when it is not set in the config', function () {
2292
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2139
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2293
2140
  const payload = JSON.parse(request.data);
2294
2141
  expect(payload.ext.ozone.oz_kvp_rw).to.equal(0);
2295
2142
  });
2296
2143
  it('should handle ortb2 site data', function () {
2297
- const ortb2 = {
2144
+ let bidderRequest = JSON.parse(JSON.stringify(validBidderRequest));
2145
+ bidderRequest.ortb2 = {
2298
2146
  'site': {
2299
2147
  'name': 'example_ortb2_name',
2300
2148
  'domain': 'page.example.com',
@@ -2307,14 +2155,14 @@ describe('ozone Adapter', function () {
2307
2155
  'search': 'drill'
2308
2156
  }
2309
2157
  };
2310
- const request = spec.buildRequests(validBidRequests, {...validBidderRequest.bidderRequest, ortb2});
2158
+ const request = spec.buildRequests(validBidRequests, bidderRequest);
2311
2159
  const payload = JSON.parse(request.data);
2312
2160
  expect(payload.imp[0].ext.ozone.customData[0].targeting.name).to.equal('example_ortb2_name');
2313
2161
  expect(payload.user.ext).to.not.have.property('gender');
2314
- config.resetConfig();
2315
2162
  });
2316
2163
  it('should add ortb2 site data when there is no customData already created', function () {
2317
- const ortb2 = {
2164
+ let bidderRequest = JSON.parse(JSON.stringify(validBidderRequest));
2165
+ bidderRequest.ortb2 = {
2318
2166
  'site': {
2319
2167
  'name': 'example_ortb2_name',
2320
2168
  'domain': 'page.example.com',
@@ -2327,25 +2175,25 @@ describe('ozone Adapter', function () {
2327
2175
  'search': 'drill'
2328
2176
  }
2329
2177
  };
2330
- const request = spec.buildRequests(validBidRequestsNoCustomData, {...validBidderRequest.bidderRequest, ortb2});
2178
+ const request = spec.buildRequests(validBidRequestsNoCustomData, bidderRequest);
2331
2179
  const payload = JSON.parse(request.data);
2332
2180
  expect(payload.imp[0].ext.ozone.customData[0].targeting.name).to.equal('example_ortb2_name');
2333
2181
  expect(payload.imp[0].ext.ozone.customData[0].targeting).to.not.have.property('gender')
2334
- config.resetConfig();
2335
2182
  });
2336
2183
  it('should add ortb2 user data to the user object', function () {
2337
- const ortb2 = {
2184
+ let bidderRequest = JSON.parse(JSON.stringify(validBidderRequest));
2185
+ bidderRequest.ortb2 = {
2338
2186
  'user': {
2339
- 'gender': 'who knows these days'
2187
+ 'gender': 'I identify as a box of rocks'
2340
2188
  }
2341
2189
  };
2342
- const request = spec.buildRequests(validBidRequests, {...validBidderRequest.bidderRequest, ortb2});
2190
+ const request = spec.buildRequests(validBidRequests, bidderRequest);
2343
2191
  const payload = JSON.parse(request.data);
2344
- expect(payload.user.gender).to.equal('who knows these days');
2345
- config.resetConfig();
2192
+ expect(payload.user.gender).to.equal('I identify as a box of rocks');
2346
2193
  });
2347
2194
  it('should not override the user.ext.consent string even if this is set in config ortb2', function () {
2348
- const ortb2 = {
2195
+ let bidderRequest = JSON.parse(JSON.stringify(bidderRequestWithFullGdpr));
2196
+ bidderRequest.ortb2 = {
2349
2197
  'user': {
2350
2198
  'ext': {
2351
2199
  'consent': 'this is the consent override that shouldnt work',
@@ -2353,15 +2201,14 @@ describe('ozone Adapter', function () {
2353
2201
  }
2354
2202
  }
2355
2203
  };
2356
- const request = spec.buildRequests(validBidRequests, {...bidderRequestWithFullGdpr.bidderRequest, ortb2});
2204
+ const request = spec.buildRequests(validBidRequests, bidderRequest);
2357
2205
  const payload = JSON.parse(request.data);
2358
2206
  expect(payload.user.ext.consent2).to.equal('this should be set');
2359
2207
  expect(payload.user.ext.consent).to.equal('BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA');
2360
- config.resetConfig();
2361
2208
  });
2362
2209
  it('should have openrtb video params', function() {
2363
2210
  let allowed = ['mimes', 'minduration', 'maxduration', 'protocols', 'w', 'h', 'startdelay', 'placement', 'linearity', 'skip', 'skipmin', 'skipafter', 'sequence', 'battr', 'maxextended', 'minbitrate', 'maxbitrate', 'boxingallowed', 'playbackmethod', 'playbackend', 'delivery', 'pos', 'companionad', 'api', 'companiontype', 'ext'];
2364
- const request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest.bidderRequest);
2211
+ const request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest);
2365
2212
  const payload = JSON.parse(request.data);
2366
2213
  const vid = (payload.imp[0].video);
2367
2214
  const keys = Object.keys(vid);
@@ -2391,13 +2238,11 @@ describe('ozone Adapter', function () {
2391
2238
  });
2392
2239
  let localBidRequest = JSON.parse(JSON.stringify(validBidRequestsWithBannerMediaType));
2393
2240
  localBidRequest[0].getFloor = function(x) { return {'currency': 'USD', 'floor': 0.8} };
2394
- const request = spec.buildRequests(localBidRequest, validBidderRequest.bidderRequest);
2241
+ const request = spec.buildRequests(localBidRequest, validBidderRequest);
2395
2242
  const payload = JSON.parse(request.data);
2396
2243
  expect(utils.deepAccess(payload, 'imp.0.floor.banner.currency')).to.equal('USD');
2397
2244
  expect(utils.deepAccess(payload, 'imp.0.floor.banner.floor')).to.equal(0.8);
2398
- config.resetConfig();
2399
2245
  });
2400
-
2401
2246
  it('handles schain object in each bidrequest (will be the same in each br)', function () {
2402
2247
  let br = JSON.parse(JSON.stringify(validBidRequests));
2403
2248
  let schainConfigObject = {
@@ -2412,44 +2257,44 @@ describe('ozone Adapter', function () {
2412
2257
  ]
2413
2258
  };
2414
2259
  br[0]['schain'] = schainConfigObject;
2415
- const request = spec.buildRequests(br, validBidderRequest.bidderRequest);
2260
+ const request = spec.buildRequests(br, validBidderRequest);
2416
2261
  const data = JSON.parse(request.data);
2417
2262
  expect(data.source.ext).to.haveOwnProperty('schain');
2418
2263
  expect(data.source.ext.schain).to.deep.equal(schainConfigObject); // .deep.equal() : Target object deeply (but not strictly) equals `{a: 1}`
2419
2264
  });
2420
2265
  });
2421
-
2422
2266
  describe('interpretResponse', function () {
2267
+ beforeEach(function () {
2268
+ config.resetConfig()
2269
+ })
2423
2270
  it('should build bid array', function () {
2424
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2271
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2425
2272
  const result = spec.interpretResponse(validResponse, request);
2426
2273
  expect(result.length).to.equal(1);
2427
2274
  });
2428
-
2429
2275
  it('should have all relevant fields', function () {
2430
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2276
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2431
2277
  const result = spec.interpretResponse(validResponse, request);
2432
2278
  const bid = result[0];
2433
2279
  expect(bid.cpm).to.equal(validResponse.body.seatbid[0].bid[0].cpm);
2434
2280
  expect(bid.width).to.equal(validResponse.body.seatbid[0].bid[0].width);
2435
2281
  expect(bid.height).to.equal(validResponse.body.seatbid[0].bid[0].height);
2436
2282
  });
2437
-
2438
2283
  it('should build bid array with gdpr', function () {
2439
- let validBR = JSON.parse(JSON.stringify(bidderRequestWithFullGdpr.bidderRequest));
2284
+ let validBR = JSON.parse(JSON.stringify(bidderRequestWithFullGdpr));
2440
2285
  validBR.gdprConsent = {'gdprApplies': 1, 'consentString': 'This is the gdpr consent string'};
2441
2286
  const request = spec.buildRequests(validBidRequests, validBR); // works the old way, with GDPR not enforced by default
2442
2287
  const result = spec.interpretResponse(validResponse, request);
2443
2288
  expect(result.length).to.equal(1);
2444
2289
  });
2445
2290
  it('should build bid array with usp/CCPA', function () {
2446
- let validBR = JSON.parse(JSON.stringify(bidderRequestWithFullGdpr.bidderRequest));
2291
+ let validBR = JSON.parse(JSON.stringify(bidderRequestWithFullGdpr));
2447
2292
  validBR.uspConsent = '1YNY';
2448
2293
  const request = spec.buildRequests(validBidRequests, validBR);
2449
2294
  const payload = JSON.parse(request.data);
2450
- expect(payload.user.ext.uspConsent).to.equal('1YNY');
2295
+ expect(payload.user.ext.uspConsent).not.to.exist;
2296
+ expect(payload.regs.ext.us_privacy).to.equal('1YNY');
2451
2297
  });
2452
-
2453
2298
  it('should build bid array with only partial gdpr', function () {
2454
2299
  var validBidderRequestWithGdpr = bidderRequestWithPartialGdpr.bidderRequest;
2455
2300
  validBidderRequestWithGdpr.gdprConsent = {'gdprApplies': 1, 'consentString': 'This is the gdpr consent string'};
@@ -2457,26 +2302,22 @@ describe('ozone Adapter', function () {
2457
2302
  const payload = JSON.parse(request.data);
2458
2303
  expect(payload.user.ext.consent).to.be.a('string');
2459
2304
  });
2460
-
2461
2305
  it('should fail ok if no seatbid in server response', function () {
2462
2306
  const result = spec.interpretResponse({}, {});
2463
2307
  expect(result).to.be.an('array');
2464
2308
  expect(result).to.be.empty;
2465
2309
  });
2466
-
2467
2310
  it('should fail ok if seatbid is not an array', function () {
2468
2311
  const result = spec.interpretResponse({'body': {'seatbid': 'nothing_here'}}, {});
2469
2312
  expect(result).to.be.an('array');
2470
2313
  expect(result).to.be.empty;
2471
2314
  });
2472
-
2473
2315
  it('should have video renderer for outstream video', function () {
2474
2316
  const request = spec.buildRequests(validBidRequests1OutstreamVideo2020, validBidderRequest1OutstreamVideo2020.bidderRequest);
2475
2317
  const result = spec.interpretResponse(getCleanValidVideoResponse(), validBidderRequest1OutstreamVideo2020);
2476
2318
  const bid = result[0];
2477
2319
  expect(bid.renderer).to.be.an.instanceOf(Renderer);
2478
2320
  });
2479
-
2480
2321
  it('should have NO video renderer for instream video', function () {
2481
2322
  let instreamRequestsObj = JSON.parse(JSON.stringify(validBidRequests1OutstreamVideo2020));
2482
2323
  instreamRequestsObj[0].mediaTypes.video.context = 'instream';
@@ -2487,99 +2328,87 @@ describe('ozone Adapter', function () {
2487
2328
  const bid = result[0];
2488
2329
  expect(bid.hasOwnProperty('renderer')).to.be.false;
2489
2330
  });
2490
-
2491
2331
  it('should correctly parse response where there are more bidders than ad slots', function () {
2492
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2332
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2493
2333
  const result = spec.interpretResponse(validBidResponse1adWith2Bidders, request);
2494
2334
  expect(result.length).to.equal(2);
2495
2335
  });
2496
-
2497
2336
  it('should have a ttl of 600', function () {
2498
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2337
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2499
2338
  const result = spec.interpretResponse(validResponse, request);
2500
2339
  expect(result[0].ttl).to.equal(300);
2501
2340
  });
2502
-
2503
2341
  it('should handle oz_omp_floor_dollars correctly, inserting 1 as necessary', function () {
2504
2342
  config.setConfig({'ozone': {'oz_omp_floor': 0.01}});
2505
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2343
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2506
2344
  const result = spec.interpretResponse(validResponse, request);
2507
2345
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_omp')).to.equal('1');
2508
- config.resetConfig();
2509
2346
  });
2510
2347
  it('should handle oz_omp_floor_dollars correctly, inserting 0 as necessary', function () {
2511
2348
  config.setConfig({'ozone': {'oz_omp_floor': 2.50}});
2512
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2349
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2513
2350
  const result = spec.interpretResponse(validResponse, request);
2514
2351
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_omp')).to.equal('0');
2515
- config.resetConfig();
2516
2352
  });
2517
2353
  it('should handle missing oz_omp_floor_dollars correctly, inserting nothing', function () {
2518
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2354
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2519
2355
  const result = spec.interpretResponse(validResponse, request);
2520
2356
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_omp')).to.be.undefined;
2521
2357
  });
2522
2358
  it('should handle ext.bidder.ozone.floor correctly, setting flr & rid as necessary', function () {
2523
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2359
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2524
2360
  let vres = JSON.parse(JSON.stringify(validResponse));
2525
2361
  vres.body.seatbid[0].bid[0].ext.bidder.ozone = {floor: 1, ruleId: 'ZjbsYE1q'};
2526
2362
  const result = spec.interpretResponse(vres, request);
2527
2363
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_flr')).to.equal(1);
2528
2364
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_rid')).to.equal('ZjbsYE1q');
2529
- config.resetConfig();
2530
2365
  });
2531
2366
  it('should handle ext.bidder.ozone.floor correctly, inserting 0 as necessary', function () {
2532
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2367
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2533
2368
  let vres = JSON.parse(JSON.stringify(validResponse));
2534
2369
  vres.body.seatbid[0].bid[0].ext.bidder.ozone = {floor: 0, ruleId: 'ZjbXXE1q'};
2535
2370
  const result = spec.interpretResponse(vres, request);
2536
2371
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_flr')).to.equal(0);
2537
2372
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_rid')).to.equal('ZjbXXE1q');
2538
- config.resetConfig();
2539
2373
  });
2540
2374
  it('should handle ext.bidder.ozone.floor correctly, inserting nothing as necessary', function () {
2541
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2375
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2542
2376
  let vres = JSON.parse(JSON.stringify(validResponse));
2543
2377
  vres.body.seatbid[0].bid[0].ext.bidder.ozone = {};
2544
2378
  const result = spec.interpretResponse(vres, request);
2545
2379
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_flr', null)).to.equal(null);
2546
2380
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_rid', null)).to.equal(null);
2547
- config.resetConfig();
2548
2381
  });
2549
2382
  it('should handle ext.bidder.ozone.floor correctly, when bidder.ozone is not there', function () {
2550
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2383
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2551
2384
  let vres = JSON.parse(JSON.stringify(validResponse));
2552
2385
  const result = spec.interpretResponse(vres, request);
2553
2386
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_flr', null)).to.equal(null);
2554
2387
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_rid', null)).to.equal(null);
2555
- config.resetConfig();
2556
2388
  });
2557
2389
  it('should handle a valid whitelist, removing items not on the list & leaving others', function () {
2558
2390
  config.setConfig({'ozone': {'oz_whitelist_adserver_keys': ['oz_appnexus_crid', 'oz_appnexus_adId']}});
2559
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2391
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2560
2392
  const result = spec.interpretResponse(validResponse, request);
2561
2393
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_adv')).to.be.undefined;
2562
2394
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_adId')).to.equal('2899ec066a91ff8-0-oz-0');
2563
- config.resetConfig();
2564
2395
  });
2565
2396
  it('should ignore a whitelist if enhancedAdserverTargeting is false', function () {
2566
2397
  config.setConfig({'ozone': {'oz_whitelist_adserver_keys': ['oz_appnexus_crid', 'oz_appnexus_imp_id'], 'enhancedAdserverTargeting': false}});
2567
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2398
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2568
2399
  const result = spec.interpretResponse(validResponse, request);
2569
2400
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_adv')).to.be.undefined;
2570
2401
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_imp_id')).to.be.undefined;
2571
- config.resetConfig();
2572
2402
  });
2573
2403
  it('should correctly handle enhancedAdserverTargeting being false', function () {
2574
2404
  config.setConfig({'ozone': {'enhancedAdserverTargeting': false}});
2575
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2405
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2576
2406
  const result = spec.interpretResponse(validResponse, request);
2577
2407
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_adv')).to.be.undefined;
2578
2408
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_appnexus_imp_id')).to.be.undefined;
2579
- config.resetConfig();
2580
2409
  });
2581
2410
  it('should add flr into ads request if floor exists in the auction response', function () {
2582
- const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest.bidderRequest);
2411
+ const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest);
2583
2412
  let validres = JSON.parse(JSON.stringify(validResponse2Bids));
2584
2413
  validres.body.seatbid[0].bid[0].ext.bidder.ozone = {'floor': 1};
2585
2414
  const result = spec.interpretResponse(validres, request);
@@ -2587,7 +2416,7 @@ describe('ozone Adapter', function () {
2587
2416
  expect(utils.deepAccess(result[1].adserverTargeting, 'oz_appnexus_flr', '')).to.equal('');
2588
2417
  });
2589
2418
  it('should add rid into ads request if ruleId exists in the auction response', function () {
2590
- const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest.bidderRequest);
2419
+ const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest);
2591
2420
  let validres = JSON.parse(JSON.stringify(validResponse2Bids));
2592
2421
  validres.body.seatbid[0].bid[0].ext.bidder.ozone = {'ruleId': 123};
2593
2422
  const result = spec.interpretResponse(validres, request);
@@ -2595,13 +2424,13 @@ describe('ozone Adapter', function () {
2595
2424
  expect(utils.deepAccess(result[1].adserverTargeting, 'oz_appnexus_rid', '')).to.equal('');
2596
2425
  });
2597
2426
  it('should add oz_ozappnexus_sid (cid value) for all appnexus bids', function () {
2598
- const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest.bidderRequest);
2427
+ const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest);
2599
2428
  let validres = JSON.parse(JSON.stringify(validResponse2BidsSameAdunit));
2600
2429
  const result = spec.interpretResponse(validres, request);
2601
2430
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_ozappnexus_sid')).to.equal(result[0].cid);
2602
2431
  });
2603
2432
  it('should add unique adId values to each bid', function() {
2604
- const request = spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2433
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2605
2434
  let validres = JSON.parse(JSON.stringify(validResponse2BidsSameAdunit));
2606
2435
  const result = spec.interpretResponse(validres, request);
2607
2436
  expect(result.length).to.equal(1);
@@ -2610,7 +2439,7 @@ describe('ozone Adapter', function () {
2610
2439
  });
2611
2440
  it('should correctly process an auction with 2 adunits & multiple bidders one of which bids for both adslots', function() {
2612
2441
  let validres = JSON.parse(JSON.stringify(multiResponse1));
2613
- let request = spec.buildRequests(multiRequest1, multiBidderRequest1.bidderRequest);
2442
+ let request = spec.buildRequests(multiRequest1, multiBidderRequest1);
2614
2443
  let result = spec.interpretResponse(validres, request);
2615
2444
  expect(result.length).to.equal(4); // one of the 5 bids will have been removed
2616
2445
  expect(result[1]['price']).to.equal(0.521);
@@ -2620,15 +2449,28 @@ describe('ozone Adapter', function () {
2620
2449
  validres = JSON.parse(JSON.stringify(multiResponse1));
2621
2450
  validres.body.seatbid[0].bid[1].price = 1.1;
2622
2451
  validres.body.seatbid[0].bid[1].cpm = 1.1;
2623
- request = spec.buildRequests(multiRequest1, multiBidderRequest1.bidderRequest);
2452
+ request = spec.buildRequests(multiRequest1, multiBidderRequest1);
2624
2453
  result = spec.interpretResponse(validres, request);
2625
2454
  expect(result[1]['price']).to.equal(1.1);
2626
2455
  expect(result[1]['impid']).to.equal('3025f169863b7f8');
2627
2456
  expect(result[1]['id']).to.equal('18552976939844681');
2628
2457
  expect(result[1]['adserverTargeting']['oz_ozappnexus_adId']).to.equal('3025f169863b7f8-0-oz-1');
2629
2458
  });
2459
+ it('should add mediaType: banner for a banner ad', function () {
2460
+ const request = spec.buildRequests(validBidRequests, validBidderRequest);
2461
+ const result = spec.interpretResponse(validResponse, request);
2462
+ expect(result[0].mediaType).to.equal('banner');
2463
+ });
2464
+ it('should add mediaType: video for a video ad', function () {
2465
+ let instreamRequestsObj = JSON.parse(JSON.stringify(validBidRequests1OutstreamVideo2020));
2466
+ instreamRequestsObj[0].mediaTypes.video.context = 'instream';
2467
+ let instreamBidderReq = JSON.parse(JSON.stringify(validBidderRequest1OutstreamVideo2020));
2468
+ instreamBidderReq.bidderRequest.bids[0].mediaTypes.video.context = 'instream';
2469
+ const result = spec.interpretResponse(getCleanValidVideoResponse(), instreamBidderReq);
2470
+ const bid = result[0];
2471
+ expect(bid.mediaType).to.equal('video');
2472
+ });
2630
2473
  });
2631
-
2632
2474
  describe('userSyncs', function () {
2633
2475
  it('should fail gracefully if no server response', function () {
2634
2476
  const result = spec.getUserSyncs('bad', false, gdpr1);
@@ -2639,7 +2481,7 @@ describe('ozone Adapter', function () {
2639
2481
  expect(result).to.be.empty;
2640
2482
  });
2641
2483
  it('should append the various values if they exist', function() {
2642
- spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2484
+ spec.buildRequests(validBidRequests, validBidderRequest);
2643
2485
  const result = spec.getUserSyncs({iframeEnabled: true}, 'good server response', gdpr1);
2644
2486
  expect(result).to.be.an('array');
2645
2487
  expect(result[0].url).to.include('publisherId=9876abcd12-3');
@@ -2648,19 +2490,18 @@ describe('ozone Adapter', function () {
2648
2490
  expect(result[0].url).to.include('gdpr_consent=BOh7mtYOh7mtYAcABBENCU-AAAAncgPIXJiiAoao0PxBFkgCAC8ACIAAQAQQAAIAAAIAAAhBGAAAQAQAEQgAAAAAAABAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAAAAQAAAAAAA');
2649
2491
  });
2650
2492
  it('should append ccpa (usp data)', function() {
2651
- spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2493
+ spec.buildRequests(validBidRequests, validBidderRequest);
2652
2494
  const result = spec.getUserSyncs({iframeEnabled: true}, 'good server response', gdpr1, '1YYN');
2653
2495
  expect(result).to.be.an('array');
2654
2496
  expect(result[0].url).to.include('usp_consent=1YYN');
2655
2497
  });
2656
2498
  it('should use "" if no usp is sent to cookieSync', function() {
2657
- spec.buildRequests(validBidRequests, validBidderRequest.bidderRequest);
2499
+ spec.buildRequests(validBidRequests, validBidderRequest);
2658
2500
  const result = spec.getUserSyncs({iframeEnabled: true}, 'good server response', gdpr1);
2659
2501
  expect(result).to.be.an('array');
2660
2502
  expect(result[0].url).to.include('usp_consent=&');
2661
2503
  });
2662
2504
  });
2663
-
2664
2505
  describe('video object utils', function () {
2665
2506
  it('should find width & height from video object', function () {
2666
2507
  let obj = {'playerSize': [640, 480], 'mimes': ['video/mp4'], 'context': 'outstream'};
@@ -2715,7 +2556,7 @@ describe('ozone Adapter', function () {
2715
2556
  expect(result).to.be.null;
2716
2557
  });
2717
2558
  it('should add oz_appnexus_dealid into ads request if dealid exists in the auction response', function () {
2718
- const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest.bidderRequest);
2559
+ const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest);
2719
2560
  let validres = JSON.parse(JSON.stringify(validResponse2Bids));
2720
2561
  validres.body.seatbid[0].bid[0].dealid = '1234';
2721
2562
  const result = spec.interpretResponse(validres, request);
@@ -2723,7 +2564,6 @@ describe('ozone Adapter', function () {
2723
2564
  expect(utils.deepAccess(result[1].adserverTargeting, 'oz_appnexus_dealid', '')).to.equal('');
2724
2565
  });
2725
2566
  });
2726
-
2727
2567
  describe('default size', function () {
2728
2568
  it('should should return default sizes if no obj is sent', function () {
2729
2569
  let obj = '';
@@ -2732,7 +2572,6 @@ describe('ozone Adapter', function () {
2732
2572
  expect(result.defaultWidth).to.equal(300);
2733
2573
  });
2734
2574
  });
2735
-
2736
2575
  describe('getGranularityKeyName', function() {
2737
2576
  it('should return a string granularity as-is', function() {
2738
2577
  const result = getGranularityKeyName('', 'this is it', '');
@@ -2747,7 +2586,6 @@ describe('ozone Adapter', function () {
2747
2586
  expect(result).to.equal('string buckets');
2748
2587
  });
2749
2588
  });
2750
-
2751
2589
  describe('getGranularityObject', function() {
2752
2590
  it('should return an object as-is', function() {
2753
2591
  const result = getGranularityObject('', {'name': 'mark'}, '', '');
@@ -2758,19 +2596,19 @@ describe('ozone Adapter', function () {
2758
2596
  expect(result.name).to.equal('rupert');
2759
2597
  });
2760
2598
  });
2761
-
2762
2599
  describe('blockTheRequest', function() {
2600
+ beforeEach(function () {
2601
+ config.resetConfig()
2602
+ })
2763
2603
  it('should return true if oz_request is false', function() {
2764
2604
  config.setConfig({'ozone': {'oz_request': false}});
2765
- let result = spec.blockTheRequest(bidderRequestWithFullGdpr);
2605
+ let result = spec.blockTheRequest();
2766
2606
  expect(result).to.be.true;
2767
- config.resetConfig();
2768
2607
  });
2769
2608
  it('should return false if oz_request is true', function() {
2770
2609
  config.setConfig({'ozone': {'oz_request': true}});
2771
- let result = spec.blockTheRequest(bidderRequestWithFullGdpr);
2610
+ let result = spec.blockTheRequest();
2772
2611
  expect(result).to.be.false;
2773
- config.resetConfig();
2774
2612
  });
2775
2613
  });
2776
2614
  describe('getPageId', function() {
@@ -2876,11 +2714,10 @@ describe('ozone Adapter', function () {
2876
2714
  expect(response[1].bid.length).to.equal(2);
2877
2715
  });
2878
2716
  });
2879
- /**
2880
- * spec.getWhitelabelConfigItem test - get a config value for a whitelabelled bidder,
2881
- * from a standard ozone.oz_xxxx_yyy string
2882
- */
2883
2717
  describe('getWhitelabelConfigItem', function() {
2718
+ beforeEach(function () {
2719
+ config.resetConfig()
2720
+ })
2884
2721
  it('should fetch the whitelabelled equivalent config value correctly', function () {
2885
2722
  var specMock = utils.deepClone(spec);
2886
2723
  config.setConfig({'ozone': {'oz_omp_floor': 'ozone-floor-value'}});
@@ -2896,7 +2733,26 @@ describe('ozone Adapter', function () {
2896
2733
  let testKey2 = 'ozone.singleRequest';
2897
2734
  let markbidder_config2 = specMock.getWhitelabelConfigItem(testKey2);
2898
2735
  expect(markbidder_config2).to.equal('markbidder-singlerequest-value');
2899
- config.resetConfig();
2736
+ });
2737
+ });
2738
+ describe('setBidMediaTypeIfNotExist', function() {
2739
+ it('should leave the bid object alone if it already contains mediaType', function() {
2740
+ let thisBid = {mediaType: 'marktest'};
2741
+ spec.setBidMediaTypeIfNotExist(thisBid, 'replacement');
2742
+ expect(thisBid.mediaType).to.equal('marktest');
2743
+ });
2744
+ it('should change the bid object if it doesnt already contain mediaType', function() {
2745
+ let thisBid = {someKey: 'someValue'};
2746
+ spec.setBidMediaTypeIfNotExist(thisBid, 'replacement');
2747
+ expect(thisBid.mediaType).to.equal('replacement');
2748
+ });
2749
+ });
2750
+ describe('getLoggableBidObject', function() {
2751
+ it('should return an object without a "renderer" element', function () {
2752
+ let obj = {'renderer': {}, 'somevalue': '', 'h': 100};
2753
+ let ret = spec.getLoggableBidObject(obj);
2754
+ expect(ret).to.not.have.own.property('renderer');
2755
+ expect(ret.h).to.equal(100);
2900
2756
  });
2901
2757
  });
2902
2758
  });