prebid.js 5.14.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/.devcontainer/Dockerfile +11 -0
  2. package/.devcontainer/devcontainer.json +27 -0
  3. package/.devcontainer/postCreate.sh +6 -0
  4. package/allowedModules.js +2 -1
  5. package/integrationExamples/gpt/afpExample.html +242 -0
  6. package/integrationExamples/gpt/afpGamExample.html +152 -0
  7. package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
  8. package/modules/.submodules.json +29 -27
  9. package/modules/33acrossBidAdapter.js +23 -20
  10. package/modules/a4gBidAdapter.js +3 -3
  11. package/modules/ablidaBidAdapter.js +2 -2
  12. package/modules/adWMGBidAdapter.js +4 -4
  13. package/modules/adagioAnalyticsAdapter.js +4 -4
  14. package/modules/adagioBidAdapter.js +85 -82
  15. package/modules/adbookpspBidAdapter.js +56 -54
  16. package/modules/adfBidAdapter.js +24 -16
  17. package/modules/adgenerationBidAdapter.js +42 -18
  18. package/modules/adhashBidAdapter.js +105 -0
  19. package/modules/adhashBidAdapter.md +1 -1
  20. package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
  21. package/modules/adkernelAdnBidAdapter.js +23 -23
  22. package/modules/adkernelBidAdapter.js +49 -44
  23. package/modules/adlooxAdServerVideo.js +26 -26
  24. package/modules/adlooxAnalyticsAdapter.js +38 -35
  25. package/modules/adlooxRtdProvider.js +49 -46
  26. package/modules/admanBidAdapter.js +4 -4
  27. package/modules/admixerBidAdapter.js +13 -2
  28. package/modules/admixerIdSystem.js +4 -4
  29. package/modules/adnowBidAdapter.js +4 -4
  30. package/modules/adnuntiusBidAdapter.js +6 -5
  31. package/modules/adoceanBidAdapter.js +10 -10
  32. package/modules/adpartnerBidAdapter.js +3 -3
  33. package/modules/adpod.js +45 -42
  34. package/modules/adprimeBidAdapter.js +4 -4
  35. package/modules/adqueryBidAdapter.js +204 -0
  36. package/modules/adqueryBidAdapter.md +32 -0
  37. package/modules/adrelevantisBidAdapter.js +30 -27
  38. package/modules/adriverBidAdapter.js +13 -13
  39. package/modules/adtargetBidAdapter.js +24 -24
  40. package/modules/adtelligentBidAdapter.js +29 -29
  41. package/modules/adtrueBidAdapter.js +35 -35
  42. package/modules/aduptechBidAdapter.js +10 -10
  43. package/modules/advangelistsBidAdapter.js +14 -14
  44. package/modules/adxcgAnalyticsAdapter.js +5 -5
  45. package/modules/adxcgBidAdapter.js +56 -56
  46. package/modules/adxpremiumAnalyticsAdapter.js +17 -17
  47. package/modules/adyoulikeBidAdapter.js +11 -11
  48. package/modules/afpBidAdapter.js +166 -0
  49. package/modules/afpBidAdapter.md +348 -0
  50. package/modules/ajaBidAdapter.js +12 -12
  51. package/modules/akamaiDAPIdSystem.js +9 -9
  52. package/modules/aniviewBidAdapter.js +2 -2
  53. package/modules/aolBidAdapter.js +15 -14
  54. package/modules/apacdexBidAdapter.js +16 -16
  55. package/modules/appnexusBidAdapter.js +59 -59
  56. package/modules/apstreamBidAdapter.js +5 -5
  57. package/modules/asoBidAdapter.js +30 -30
  58. package/modules/astraoneBidAdapter.js +2 -2
  59. package/modules/atsAnalyticsAdapter.js +35 -30
  60. package/modules/audiencerunBidAdapter.js +15 -15
  61. package/modules/automatadBidAdapter.js +2 -2
  62. package/modules/axonixBidAdapter.js +7 -7
  63. package/modules/beachfrontBidAdapter.js +23 -23
  64. package/modules/beopBidAdapter.js +22 -22
  65. package/modules/bidViewabilityIO.js +7 -7
  66. package/modules/bidglassBidAdapter.js +8 -8
  67. package/modules/bidscubeBidAdapter.js +3 -3
  68. package/modules/bizzclickBidAdapter.js +10 -10
  69. package/modules/bliinkBidAdapter.js +58 -32
  70. package/modules/bliinkBidAdapter.md +29 -6
  71. package/modules/bluebillywigBidAdapter.js +30 -30
  72. package/modules/boldwinBidAdapter.js +4 -4
  73. package/modules/braveBidAdapter.js +5 -5
  74. package/modules/bridgewellBidAdapter.js +5 -5
  75. package/modules/brightMountainMediaBidAdapter.js +10 -10
  76. package/modules/brightcomBidAdapter.js +18 -18
  77. package/modules/britepoolIdSystem.js +7 -7
  78. package/modules/browsiRtdProvider.js +8 -8
  79. package/modules/bucksenseBidAdapter.js +9 -9
  80. package/modules/buzzoolaBidAdapter.js +4 -4
  81. package/modules/byDataAnalyticsAdapter.js +12 -12
  82. package/modules/ccxBidAdapter.js +38 -38
  83. package/modules/cleanmedianetBidAdapter.js +9 -9
  84. package/modules/clickforceBidAdapter.js +4 -4
  85. package/modules/cointrafficBidAdapter.js +4 -4
  86. package/modules/coinzillaBidAdapter.js +2 -2
  87. package/modules/colossussspBidAdapter.js +7 -3
  88. package/modules/concertAnalyticsAdapter.js +3 -3
  89. package/modules/concertBidAdapter.js +16 -17
  90. package/modules/connectadBidAdapter.js +13 -13
  91. package/modules/consentManagement.js +29 -28
  92. package/modules/consentManagementUsp.js +14 -14
  93. package/modules/consumableBidAdapter.js +3 -3
  94. package/modules/contentexchangeBidAdapter.js +5 -5
  95. package/modules/conversantBidAdapter.js +32 -31
  96. package/modules/cpmstarBidAdapter.js +8 -9
  97. package/modules/craftBidAdapter.js +10 -10
  98. package/modules/criteoBidAdapter.js +16 -16
  99. package/modules/criteoIdSystem.js +5 -5
  100. package/modules/currency.js +18 -18
  101. package/modules/cwireBidAdapter.js +272 -0
  102. package/modules/cwireBidAdapter.md +43 -0
  103. package/modules/datablocksBidAdapter.js +12 -12
  104. package/modules/deepintentBidAdapter.js +13 -13
  105. package/modules/dgkeywordRtdProvider.js +10 -11
  106. package/modules/districtmDMXBidAdapter.js +15 -15
  107. package/modules/dmdIdSystem.js +5 -5
  108. package/modules/docereeBidAdapter.js +9 -9
  109. package/modules/dspxBidAdapter.js +5 -5
  110. package/modules/ebdrBidAdapter.js +9 -9
  111. package/modules/emx_digitalBidAdapter.js +23 -23
  112. package/modules/enrichmentFpdModule.js +10 -9
  113. package/modules/eplanningAnalyticsAdapter.js +2 -2
  114. package/modules/eplanningBidAdapter.js +10 -10
  115. package/modules/etargetBidAdapter.js +4 -4
  116. package/modules/express.js +9 -10
  117. package/modules/fabrickIdSystem.js +6 -6
  118. package/modules/feedadBidAdapter.js +5 -5
  119. package/modules/fintezaAnalyticsAdapter.js +4 -4
  120. package/modules/flocIdSystem.js +5 -5
  121. package/modules/fluctBidAdapter.js +6 -5
  122. package/modules/freewheel-sspBidAdapter.js +6 -6
  123. package/modules/gamoshiBidAdapter.js +22 -22
  124. package/modules/gdprEnforcement.js +13 -14
  125. package/modules/getintentBidAdapter.js +3 -4
  126. package/modules/glimpseBidAdapter.js +160 -48
  127. package/modules/glimpseBidAdapter.md +11 -74
  128. package/modules/gmosspBidAdapter.js +17 -17
  129. package/modules/gnetBidAdapter.js +5 -5
  130. package/modules/googleAnalyticsAdapter.js +6 -6
  131. package/modules/gothamadsBidAdapter.js +9 -9
  132. package/modules/gptPreAuction.js +7 -7
  133. package/modules/gridBidAdapter.js +15 -16
  134. package/modules/gridNMBidAdapter.js +214 -63
  135. package/modules/growadvertisingBidAdapter.js +7 -8
  136. package/modules/gumgumBidAdapter.js +19 -13
  137. package/modules/h12mediaBidAdapter.js +12 -12
  138. package/modules/haloIdSystem.js +8 -8
  139. package/modules/hybridBidAdapter.js +7 -7
  140. package/modules/iasRtdProvider.js +79 -63
  141. package/modules/id5IdSystem.js +24 -24
  142. package/modules/idImportLibrary.js +35 -35
  143. package/modules/idxIdSystem.js +3 -3
  144. package/modules/impactifyBidAdapter.js +10 -10
  145. package/modules/improvedigitalBidAdapter.js +36 -36
  146. package/modules/imuIdSystem.js +6 -6
  147. package/modules/inmarBidAdapter.js +2 -2
  148. package/modules/innityBidAdapter.js +3 -3
  149. package/modules/inskinBidAdapter.js +14 -2
  150. package/modules/inskinBidAdapter.md +5 -4
  151. package/modules/instreamTracking.js +5 -5
  152. package/modules/integr8BidAdapter.js +4 -4
  153. package/modules/intentIqIdSystem.js +7 -7
  154. package/modules/interactiveOffersBidAdapter.js +5 -5
  155. package/modules/invibesBidAdapter.js +53 -19
  156. package/modules/invisiblyAnalyticsAdapter.js +5 -5
  157. package/modules/iqmBidAdapter.js +19 -19
  158. package/modules/iqzoneBidAdapter.js +5 -5
  159. package/modules/ixBidAdapter.js +73 -73
  160. package/modules/jixieBidAdapter.js +6 -6
  161. package/modules/justpremiumBidAdapter.js +5 -1
  162. package/modules/kargoBidAdapter.js +16 -9
  163. package/modules/kargoBidAdapter.md +20 -0
  164. package/modules/kinessoIdSystem.js +8 -8
  165. package/modules/koblerBidAdapter.js +12 -12
  166. package/modules/konduitAnalyticsAdapter.js +4 -4
  167. package/modules/konduitWrapper.js +14 -14
  168. package/modules/krushmediaBidAdapter.js +4 -4
  169. package/modules/kubientBidAdapter.js +5 -5
  170. package/modules/limelightDigitalBidAdapter.js +4 -4
  171. package/modules/liveIntentIdSystem.js +4 -5
  172. package/modules/livewrappedAnalyticsAdapter.js +27 -15
  173. package/modules/livewrappedBidAdapter.js +7 -7
  174. package/modules/liveyieldAnalyticsAdapter.js +13 -13
  175. package/modules/lockerdomeBidAdapter.js +2 -2
  176. package/modules/loganBidAdapter.js +4 -4
  177. package/modules/lotamePanoramaIdSystem.js +13 -13
  178. package/modules/lunamediahbBidAdapter.js +2 -2
  179. package/modules/madvertiseBidAdapter.js +3 -3
  180. package/modules/marsmediaBidAdapter.js +26 -26
  181. package/modules/mathildeadsBidAdapter.js +5 -5
  182. package/modules/mediaforceBidAdapter.js +11 -11
  183. package/modules/mediakeysBidAdapter.js +444 -53
  184. package/modules/mediakeysBidAdapter.md +108 -0
  185. package/modules/medianetAnalyticsAdapter.js +48 -125
  186. package/modules/medianetBidAdapter.js +38 -33
  187. package/modules/medianetRtdProvider.js +7 -7
  188. package/modules/merkleIdSystem.js +19 -19
  189. package/modules/mgidBidAdapter.js +50 -50
  190. package/modules/microadBidAdapter.js +3 -3
  191. package/modules/multibid/index.js +15 -13
  192. package/modules/mwOpenLinkIdSystem.js +7 -7
  193. package/modules/mytargetBidAdapter.js +112 -0
  194. package/modules/nativoBidAdapter.js +46 -31
  195. package/modules/nativoBidAdapter.md +0 -1
  196. package/modules/naveggIdSystem.js +3 -3
  197. package/modules/nextMillenniumBidAdapter.js +6 -6
  198. package/modules/nextrollBidAdapter.js +375 -0
  199. package/modules/nobidBidAdapter.js +12 -11
  200. package/modules/novatiqIdSystem.js +8 -8
  201. package/modules/oguryBidAdapter.js +22 -6
  202. package/modules/oneVideoBidAdapter.js +20 -20
  203. package/modules/onomagicBidAdapter.js +16 -16
  204. package/modules/ooloAnalyticsAdapter.js +13 -13
  205. package/modules/openwebBidAdapter.js +26 -26
  206. package/modules/openxAnalyticsAdapter.js +33 -33
  207. package/modules/openxBidAdapter.js +29 -29
  208. package/modules/operaadsBidAdapter.js +53 -53
  209. package/modules/optimeraRtdProvider.js +9 -9
  210. package/modules/optoutBidAdapter.js +3 -3
  211. package/modules/orbidderBidAdapter.js +3 -3
  212. package/modules/outbrainBidAdapter.js +13 -13
  213. package/modules/ozoneBidAdapter.js +131 -131
  214. package/modules/padsquadBidAdapter.js +4 -4
  215. package/modules/parrableIdSystem.js +17 -17
  216. package/modules/pixfutureBidAdapter.js +45 -25
  217. package/modules/pixfutureBidAdapter.md +127 -0
  218. package/modules/prebidServerBidAdapter/index.js +109 -105
  219. package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
  220. package/modules/priceFloors.js +47 -47
  221. package/modules/proxistoreBidAdapter.js +6 -8
  222. package/modules/pubCommonId.js +11 -11
  223. package/modules/pubProvidedIdSystem.js +3 -3
  224. package/modules/publinkIdSystem.js +23 -7
  225. package/modules/publinkIdSystem.md +7 -2
  226. package/modules/pubmaticAnalyticsAdapter.js +16 -16
  227. package/modules/pubmaticBidAdapter.js +109 -93
  228. package/modules/pubmaticBidAdapter.md +1 -1
  229. package/modules/pubperfAnalyticsAdapter.js +3 -3
  230. package/modules/pubwiseAnalyticsAdapter.js +6 -6
  231. package/modules/pubwiseBidAdapter.js +23 -23
  232. package/modules/pubxBidAdapter.js +2 -2
  233. package/modules/pubxaiAnalyticsAdapter.js +7 -7
  234. package/modules/pulsepointBidAdapter.js +13 -13
  235. package/modules/pxyzBidAdapter.js +7 -7
  236. package/modules/quantcastBidAdapter.js +16 -16
  237. package/modules/radsBidAdapter.js +5 -5
  238. package/modules/realvuAnalyticsAdapter.js +5 -7
  239. package/modules/reconciliationRtdProvider.js +6 -6
  240. package/modules/relaidoBidAdapter.js +44 -38
  241. package/modules/resetdigitalBidAdapter.js +3 -4
  242. package/modules/revcontentBidAdapter.js +9 -9
  243. package/modules/rhythmoneBidAdapter.js +17 -16
  244. package/modules/richaudienceBidAdapter.js +9 -9
  245. package/modules/riseBidAdapter.js +26 -26
  246. package/modules/riseBidAdapter.md +1 -3
  247. package/modules/roxotAnalyticsAdapter.js +14 -14
  248. package/modules/rtbhouseBidAdapter.js +7 -7
  249. package/modules/rtbsapeBidAdapter.js +3 -4
  250. package/modules/rtdModule/index.js +3 -3
  251. package/modules/rubiconAnalyticsAdapter.js +82 -82
  252. package/modules/rubiconBidAdapter.js +72 -68
  253. package/modules/scaleableAnalyticsAdapter.js +2 -2
  254. package/modules/seedingAllianceBidAdapter.js +231 -0
  255. package/modules/seedtagBidAdapter.js +10 -10
  256. package/modules/sharedIdSystem.js +11 -11
  257. package/modules/sharethroughAnalyticsAdapter.js +8 -8
  258. package/modules/sharethroughBidAdapter.js +20 -27
  259. package/modules/showheroes-bsBidAdapter.js +23 -23
  260. package/modules/sigmoidAnalyticsAdapter.js +4 -5
  261. package/modules/sirdataRtdProvider.js +34 -34
  262. package/modules/sizeMappingV2.js +39 -39
  263. package/modules/slimcutBidAdapter.js +121 -0
  264. package/modules/smaatoBidAdapter.js +44 -44
  265. package/modules/smartadserverBidAdapter.js +7 -7
  266. package/modules/smartxBidAdapter.js +72 -72
  267. package/modules/smartyadsBidAdapter.js +2 -2
  268. package/modules/smilewantedBidAdapter.js +6 -6
  269. package/modules/sonobiAnalyticsAdapter.js +23 -23
  270. package/modules/sortableAnalyticsAdapter.js +5 -5
  271. package/modules/sortableBidAdapter.js +28 -28
  272. package/modules/sovrnAnalyticsAdapter.js +5 -5
  273. package/modules/sovrnBidAdapter.js +22 -22
  274. package/modules/spotxBidAdapter.js +97 -83
  275. package/modules/sspBCBidAdapter.js +216 -21
  276. package/modules/sspBCBidAdapter.md +1 -1
  277. package/modules/staqAnalyticsAdapter.js +9 -9
  278. package/modules/stroeerCoreBidAdapter.js +16 -16
  279. package/modules/sublimeBidAdapter.js +6 -6
  280. package/modules/talkadsBidAdapter.js +129 -0
  281. package/modules/talkadsBidAdapter.md +60 -0
  282. package/modules/tapadIdSystem.js +3 -3
  283. package/modules/tappxBidAdapter.js +63 -64
  284. package/modules/teadsBidAdapter.js +20 -20
  285. package/modules/telariaBidAdapter.js +17 -17
  286. package/modules/temedyaBidAdapter.js +4 -4
  287. package/modules/terceptAnalyticsAdapter.js +4 -4
  288. package/modules/theAdxBidAdapter.js +16 -16
  289. package/modules/timeoutRtdProvider.js +15 -15
  290. package/modules/tpmnBidAdapter.js +3 -3
  291. package/modules/trionBidAdapter.js +15 -15
  292. package/modules/tripleliftBidAdapter.js +27 -24
  293. package/modules/truereachBidAdapter.js +4 -4
  294. package/modules/trustxBidAdapter.js +22 -18
  295. package/modules/ucfunnelBidAdapter.js +3 -3
  296. package/modules/uid2IdSystem.js +6 -6
  297. package/modules/underdogmediaBidAdapter.js +4 -4
  298. package/modules/unicornBidAdapter.js +15 -15
  299. package/modules/unifiedIdSystem.js +4 -4
  300. package/modules/unrulyBidAdapter.js +16 -16
  301. package/modules/userId/eids.js +9 -9
  302. package/modules/userId/index.js +37 -35
  303. package/modules/validationFpdModule/index.js +15 -15
  304. package/modules/vdoaiBidAdapter.js +2 -2
  305. package/modules/verizonMediaIdSystem.js +5 -5
  306. package/modules/vidazooBidAdapter.js +5 -5
  307. package/modules/videobyteBidAdapter.js +24 -24
  308. package/modules/videoreachBidAdapter.js +7 -7
  309. package/modules/vidoomyBidAdapter.js +105 -22
  310. package/modules/viewdeosDXBidAdapter.js +17 -17
  311. package/modules/visxBidAdapter.js +21 -29
  312. package/modules/voxBidAdapter.js +7 -7
  313. package/modules/vuukleBidAdapter.js +2 -2
  314. package/modules/waardexBidAdapter.js +26 -26
  315. package/modules/weboramaRtdProvider.js +174 -0
  316. package/modules/weboramaRtdProvider.md +70 -0
  317. package/modules/winrBidAdapter.js +27 -27
  318. package/modules/wipesBidAdapter.js +2 -2
  319. package/modules/yahoosspBidAdapter.js +637 -0
  320. package/modules/yahoosspBidAdapter.md +795 -0
  321. package/modules/yieldlabBidAdapter.js +57 -12
  322. package/modules/yieldlabBidAdapter.md +16 -1
  323. package/modules/yieldliftBidAdapter.js +9 -9
  324. package/modules/yieldmoBidAdapter.js +64 -50
  325. package/modules/yieldoneAnalyticsAdapter.js +6 -6
  326. package/modules/yieldoneBidAdapter.js +11 -11
  327. package/modules/yuktamediaAnalyticsAdapter.js +15 -15
  328. package/modules/zeotapIdPlusIdSystem.js +2 -2
  329. package/modules/zetaBidAdapter.js +6 -6
  330. package/modules/zeta_global_sspBidAdapter.js +14 -14
  331. package/package.json +1 -1
  332. package/src/AnalyticsAdapter.js +6 -6
  333. package/src/Renderer.js +10 -8
  334. package/src/adapterManager.js +45 -42
  335. package/src/adloader.js +6 -6
  336. package/src/ajax.js +8 -9
  337. package/src/auction.js +26 -23
  338. package/src/bidfactory.js +2 -2
  339. package/src/config.js +52 -50
  340. package/src/cpmBucketManager.js +2 -2
  341. package/src/prebid.js +85 -81
  342. package/src/storageManager.js +5 -5
  343. package/src/targeting.js +25 -26
  344. package/src/userSync.js +35 -22
  345. package/src/videoCache.js +2 -2
  346. package/test/.eslintrc.js +2 -1
  347. package/test/spec/modules/adfBidAdapter_spec.js +55 -0
  348. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  349. package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
  351. package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
  352. package/test/spec/modules/afpBidAdapter_spec.js +306 -0
  353. package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
  354. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  355. package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
  356. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  357. package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
  358. package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
  359. package/test/spec/modules/gridBidAdapter_spec.js +38 -2
  360. package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
  361. package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
  362. package/test/spec/modules/iasRtdProvider_spec.js +71 -6
  363. package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
  364. package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
  365. package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
  366. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
  367. package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
  368. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
  369. package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
  370. package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
  371. package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
  372. package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
  373. package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
  374. package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
  375. package/test/spec/modules/publinkIdSystem_spec.js +42 -12
  376. package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
  377. package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
  378. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
  379. package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
  380. package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
  381. package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
  382. package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
  383. package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
  384. package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
  385. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  386. package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
  387. package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
  388. package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
  389. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  390. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  391. package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
  392. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  393. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  394. package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
  395. package/test/spec/unit/pbjs_api_spec.js +4 -0
  396. package/test/spec/userSync_spec.js +30 -2
  397. package/modules/turktelekomBidAdapter.md +0 -49
@@ -403,6 +403,42 @@ describe('the spotx adapter', function () {
403
403
  expect(request.data.ext.wrap_response).to.equal(0);
404
404
  config.getConfig.restore();
405
405
  });
406
+
407
+ it('should pass price floor in USD from the floors module if available', function () {
408
+ var request;
409
+
410
+ bid.getFloor = function () {
411
+ return { currency: 'USD', floor: 3 };
412
+ }
413
+
414
+ bid.params.price_floor = 2;
415
+
416
+ request = spec.buildRequests([bid], bidRequestObj)[0];
417
+
418
+ expect(request.data.imp.bidfloor).to.equal(3);
419
+ });
420
+
421
+ it('should not pass price floor if price floors module gives a non-USD currency', function () {
422
+ var request;
423
+
424
+ bid.getFloor = function () {
425
+ return { currency: 'EUR', floor: 3 };
426
+ }
427
+
428
+ request = spec.buildRequests([bid], bidRequestObj)[0];
429
+
430
+ expect(request.data.imp.bidfloor).to.be.undefined;
431
+ });
432
+
433
+ it('if floors module is not available, should pass price floor from price_floor param if available', function () {
434
+ var request;
435
+
436
+ bid.params.price_floor = 2;
437
+
438
+ request = spec.buildRequests([bid], bidRequestObj)[0];
439
+
440
+ expect(request.data.imp.bidfloor).to.equal(2);
441
+ });
406
442
  });
407
443
 
408
444
  describe('interpretResponse', function() {
@@ -40,13 +40,6 @@ describe('SSPBC adapter', function () {
40
40
  bidderRequestId,
41
41
  bidId: auctionId + '1',
42
42
  transactionId,
43
- ortb2Imp: {
44
- ext: {
45
- data: {
46
- pbadslot: 'test_wideboard'
47
- }
48
- }
49
- }
50
43
  },
51
44
  {
52
45
  adUnitCode: 'test_rectangle',
@@ -69,28 +62,6 @@ describe('SSPBC adapter', function () {
69
62
  bidderRequestId,
70
63
  bidId: auctionId + '2',
71
64
  transactionId,
72
- },
73
- {
74
- adUnitCode: 'test_rectangle_2',
75
- bidder: BIDDER_CODE,
76
- mediaTypes: {
77
- banner: {
78
- sizes: [
79
- [300, 250]
80
- ]
81
- }
82
- },
83
- sizes: [
84
- [300, 250]
85
- ],
86
- params: {
87
- id: '011',
88
- siteId: '8816',
89
- },
90
- auctionId,
91
- bidderRequestId,
92
- bidId: auctionId + '3',
93
- transactionId,
94
65
  }
95
66
  ];
96
67
  const bid_OneCode = {
@@ -115,6 +86,67 @@ describe('SSPBC adapter', function () {
115
86
  bidId: auctionId + '1',
116
87
  transactionId,
117
88
  };
89
+ const bid_native = {
90
+ adUnitCode: 'test_native',
91
+ bidder: BIDDER_CODE,
92
+ mediaTypes: {
93
+ native: {
94
+ image: {
95
+ required: true,
96
+ sizes: [150, 50],
97
+ },
98
+ title: {
99
+ required: true,
100
+ len: 80
101
+ },
102
+ sponsoredBy: {
103
+ required: true,
104
+ },
105
+ clickUrl: {
106
+ required: true,
107
+ },
108
+ privacyLink: {
109
+ required: false,
110
+ },
111
+ body: {
112
+ required: true,
113
+ },
114
+ icon: {
115
+ required: true,
116
+ sizes: [50, 50]
117
+ }
118
+ }
119
+ },
120
+ sizes: [
121
+ [1, 1],
122
+ ],
123
+ auctionId,
124
+ bidderRequestId,
125
+ bidId: auctionId + '1',
126
+ transactionId,
127
+ };
128
+ const bid_video = {
129
+ adUnitCode: 'test_video',
130
+ bidder: BIDDER_CODE,
131
+ mediaTypes: {
132
+ video: {
133
+ context: 'instream',
134
+ playerSize: [[640, 480]],
135
+ mimes: ['video/mp4', 'video/x-ms-wmv', 'video/webm', 'video/3gpp', 'application/javascript'],
136
+ protocols: [2, 3, 5, 6],
137
+ api: [2],
138
+ maxduration: 30,
139
+ linearity: 1
140
+ }
141
+ },
142
+ sizes: [
143
+ [640, 480],
144
+ ],
145
+ auctionId,
146
+ bidderRequestId,
147
+ bidId: auctionId + '1',
148
+ transactionId,
149
+ };
118
150
  const bids_timeouted = [{
119
151
  adUnitCode: 'test_wideboard',
120
152
  bidder: BIDDER_CODE,
@@ -193,6 +225,30 @@ describe('SSPBC adapter', function () {
193
225
  stack: ['https://test.site.pl/'],
194
226
  }
195
227
  };
228
+ const bidRequestNative = {
229
+ auctionId,
230
+ bidderCode: BIDDER_CODE,
231
+ bidderRequestId,
232
+ bids: [bid_native],
233
+ gdprConsent,
234
+ refererInfo: {
235
+ reachedTop: true,
236
+ referer: 'https://test.site.pl/',
237
+ stack: ['https://test.site.pl/'],
238
+ }
239
+ };
240
+ const bidRequestVideo = {
241
+ auctionId,
242
+ bidderCode: BIDDER_CODE,
243
+ bidderRequestId,
244
+ bids: [bid_video],
245
+ gdprConsent,
246
+ refererInfo: {
247
+ reachedTop: true,
248
+ referer: 'https://test.site.pl/',
249
+ stack: ['https://test.site.pl/'],
250
+ }
251
+ };
196
252
  const bidRequestOneCode = {
197
253
  auctionId,
198
254
  bidderCode: BIDDER_CODE,
@@ -264,21 +320,6 @@ describe('SSPBC adapter', function () {
264
320
  }],
265
321
  'seat': 'dsp2',
266
322
  'group': 0
267
- }, {
268
- 'bid': [{
269
- 'id': '2d766853-ea07-4529-8299-5f0ebaddfaza',
270
- 'impid': '011',
271
- 'siteid': '8816',
272
- 'slotid': '011',
273
- 'price': 2,
274
- 'adm': 'AD CODE 3',
275
- 'cid': '57745',
276
- 'crid': '858253',
277
- 'w': 300,
278
- 'h': 250
279
- }],
280
- 'seat': 'dsp3',
281
- 'group': 0
282
323
  }],
283
324
  'cur': 'PLN'
284
325
  }
@@ -335,6 +376,58 @@ describe('SSPBC adapter', function () {
335
376
  'cur': 'PLN'
336
377
  }
337
378
  };
379
+ const serverResponseVideo = {
380
+ 'body': {
381
+ 'id': auctionId,
382
+ 'seatbid': [{
383
+ 'bid': [{
384
+ 'id': '3347324c-6889-46d2-a800-ae78a5214c06',
385
+ 'impid': 'bidid-' + auctionId + '1',
386
+ 'price': 1,
387
+ 'adid': 'lxHWkB7OnZeso3QiN1N4',
388
+ 'nurl': '',
389
+ 'adm': '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><VAST version=\"3.0\"><Ad id=\"12345\"><Wrapper><AdSystem version=\"3.0\">adnxs</AdSystem><VASTAdTagURI><![CDATA[https://video.tag.uri]]></VASTAdTagURI><Impression><![CDATA[https://video.tag.tracker]]></Impression><Creatives><Creative adID=\"305683174\"><Linear></Linear></Creative></Creatives></Wrapper></Ad></VAST>',
390
+ 'adomain': ['adomain.pl'],
391
+ 'cid': 'BZ4gAg21T5nNtxlUCDSW',
392
+ 'crid': 'lxHWkB7OnZeso3QiN1N4',
393
+ 'w': 640,
394
+ 'h': 480,
395
+ 'ext': {
396
+ 'siteid': '8816',
397
+ 'slotid': '150',
398
+ },
399
+ }],
400
+ 'seat': 'dsp1',
401
+ 'group': 0
402
+ }],
403
+ 'cur': 'PLN'
404
+ }
405
+ };
406
+ const serverResponseNative = {
407
+ 'body': {
408
+ 'id': auctionId,
409
+ 'seatbid': [{
410
+ 'bid': [{
411
+ 'id': '3347324c-6889-46d2-a800-ae78a5214c06',
412
+ 'impid': 'bidid-' + auctionId + '1',
413
+ 'price': 1,
414
+ 'adid': 'lxHWkB7OnZeso3QiN1N4',
415
+ 'nurl': '',
416
+ 'adm': '{\"native\":{\"assets\":[{\"id\":3,\"img\":{\"url\":\"native_image\",\"w\":300,\"h\":150}},{\"id\":2,\"img\":{\"url\":\"native_icon\",\"w\":50,\"h\":50}},{\"id\":0,\"title\":{\"text\":\"native_title\"}},{\"id\":5,\"data\":{\"value\":\"native adomain\"}},{\"id\":4,\"data\":{\"value\":\"native_text\"}}],\"link\":{\"url\":\"native_url\"},\"imptrackers\":[\"native_tracker\"]}}',
417
+ 'adomain': ['adomain.pl'],
418
+ 'cid': 'BZ4gAg21T5nNtxlUCDSW',
419
+ 'crid': 'lxHWkB7OnZeso3QiN1N4',
420
+ 'ext': {
421
+ 'siteid': '8816',
422
+ 'slotid': '80',
423
+ },
424
+ }],
425
+ 'seat': 'dsp1',
426
+ 'group': 0
427
+ }],
428
+ 'cur': 'PLN'
429
+ }
430
+ };
338
431
  const emptyResponse = {
339
432
  'body': {
340
433
  'id': auctionId,
@@ -345,14 +438,20 @@ describe('SSPBC adapter', function () {
345
438
  bids,
346
439
  bids_test,
347
440
  bids_timeouted,
441
+ bid_native,
442
+ bid_video,
348
443
  bidRequest,
349
444
  bidRequestOneCode,
350
445
  bidRequestSingle,
446
+ bidRequestNative,
447
+ bidRequestVideo,
351
448
  bidRequestTest,
352
449
  bidRequestTestNoGDPR,
353
450
  serverResponse,
354
451
  serverResponseOneCode,
355
452
  serverResponseSingle,
453
+ serverResponseVideo,
454
+ serverResponseNative,
356
455
  emptyResponse
357
456
  };
358
457
  };
@@ -377,14 +476,15 @@ describe('SSPBC adapter', function () {
377
476
  });
378
477
 
379
478
  describe('buildRequests', function () {
380
- const { bids, bidRequest, bidRequestSingle } = prepareTestData();
479
+ const { bids, bid_native, bid_video, bidRequest, bidRequestSingle, bidRequestNative, bidRequestVideo } = prepareTestData();
381
480
  const request = spec.buildRequests(bids, bidRequest);
382
481
  const requestSingle = spec.buildRequests([bids[0]], bidRequestSingle);
482
+ const requestNative = spec.buildRequests([bid_native], bidRequestNative);
483
+ const requestVideo = spec.buildRequests([bid_video], bidRequestVideo);
383
484
  const payload = request ? JSON.parse(request.data) : { site: false, imp: false };
384
- const payloadSingle = request ? JSON.parse(requestSingle.data) : { site: false, imp: false };
385
- const payloadExt0 = payload.imp ? payload.imp[0].ext : {};
386
- const payloadExt1 = payload.imp ? payload.imp[1].ext : {};
387
- const payloadExt2 = payload.imp ? payload.imp[2].ext : {};
485
+ const payloadSingle = requestSingle ? JSON.parse(requestSingle.data) : { site: false, imp: false };
486
+ const payloadNative = requestNative ? JSON.parse(requestNative.data) : { site: false, imp: false };
487
+ const payloadVideo = requestVideo ? JSON.parse(requestVideo.data) : { site: false, imp: false };
388
488
 
389
489
  it('should send bid request to endpoint via POST', function () {
390
490
  expect(request.url).to.contain(BIDDER_URL);
@@ -401,17 +501,6 @@ describe('SSPBC adapter', function () {
401
501
  expect(payloadSingle.imp.length).to.equal(1);
402
502
  });
403
503
 
404
- it('should add first party data (pbslot)', function () {
405
- expect(payloadExt0.data).to.be.an('object').and.to.have.property('pbadslot');
406
- });
407
-
408
- it('should add maximum size of adunit, and how many times this size has been requested (pbsize)', function () {
409
- expect(payloadExt0.data).to.be.an('object').and.to.have.property('pbsize');
410
- expect(payloadExt0.data.pbsize).to.equal('750x200_1');
411
- expect(payloadExt1.data.pbsize).to.equal('300x250_1');
412
- expect(payloadExt2.data.pbsize).to.equal('300x250_2');
413
- });
414
-
415
504
  it('should save bidder request data', function () {
416
505
  expect(request.bidderRequest).to.deep.equal(bidRequest);
417
506
  });
@@ -428,13 +517,49 @@ describe('SSPBC adapter', function () {
428
517
  expect(payload.regs).to.be.an('object').and.to.have.property('[ortb_extensions.gdpr]', 1);
429
518
  expect(payload.user).to.be.an('object').and.to.have.property('[ortb_extensions.consent]', bidRequest.gdprConsent.consentString);
430
519
  });
520
+
521
+ it('should build correct native payload', function () {
522
+ const nativeAssets = payloadNative.imp && payloadNative.imp[0].native.request;
523
+
524
+ expect(payloadNative.imp.length).to.equal(1);
525
+ expect(nativeAssets).to.contain('{"id":0,"required":true,"title":{"len":80}}');
526
+ expect(nativeAssets).to.contain('{"id":2,"required":true,"img":{"type":1,"w":50,"h":50}}');
527
+ expect(nativeAssets).to.contain('{"id":3,"required":true,"img":{"type":3,"w":150,"h":50}}');
528
+ expect(nativeAssets).to.contain('{"id":4,"required":true,"data":{"type":2}');
529
+ expect(nativeAssets).to.contain('{"id":5,"required":true,"data":{"type":1}');
530
+ });
531
+
532
+ it('should build correct video payload', function () {
533
+ const videoAssets = payloadVideo.imp && payloadVideo.imp[0].video;
534
+
535
+ expect(payloadVideo.imp.length).to.equal(1);
536
+ expect(videoAssets).to.have.property('w').that.equals(640);
537
+ expect(videoAssets).to.have.property('h').that.equals(480);
538
+ expect(videoAssets).to.have.property('context').that.equals('instream');
539
+ expect(videoAssets).to.have.property('maxduration').that.equals(30);
540
+ expect(videoAssets).to.have.property('linearity').that.equals(1);
541
+ expect(videoAssets).to.have.property('mimes').that.is.an('array');
542
+ expect(videoAssets).to.have.property('protocols').that.is.an('array');
543
+ expect(videoAssets).to.have.property('api').that.is.an('array');
544
+ });
545
+
546
+ it('should create auxilary placement identifier (size_numUsed)', function () {
547
+ const extAssets1 = payload.imp && payload.imp[0].ext.data;
548
+ const extAssets2 = payloadSingle.imp && payloadSingle.imp[0].ext.data;
549
+
550
+ // note that payload comes from first, and payloadSingle from second auction in the test run
551
+ expect(extAssets1).to.have.property('pbsize').that.equals('750x200_1')
552
+ expect(extAssets2).to.have.property('pbsize').that.equals('750x200_2')
553
+ });
431
554
  });
432
555
 
433
556
  describe('interpretResponse', function () {
434
- const { bid_OneCode, bids, emptyResponse, serverResponse, serverResponseOneCode, serverResponseSingle, bidRequest, bidRequestOneCode, bidRequestSingle } = prepareTestData();
557
+ const { bid_OneCode, bid_video, bid_native, bids, emptyResponse, serverResponse, serverResponseOneCode, serverResponseSingle, serverResponseVideo, serverResponseNative, bidRequest, bidRequestOneCode, bidRequestSingle, bidRequestVideo, bidRequestNative } = prepareTestData();
435
558
  const request = spec.buildRequests(bids, bidRequest);
436
559
  const requestSingle = spec.buildRequests([bids[0]], bidRequestSingle);
437
560
  const requestOneCode = spec.buildRequests([bid_OneCode], bidRequestOneCode);
561
+ const requestVideo = spec.buildRequests([bid_video], bidRequestVideo);
562
+ const requestNative = spec.buildRequests([bid_native], bidRequestNative);
438
563
 
439
564
  it('should handle nobid responses', function () {
440
565
  let result = spec.interpretResponse(emptyResponse, request);
@@ -476,7 +601,30 @@ describe('SSPBC adapter', function () {
476
601
  expect(adcode).to.contain('window.mcad');
477
602
  expect(adcode).to.contain('window.gdpr');
478
603
  expect(adcode).to.contain('window.page');
479
- })
604
+ });
605
+
606
+ it('should create a correct video bid', function () {
607
+ let resultVideo = spec.interpretResponse(serverResponseVideo, requestVideo);
608
+
609
+ expect(resultVideo.length).to.equal(1);
610
+
611
+ let videoBid = resultVideo[0];
612
+ expect(videoBid).to.have.keys('adType', 'bidderCode', 'cpm', 'creativeId', 'currency', 'width', 'height', 'meta', 'mediaType', 'netRevenue', 'requestId', 'ttl', 'vastContent', 'vastXml');
613
+ expect(videoBid.adType).to.equal('instream');
614
+ expect(videoBid.mediaType).to.equal('video');
615
+ expect(videoBid.vastXml).to.match(/^<\?xml.*<\/VAST>$/);
616
+ expect(videoBid.vastContent).to.match(/^<\?xml.*<\/VAST>$/);
617
+ });
618
+
619
+ it('should create a correct native bid', function () {
620
+ let resultNative = spec.interpretResponse(serverResponseNative, requestNative);
621
+
622
+ expect(resultNative.length).to.equal(1);
623
+
624
+ let nativeBid = resultNative[0];
625
+ expect(nativeBid).to.have.keys('bidderCode', 'cpm', 'creativeId', 'currency', 'width', 'height', 'meta', 'mediaType', 'netRevenue', 'requestId', 'ttl', 'native');
626
+ expect(nativeBid.native).to.have.keys('image', 'icon', 'title', 'sponsoredBy', 'body', 'clickUrl', 'impressionTrackers');
627
+ });
480
628
  });
481
629
 
482
630
  describe('getUserSyncs', function () {
@@ -0,0 +1,231 @@
1
+ import {expect} from 'chai';
2
+ import {spec} from 'modules/talkadsBidAdapter.js';
3
+ import {newBidder} from 'src/adapters/bidderFactory.js';
4
+ import {config} from '../../../src/config';
5
+ import {server} from '../../mocks/xhr';
6
+
7
+ describe('TalkAds adapter', function () {
8
+ const commonBidderRequest = {
9
+ refererInfo: {
10
+ referer: 'https://example.com/'
11
+ },
12
+ timeout: 3000,
13
+ }
14
+ const commonBidRequest = {
15
+ bidder: 'talkads',
16
+ params: {
17
+ tag_id: 999999,
18
+ bidder_url: 'https://test.natexo-programmatic.com/tad/tag/prebid',
19
+ },
20
+ bidId: '1a2b3c4d56e7f0',
21
+ auctionId: '12345678-1234-1a2b-3c4d-1a2b3c4d56e7',
22
+ transactionId: '4f68b713-04ba-4d7f-8df9-643bcdab5efb',
23
+ };
24
+ const nativeBidRequestParams = {
25
+ nativeParams: {},
26
+ };
27
+ const bannerBidRequestParams = {
28
+ sizes: [[300, 250], [300, 600]],
29
+ };
30
+
31
+ /**
32
+ * isBidRequestValid
33
+ */
34
+ describe('isBidRequestValid1', function() {
35
+ it('should fail when config is invalid', function () {
36
+ const bidRequest = {
37
+ ...commonBidRequest,
38
+ ...bannerBidRequestParams,
39
+ };
40
+ bidRequest.params = Object.assign({}, bidRequest.params);
41
+ delete bidRequest.params;
42
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
43
+ });
44
+ }); // isBidRequestValid1
45
+ describe('isBidRequestValid2', function() {
46
+ it('should fail when config is invalid', function () {
47
+ const bidRequest = {
48
+ ...commonBidRequest,
49
+ ...bannerBidRequestParams,
50
+ };
51
+ bidRequest.params = Object.assign({}, bidRequest.params);
52
+ delete bidRequest.params.bidder_url;
53
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
54
+ });
55
+ }); // isBidRequestValid2
56
+ describe('isBidRequestValid3', function() {
57
+ it('should fail when config is invalid', function () {
58
+ const bidRequest = {
59
+ ...commonBidRequest,
60
+ ...bannerBidRequestParams,
61
+ };
62
+ bidRequest.params = Object.assign({}, bidRequest.params);
63
+ delete bidRequest.params.tag_id;
64
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
65
+ });
66
+ }); // isBidRequestValid3
67
+ describe('isBidRequestValid4', function() {
68
+ let bidRequest = {
69
+ ...commonBidRequest,
70
+ ...bannerBidRequestParams,
71
+ };
72
+ it('should succeed when a banner bid is valid', function () {
73
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
74
+ });
75
+ bidRequest = {
76
+ ...commonBidRequest,
77
+ ...nativeBidRequestParams,
78
+ };
79
+ it('should succeed when a native bid is valid', function () {
80
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
81
+ });
82
+ }); // isBidRequestValid4
83
+
84
+ /**
85
+ * buildRequests
86
+ */
87
+ describe('buildRequests1', function() {
88
+ let bidRequest = {
89
+ ...commonBidRequest,
90
+ ...bannerBidRequestParams,
91
+ };
92
+ const loServerRequest = {
93
+ cur: 'EUR',
94
+ timeout: commonBidderRequest.timeout,
95
+ auction_id: commonBidRequest.auctionId,
96
+ transaction_id: commonBidRequest.transactionId,
97
+ bids: [{ id: 0, bid_id: commonBidRequest.bidId, type: 'banner', size: bannerBidRequestParams.sizes }],
98
+ gdpr: { applies: false, consent: false },
99
+ };
100
+ it('should generate a valid banner bid request', function () {
101
+ let laResponse = spec.buildRequests([bidRequest], commonBidderRequest);
102
+ expect(laResponse.method).to.equal('POST');
103
+ expect(laResponse.url).to.equal('https://test.natexo-programmatic.com/tad/tag/prebid/999999');
104
+ expect(laResponse.data).to.equal(JSON.stringify(loServerRequest));
105
+ });
106
+ }); // buildRequests1
107
+ describe('buildRequests2', function() {
108
+ let bidRequest = {
109
+ ...commonBidRequest,
110
+ ...nativeBidRequestParams,
111
+ };
112
+ const loServerRequest = {
113
+ cur: 'EUR',
114
+ timeout: commonBidderRequest.timeout,
115
+ auction_id: commonBidRequest.auctionId,
116
+ transaction_id: commonBidRequest.transactionId,
117
+ bids: [{ id: 0, bid_id: commonBidRequest.bidId, type: 'native', size: [] }],
118
+ gdpr: { applies: false, consent: false },
119
+ };
120
+ it('should generate a valid native bid request', function () {
121
+ let laResponse = spec.buildRequests([bidRequest], commonBidderRequest);
122
+ expect(laResponse.method).to.equal('POST');
123
+ expect(laResponse.url).to.equal('https://test.natexo-programmatic.com/tad/tag/prebid/999999');
124
+ expect(laResponse.data).to.equal(JSON.stringify(loServerRequest));
125
+ });
126
+ const bidderRequest = {
127
+ ...commonBidderRequest,
128
+ gdprConsent: { gdprApplies: true, consentString: 'yes' }
129
+ };
130
+ const loServerRequest2 = {
131
+ ...loServerRequest,
132
+ gdpr: { applies: true, consent: 'yes' },
133
+ };
134
+ it('should generate a valid native bid request', function () {
135
+ let laResponse = spec.buildRequests([bidRequest], bidderRequest);
136
+ expect(laResponse.method).to.equal('POST');
137
+ expect(laResponse.url).to.equal('https://test.natexo-programmatic.com/tad/tag/prebid/999999');
138
+ expect(laResponse.data).to.equal(JSON.stringify(loServerRequest2));
139
+ });
140
+ }); // buildRequests2
141
+
142
+ /**
143
+ * interpretResponse
144
+ */
145
+ describe('interpretResponse1', function() {
146
+ it('should return empty array if no valid bids', function () {
147
+ const laResult = spec.interpretResponse({}, [])
148
+ expect(laResult).to.be.an('array').that.is.empty;
149
+ });
150
+ const loServerResult = {
151
+ body: { status: 'error', error: 'aie' }
152
+ };
153
+ it('should return empty array if there is an error', function () {
154
+ const laResult = spec.interpretResponse(loServerResult, [])
155
+ expect(laResult).to.be.an('array').that.is.empty;
156
+ });
157
+ }); // interpretResponse1
158
+ describe('interpretResponse2', function() {
159
+ const loServerResult = {
160
+ body: {
161
+ status: 'ok',
162
+ error: '',
163
+ pbid: '6147833a65749742875ace47',
164
+ bids: [{
165
+ requestId: commonBidRequest.bidId,
166
+ cpm: 0.10,
167
+ currency: 'EUR',
168
+ width: 300,
169
+ height: 250,
170
+ ad: 'test ad',
171
+ ttl: 60,
172
+ creativeId: 'c123a456',
173
+ netRevenue: false,
174
+ }]
175
+ }
176
+ };
177
+ const loExpected = [{
178
+ requestId: '1a2b3c4d56e7f0',
179
+ cpm: 0.1,
180
+ currency: 'EUR',
181
+ width: 300,
182
+ height: 250,
183
+ ad: 'test ad',
184
+ ttl: 60,
185
+ creativeId: 'c123a456',
186
+ netRevenue: false,
187
+ pbid: '6147833a65749742875ace47'
188
+ }];
189
+ it('should return a correct bid response', function () {
190
+ const laResult = spec.interpretResponse(loServerResult, [])
191
+ expect(JSON.stringify(laResult)).to.equal(JSON.stringify(loExpected));
192
+ });
193
+ }); // interpretResponse2
194
+
195
+ /**
196
+ * onBidWon
197
+ */
198
+ describe('onBidWon', function() {
199
+ it('should not make an ajax call if pbid is null', function () {
200
+ const loBid = {
201
+ requestId: '1a2b3c4d56e7f0',
202
+ cpm: 0.1,
203
+ currency: 'EUR',
204
+ width: 300,
205
+ height: 250,
206
+ ad: 'test ad',
207
+ ttl: 60,
208
+ creativeId: 'c123a456',
209
+ netRevenue: false,
210
+ }
211
+ spec.onBidWon(loBid)
212
+ expect(server.requests.length).to.equals(0);
213
+ });
214
+ it('should make an ajax call', function () {
215
+ const loBid = {
216
+ requestId: '1a2b3c4d56e7f0',
217
+ cpm: 0.1,
218
+ currency: 'EUR',
219
+ width: 300,
220
+ height: 250,
221
+ ad: 'test ad',
222
+ ttl: 60,
223
+ creativeId: 'c123a456',
224
+ netRevenue: false,
225
+ pbid: '6147833a65749742875ace47'
226
+ }
227
+ spec.onBidWon(loBid)
228
+ expect(server.requests[0].url).to.equals('https://test.natexo-programmatic.com/tad/tag/prebidwon/6147833a65749742875ace47');
229
+ });
230
+ }); // onBidWon
231
+ });