prebid.js 7.42.0 → 7.43.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 (571) hide show
  1. package/.eslintrc.js +0 -1
  2. package/dist/1plusXRtdProvider.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/33acrossIdSystem.js +1 -1
  5. package/dist/a4gBidAdapter.js +1 -1
  6. package/dist/aaxBlockmeterRtdProvider.js +1 -1
  7. package/dist/ablidaBidAdapter.js +1 -1
  8. package/dist/acuityAdsBidAdapter.js +1 -1
  9. package/dist/adWMGAnalyticsAdapter.js +1 -1
  10. package/dist/adWMGBidAdapter.js +1 -1
  11. package/dist/adagioAnalyticsAdapter.js +1 -1
  12. package/dist/adagioBidAdapter.js +1 -1
  13. package/dist/adbookpspBidAdapter.js +1 -1
  14. package/dist/addefendBidAdapter.js +1 -1
  15. package/dist/adfBidAdapter.js +1 -1
  16. package/dist/adgenerationBidAdapter.js +1 -1
  17. package/dist/adhashBidAdapter.js +1 -1
  18. package/dist/adheseBidAdapter.js +1 -1
  19. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  20. package/dist/adkernelAdnBidAdapter.js +1 -1
  21. package/dist/adkernelBidAdapter.js +1 -1
  22. package/dist/adlooxAdServerVideo.js +1 -1
  23. package/dist/adlooxAnalyticsAdapter.js +1 -1
  24. package/dist/adlooxRtdProvider.js +1 -1
  25. package/dist/admanBidAdapter.js +1 -1
  26. package/dist/admaruBidAdapter.js +1 -1
  27. package/dist/admaticBidAdapter.js +1 -1
  28. package/dist/admediaBidAdapter.js +1 -1
  29. package/dist/admixerBidAdapter.js +1 -1
  30. package/dist/admixerIdSystem.js +1 -1
  31. package/dist/adnowBidAdapter.js +1 -1
  32. package/dist/adnuntiusBidAdapter.js +1 -1
  33. package/dist/adnuntiusRtdProvider.js +1 -1
  34. package/dist/adoceanBidAdapter.js +1 -1
  35. package/dist/adomikAnalyticsAdapter.js +1 -1
  36. package/dist/adotBidAdapter.js +1 -1
  37. package/dist/adpartnerBidAdapter.js +1 -1
  38. package/dist/adplusBidAdapter.js +1 -1
  39. package/dist/adpod.js +1 -1
  40. package/dist/adponeBidAdapter.js +1 -1
  41. package/dist/adprimeBidAdapter.js +1 -1
  42. package/dist/adqueryBidAdapter.js +1 -1
  43. package/dist/adqueryIdSystem.js +1 -1
  44. package/dist/adrelevantisBidAdapter.js +1 -1
  45. package/dist/adrinoBidAdapter.js +1 -1
  46. package/dist/adriverBidAdapter.js +1 -1
  47. package/dist/adriverIdSystem.js +1 -1
  48. package/dist/adtargetBidAdapter.js +1 -1
  49. package/dist/adtelligentBidAdapter.js +1 -1
  50. package/dist/adtelligentIdSystem.js +1 -1
  51. package/dist/adtrgtmeBidAdapter.js +1 -1
  52. package/dist/adtrueBidAdapter.js +1 -1
  53. package/dist/aduptechBidAdapter.js +1 -1
  54. package/dist/advangelistsBidAdapter.js +1 -1
  55. package/dist/adxcgAnalyticsAdapter.js +1 -1
  56. package/dist/adxcgBidAdapter.js +1 -1
  57. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  58. package/dist/adyoulikeBidAdapter.js +1 -1
  59. package/dist/afpBidAdapter.js +1 -1
  60. package/dist/aidemBidAdapter.js +1 -1
  61. package/dist/airgridRtdProvider.js +1 -1
  62. package/dist/ajaBidAdapter.js +1 -1
  63. package/dist/akamaiDapRtdProvider.js +1 -1
  64. package/dist/alkimiBidAdapter.js +1 -1
  65. package/dist/amxBidAdapter.js +1 -1
  66. package/dist/amxIdSystem.js +1 -1
  67. package/dist/aniviewBidAdapter.js +1 -1
  68. package/dist/aolBidAdapter.js +1 -1
  69. package/dist/apacdexBidAdapter.js +1 -1
  70. package/dist/appierAnalyticsAdapter.js +1 -1
  71. package/dist/appierBidAdapter.js +1 -1
  72. package/dist/appnexusBidAdapter.js +1 -1
  73. package/dist/appushBidAdapter.js +1 -1
  74. package/dist/apstreamBidAdapter.js +1 -1
  75. package/dist/arcspanRtdProvider.js +1 -1
  76. package/dist/asealBidAdapter.js +1 -1
  77. package/dist/asoBidAdapter.js +1 -1
  78. package/dist/astraoneBidAdapter.js +1 -1
  79. package/dist/atsAnalyticsAdapter.js +1 -1
  80. package/dist/audiencerunBidAdapter.js +1 -1
  81. package/dist/automatadBidAdapter.js +1 -1
  82. package/dist/axonixBidAdapter.js +1 -1
  83. package/dist/beachfrontBidAdapter.js +1 -1
  84. package/dist/beopBidAdapter.js +1 -1
  85. package/dist/betweenBidAdapter.js +1 -1
  86. package/dist/beyondmediaBidAdapter.js +1 -1
  87. package/dist/bidViewability.js +1 -1
  88. package/dist/bidViewabilityIO.js +1 -1
  89. package/dist/biddoBidAdapter.js +1 -1
  90. package/dist/bidglassBidAdapter.js +1 -1
  91. package/dist/bidscubeBidAdapter.js +1 -1
  92. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  93. package/dist/big-richmediaBidAdapter.js +1 -1
  94. package/dist/bizzclickBidAdapter.js +1 -1
  95. package/dist/bliinkBidAdapter.js +1 -1
  96. package/dist/bluebillywigBidAdapter.js +1 -1
  97. package/dist/blueconicRtdProvider.js +1 -1
  98. package/dist/boldwinBidAdapter.js +1 -1
  99. package/dist/brandmetricsRtdProvider.js +1 -1
  100. package/dist/braveBidAdapter.js +1 -1
  101. package/dist/bridgewellBidAdapter.js +1 -1
  102. package/dist/brightMountainMediaBidAdapter.js +1 -1
  103. package/dist/brightcomBidAdapter.js +1 -1
  104. package/dist/brightcomSSPBidAdapter.js +1 -1
  105. package/dist/britepoolIdSystem.js +1 -1
  106. package/dist/browsiBidAdapter.js +1 -1
  107. package/dist/browsiRtdProvider.js +1 -1
  108. package/dist/bucksenseBidAdapter.js +1 -1
  109. package/dist/buzzoolaBidAdapter.js +1 -1
  110. package/dist/byDataAnalyticsAdapter.js +1 -1
  111. package/dist/c1xBidAdapter.js +1 -1
  112. package/dist/captifyRtdProvider.js +1 -1
  113. package/dist/carodaBidAdapter.js +1 -1
  114. package/dist/categoryTranslation.js +1 -1
  115. package/dist/ccxBidAdapter.js +1 -1
  116. package/dist/chtnwBidAdapter.js +1 -1
  117. package/dist/cleanioRtdProvider.js +1 -1
  118. package/dist/cleanmedianetBidAdapter.js +1 -1
  119. package/dist/clickforceBidAdapter.js +1 -1
  120. package/dist/codefuelBidAdapter.js +1 -1
  121. package/dist/cointrafficBidAdapter.js +1 -1
  122. package/dist/coinzillaBidAdapter.js +1 -1
  123. package/dist/colossussspBidAdapter.js +1 -1
  124. package/dist/compassBidAdapter.js +1 -1
  125. package/dist/concertAnalyticsAdapter.js +1 -1
  126. package/dist/concertBidAdapter.js +1 -1
  127. package/dist/confiantRtdProvider.js +1 -1
  128. package/dist/connectIdSystem.js +1 -1
  129. package/dist/connectadBidAdapter.js +1 -1
  130. package/dist/consentManagement.js +1 -1
  131. package/dist/consentManagementGpp.js +1 -1
  132. package/dist/consentManagementUsp.js +1 -1
  133. package/dist/consumableBidAdapter.js +1 -1
  134. package/dist/contentexchangeBidAdapter.js +1 -1
  135. package/dist/conversantAnalyticsAdapter.js +1 -1
  136. package/dist/conversantBidAdapter.js +1 -1
  137. package/dist/cpmstarBidAdapter.js +1 -1
  138. package/dist/craftBidAdapter.js +1 -1
  139. package/dist/criteoBidAdapter.js +1 -1
  140. package/dist/criteoIdSystem.js +1 -1
  141. package/dist/currency.js +1 -1
  142. package/dist/cwireBidAdapter.js +1 -1
  143. package/dist/czechAdIdSystem.js +1 -1
  144. package/dist/dacIdSystem.js +1 -1
  145. package/dist/dailyhuntBidAdapter.js +1 -1
  146. package/dist/dataControllerModule.js +1 -1
  147. package/dist/datablocksAnalyticsAdapter.js +1 -1
  148. package/dist/datablocksBidAdapter.js +1 -1
  149. package/dist/datawrkzBidAdapter.js +1 -1
  150. package/dist/dchain.js +1 -1
  151. package/dist/debugging-standalone.js +1 -1
  152. package/dist/debugging.js +1 -1
  153. package/dist/deepintentBidAdapter.js +1 -1
  154. package/dist/deepintentDpesIdSystem.js +1 -1
  155. package/dist/deltaprojectsBidAdapter.js +1 -1
  156. package/dist/dfpAdServerVideo.js +1 -1
  157. package/dist/dgkeywordRtdProvider.js +1 -1
  158. package/dist/dianomiBidAdapter.js +1 -1
  159. package/dist/discoveryBidAdapter.js +1 -1
  160. package/dist/displayioBidAdapter.js +1 -1
  161. package/dist/distroscaleBidAdapter.js +1 -1
  162. package/dist/dmdIdSystem.js +1 -1
  163. package/dist/docereeBidAdapter.js +1 -1
  164. package/dist/dspxBidAdapter.js +1 -1
  165. package/dist/e_volutionBidAdapter.js +1 -1
  166. package/dist/ebdrBidAdapter.js +1 -1
  167. package/dist/emx_digitalBidAdapter.js +1 -1
  168. package/dist/engageyaBidAdapter.js +1 -1
  169. package/dist/enrichmentFpdModule.js +1 -1
  170. package/dist/eplanningAnalyticsAdapter.js +1 -1
  171. package/dist/eplanningBidAdapter.js +1 -1
  172. package/dist/etargetBidAdapter.js +1 -1
  173. package/dist/express.js +1 -1
  174. package/dist/fabrickIdSystem.js +1 -1
  175. package/dist/feedadBidAdapter.js +1 -1
  176. package/dist/finativeBidAdapter.js +1 -1
  177. package/dist/fintezaAnalyticsAdapter.js +1 -1
  178. package/dist/fledgeForGpt.js +1 -1
  179. package/dist/fluctBidAdapter.js +1 -1
  180. package/dist/fpdModule.js +1 -1
  181. package/dist/freeWheelAdserverVideo.js +1 -1
  182. package/dist/freewheel-sspBidAdapter.js +1 -1
  183. package/dist/ftrackIdSystem.js +1 -1
  184. package/dist/gammaBidAdapter.js +1 -1
  185. package/dist/gamoshiBidAdapter.js +1 -1
  186. package/dist/gdprEnforcement.js +1 -1
  187. package/dist/genericAnalyticsAdapter.js +1 -1
  188. package/dist/geoedgeRtdProvider.js +1 -1
  189. package/dist/getintentBidAdapter.js +1 -1
  190. package/dist/gjirafaBidAdapter.js +1 -1
  191. package/dist/glimpseBidAdapter.js +1 -1
  192. package/dist/globalsunBidAdapter.js +1 -1
  193. package/dist/glomexBidAdapter.js +1 -1
  194. package/dist/gmosspBidAdapter.js +1 -1
  195. package/dist/gnetBidAdapter.js +1 -1
  196. package/dist/goldbachBidAdapter.js +1 -1
  197. package/dist/googleAnalyticsAdapter.js +1 -1
  198. package/dist/gothamadsBidAdapter.js +1 -1
  199. package/dist/gptPreAuction.js +1 -1
  200. package/dist/gravitoIdSystem.js +1 -1
  201. package/dist/gridBidAdapter.js +1 -1
  202. package/dist/gridNMBidAdapter.js +1 -1
  203. package/dist/growadvertisingBidAdapter.js +1 -1
  204. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  205. package/dist/growthCodeIdSystem.js +1 -1
  206. package/dist/gumgumBidAdapter.js +1 -1
  207. package/dist/h12mediaBidAdapter.js +1 -1
  208. package/dist/hadronAnalyticsAdapter.js +1 -1
  209. package/dist/hadronIdSystem.js +1 -1
  210. package/dist/hadronRtdProvider.js +1 -1
  211. package/dist/holidBidAdapter.js +1 -1
  212. package/dist/hybridBidAdapter.js +1 -1
  213. package/dist/iasRtdProvider.js +1 -1
  214. package/dist/id5AnalyticsAdapter.js +1 -1
  215. package/dist/id5IdSystem.js +1 -1
  216. package/dist/idImportLibrary.js +1 -1
  217. package/dist/idWardRtdProvider.js +1 -1
  218. package/dist/identityLinkIdSystem.js +1 -1
  219. package/dist/idxBidAdapter.js +1 -1
  220. package/dist/idxIdSystem.js +1 -1
  221. package/dist/imRtdProvider.js +1 -1
  222. package/dist/impactifyBidAdapter.js +1 -1
  223. package/dist/improvedigitalBidAdapter.js +1 -1
  224. package/dist/imuIdSystem.js +1 -1
  225. package/dist/incrxBidAdapter.js +1 -1
  226. package/dist/inmarBidAdapter.js +1 -1
  227. package/dist/innityBidAdapter.js +1 -1
  228. package/dist/inskinBidAdapter.js +1 -1
  229. package/dist/insticatorBidAdapter.js +1 -1
  230. package/dist/instreamTracking.js +1 -1
  231. package/dist/integr8BidAdapter.js +1 -1
  232. package/dist/intentIqIdSystem.js +1 -1
  233. package/dist/interactiveOffersBidAdapter.js +1 -1
  234. package/dist/intersectionRtdProvider.js +1 -1
  235. package/dist/invamiaBidAdapter.js +1 -1
  236. package/dist/invibesBidAdapter.js +1 -1
  237. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  238. package/dist/ipromBidAdapter.js +1 -1
  239. package/dist/iqmBidAdapter.js +1 -1
  240. package/dist/iqzoneBidAdapter.js +1 -1
  241. package/dist/ixBidAdapter.js +1 -1
  242. package/dist/jixieBidAdapter.js +1 -1
  243. package/dist/justIdSystem.js +1 -1
  244. package/dist/justpremiumBidAdapter.js +1 -1
  245. package/dist/jwplayerRtdProvider.js +1 -1
  246. package/dist/jwplayerVideoProvider.js +1 -1
  247. package/dist/kargoAnalyticsAdapter.js +1 -1
  248. package/dist/kargoBidAdapter.js +1 -1
  249. package/dist/kinessoIdSystem.js +1 -1
  250. package/dist/koblerBidAdapter.js +1 -1
  251. package/dist/konduitAnalyticsAdapter.js +1 -1
  252. package/dist/konduitWrapper.js +1 -1
  253. package/dist/krushmediaBidAdapter.js +1 -1
  254. package/dist/kubientBidAdapter.js +1 -1
  255. package/dist/kueezBidAdapter.js +1 -1
  256. package/dist/kueezRtbBidAdapter.js +1 -1
  257. package/dist/kulturemediaBidAdapter.js +1 -1
  258. package/dist/lassoBidAdapter.js +1 -1
  259. package/dist/lemmaDigitalBidAdapter.js +1 -1
  260. package/dist/lifestreetBidAdapter.js +1 -1
  261. package/dist/limelightDigitalBidAdapter.js +1 -1
  262. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  263. package/dist/liveIntentIdSystem.js +1 -1
  264. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  265. package/dist/livewrappedBidAdapter.js +1 -1
  266. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  267. package/dist/lkqdBidAdapter.js +1 -1
  268. package/dist/lockerdomeBidAdapter.js +1 -1
  269. package/dist/loganBidAdapter.js +1 -1
  270. package/dist/logicadBidAdapter.js +1 -1
  271. package/dist/loglyliftBidAdapter.js +1 -1
  272. package/dist/lotamePanoramaIdSystem.js +1 -1
  273. package/dist/lunamediahbBidAdapter.js +1 -1
  274. package/dist/luponmediaBidAdapter.js +1 -1
  275. package/dist/mabidderBidAdapter.js +1 -1
  276. package/dist/madvertiseBidAdapter.js +1 -1
  277. package/dist/magniteAnalyticsAdapter.js +1 -1
  278. package/dist/malltvAnalyticsAdapter.js +1 -1
  279. package/dist/malltvBidAdapter.js +1 -1
  280. package/dist/mantisBidAdapter.js +1 -1
  281. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  282. package/dist/marsmediaBidAdapter.js +1 -1
  283. package/dist/mass.js +1 -1
  284. package/dist/mathildeadsBidAdapter.js +1 -1
  285. package/dist/mediaforceBidAdapter.js +1 -1
  286. package/dist/mediafuseBidAdapter.js +1 -1
  287. package/dist/mediagoBidAdapter.js +1 -1
  288. package/dist/mediakeysBidAdapter.js +1 -1
  289. package/dist/medianetAnalyticsAdapter.js +1 -1
  290. package/dist/medianetBidAdapter.js +1 -1
  291. package/dist/medianetRtdProvider.js +1 -1
  292. package/dist/mediasniperBidAdapter.js +1 -1
  293. package/dist/mediasquareBidAdapter.js +1 -1
  294. package/dist/merkleIdSystem.js +1 -1
  295. package/dist/mgidBidAdapter.js +1 -1
  296. package/dist/mgidRtdProvider.js +1 -1
  297. package/dist/microadBidAdapter.js +1 -1
  298. package/dist/minutemediaBidAdapter.js +1 -1
  299. package/dist/minutemediaplusBidAdapter.js +1 -1
  300. package/dist/missenaBidAdapter.js +1 -1
  301. package/dist/mobfoxpbBidAdapter.js +1 -1
  302. package/dist/multibid.js +1 -1
  303. package/dist/mwOpenLinkIdSystem.js +1 -1
  304. package/dist/my6senseBidAdapter.js +1 -1
  305. package/dist/mytargetBidAdapter.js +1 -1
  306. package/dist/nativoBidAdapter.js +1 -1
  307. package/dist/naveggIdSystem.js +1 -1
  308. package/dist/netIdSystem.js +1 -1
  309. package/dist/neuwoRtdProvider.js +1 -1
  310. package/dist/newspassidBidAdapter.js +1 -1
  311. package/dist/nextMillenniumBidAdapter.js +1 -1
  312. package/dist/nextrollBidAdapter.js +1 -1
  313. package/dist/nexx360BidAdapter.js +1 -1
  314. package/dist/nobidBidAdapter.js +1 -1
  315. package/dist/not-for-prod/prebid.js +501 -501
  316. package/dist/novatiqIdSystem.js +1 -1
  317. package/dist/oguryBidAdapter.js +1 -1
  318. package/dist/oneKeyIdSystem.js +1 -1
  319. package/dist/oneKeyRtdProvider.js +1 -1
  320. package/dist/onetagBidAdapter.js +1 -1
  321. package/dist/onomagicBidAdapter.js +1 -1
  322. package/dist/ooloAnalyticsAdapter.js +1 -1
  323. package/dist/open8BidAdapter.js +1 -1
  324. package/dist/openwebBidAdapter.js +1 -1
  325. package/dist/openxAnalyticsAdapter.js +1 -1
  326. package/dist/openxBidAdapter.js +1 -1
  327. package/dist/openxOrtbBidAdapter.js +1 -1
  328. package/dist/operaadsBidAdapter.js +1 -1
  329. package/dist/optidigitalBidAdapter.js +1 -1
  330. package/dist/optimeraRtdProvider.js +1 -1
  331. package/dist/optimonAnalyticsAdapter.js +1 -1
  332. package/dist/optoutBidAdapter.js +1 -1
  333. package/dist/orbidderBidAdapter.js +1 -1
  334. package/dist/orbitsoftBidAdapter.js +1 -1
  335. package/dist/ortbConverter.js +1 -1
  336. package/dist/otmBidAdapter.js +1 -1
  337. package/dist/outbrainBidAdapter.js +1 -1
  338. package/dist/oxxionRtdProvider.js +1 -1
  339. package/dist/ozoneBidAdapter.js +1 -1
  340. package/dist/padsquadBidAdapter.js +1 -1
  341. package/dist/parrableIdSystem.js +1 -1
  342. package/dist/permutiveRtdProvider.js +1 -1
  343. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  344. package/dist/pilotxBidAdapter.js +1 -1
  345. package/dist/pixfutureBidAdapter.js +1 -1
  346. package/dist/prebid-core.js +1 -1
  347. package/dist/prebidServerBidAdapter.js +1 -1
  348. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  349. package/dist/priceFloors.js +1 -1
  350. package/dist/prismaBidAdapter.js +1 -1
  351. package/dist/proxistoreBidAdapter.js +1 -1
  352. package/dist/pubCommonId.js +1 -1
  353. package/dist/pubProvidedIdSystem.js +1 -1
  354. package/dist/pubgeniusBidAdapter.js +1 -1
  355. package/dist/publinkIdSystem.js +1 -1
  356. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  357. package/dist/pubmaticBidAdapter.js +1 -1
  358. package/dist/pubperfAnalyticsAdapter.js +1 -1
  359. package/dist/pubstackAnalyticsAdapter.js +1 -1
  360. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  361. package/dist/pubwiseBidAdapter.js +1 -1
  362. package/dist/pubxBidAdapter.js +1 -1
  363. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  364. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  365. package/dist/pulsepointBidAdapter.js +1 -1
  366. package/dist/pxyzBidAdapter.js +1 -1
  367. package/dist/quantcastBidAdapter.js +1 -1
  368. package/dist/quantcastIdSystem.js +1 -1
  369. package/dist/qwarryBidAdapter.js +1 -1
  370. package/dist/radsBidAdapter.js +1 -1
  371. package/dist/rakutenBidAdapter.js +1 -1
  372. package/dist/rasBidAdapter.js +1 -1
  373. package/dist/readpeakBidAdapter.js +1 -1
  374. package/dist/realvuAnalyticsAdapter.js +1 -1
  375. package/dist/reconciliationRtdProvider.js +1 -1
  376. package/dist/redtramBidAdapter.js +1 -1
  377. package/dist/relaidoBidAdapter.js +1 -1
  378. package/dist/relevadRtdProvider.js +1 -1
  379. package/dist/relevantAnalyticsAdapter.js +1 -1
  380. package/dist/resetdigitalBidAdapter.js +1 -1
  381. package/dist/revcontentBidAdapter.js +1 -1
  382. package/dist/rhythmoneBidAdapter.js +1 -1
  383. package/dist/richaudienceBidAdapter.js +1 -1
  384. package/dist/riseBidAdapter.js +1 -1
  385. package/dist/rivrAnalyticsAdapter.js +1 -1
  386. package/dist/roxotAnalyticsAdapter.js +1 -1
  387. package/dist/rtbhouseBidAdapter.js +1 -1
  388. package/dist/rtbsapeBidAdapter.js +1 -1
  389. package/dist/rtdModule.js +1 -1
  390. package/dist/rubiconAnalyticsAdapter.js +1 -1
  391. package/dist/rubiconBidAdapter.js +1 -1
  392. package/dist/s2sTesting.js +1 -1
  393. package/dist/saambaaBidAdapter.js +1 -1
  394. package/dist/scaleableAnalyticsAdapter.js +1 -1
  395. package/dist/scatteredBidAdapter.js +1 -1
  396. package/dist/schain.js +1 -1
  397. package/dist/seedingAllianceBidAdapter.js +1 -1
  398. package/dist/seedtagBidAdapter.js +1 -1
  399. package/dist/sharedIdSystem.js +1 -1
  400. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  401. package/dist/sharethroughBidAdapter.js +1 -1
  402. package/dist/shinezBidAdapter.js +1 -1
  403. package/dist/showheroes-bsBidAdapter.js +1 -1
  404. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  405. package/dist/sirdataRtdProvider.js +1 -1
  406. package/dist/sizeMappingV2.js +1 -1
  407. package/dist/slimcutBidAdapter.js +1 -1
  408. package/dist/smaatoBidAdapter.js +1 -1
  409. package/dist/smartadserverBidAdapter.js +1 -1
  410. package/dist/smarthubBidAdapter.js +1 -1
  411. package/dist/smarticoBidAdapter.js +1 -1
  412. package/dist/smartxBidAdapter.js +1 -1
  413. package/dist/smartyadsBidAdapter.js +1 -1
  414. package/dist/smartytechBidAdapter.js +1 -1
  415. package/dist/smilewantedBidAdapter.js +1 -1
  416. package/dist/snigelBidAdapter.js +1 -1
  417. package/dist/sonobiAnalyticsAdapter.js +1 -1
  418. package/dist/sonobiBidAdapter.js +1 -1
  419. package/dist/sovrnAnalyticsAdapter.js +1 -1
  420. package/dist/sovrnBidAdapter.js +1 -1
  421. package/dist/spotxBidAdapter.js +1 -1
  422. package/dist/sspBCBidAdapter.js +1 -1
  423. package/dist/staqAnalyticsAdapter.js +1 -1
  424. package/dist/stroeerCoreBidAdapter.js +1 -1
  425. package/dist/stvBidAdapter.js +1 -1
  426. package/dist/sublimeBidAdapter.js +1 -1
  427. package/dist/synacormediaBidAdapter.js +1 -1
  428. package/dist/taboolaBidAdapter.js +1 -1
  429. package/dist/talkadsBidAdapter.js +1 -1
  430. package/dist/tapadIdSystem.js +1 -1
  431. package/dist/tappxBidAdapter.js +1 -1
  432. package/dist/targetVideoBidAdapter.js +1 -1
  433. package/dist/teadsBidAdapter.js +1 -1
  434. package/dist/teadsIdSystem.js +1 -1
  435. package/dist/telariaBidAdapter.js +1 -1
  436. package/dist/temedyaBidAdapter.js +1 -1
  437. package/dist/terceptAnalyticsAdapter.js +1 -1
  438. package/dist/theAdxBidAdapter.js +1 -1
  439. package/dist/timeoutRtdProvider.js +1 -1
  440. package/dist/tncIdSystem.js +1 -1
  441. package/dist/topicsFpdModule.js +1 -1
  442. package/dist/tpmnBidAdapter.js +1 -1
  443. package/dist/trafficgateBidAdapter.js +1 -1
  444. package/dist/trionBidAdapter.js +1 -1
  445. package/dist/tripleliftBidAdapter.js +1 -1
  446. package/dist/truereachBidAdapter.js +1 -1
  447. package/dist/trustpidSystem.js +1 -1
  448. package/dist/ttdBidAdapter.js +1 -1
  449. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  450. package/dist/ucfunnelBidAdapter.js +1 -1
  451. package/dist/uid2IdSystem.js +1 -1
  452. package/dist/underdogmediaBidAdapter.js +1 -1
  453. package/dist/undertoneBidAdapter.js +1 -1
  454. package/dist/unicornBidAdapter.js +1 -1
  455. package/dist/unifiedIdSystem.js +1 -1
  456. package/dist/unrulyBidAdapter.js +1 -1
  457. package/dist/userId.js +1 -1
  458. package/dist/validationFpdModule.js +1 -1
  459. package/dist/vdoaiBidAdapter.js +1 -1
  460. package/dist/ventesBidAdapter.js +1 -1
  461. package/dist/verizonMediaIdSystem.js +1 -1
  462. package/dist/vibrantmediaBidAdapter.js +1 -1
  463. package/dist/vidazooBidAdapter.js +1 -1
  464. package/dist/videoModule.js +1 -1
  465. package/dist/videobyteBidAdapter.js +1 -1
  466. package/dist/videoheroesBidAdapter.js +1 -1
  467. package/dist/videojsVideoProvider.js +1 -1
  468. package/dist/videonowBidAdapter.js +1 -1
  469. package/dist/videoreachBidAdapter.js +1 -1
  470. package/dist/vidoomyBidAdapter.js +1 -1
  471. package/dist/viewability.js +1 -1
  472. package/dist/viewdeosDXBidAdapter.js +1 -1
  473. package/dist/viouslyBidAdapter.js +1 -1
  474. package/dist/viqeoBidAdapter.js +1 -1
  475. package/dist/visiblemeasuresBidAdapter.js +1 -1
  476. package/dist/visxBidAdapter.js +1 -1
  477. package/dist/vlybyBidAdapter.js +1 -1
  478. package/dist/voxBidAdapter.js +1 -1
  479. package/dist/vrtcalBidAdapter.js +1 -1
  480. package/dist/vuukleBidAdapter.js +1 -1
  481. package/dist/waardexBidAdapter.js +1 -1
  482. package/dist/weboramaRtdProvider.js +1 -1
  483. package/dist/welectBidAdapter.js +1 -1
  484. package/dist/widespaceBidAdapter.js +1 -1
  485. package/dist/winrBidAdapter.js +1 -1
  486. package/dist/wipesBidAdapter.js +1 -1
  487. package/dist/xeBidAdapter.js +1 -1
  488. package/dist/yahoosspBidAdapter.js +1 -1
  489. package/dist/yandexBidAdapter.js +1 -1
  490. package/dist/yieldlabBidAdapter.js +1 -1
  491. package/dist/yieldliftBidAdapter.js +1 -1
  492. package/dist/yieldmoBidAdapter.js +1 -1
  493. package/dist/yieldmoSyntheticInventoryModule.js +1 -1
  494. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  495. package/dist/yieldoneBidAdapter.js +1 -1
  496. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  497. package/dist/zeotapIdPlusIdSystem.js +1 -1
  498. package/dist/zetaBidAdapter.js +1 -1
  499. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  500. package/dist/zeta_global_sspBidAdapter.js +1 -1
  501. package/dist/zeusPrimeRtdProvider.js +2 -2
  502. package/features.json +2 -1
  503. package/libraries/ortbConverter/processors/default.js +11 -8
  504. package/modules/adagioBidAdapter.js +41 -0
  505. package/modules/adagioBidAdapter.md +6 -0
  506. package/modules/addefendBidAdapter.js +2 -1
  507. package/modules/adkernelBidAdapter.js +2 -1
  508. package/modules/adpod.js +2 -3
  509. package/modules/adtelligentBidAdapter.js +8 -1
  510. package/modules/adxcgAnalyticsAdapter.js +2 -1
  511. package/modules/airgridRtdProvider.js +17 -7
  512. package/modules/atsAnalyticsAdapter.js +2 -1
  513. package/modules/concertBidAdapter.js +24 -41
  514. package/modules/consentManagement.js +2 -1
  515. package/modules/consentManagementGpp.js +2 -1
  516. package/modules/displayioBidAdapter.js +18 -8
  517. package/modules/express.js +7 -5
  518. package/modules/gumgumBidAdapter.js +2 -2
  519. package/modules/id5AnalyticsAdapter.js +2 -1
  520. package/modules/mabidderBidAdapter.js +3 -1
  521. package/modules/marsmediaAnalyticsAdapter.js +2 -1
  522. package/modules/medianetAnalyticsAdapter.js +124 -59
  523. package/modules/medianetBidAdapter.js +6 -5
  524. package/modules/orbidderBidAdapter.js +2 -1
  525. package/modules/permutiveRtdProvider.md +54 -84
  526. package/modules/pixfutureBidAdapter.js +2 -1
  527. package/modules/pubCommonId.js +3 -2
  528. package/modules/pubxaiAnalyticsAdapter.js +2 -1
  529. package/modules/rivrAnalyticsAdapter.js +2 -1
  530. package/modules/rtbhouseBidAdapter.js +10 -3
  531. package/modules/sizeMappingV2.js +1 -1
  532. package/modules/smaatoBidAdapter.js +16 -4
  533. package/modules/snigelBidAdapter.js +2 -1
  534. package/modules/sonobiBidAdapter.js +64 -1
  535. package/modules/tappxBidAdapter.js +2 -1
  536. package/modules/terceptAnalyticsAdapter.js +2 -1
  537. package/modules/userId/index.js +6 -5
  538. package/modules/yuktamediaAnalyticsAdapter.js +2 -1
  539. package/package.json +3 -1
  540. package/plugins/pbjsGlobals.js +16 -5
  541. package/src/Renderer.js +4 -1
  542. package/src/adapterManager.js +2 -2
  543. package/src/adapters/bidderFactory.js +46 -41
  544. package/src/auction.js +10 -5
  545. package/src/fpd/enrichment.js +1 -1
  546. package/src/prebid.js +96 -89
  547. package/src/prebidGlobal.js +14 -6
  548. package/src/storageManager.js +29 -76
  549. package/src/utils.js +5 -2
  550. package/test/spec/auctionmanager_spec.js +113 -105
  551. package/test/spec/modules/adagioBidAdapter_spec.js +70 -0
  552. package/test/spec/modules/adlooxAdServerVideo_spec.js +1 -0
  553. package/test/spec/modules/adtelligentBidAdapter_spec.js +11 -10
  554. package/test/spec/modules/airgridRtdProvider_spec.js +9 -3
  555. package/test/spec/modules/concertBidAdapter_spec.js +12 -81
  556. package/test/spec/modules/gumgumBidAdapter_spec.js +3 -3
  557. package/test/spec/modules/improvedigitalBidAdapter_spec.js +127 -121
  558. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +27 -1
  559. package/test/spec/modules/nexx360BidAdapter_spec.js +41 -39
  560. package/test/spec/modules/openxOrtbBidAdapter_spec.js +53 -49
  561. package/test/spec/modules/prebidServerBidAdapter_spec.js +148 -133
  562. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +1 -0
  563. package/test/spec/modules/rtbhouseBidAdapter_spec.js +23 -9
  564. package/test/spec/modules/rubiconBidAdapter_spec.js +767 -761
  565. package/test/spec/modules/sizeMappingV2_spec.js +4 -0
  566. package/test/spec/modules/smaatoBidAdapter_spec.js +32 -0
  567. package/test/spec/modules/sonobiBidAdapter_spec.js +13 -0
  568. package/test/spec/unit/core/adapterManager_spec.js +5 -2
  569. package/test/spec/unit/core/bidderFactory_spec.js +4 -0
  570. package/test/spec/unit/core/storageManager_spec.js +84 -34
  571. package/test/spec/unit/pbjs_api_spec.js +129 -121
@@ -1538,709 +1538,711 @@ describe('the rubicon adapter', function () {
1538
1538
  });
1539
1539
  });
1540
1540
 
1541
- describe('for video requests', function () {
1542
- it('should make a well-formed video request', function () {
1543
- createVideoBidderRequest();
1544
-
1545
- sandbox.stub(Date, 'now').callsFake(() =>
1546
- bidderRequest.auctionStart + 100
1547
- );
1548
-
1549
- let [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
1550
- let post = request.data;
1551
-
1552
- expect(post).to.have.property('imp');
1553
- // .with.length.of(1);
1554
- let imp = post.imp[0];
1555
- expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);
1556
- expect(imp.exp).to.equal(undefined); // now undefined
1557
- expect(imp.video.w).to.equal(640);
1558
- expect(imp.video.h).to.equal(480);
1559
- expect(imp.video.pos).to.equal(1);
1560
- expect(imp.video.minduration).to.equal(15);
1561
- expect(imp.video.maxduration).to.equal(30);
1562
- expect(imp.video.startdelay).to.equal(0);
1563
- expect(imp.video.skip).to.equal(1);
1564
- expect(imp.video.skipafter).to.equal(15);
1565
- expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);
1566
- expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);
1567
- expect(imp.ext.prebid.bidder.rubicon.video.size_id).to.equal(201);
1568
- expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');
1569
- // Also want it to be in post.site.content.language
1570
- expect(imp.ext.prebid.bidder.rubicon.video.skip).to.equal(1);
1571
- expect(imp.ext.prebid.bidder.rubicon.video.skipafter).to.equal(15);
1572
- expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);
1573
- // should contain version
1574
- expect(post.ext.prebid.channel).to.deep.equal({name: 'pbjs', version: $$PREBID_GLOBAL$$.version});
1575
- expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');
1576
- // EIDs should exist
1577
- expect(post.user.ext).to.have.property('eids').that.is.an('array');
1578
- // LiveIntent should exist
1579
- expect(post.user.ext.eids[0].source).to.equal('liveintent.com');
1580
- expect(post.user.ext.eids[0].uids[0].id).to.equal('0000-1111-2222-3333');
1581
- expect(post.user.ext.eids[0].uids[0].atype).to.equal(3);
1582
- expect(post.user.ext.eids[0]).to.have.property('ext').that.is.an('object');
1583
- expect(post.user.ext.eids[0].ext).to.have.property('segments').that.is.an('array');
1584
- expect(post.user.ext.eids[0].ext.segments[0]).to.equal('segA');
1585
- expect(post.user.ext.eids[0].ext.segments[1]).to.equal('segB');
1586
- // LiveRamp should exist
1587
- expect(post.user.ext.eids[1].source).to.equal('liveramp.com');
1588
- expect(post.user.ext.eids[1].uids[0].id).to.equal('1111-2222-3333-4444');
1589
- expect(post.user.ext.eids[1].uids[0].atype).to.equal(3);
1590
- // UnifiedId should exist
1591
- expect(post.user.ext.eids[2].source).to.equal('adserver.org');
1592
- expect(post.user.ext.eids[2].uids[0].atype).to.equal(1);
1593
- expect(post.user.ext.eids[2].uids[0].id).to.equal('3000');
1594
- // PubCommonId should exist
1595
- expect(post.user.ext.eids[3].source).to.equal('pubcid.org');
1596
- expect(post.user.ext.eids[3].uids[0].atype).to.equal(1);
1597
- expect(post.user.ext.eids[3].uids[0].id).to.equal('4000');
1598
- // example should exist
1599
- expect(post.user.ext.eids[4].source).to.equal('example.com');
1600
- expect(post.user.ext.eids[4].uids[0].id).to.equal('333333');
1601
- // id-partner.com
1602
- expect(post.user.ext.eids[5].source).to.equal('id-partner.com');
1603
- expect(post.user.ext.eids[5].uids[0].id).to.equal('4444444');
1604
- // CriteoId should exist
1605
- expect(post.user.ext.eids[6].source).to.equal('criteo.com');
1606
- expect(post.user.ext.eids[6].uids[0].id).to.equal('1111');
1607
- expect(post.user.ext.eids[6].uids[0].atype).to.equal(1);
1608
-
1609
- expect(post.regs.ext.gdpr).to.equal(1);
1610
- expect(post.regs.ext.us_privacy).to.equal('1NYN');
1611
- expect(post).to.have.property('ext').that.is.an('object');
1612
- expect(post.ext.prebid.targeting.includewinners).to.equal(true);
1613
- expect(post.ext.prebid).to.have.property('cache').that.is.an('object');
1614
- expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');
1615
- expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');
1616
- expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);
1617
- expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);
1618
- });
1619
-
1620
- describe('ortb2imp sent to video bids', function () {
1621
- beforeEach(function () {
1622
- // initialize
1623
- if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {
1624
- delete bidderRequest.bids[0].ortb2Imp;
1625
- }
1626
- });
1627
-
1628
- it('should add ortb values to video requests', function () {
1541
+ if (FEATURES.VIDEO) {
1542
+ describe('for video requests', function () {
1543
+ it('should make a well-formed video request', function () {
1629
1544
  createVideoBidderRequest();
1630
1545
 
1631
1546
  sandbox.stub(Date, 'now').callsFake(() =>
1632
1547
  bidderRequest.auctionStart + 100
1633
1548
  );
1634
1549
 
1635
- bidderRequest.bids[0].ortb2Imp = {
1636
- ext: {
1637
- gpid: '/test/gpid',
1638
- data: {
1639
- pbadslot: '/test/pbadslot'
1640
- },
1641
- prebid: {
1642
- storedauctionresponse: {
1643
- id: 'sample_video_response'
1644
- }
1645
- }
1646
- }
1647
- }
1648
-
1649
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1550
+ let [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
1650
1551
  let post = request.data;
1651
1552
 
1652
1553
  expect(post).to.have.property('imp');
1653
1554
  // .with.length.of(1);
1654
1555
  let imp = post.imp[0];
1655
- expect(imp.ext.gpid).to.equal('/test/gpid');
1656
- expect(imp.ext.data.pbadslot).to.equal('/test/pbadslot');
1657
- expect(imp.ext.prebid.storedauctionresponse.id).to.equal('sample_video_response');
1658
- });
1659
- });
1556
+ expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);
1557
+ expect(imp.exp).to.equal(undefined); // now undefined
1558
+ expect(imp.video.w).to.equal(640);
1559
+ expect(imp.video.h).to.equal(480);
1560
+ expect(imp.video.pos).to.equal(1);
1561
+ expect(imp.video.minduration).to.equal(15);
1562
+ expect(imp.video.maxduration).to.equal(30);
1563
+ expect(imp.video.startdelay).to.equal(0);
1564
+ expect(imp.video.skip).to.equal(1);
1565
+ expect(imp.video.skipafter).to.equal(15);
1566
+ expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);
1567
+ expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);
1568
+ expect(imp.ext.prebid.bidder.rubicon.video.size_id).to.equal(201);
1569
+ expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');
1570
+ // Also want it to be in post.site.content.language
1571
+ expect(imp.ext.prebid.bidder.rubicon.video.skip).to.equal(1);
1572
+ expect(imp.ext.prebid.bidder.rubicon.video.skipafter).to.equal(15);
1573
+ expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);
1574
+ // should contain version
1575
+ expect(post.ext.prebid.channel).to.deep.equal({name: 'pbjs', version: $$PREBID_GLOBAL$$.version});
1576
+ expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');
1577
+ // EIDs should exist
1578
+ expect(post.user.ext).to.have.property('eids').that.is.an('array');
1579
+ // LiveIntent should exist
1580
+ expect(post.user.ext.eids[0].source).to.equal('liveintent.com');
1581
+ expect(post.user.ext.eids[0].uids[0].id).to.equal('0000-1111-2222-3333');
1582
+ expect(post.user.ext.eids[0].uids[0].atype).to.equal(3);
1583
+ expect(post.user.ext.eids[0]).to.have.property('ext').that.is.an('object');
1584
+ expect(post.user.ext.eids[0].ext).to.have.property('segments').that.is.an('array');
1585
+ expect(post.user.ext.eids[0].ext.segments[0]).to.equal('segA');
1586
+ expect(post.user.ext.eids[0].ext.segments[1]).to.equal('segB');
1587
+ // LiveRamp should exist
1588
+ expect(post.user.ext.eids[1].source).to.equal('liveramp.com');
1589
+ expect(post.user.ext.eids[1].uids[0].id).to.equal('1111-2222-3333-4444');
1590
+ expect(post.user.ext.eids[1].uids[0].atype).to.equal(3);
1591
+ // UnifiedId should exist
1592
+ expect(post.user.ext.eids[2].source).to.equal('adserver.org');
1593
+ expect(post.user.ext.eids[2].uids[0].atype).to.equal(1);
1594
+ expect(post.user.ext.eids[2].uids[0].id).to.equal('3000');
1595
+ // PubCommonId should exist
1596
+ expect(post.user.ext.eids[3].source).to.equal('pubcid.org');
1597
+ expect(post.user.ext.eids[3].uids[0].atype).to.equal(1);
1598
+ expect(post.user.ext.eids[3].uids[0].id).to.equal('4000');
1599
+ // example should exist
1600
+ expect(post.user.ext.eids[4].source).to.equal('example.com');
1601
+ expect(post.user.ext.eids[4].uids[0].id).to.equal('333333');
1602
+ // id-partner.com
1603
+ expect(post.user.ext.eids[5].source).to.equal('id-partner.com');
1604
+ expect(post.user.ext.eids[5].uids[0].id).to.equal('4444444');
1605
+ // CriteoId should exist
1606
+ expect(post.user.ext.eids[6].source).to.equal('criteo.com');
1607
+ expect(post.user.ext.eids[6].uids[0].id).to.equal('1111');
1608
+ expect(post.user.ext.eids[6].uids[0].atype).to.equal(1);
1609
+
1610
+ expect(post.regs.ext.gdpr).to.equal(1);
1611
+ expect(post.regs.ext.us_privacy).to.equal('1NYN');
1612
+ expect(post).to.have.property('ext').that.is.an('object');
1613
+ expect(post.ext.prebid.targeting.includewinners).to.equal(true);
1614
+ expect(post.ext.prebid).to.have.property('cache').that.is.an('object');
1615
+ expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');
1616
+ expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');
1617
+ expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);
1618
+ expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);
1619
+ });
1620
+
1621
+ describe('ortb2imp sent to video bids', function () {
1622
+ beforeEach(function () {
1623
+ // initialize
1624
+ if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {
1625
+ delete bidderRequest.bids[0].ortb2Imp;
1626
+ }
1627
+ });
1660
1628
 
1661
- it('should correctly set bidfloor on imp when getfloor in scope', function () {
1662
- createVideoBidderRequest();
1663
- // default getFloor response is empty object so should not break and not send hard_floor
1664
- bidderRequest.bids[0].getFloor = () => getFloorResponse;
1665
- sinon.spy(bidderRequest.bids[0], 'getFloor');
1629
+ it('should add ortb values to video requests', function () {
1630
+ createVideoBidderRequest();
1666
1631
 
1667
- sandbox.stub(Date, 'now').callsFake(() =>
1668
- bidderRequest.auctionStart + 100
1669
- );
1632
+ sandbox.stub(Date, 'now').callsFake(() =>
1633
+ bidderRequest.auctionStart + 100
1634
+ );
1670
1635
 
1671
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1636
+ bidderRequest.bids[0].ortb2Imp = {
1637
+ ext: {
1638
+ gpid: '/test/gpid',
1639
+ data: {
1640
+ pbadslot: '/test/pbadslot'
1641
+ },
1642
+ prebid: {
1643
+ storedauctionresponse: {
1644
+ id: 'sample_video_response'
1645
+ }
1646
+ }
1647
+ }
1648
+ }
1672
1649
 
1673
- // make sure banner bid called with right stuff
1674
- expect(
1675
- bidderRequest.bids[0].getFloor.calledWith({
1676
- currency: 'USD',
1677
- mediaType: '*',
1678
- size: '*'
1679
- })
1680
- ).to.be.true;
1650
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1651
+ let post = request.data;
1681
1652
 
1682
- // not an object should work and not send
1683
- expect(request.data.imp[0].bidfloor).to.be.undefined;
1653
+ expect(post).to.have.property('imp');
1654
+ // .with.length.of(1);
1655
+ let imp = post.imp[0];
1656
+ expect(imp.ext.gpid).to.equal('/test/gpid');
1657
+ expect(imp.ext.data.pbadslot).to.equal('/test/pbadslot');
1658
+ expect(imp.ext.prebid.storedauctionresponse.id).to.equal('sample_video_response');
1659
+ });
1660
+ });
1684
1661
 
1685
- // make it respond with a non USD floor should not send it
1686
- getFloorResponse = {currency: 'EUR', floor: 1.0};
1687
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1688
- expect(request.data.imp[0].bidfloor).to.be.undefined;
1662
+ it('should correctly set bidfloor on imp when getfloor in scope', function () {
1663
+ createVideoBidderRequest();
1664
+ // default getFloor response is empty object so should not break and not send hard_floor
1665
+ bidderRequest.bids[0].getFloor = () => getFloorResponse;
1666
+ sinon.spy(bidderRequest.bids[0], 'getFloor');
1689
1667
 
1690
- // make it respond with a non USD floor should not send it
1691
- getFloorResponse = {currency: 'EUR'};
1692
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1693
- expect(request.data.imp[0].bidfloor).to.be.undefined;
1668
+ sandbox.stub(Date, 'now').callsFake(() =>
1669
+ bidderRequest.auctionStart + 100
1670
+ );
1694
1671
 
1695
- // make it respond with USD floor and string floor
1696
- getFloorResponse = {currency: 'USD', floor: '1.23'};
1697
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1698
- expect(request.data.imp[0].bidfloor).to.equal(1.23);
1672
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1699
1673
 
1700
- // make it respond with USD floor and num floor
1701
- getFloorResponse = {currency: 'USD', floor: 1.23};
1702
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1703
- expect(request.data.imp[0].bidfloor).to.equal(1.23);
1704
- });
1674
+ // make sure banner bid called with right stuff
1675
+ expect(
1676
+ bidderRequest.bids[0].getFloor.calledWith({
1677
+ currency: 'USD',
1678
+ mediaType: '*',
1679
+ size: '*'
1680
+ })
1681
+ ).to.be.true;
1705
1682
 
1706
- it('should continue with auction if getFloor throws error', function () {
1707
- createVideoBidderRequest();
1708
- // default getFloor response is empty object so should not break and not send hard_floor
1709
- bidderRequest.bids[0].getFloor = () => {
1710
- throw new Error('An exception!');
1711
- };
1712
- sandbox.stub(Date, 'now').callsFake(() =>
1713
- bidderRequest.auctionStart + 100
1714
- );
1683
+ // not an object should work and not send
1684
+ expect(request.data.imp[0].bidfloor).to.be.undefined;
1715
1685
 
1716
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1686
+ // make it respond with a non USD floor should not send it
1687
+ getFloorResponse = {currency: 'EUR', floor: 1.0};
1688
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1689
+ expect(request.data.imp[0].bidfloor).to.be.undefined;
1717
1690
 
1718
- // should have an imp
1719
- expect(request.data.imp).to.exist.and.to.be.a('array');
1720
- expect(request.data.imp).to.have.lengthOf(1);
1691
+ // make it respond with a non USD floor should not send it
1692
+ getFloorResponse = {currency: 'EUR'};
1693
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1694
+ expect(request.data.imp[0].bidfloor).to.be.undefined;
1721
1695
 
1722
- // should be NO bidFloor
1723
- expect(request.data.imp[0].bidfloor).to.be.undefined;
1724
- expect(request.data.imp[0].bidfloorcur).to.be.undefined;
1725
- });
1696
+ // make it respond with USD floor and string floor
1697
+ getFloorResponse = {currency: 'USD', floor: '1.23'};
1698
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1699
+ expect(request.data.imp[0].bidfloor).to.equal(1.23);
1726
1700
 
1727
- it('should add alias name to PBS Request', function () {
1728
- createVideoBidderRequest();
1729
- adapterManager.aliasRegistry['superRubicon'] = 'rubicon';
1730
- bidderRequest.bidderCode = 'superRubicon';
1731
- bidderRequest.bids[0].bidder = 'superRubicon';
1732
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1701
+ // make it respond with USD floor and num floor
1702
+ getFloorResponse = {currency: 'USD', floor: 1.23};
1703
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1704
+ expect(request.data.imp[0].bidfloor).to.equal(1.23);
1705
+ });
1733
1706
 
1734
- // should have the aliases object sent to PBS
1735
- expect(request.data.ext.prebid).to.haveOwnProperty('aliases');
1736
- expect(request.data.ext.prebid.aliases).to.deep.equal({superRubicon: 'rubicon'});
1707
+ it('should continue with auction if getFloor throws error', function () {
1708
+ createVideoBidderRequest();
1709
+ // default getFloor response is empty object so should not break and not send hard_floor
1710
+ bidderRequest.bids[0].getFloor = () => {
1711
+ throw new Error('An exception!');
1712
+ };
1713
+ sandbox.stub(Date, 'now').callsFake(() =>
1714
+ bidderRequest.auctionStart + 100
1715
+ );
1737
1716
 
1738
- // should have the imp ext bidder params be under the alias name not rubicon superRubicon
1739
- expect(request.data.imp[0].ext.prebid.bidder).to.have.property('superRubicon').that.is.an('object');
1740
- expect(request.data.imp[0].ext.prebid.bidder).to.not.haveOwnProperty('rubicon');
1741
- });
1717
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1742
1718
 
1743
- it('should add floors flag correctly to PBS Request', function () {
1744
- createVideoBidderRequest();
1745
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1719
+ // should have an imp
1720
+ expect(request.data.imp).to.exist.and.to.be.a('array');
1721
+ expect(request.data.imp).to.have.lengthOf(1);
1746
1722
 
1747
- // should not pass if undefined
1748
- expect(request.data.ext.prebid.floors).to.be.undefined;
1723
+ // should be NO bidFloor
1724
+ expect(request.data.imp[0].bidfloor).to.be.undefined;
1725
+ expect(request.data.imp[0].bidfloorcur).to.be.undefined;
1726
+ });
1749
1727
 
1750
- // should pass it as false
1751
- bidderRequest.bids[0].floorData = {
1752
- skipped: false,
1753
- location: 'fetch',
1754
- }
1755
- let [newRequest] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1756
- expect(newRequest.data.ext.prebid.floors).to.deep.equal({ enabled: false });
1757
- });
1728
+ it('should add alias name to PBS Request', function () {
1729
+ createVideoBidderRequest();
1730
+ adapterManager.aliasRegistry['superRubicon'] = 'rubicon';
1731
+ bidderRequest.bidderCode = 'superRubicon';
1732
+ bidderRequest.bids[0].bidder = 'superRubicon';
1733
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1758
1734
 
1759
- it('should add multibid configuration to PBS Request', function () {
1760
- createVideoBidderRequest();
1735
+ // should have the aliases object sent to PBS
1736
+ expect(request.data.ext.prebid).to.haveOwnProperty('aliases');
1737
+ expect(request.data.ext.prebid.aliases).to.deep.equal({superRubicon: 'rubicon'});
1761
1738
 
1762
- const multibid = [{
1763
- bidder: 'bidderA',
1764
- maxBids: 2
1765
- }, {
1766
- bidder: 'bidderB',
1767
- maxBids: 2
1768
- }];
1769
- const expected = [{
1770
- bidder: 'bidderA',
1771
- maxbids: 2
1772
- }, {
1773
- bidder: 'bidderB',
1774
- maxbids: 2
1775
- }];
1739
+ // should have the imp ext bidder params be under the alias name not rubicon superRubicon
1740
+ expect(request.data.imp[0].ext.prebid.bidder).to.have.property('superRubicon').that.is.an('object');
1741
+ expect(request.data.imp[0].ext.prebid.bidder).to.not.haveOwnProperty('rubicon');
1742
+ });
1776
1743
 
1777
- config.setConfig({multibid: multibid});
1744
+ it('should add floors flag correctly to PBS Request', function () {
1745
+ createVideoBidderRequest();
1746
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1778
1747
 
1779
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1748
+ // should not pass if undefined
1749
+ expect(request.data.ext.prebid.floors).to.be.undefined;
1780
1750
 
1781
- // should have the aliases object sent to PBS
1782
- expect(request.data.ext.prebid).to.haveOwnProperty('multibid');
1783
- expect(request.data.ext.prebid.multibid).to.deep.equal(expected);
1784
- });
1751
+ // should pass it as false
1752
+ bidderRequest.bids[0].floorData = {
1753
+ skipped: false,
1754
+ location: 'fetch',
1755
+ }
1756
+ let [newRequest] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1757
+ expect(newRequest.data.ext.prebid.floors).to.deep.equal({ enabled: false });
1758
+ });
1785
1759
 
1786
- it('should pass client analytics to PBS endpoint if all modules included', function () {
1787
- createVideoBidderRequest();
1788
- $$PREBID_GLOBAL$$.installedModules = [];
1789
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1790
- let payload = request.data;
1760
+ it('should add multibid configuration to PBS Request', function () {
1761
+ createVideoBidderRequest();
1791
1762
 
1792
- expect(payload.ext.prebid.analytics).to.not.be.undefined;
1793
- expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});
1794
- });
1763
+ const multibid = [{
1764
+ bidder: 'bidderA',
1765
+ maxBids: 2
1766
+ }, {
1767
+ bidder: 'bidderB',
1768
+ maxBids: 2
1769
+ }];
1770
+ const expected = [{
1771
+ bidder: 'bidderA',
1772
+ maxbids: 2
1773
+ }, {
1774
+ bidder: 'bidderB',
1775
+ maxbids: 2
1776
+ }];
1777
+
1778
+ config.setConfig({multibid: multibid});
1795
1779
 
1796
- it('should pass client analytics to PBS endpoint if rubicon analytics adapter is included', function () {
1797
- createVideoBidderRequest();
1798
- $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter', 'rubiconAnalyticsAdapter'];
1799
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1800
- let payload = request.data;
1780
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1801
1781
 
1802
- expect(payload.ext.prebid.analytics).to.not.be.undefined;
1803
- expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});
1804
- });
1782
+ // should have the aliases object sent to PBS
1783
+ expect(request.data.ext.prebid).to.haveOwnProperty('multibid');
1784
+ expect(request.data.ext.prebid.multibid).to.deep.equal(expected);
1785
+ });
1805
1786
 
1806
- it('should not pass client analytics to PBS endpoint if rubicon analytics adapter is not included', function () {
1807
- createVideoBidderRequest();
1808
- $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter'];
1809
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1810
- let payload = request.data;
1787
+ it('should pass client analytics to PBS endpoint if all modules included', function () {
1788
+ createVideoBidderRequest();
1789
+ $$PREBID_GLOBAL$$.installedModules = [];
1790
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1791
+ let payload = request.data;
1811
1792
 
1812
- expect(payload.ext.prebid.analytics).to.be.undefined;
1813
- });
1793
+ expect(payload.ext.prebid.analytics).to.not.be.undefined;
1794
+ expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});
1795
+ });
1814
1796
 
1815
- it('should send video exp param correctly when set', function () {
1816
- createVideoBidderRequest();
1817
- config.setConfig({s2sConfig: {defaultTtl: 600}});
1818
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1819
- let post = request.data;
1797
+ it('should pass client analytics to PBS endpoint if rubicon analytics adapter is included', function () {
1798
+ createVideoBidderRequest();
1799
+ $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter', 'rubiconAnalyticsAdapter'];
1800
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1801
+ let payload = request.data;
1820
1802
 
1821
- // should exp set to the right value according to config
1822
- let imp = post.imp[0];
1823
- expect(imp.exp).to.equal(600);
1824
- });
1803
+ expect(payload.ext.prebid.analytics).to.not.be.undefined;
1804
+ expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});
1805
+ });
1825
1806
 
1826
- it('should not send video exp at all if not set in s2sConfig config', function () {
1827
- createVideoBidderRequest();
1828
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1829
- let post = request.data;
1807
+ it('should not pass client analytics to PBS endpoint if rubicon analytics adapter is not included', function () {
1808
+ createVideoBidderRequest();
1809
+ $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter'];
1810
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1811
+ let payload = request.data;
1830
1812
 
1831
- // should exp set to the right value according to config
1832
- let imp = post.imp[0];
1833
- // bidderFactory stringifies request body before sending so removes undefined attributes:
1834
- expect(imp.exp).to.equal(undefined);
1835
- });
1813
+ expect(payload.ext.prebid.analytics).to.be.undefined;
1814
+ });
1836
1815
 
1837
- it('should send tmax as the bidderRequest timeout value', function () {
1838
- createVideoBidderRequest();
1839
- bidderRequest.timeout = 3333;
1840
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1841
- let post = request.data;
1842
- expect(post.tmax).to.equal(3333);
1843
- });
1816
+ it('should send video exp param correctly when set', function () {
1817
+ createVideoBidderRequest();
1818
+ config.setConfig({s2sConfig: {defaultTtl: 600}});
1819
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1820
+ let post = request.data;
1844
1821
 
1845
- it('should send correct bidfloor to PBS', function () {
1846
- createVideoBidderRequest();
1822
+ // should exp set to the right value according to config
1823
+ let imp = post.imp[0];
1824
+ expect(imp.exp).to.equal(600);
1825
+ });
1847
1826
 
1848
- bidderRequest.bids[0].params.floor = 0.1;
1849
- let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1850
- expect(request.data.imp[0].bidfloor).to.equal(0.1);
1827
+ it('should not send video exp at all if not set in s2sConfig config', function () {
1828
+ createVideoBidderRequest();
1829
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1830
+ let post = request.data;
1851
1831
 
1852
- bidderRequest.bids[0].params.floor = 5.5;
1853
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1854
- expect(request.data.imp[0].bidfloor).to.equal(5.5);
1832
+ // should exp set to the right value according to config
1833
+ let imp = post.imp[0];
1834
+ // bidderFactory stringifies request body before sending so removes undefined attributes:
1835
+ expect(imp.exp).to.equal(undefined);
1836
+ });
1855
1837
 
1856
- bidderRequest.bids[0].params.floor = '1.7';
1857
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1858
- expect(request.data.imp[0].bidfloor).to.equal(1.7);
1838
+ it('should send tmax as the bidderRequest timeout value', function () {
1839
+ createVideoBidderRequest();
1840
+ bidderRequest.timeout = 3333;
1841
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1842
+ let post = request.data;
1843
+ expect(post.tmax).to.equal(3333);
1844
+ });
1859
1845
 
1860
- bidderRequest.bids[0].params.floor = 0;
1861
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1862
- expect(request.data.imp[0].bidfloor).to.equal(0);
1846
+ it('should send correct bidfloor to PBS', function () {
1847
+ createVideoBidderRequest();
1863
1848
 
1864
- bidderRequest.bids[0].params.floor = undefined;
1865
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1866
- expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');
1849
+ bidderRequest.bids[0].params.floor = 0.1;
1850
+ let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1851
+ expect(request.data.imp[0].bidfloor).to.equal(0.1);
1867
1852
 
1868
- bidderRequest.bids[0].params.floor = null;
1869
- [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1870
- expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');
1871
- });
1853
+ bidderRequest.bids[0].params.floor = 5.5;
1854
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1855
+ expect(request.data.imp[0].bidfloor).to.equal(5.5);
1872
1856
 
1873
- it('should send request with proper ad position', function () {
1874
- createVideoBidderRequest();
1875
- let positionBidderRequest = utils.deepClone(bidderRequest);
1876
- positionBidderRequest.bids[0].mediaTypes.video.pos = 1;
1877
- let [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1878
- expect(request.data.imp[0].video.pos).to.equal(1);
1879
-
1880
- positionBidderRequest = utils.deepClone(bidderRequest);
1881
- positionBidderRequest.bids[0].params.position = undefined;
1882
- positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1883
- [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1884
- expect(request.data.imp[0].video.pos).to.equal(undefined);
1885
-
1886
- positionBidderRequest = utils.deepClone(bidderRequest);
1887
- positionBidderRequest.bids[0].params.position = 'atf'
1888
- positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1889
- [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1890
- expect(request.data.imp[0].video.pos).to.equal(1);
1891
-
1892
- positionBidderRequest = utils.deepClone(bidderRequest);
1893
- positionBidderRequest.bids[0].params.position = 'btf';
1894
- positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1895
- [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1896
- expect(request.data.imp[0].video.pos).to.equal(3);
1897
-
1898
- positionBidderRequest = utils.deepClone(bidderRequest);
1899
- positionBidderRequest.bids[0].params.position = 'foobar';
1900
- positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1901
- [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1902
- expect(request.data.imp[0].video.pos).to.equal(undefined);
1903
- });
1857
+ bidderRequest.bids[0].params.floor = '1.7';
1858
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1859
+ expect(request.data.imp[0].bidfloor).to.equal(1.7);
1904
1860
 
1905
- it('should properly enforce video.context to be either instream or outstream', function () {
1906
- let bid = bidderRequest.bids[0];
1907
- bid.mediaTypes = {
1908
- video: {
1909
- context: 'instream',
1910
- mimes: ['video/mp4', 'video/x-ms-wmv'],
1911
- protocols: [2, 5],
1912
- maxduration: 30,
1913
- linearity: 1,
1914
- api: [2]
1861
+ bidderRequest.bids[0].params.floor = 0;
1862
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1863
+ expect(request.data.imp[0].bidfloor).to.equal(0);
1864
+
1865
+ bidderRequest.bids[0].params.floor = undefined;
1866
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1867
+ expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');
1868
+
1869
+ bidderRequest.bids[0].params.floor = null;
1870
+ [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
1871
+ expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');
1872
+ });
1873
+
1874
+ it('should send request with proper ad position', function () {
1875
+ createVideoBidderRequest();
1876
+ let positionBidderRequest = utils.deepClone(bidderRequest);
1877
+ positionBidderRequest.bids[0].mediaTypes.video.pos = 1;
1878
+ let [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1879
+ expect(request.data.imp[0].video.pos).to.equal(1);
1880
+
1881
+ positionBidderRequest = utils.deepClone(bidderRequest);
1882
+ positionBidderRequest.bids[0].params.position = undefined;
1883
+ positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1884
+ [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1885
+ expect(request.data.imp[0].video.pos).to.equal(undefined);
1886
+
1887
+ positionBidderRequest = utils.deepClone(bidderRequest);
1888
+ positionBidderRequest.bids[0].params.position = 'atf'
1889
+ positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1890
+ [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1891
+ expect(request.data.imp[0].video.pos).to.equal(1);
1892
+
1893
+ positionBidderRequest = utils.deepClone(bidderRequest);
1894
+ positionBidderRequest.bids[0].params.position = 'btf';
1895
+ positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1896
+ [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1897
+ expect(request.data.imp[0].video.pos).to.equal(3);
1898
+
1899
+ positionBidderRequest = utils.deepClone(bidderRequest);
1900
+ positionBidderRequest.bids[0].params.position = 'foobar';
1901
+ positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;
1902
+ [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);
1903
+ expect(request.data.imp[0].video.pos).to.equal(undefined);
1904
+ });
1905
+
1906
+ it('should properly enforce video.context to be either instream or outstream', function () {
1907
+ let bid = bidderRequest.bids[0];
1908
+ bid.mediaTypes = {
1909
+ video: {
1910
+ context: 'instream',
1911
+ mimes: ['video/mp4', 'video/x-ms-wmv'],
1912
+ protocols: [2, 5],
1913
+ maxduration: 30,
1914
+ linearity: 1,
1915
+ api: [2]
1916
+ }
1915
1917
  }
1916
- }
1917
- bid.params.video = {};
1918
+ bid.params.video = {};
1918
1919
 
1919
- sandbox.stub(Date, 'now').callsFake(() =>
1920
- bidderRequest.auctionStart + 100
1921
- );
1920
+ sandbox.stub(Date, 'now').callsFake(() =>
1921
+ bidderRequest.auctionStart + 100
1922
+ );
1922
1923
 
1923
- const bidRequestCopy = utils.deepClone(bidderRequest.bids[0]);
1924
- expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);
1924
+ const bidRequestCopy = utils.deepClone(bidderRequest.bids[0]);
1925
+ expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);
1925
1926
 
1926
- // change context to outstream, still true
1927
- bidRequestCopy.mediaTypes.video.context = 'outstream';
1928
- expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);
1927
+ // change context to outstream, still true
1928
+ bidRequestCopy.mediaTypes.video.context = 'outstream';
1929
+ expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);
1929
1930
 
1930
- // change context to random, false now
1931
- bidRequestCopy.mediaTypes.video.context = 'random';
1932
- expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1931
+ // change context to random, false now
1932
+ bidRequestCopy.mediaTypes.video.context = 'random';
1933
+ expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1933
1934
 
1934
- // change context to undefined, still false
1935
- bidRequestCopy.mediaTypes.video.context = undefined;
1936
- expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1935
+ // change context to undefined, still false
1936
+ bidRequestCopy.mediaTypes.video.context = undefined;
1937
+ expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1937
1938
 
1938
- // remove context, still false
1939
- delete bidRequestCopy.mediaTypes.video.context;
1940
- expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1941
- });
1939
+ // remove context, still false
1940
+ delete bidRequestCopy.mediaTypes.video.context;
1941
+ expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);
1942
+ });
1942
1943
 
1943
- it('should enforce the new required mediaTypes.video params', function () {
1944
- createVideoBidderRequest();
1944
+ it('should enforce the new required mediaTypes.video params', function () {
1945
+ createVideoBidderRequest();
1945
1946
 
1946
- sandbox.stub(Date, 'now').callsFake(() =>
1947
- bidderRequest.auctionStart + 100
1948
- );
1947
+ sandbox.stub(Date, 'now').callsFake(() =>
1948
+ bidderRequest.auctionStart + 100
1949
+ );
1949
1950
 
1950
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);
1951
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);
1951
1952
 
1952
- // change mimes to a non array, no good
1953
- createVideoBidderRequest();
1954
- bidderRequest.bids[0].mediaTypes.video.mimes = 'video/mp4';
1955
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1953
+ // change mimes to a non array, no good
1954
+ createVideoBidderRequest();
1955
+ bidderRequest.bids[0].mediaTypes.video.mimes = 'video/mp4';
1956
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1956
1957
 
1957
- // delete mimes, no good
1958
- createVideoBidderRequest();
1959
- delete bidderRequest.bids[0].mediaTypes.video.mimes;
1960
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1958
+ // delete mimes, no good
1959
+ createVideoBidderRequest();
1960
+ delete bidderRequest.bids[0].mediaTypes.video.mimes;
1961
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1961
1962
 
1962
- // change protocols to an int not array of ints, no good
1963
- createVideoBidderRequest();
1964
- bidderRequest.bids[0].mediaTypes.video.protocols = 1;
1965
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1963
+ // change protocols to an int not array of ints, no good
1964
+ createVideoBidderRequest();
1965
+ bidderRequest.bids[0].mediaTypes.video.protocols = 1;
1966
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1966
1967
 
1967
- // delete protocols, no good
1968
- createVideoBidderRequest();
1969
- delete bidderRequest.bids[0].mediaTypes.video.protocols;
1970
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1968
+ // delete protocols, no good
1969
+ createVideoBidderRequest();
1970
+ delete bidderRequest.bids[0].mediaTypes.video.protocols;
1971
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1971
1972
 
1972
- // change linearity to an string, no good
1973
- createVideoBidderRequest();
1974
- bidderRequest.bids[0].mediaTypes.video.linearity = 'string';
1975
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1973
+ // change linearity to an string, no good
1974
+ createVideoBidderRequest();
1975
+ bidderRequest.bids[0].mediaTypes.video.linearity = 'string';
1976
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1976
1977
 
1977
- // delete linearity, no good
1978
- createVideoBidderRequest();
1979
- delete bidderRequest.bids[0].mediaTypes.video.linearity;
1980
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1978
+ // delete linearity, no good
1979
+ createVideoBidderRequest();
1980
+ delete bidderRequest.bids[0].mediaTypes.video.linearity;
1981
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1981
1982
 
1982
- // change api to an string, no good
1983
- createVideoBidderRequest();
1984
- bidderRequest.bids[0].mediaTypes.video.api = 'string';
1985
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1983
+ // change api to an string, no good
1984
+ createVideoBidderRequest();
1985
+ bidderRequest.bids[0].mediaTypes.video.api = 'string';
1986
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1986
1987
 
1987
- // delete api, no good
1988
- createVideoBidderRequest();
1989
- delete bidderRequest.bids[0].mediaTypes.video.api;
1990
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1991
- });
1988
+ // delete api, no good
1989
+ createVideoBidderRequest();
1990
+ delete bidderRequest.bids[0].mediaTypes.video.api;
1991
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);
1992
+ });
1992
1993
 
1993
- it('bid request is valid when video context is outstream', function () {
1994
- createVideoBidderRequestOutstream();
1995
- sandbox.stub(Date, 'now').callsFake(() =>
1996
- bidderRequest.auctionStart + 100
1997
- );
1994
+ it('bid request is valid when video context is outstream', function () {
1995
+ createVideoBidderRequestOutstream();
1996
+ sandbox.stub(Date, 'now').callsFake(() =>
1997
+ bidderRequest.auctionStart + 100
1998
+ );
1998
1999
 
1999
- const bidRequestCopy = utils.deepClone(bidderRequest);
2000
+ const bidRequestCopy = utils.deepClone(bidderRequest);
2000
2001
 
2001
- let [request] = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);
2002
- expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);
2003
- expect(request.data.imp[0].ext.prebid.bidder.rubicon.video.size_id).to.equal(203);
2004
- });
2002
+ let [request] = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);
2003
+ expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);
2004
+ expect(request.data.imp[0].ext.prebid.bidder.rubicon.video.size_id).to.equal(203);
2005
+ });
2005
2006
 
2006
- it('should send banner request when outstream or instream video included but no rubicon video obect is present', function () {
2007
+ it('should send banner request when outstream or instream video included but no rubicon video obect is present', function () {
2007
2008
  // add banner and video mediaTypes
2008
- bidderRequest.mediaTypes = {
2009
- banner: {
2010
- sizes: [[300, 250]]
2011
- },
2012
- video: {
2013
- context: 'outstream'
2014
- }
2015
- };
2016
- // no video object in rubicon params, so we should see one call made for banner
2009
+ bidderRequest.mediaTypes = {
2010
+ banner: {
2011
+ sizes: [[300, 250]]
2012
+ },
2013
+ video: {
2014
+ context: 'outstream'
2015
+ }
2016
+ };
2017
+ // no video object in rubicon params, so we should see one call made for banner
2017
2018
 
2018
- sandbox.stub(Date, 'now').callsFake(() =>
2019
- bidderRequest.auctionStart + 100
2020
- );
2019
+ sandbox.stub(Date, 'now').callsFake(() =>
2020
+ bidderRequest.auctionStart + 100
2021
+ );
2021
2022
 
2022
- let requests = spec.buildRequests(bidderRequest.bids, bidderRequest);
2023
+ let requests = spec.buildRequests(bidderRequest.bids, bidderRequest);
2023
2024
 
2024
- expect(requests.length).to.equal(1);
2025
- expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2025
+ expect(requests.length).to.equal(1);
2026
+ expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2026
2027
 
2027
- bidderRequest.mediaTypes.video.context = 'instream';
2028
+ bidderRequest.mediaTypes.video.context = 'instream';
2028
2029
 
2029
- requests = spec.buildRequests(bidderRequest.bids, bidderRequest);
2030
+ requests = spec.buildRequests(bidderRequest.bids, bidderRequest);
2030
2031
 
2031
- expect(requests.length).to.equal(1);
2032
- expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2033
- });
2032
+ expect(requests.length).to.equal(1);
2033
+ expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2034
+ });
2034
2035
 
2035
- it('should send request as banner when invalid video bid in multiple mediaType bidRequest', function () {
2036
- createVideoBidderRequestNoVideo();
2036
+ it('should send request as banner when invalid video bid in multiple mediaType bidRequest', function () {
2037
+ createVideoBidderRequestNoVideo();
2037
2038
 
2038
- let bid = bidderRequest.bids[0];
2039
- bid.mediaTypes.banner = {
2040
- sizes: [[300, 250]]
2041
- };
2039
+ let bid = bidderRequest.bids[0];
2040
+ bid.mediaTypes.banner = {
2041
+ sizes: [[300, 250]]
2042
+ };
2042
2043
 
2043
- sandbox.stub(Date, 'now').callsFake(() =>
2044
- bidderRequest.auctionStart + 100
2045
- );
2044
+ sandbox.stub(Date, 'now').callsFake(() =>
2045
+ bidderRequest.auctionStart + 100
2046
+ );
2046
2047
 
2047
- const bidRequestCopy = utils.deepClone(bidderRequest);
2048
+ const bidRequestCopy = utils.deepClone(bidderRequest);
2048
2049
 
2049
- let requests = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);
2050
- expect(requests.length).to.equal(1);
2051
- expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2052
- });
2050
+ let requests = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);
2051
+ expect(requests.length).to.equal(1);
2052
+ expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');
2053
+ });
2053
2054
 
2054
- it('should include coppa flag in video bid request', () => {
2055
- createVideoBidderRequest();
2055
+ it('should include coppa flag in video bid request', () => {
2056
+ createVideoBidderRequest();
2056
2057
 
2057
- sandbox.stub(Date, 'now').callsFake(() =>
2058
- bidderRequest.auctionStart + 100
2059
- );
2058
+ sandbox.stub(Date, 'now').callsFake(() =>
2059
+ bidderRequest.auctionStart + 100
2060
+ );
2060
2061
 
2061
- sandbox.stub(config, 'getConfig').callsFake(key => {
2062
- const config = {
2063
- 'coppa': true
2064
- };
2065
- return config[key];
2062
+ sandbox.stub(config, 'getConfig').callsFake(key => {
2063
+ const config = {
2064
+ 'coppa': true
2065
+ };
2066
+ return config[key];
2067
+ });
2068
+ const [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
2069
+ expect(request.data.regs.coppa).to.equal(1);
2066
2070
  });
2067
- const [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
2068
- expect(request.data.regs.coppa).to.equal(1);
2069
- });
2070
2071
 
2071
- it('should include first party data', () => {
2072
- createVideoBidderRequest();
2072
+ it('should include first party data', () => {
2073
+ createVideoBidderRequest();
2073
2074
 
2074
- const site = {
2075
- ext: {
2076
- data: {
2077
- page: 'home'
2078
- }
2079
- },
2080
- content: {
2075
+ const site = {
2076
+ ext: {
2077
+ data: {
2078
+ page: 'home'
2079
+ }
2080
+ },
2081
+ content: {
2082
+ data: [{foo: 'bar'}]
2083
+ },
2084
+ keywords: 'e,f',
2085
+ rating: '4-star',
2081
2086
  data: [{foo: 'bar'}]
2082
- },
2083
- keywords: 'e,f',
2084
- rating: '4-star',
2085
- data: [{foo: 'bar'}]
2086
- };
2087
- const user = {
2088
- ext: {
2089
- data: {
2090
- age: 31
2091
- }
2092
- },
2093
- keywords: 'd',
2094
- gender: 'M',
2095
- yob: '1984',
2096
- geo: {country: 'ca'},
2097
- data: [{foo: 'bar'}]
2098
- };
2087
+ };
2088
+ const user = {
2089
+ ext: {
2090
+ data: {
2091
+ age: 31
2092
+ }
2093
+ },
2094
+ keywords: 'd',
2095
+ gender: 'M',
2096
+ yob: '1984',
2097
+ geo: {country: 'ca'},
2098
+ data: [{foo: 'bar'}]
2099
+ };
2099
2100
 
2100
- const ortb2 = {
2101
- site,
2102
- user
2103
- };
2101
+ const ortb2 = {
2102
+ site,
2103
+ user
2104
+ };
2104
2105
 
2105
- const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);
2106
+ const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);
2106
2107
 
2107
- const expected = {
2108
- site: Object.assign({}, site, {keywords: bidderRequest.bids[0].params.keywords.join(',')}),
2109
- user: Object.assign({}, user),
2110
- siteData: Object.assign({}, site.ext.data, bidderRequest.bids[0].params.inventory),
2111
- userData: Object.assign({}, user.ext.data, bidderRequest.bids[0].params.visitor),
2112
- };
2108
+ const expected = {
2109
+ site: Object.assign({}, site, {keywords: bidderRequest.bids[0].params.keywords.join(',')}),
2110
+ user: Object.assign({}, user),
2111
+ siteData: Object.assign({}, site.ext.data, bidderRequest.bids[0].params.inventory),
2112
+ userData: Object.assign({}, user.ext.data, bidderRequest.bids[0].params.visitor),
2113
+ };
2113
2114
 
2114
- delete request.data.site.page;
2115
- delete request.data.site.content.language;
2115
+ delete request.data.site.page;
2116
+ delete request.data.site.content.language;
2116
2117
 
2117
- expect(request.data.site.keywords).to.deep.equal('a,b,c');
2118
- expect(request.data.user.keywords).to.deep.equal('d');
2119
- expect(request.data.site.ext.data).to.deep.equal(expected.siteData);
2120
- expect(request.data.user.ext.data).to.deep.equal(expected.userData);
2121
- });
2118
+ expect(request.data.site.keywords).to.deep.equal('a,b,c');
2119
+ expect(request.data.user.keywords).to.deep.equal('d');
2120
+ expect(request.data.site.ext.data).to.deep.equal(expected.siteData);
2121
+ expect(request.data.user.ext.data).to.deep.equal(expected.userData);
2122
+ });
2122
2123
 
2123
- it('should include pbadslot in bid request', function () {
2124
- createVideoBidderRequest();
2125
- bidderRequest.bids[0].ortb2Imp = {
2126
- ext: {
2127
- data: {
2128
- pbadslot: '1234567890'
2124
+ it('should include pbadslot in bid request', function () {
2125
+ createVideoBidderRequest();
2126
+ bidderRequest.bids[0].ortb2Imp = {
2127
+ ext: {
2128
+ data: {
2129
+ pbadslot: '1234567890'
2130
+ }
2129
2131
  }
2130
2132
  }
2131
- }
2132
2133
 
2133
- sandbox.stub(Date, 'now').callsFake(() =>
2134
- bidderRequest.auctionStart + 100
2135
- );
2134
+ sandbox.stub(Date, 'now').callsFake(() =>
2135
+ bidderRequest.auctionStart + 100
2136
+ );
2136
2137
 
2137
- const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2138
- expect(request.data.imp[0].ext.data.pbadslot).to.equal('1234567890');
2139
- });
2138
+ const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2139
+ expect(request.data.imp[0].ext.data.pbadslot).to.equal('1234567890');
2140
+ });
2140
2141
 
2141
- it('should NOT include storedrequests in pbs payload', function () {
2142
- createVideoBidderRequest();
2143
- bidderRequest.bids[0].ortb2 = {
2144
- ext: {
2145
- prebid: {
2146
- storedrequest: 'no-send-top-level-sr'
2142
+ it('should NOT include storedrequests in pbs payload', function () {
2143
+ createVideoBidderRequest();
2144
+ bidderRequest.bids[0].ortb2 = {
2145
+ ext: {
2146
+ prebid: {
2147
+ storedrequest: 'no-send-top-level-sr'
2148
+ }
2147
2149
  }
2148
2150
  }
2149
- }
2150
2151
 
2151
- bidderRequest.bids[0].ortb2Imp = {
2152
- ext: {
2153
- prebid: {
2154
- storedrequest: 'no-send-imp-sr'
2152
+ bidderRequest.bids[0].ortb2Imp = {
2153
+ ext: {
2154
+ prebid: {
2155
+ storedrequest: 'no-send-imp-sr'
2156
+ }
2155
2157
  }
2156
2158
  }
2157
- }
2158
2159
 
2159
- sandbox.stub(Date, 'now').callsFake(() =>
2160
- bidderRequest.auctionStart + 100
2161
- );
2160
+ sandbox.stub(Date, 'now').callsFake(() =>
2161
+ bidderRequest.auctionStart + 100
2162
+ );
2162
2163
 
2163
- const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2164
- expect(request.data.ext.prebid.storedrequest).to.be.undefined;
2165
- expect(request.data.imp[0].ext.prebid.storedrequest).to.be.undefined;
2166
- });
2164
+ const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2165
+ expect(request.data.ext.prebid.storedrequest).to.be.undefined;
2166
+ expect(request.data.imp[0].ext.prebid.storedrequest).to.be.undefined;
2167
+ });
2167
2168
 
2168
- it('should include GAM ad unit in bid request', function () {
2169
- createVideoBidderRequest();
2170
- bidderRequest.bids[0].ortb2Imp = {
2171
- ext: {
2172
- data: {
2173
- adserver: {
2174
- adslot: '1234567890',
2175
- name: 'adServerName1'
2169
+ it('should include GAM ad unit in bid request', function () {
2170
+ createVideoBidderRequest();
2171
+ bidderRequest.bids[0].ortb2Imp = {
2172
+ ext: {
2173
+ data: {
2174
+ adserver: {
2175
+ adslot: '1234567890',
2176
+ name: 'adServerName1'
2177
+ }
2176
2178
  }
2177
2179
  }
2178
- }
2179
- };
2180
+ };
2180
2181
 
2181
- sandbox.stub(Date, 'now').callsFake(() =>
2182
- bidderRequest.auctionStart + 100
2183
- );
2182
+ sandbox.stub(Date, 'now').callsFake(() =>
2183
+ bidderRequest.auctionStart + 100
2184
+ );
2184
2185
 
2185
- const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2186
- expect(request.data.imp[0].ext.data.adserver.adslot).to.equal('1234567890');
2187
- expect(request.data.imp[0].ext.data.adserver.name).to.equal('adServerName1');
2188
- });
2186
+ const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2187
+ expect(request.data.imp[0].ext.data.adserver.adslot).to.equal('1234567890');
2188
+ expect(request.data.imp[0].ext.data.adserver.name).to.equal('adServerName1');
2189
+ });
2189
2190
 
2190
- it('should use the integration type provided in the config instead of the default', () => {
2191
- createVideoBidderRequest();
2192
- config.setConfig({rubicon: {int_type: 'testType'}});
2193
- const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2194
- expect(request.data.ext.prebid.bidders.rubicon.integration).to.equal('testType');
2195
- });
2191
+ it('should use the integration type provided in the config instead of the default', () => {
2192
+ createVideoBidderRequest();
2193
+ config.setConfig({rubicon: {int_type: 'testType'}});
2194
+ const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
2195
+ expect(request.data.ext.prebid.bidders.rubicon.integration).to.equal('testType');
2196
+ });
2196
2197
 
2197
- it('should pass the user.id provided in the config', function () {
2198
- config.setConfig({user: {id: '123'}});
2199
- createVideoBidderRequest();
2198
+ it('should pass the user.id provided in the config', function () {
2199
+ config.setConfig({user: {id: '123'}});
2200
+ createVideoBidderRequest();
2200
2201
 
2201
- sandbox.stub(Date, 'now').callsFake(() =>
2202
- bidderRequest.auctionStart + 100
2203
- );
2204
-
2205
- let [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
2206
- let post = request.data;
2207
-
2208
- expect(post).to.have.property('imp')
2209
- // .with.length.of(1);
2210
- let imp = post.imp[0];
2211
- expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);
2212
- expect(imp.exp).to.equal(undefined);
2213
- expect(imp.video.w).to.equal(640);
2214
- expect(imp.video.h).to.equal(480);
2215
- expect(imp.video.pos).to.equal(1);
2216
- expect(imp.video.minduration).to.equal(15);
2217
- expect(imp.video.maxduration).to.equal(30);
2218
- expect(imp.video.startdelay).to.equal(0);
2219
- expect(imp.video.skip).to.equal(1);
2220
- expect(imp.video.skipafter).to.equal(15);
2221
- expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);
2222
- expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);
2223
- expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');
2224
-
2225
- // Also want it to be in post.site.content.language
2226
- expect(post.site.content.language).to.equal('en');
2227
- expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);
2228
- expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');
2229
-
2230
- // Config user.id
2231
- expect(post.user.id).to.equal('123');
2232
-
2233
- expect(post.regs.ext.gdpr).to.equal(1);
2234
- expect(post.regs.ext.us_privacy).to.equal('1NYN');
2235
- expect(post).to.have.property('ext').that.is.an('object');
2236
- expect(post.ext.prebid.targeting.includewinners).to.equal(true);
2237
- expect(post.ext.prebid).to.have.property('cache').that.is.an('object');
2238
- expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');
2239
- expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');
2240
- expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);
2241
- expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);
2242
- })
2243
- });
2202
+ sandbox.stub(Date, 'now').callsFake(() =>
2203
+ bidderRequest.auctionStart + 100
2204
+ );
2205
+
2206
+ let [request] = spec.buildRequests(bidderRequest.bids, syncAddFPDToBidderRequest(bidderRequest));
2207
+ let post = request.data;
2208
+
2209
+ expect(post).to.have.property('imp')
2210
+ // .with.length.of(1);
2211
+ let imp = post.imp[0];
2212
+ expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);
2213
+ expect(imp.exp).to.equal(undefined);
2214
+ expect(imp.video.w).to.equal(640);
2215
+ expect(imp.video.h).to.equal(480);
2216
+ expect(imp.video.pos).to.equal(1);
2217
+ expect(imp.video.minduration).to.equal(15);
2218
+ expect(imp.video.maxduration).to.equal(30);
2219
+ expect(imp.video.startdelay).to.equal(0);
2220
+ expect(imp.video.skip).to.equal(1);
2221
+ expect(imp.video.skipafter).to.equal(15);
2222
+ expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);
2223
+ expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);
2224
+ expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');
2225
+
2226
+ // Also want it to be in post.site.content.language
2227
+ expect(post.site.content.language).to.equal('en');
2228
+ expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);
2229
+ expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');
2230
+
2231
+ // Config user.id
2232
+ expect(post.user.id).to.equal('123');
2233
+
2234
+ expect(post.regs.ext.gdpr).to.equal(1);
2235
+ expect(post.regs.ext.us_privacy).to.equal('1NYN');
2236
+ expect(post).to.have.property('ext').that.is.an('object');
2237
+ expect(post.ext.prebid.targeting.includewinners).to.equal(true);
2238
+ expect(post.ext.prebid).to.have.property('cache').that.is.an('object');
2239
+ expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');
2240
+ expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');
2241
+ expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);
2242
+ expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);
2243
+ })
2244
+ });
2245
+ }
2244
2246
 
2245
2247
  describe('combineSlotUrlParams', function () {
2246
2248
  it('should combine an array of slot url params', function () {
@@ -3208,64 +3210,66 @@ describe('the rubicon adapter', function () {
3208
3210
  });
3209
3211
  });
3210
3212
 
3211
- describe('for video', function () {
3212
- beforeEach(function () {
3213
- createVideoBidderRequest();
3214
- });
3213
+ if (FEATURES.VIDEO) {
3214
+ describe('for video', function () {
3215
+ beforeEach(function () {
3216
+ createVideoBidderRequest();
3217
+ });
3215
3218
 
3216
- it('should register a successful bid', function () {
3217
- let response = {
3218
- cur: 'USD',
3219
- seatbid: [{
3220
- bid: [{
3221
- id: '0',
3222
- impid: '/19968336/header-bid-tag-0',
3223
- adomain: ['test.com'],
3224
- price: 2,
3225
- crid: '4259970',
3226
- ext: {
3227
- bidder: {
3228
- rp: {
3229
- mime: 'application/javascript',
3230
- size_id: 201,
3231
- advid: 12345
3232
- }
3233
- },
3234
- prebid: {
3235
- targeting: {
3236
- hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3219
+ it('should register a successful bid', function () {
3220
+ let response = {
3221
+ cur: 'USD',
3222
+ seatbid: [{
3223
+ bid: [{
3224
+ id: '0',
3225
+ impid: '/19968336/header-bid-tag-0',
3226
+ adomain: ['test.com'],
3227
+ price: 2,
3228
+ crid: '4259970',
3229
+ ext: {
3230
+ bidder: {
3231
+ rp: {
3232
+ mime: 'application/javascript',
3233
+ size_id: 201,
3234
+ advid: 12345
3235
+ }
3237
3236
  },
3238
- type: 'video'
3237
+ prebid: {
3238
+ targeting: {
3239
+ hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3240
+ },
3241
+ type: 'video'
3242
+ }
3239
3243
  }
3240
- }
3244
+ }],
3245
+ group: 0,
3246
+ seat: 'rubicon'
3241
3247
  }],
3242
- group: 0,
3243
- seat: 'rubicon'
3244
- }],
3245
- };
3248
+ };
3246
3249
 
3247
- const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3250
+ const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3248
3251
 
3249
- let bids = spec.interpretResponse({body: response}, {data: request});
3252
+ let bids = spec.interpretResponse({body: response}, {data: request});
3250
3253
 
3251
- expect(bids).to.be.lengthOf(1);
3254
+ expect(bids).to.be.lengthOf(1);
3252
3255
 
3253
- expect(bids[0].seatBidId).to.equal('0');
3254
- expect(bids[0].creativeId).to.equal('4259970');
3255
- expect(bids[0].cpm).to.equal(2);
3256
- expect(bids[0].ttl).to.equal(300);
3257
- expect(bids[0].netRevenue).to.equal(true);
3258
- expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});
3259
- expect(bids[0].mediaType).to.equal('video');
3260
- expect(bids[0].meta.mediaType).to.equal('video');
3261
- expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');
3262
- expect(bids[0].meta.advertiserId).to.equal(12345);
3263
- expect(bids[0].bidderCode).to.equal('rubicon');
3264
- expect(bids[0].currency).to.equal('USD');
3265
- expect(bids[0].width).to.equal(640);
3266
- expect(bids[0].height).to.equal(480);
3256
+ expect(bids[0].seatBidId).to.equal('0');
3257
+ expect(bids[0].creativeId).to.equal('4259970');
3258
+ expect(bids[0].cpm).to.equal(2);
3259
+ expect(bids[0].ttl).to.equal(300);
3260
+ expect(bids[0].netRevenue).to.equal(true);
3261
+ expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});
3262
+ expect(bids[0].mediaType).to.equal('video');
3263
+ expect(bids[0].meta.mediaType).to.equal('video');
3264
+ expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');
3265
+ expect(bids[0].meta.advertiserId).to.equal(12345);
3266
+ expect(bids[0].bidderCode).to.equal('rubicon');
3267
+ expect(bids[0].currency).to.equal('USD');
3268
+ expect(bids[0].width).to.equal(640);
3269
+ expect(bids[0].height).to.equal(480);
3270
+ });
3267
3271
  });
3268
- });
3272
+ }
3269
3273
 
3270
3274
  if (FEATURES.NATIVE) {
3271
3275
  describe('for native', () => {
@@ -3279,152 +3283,154 @@ describe('the rubicon adapter', function () {
3279
3283
  });
3280
3284
  }
3281
3285
 
3282
- describe('for outstream video', function () {
3283
- const sandbox = sinon.createSandbox();
3284
- beforeEach(function () {
3285
- createVideoBidderRequestOutstream();
3286
- config.setConfig({rubicon: {
3287
- rendererConfig: {
3288
- align: 'left',
3289
- closeButton: true
3290
- },
3291
- rendererUrl: 'https://example.test/renderer.js'
3292
- }});
3293
- window.MagniteApex = {
3294
- renderAd: function() {
3295
- return null;
3286
+ if (FEATURES.VIDEO) {
3287
+ describe('for outstream video', function () {
3288
+ const sandbox = sinon.createSandbox();
3289
+ beforeEach(function () {
3290
+ createVideoBidderRequestOutstream();
3291
+ config.setConfig({rubicon: {
3292
+ rendererConfig: {
3293
+ align: 'left',
3294
+ closeButton: true
3295
+ },
3296
+ rendererUrl: 'https://example.test/renderer.js'
3297
+ }});
3298
+ window.MagniteApex = {
3299
+ renderAd: function() {
3300
+ return null;
3301
+ }
3296
3302
  }
3297
- }
3298
- });
3303
+ });
3299
3304
 
3300
- afterEach(function () {
3301
- sandbox.restore();
3302
- delete window.MagniteApex;
3303
- });
3305
+ afterEach(function () {
3306
+ sandbox.restore();
3307
+ delete window.MagniteApex;
3308
+ });
3304
3309
 
3305
- it('should register a successful bid', function () {
3306
- let response = {
3307
- cur: 'USD',
3308
- seatbid: [{
3309
- bid: [{
3310
- id: '0',
3311
- impid: '/19968336/header-bid-tag-0',
3312
- adomain: ['test.com'],
3313
- price: 2,
3314
- crid: '4259970',
3315
- ext: {
3316
- bidder: {
3317
- rp: {
3318
- mime: 'application/javascript',
3319
- size_id: 201,
3320
- advid: 12345
3321
- }
3322
- },
3323
- prebid: {
3324
- targeting: {
3325
- hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3310
+ it('should register a successful bid', function () {
3311
+ let response = {
3312
+ cur: 'USD',
3313
+ seatbid: [{
3314
+ bid: [{
3315
+ id: '0',
3316
+ impid: '/19968336/header-bid-tag-0',
3317
+ adomain: ['test.com'],
3318
+ price: 2,
3319
+ crid: '4259970',
3320
+ ext: {
3321
+ bidder: {
3322
+ rp: {
3323
+ mime: 'application/javascript',
3324
+ size_id: 201,
3325
+ advid: 12345
3326
+ }
3326
3327
  },
3327
- type: 'video'
3328
+ prebid: {
3329
+ targeting: {
3330
+ hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3331
+ },
3332
+ type: 'video'
3333
+ }
3328
3334
  }
3329
- }
3335
+ }],
3336
+ group: 0,
3337
+ seat: 'rubicon'
3330
3338
  }],
3331
- group: 0,
3332
- seat: 'rubicon'
3333
- }],
3334
- };
3335
-
3336
- const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3337
-
3338
- let bids = spec.interpretResponse({body: response}, { data: request });
3339
-
3340
- expect(bids).to.be.lengthOf(1);
3341
-
3342
- expect(bids[0].seatBidId).to.equal('0');
3343
- expect(bids[0].creativeId).to.equal('4259970');
3344
- expect(bids[0].cpm).to.equal(2);
3345
- expect(bids[0].ttl).to.equal(300);
3346
- expect(bids[0].netRevenue).to.equal(true);
3347
- expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});
3348
- expect(bids[0].mediaType).to.equal('video');
3349
- expect(bids[0].meta.mediaType).to.equal('video');
3350
- expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');
3351
- expect(bids[0].meta.advertiserId).to.equal(12345);
3352
- expect(bids[0].bidderCode).to.equal('rubicon');
3353
- expect(bids[0].currency).to.equal('USD');
3354
- expect(bids[0].width).to.equal(640);
3355
- expect(bids[0].height).to.equal(320);
3356
- // check custom renderer
3357
- expect(typeof bids[0].renderer).to.equal('object');
3358
- expect(bids[0].renderer.getConfig()).to.deep.equal({
3359
- align: 'left',
3360
- closeButton: true
3361
- });
3362
- expect(bids[0].renderer.url).to.equal('https://example.test/renderer.js');
3363
- });
3339
+ };
3364
3340
 
3365
- it('should render ad with Magnite renderer', function () {
3366
- let response = {
3367
- cur: 'USD',
3368
- seatbid: [{
3369
- bid: [{
3370
- id: '0',
3371
- impid: '/19968336/header-bid-tag-0',
3372
- adomain: ['test.com'],
3373
- price: 2,
3374
- crid: '4259970',
3375
- ext: {
3376
- bidder: {
3377
- rp: {
3378
- mime: 'application/javascript',
3379
- size_id: 201,
3380
- advid: 12345
3341
+ const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3342
+
3343
+ let bids = spec.interpretResponse({body: response}, { data: request });
3344
+
3345
+ expect(bids).to.be.lengthOf(1);
3346
+
3347
+ expect(bids[0].seatBidId).to.equal('0');
3348
+ expect(bids[0].creativeId).to.equal('4259970');
3349
+ expect(bids[0].cpm).to.equal(2);
3350
+ expect(bids[0].ttl).to.equal(300);
3351
+ expect(bids[0].netRevenue).to.equal(true);
3352
+ expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});
3353
+ expect(bids[0].mediaType).to.equal('video');
3354
+ expect(bids[0].meta.mediaType).to.equal('video');
3355
+ expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');
3356
+ expect(bids[0].meta.advertiserId).to.equal(12345);
3357
+ expect(bids[0].bidderCode).to.equal('rubicon');
3358
+ expect(bids[0].currency).to.equal('USD');
3359
+ expect(bids[0].width).to.equal(640);
3360
+ expect(bids[0].height).to.equal(320);
3361
+ // check custom renderer
3362
+ expect(typeof bids[0].renderer).to.equal('object');
3363
+ expect(bids[0].renderer.getConfig()).to.deep.equal({
3364
+ align: 'left',
3365
+ closeButton: true
3366
+ });
3367
+ expect(bids[0].renderer.url).to.equal('https://example.test/renderer.js');
3368
+ });
3369
+
3370
+ it('should render ad with Magnite renderer', function () {
3371
+ let response = {
3372
+ cur: 'USD',
3373
+ seatbid: [{
3374
+ bid: [{
3375
+ id: '0',
3376
+ impid: '/19968336/header-bid-tag-0',
3377
+ adomain: ['test.com'],
3378
+ price: 2,
3379
+ crid: '4259970',
3380
+ ext: {
3381
+ bidder: {
3382
+ rp: {
3383
+ mime: 'application/javascript',
3384
+ size_id: 201,
3385
+ advid: 12345
3386
+ }
3387
+ },
3388
+ prebid: {
3389
+ targeting: {
3390
+ hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3391
+ },
3392
+ type: 'video'
3381
3393
  }
3382
3394
  },
3383
- prebid: {
3384
- targeting: {
3385
- hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'
3386
- },
3387
- type: 'video'
3388
- }
3389
- },
3390
- nurl: 'https://test.com/vast.xml'
3395
+ nurl: 'https://test.com/vast.xml'
3396
+ }],
3397
+ group: 0,
3398
+ seat: 'rubicon'
3391
3399
  }],
3392
- group: 0,
3393
- seat: 'rubicon'
3394
- }],
3395
- };
3396
-
3397
- const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3398
-
3399
- sinon.spy(window.MagniteApex, 'renderAd');
3400
+ };
3400
3401
 
3401
- let bids = spec.interpretResponse({body: response}, {data: request});
3402
- const bid = bids[0];
3403
- bid.adUnitCode = 'outstream_video1_placement';
3404
- const adUnit = document.createElement('div');
3405
- adUnit.id = bid.adUnitCode;
3406
- document.body.appendChild(adUnit);
3402
+ const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});
3407
3403
 
3408
- bid.renderer.render(bid);
3404
+ sinon.spy(window.MagniteApex, 'renderAd');
3409
3405
 
3410
- const renderCall = window.MagniteApex.renderAd.getCall(0);
3411
- expect(renderCall.args[0]).to.deep.equal({
3412
- closeButton: true,
3413
- collapse: true,
3414
- height: 320,
3415
- label: undefined,
3416
- placement: {
3417
- align: 'left',
3418
- attachTo: adUnit,
3419
- position: 'append',
3420
- },
3421
- vastUrl: 'https://test.com/vast.xml',
3422
- width: 640
3406
+ let bids = spec.interpretResponse({body: response}, {data: request});
3407
+ const bid = bids[0];
3408
+ bid.adUnitCode = 'outstream_video1_placement';
3409
+ const adUnit = document.createElement('div');
3410
+ adUnit.id = bid.adUnitCode;
3411
+ document.body.appendChild(adUnit);
3412
+
3413
+ bid.renderer.render(bid);
3414
+
3415
+ const renderCall = window.MagniteApex.renderAd.getCall(0);
3416
+ expect(renderCall.args[0]).to.deep.equal({
3417
+ closeButton: true,
3418
+ collapse: true,
3419
+ height: 320,
3420
+ label: undefined,
3421
+ placement: {
3422
+ align: 'left',
3423
+ attachTo: adUnit,
3424
+ position: 'append',
3425
+ },
3426
+ vastUrl: 'https://test.com/vast.xml',
3427
+ width: 640
3428
+ });
3429
+ // cleanup
3430
+ adUnit.parentNode.removeChild(adUnit);
3423
3431
  });
3424
- // cleanup
3425
- adUnit.parentNode.removeChild(adUnit);
3426
3432
  });
3427
- });
3433
+ }
3428
3434
 
3429
3435
  describe('config with integration type', () => {
3430
3436
  it('should use the integration type provided in the config instead of the default', () => {