prebid.js 7.10.0 → 7.13.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 (366) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +16 -10
  2. package/.github/codeql/codeql-config.yml +4 -0
  3. package/.github/workflows/codeql-analysis.yml +73 -0
  4. package/.github/workflows/issue_tracker.yml +1 -1
  5. package/README.md +0 -2
  6. package/babelConfig.js +10 -4
  7. package/dist/33acrossBidAdapter.js +1 -1
  8. package/dist/acuityAdsBidAdapter.js +1 -0
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adbookpspBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adriverBidAdapter.js +1 -1
  15. package/dist/adriverIdSystem.js +1 -1
  16. package/dist/adtelligentBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -0
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/alkimiBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aniviewBidAdapter.js +1 -1
  25. package/dist/aolBidAdapter.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/beopBidAdapter.js +1 -1
  32. package/dist/betweenBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bluebillywigBidAdapter.js +1 -1
  37. package/dist/brandmetricsRtdProvider.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/cleanioRtdProvider.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consentManagement.js +1 -1
  45. package/dist/consentManagementUsp.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/cpmstarBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/currency.js +1 -1
  52. package/dist/datawrkzBidAdapter.js +1 -0
  53. package/dist/debugging-standalone.js +1 -1
  54. package/dist/dfpAdServerVideo.js +1 -1
  55. package/dist/dgkeywordRtdProvider.js +1 -1
  56. package/dist/displayioBidAdapter.js +1 -3
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/enrichmentFpdModule.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/glimpseBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/gridBidAdapter.js +1 -1
  65. package/dist/gridNMBidAdapter.js +1 -1
  66. package/dist/gumgumBidAdapter.js +1 -1
  67. package/dist/h12mediaBidAdapter.js +1 -1
  68. package/dist/id5IdSystem.js +1 -1
  69. package/dist/imRtdProvider.js +1 -1
  70. package/dist/impactifyBidAdapter.js +1 -1
  71. package/dist/improvedigitalBidAdapter.js +1 -1
  72. package/dist/inmarBidAdapter.js +1 -1
  73. package/dist/insticatorBidAdapter.js +1 -1
  74. package/dist/ixBidAdapter.js +1 -1
  75. package/dist/jixieBidAdapter.js +1 -1
  76. package/dist/justpremiumBidAdapter.js +1 -1
  77. package/dist/kargoBidAdapter.js +1 -1
  78. package/dist/konduitAnalyticsAdapter.js +1 -1
  79. package/dist/kueezBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -0
  82. package/dist/limelightDigitalBidAdapter.js +1 -1
  83. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  84. package/dist/logicadBidAdapter.js +1 -1
  85. package/dist/loglyliftBidAdapter.js +1 -1
  86. package/dist/mabidderBidAdapter.js +1 -0
  87. package/dist/malltvAnalyticsAdapter.js +1 -1
  88. package/dist/marsmediaBidAdapter.js +1 -1
  89. package/dist/mediafuseBidAdapter.js +1 -1
  90. package/dist/mediagoBidAdapter.js +1 -0
  91. package/dist/mediakeysBidAdapter.js +1 -1
  92. package/dist/mediasquareBidAdapter.js +1 -1
  93. package/dist/mgidBidAdapter.js +1 -1
  94. package/dist/minutemediaBidAdapter.js +1 -1
  95. package/dist/nextMillenniumBidAdapter.js +1 -1
  96. package/dist/not-for-prod/prebid.js +153 -147
  97. package/dist/oguryBidAdapter.js +1 -1
  98. package/dist/oneKeyIdSystem.js +1 -0
  99. package/dist/oneKeyRtdProvider.js +1 -0
  100. package/dist/onetagBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxAnalyticsAdapter.js +1 -1
  103. package/dist/outbrainBidAdapter.js +1 -1
  104. package/dist/parrableIdSystem.js +1 -1
  105. package/dist/permutiveRtdProvider.js +1 -1
  106. package/dist/pixfutureBidAdapter.js +1 -1
  107. package/dist/prebid-core.js +2 -2
  108. package/dist/publinkIdSystem.js +1 -1
  109. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  110. package/dist/pubmaticBidAdapter.js +1 -1
  111. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  112. package/dist/pxyzBidAdapter.js +1 -1
  113. package/dist/quantcastBidAdapter.js +1 -1
  114. package/dist/rasBidAdapter.js +1 -1
  115. package/dist/readpeakBidAdapter.js +1 -1
  116. package/dist/relaidoBidAdapter.js +1 -1
  117. package/dist/rhythmoneBidAdapter.js +1 -1
  118. package/dist/riseBidAdapter.js +1 -1
  119. package/dist/rtbhouseBidAdapter.js +1 -1
  120. package/dist/rubiconAnalyticsAdapter.js +1 -1
  121. package/dist/rubiconBidAdapter.js +1 -1
  122. package/dist/seedingAllianceBidAdapter.js +1 -1
  123. package/dist/seedtagBidAdapter.js +1 -1
  124. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  125. package/dist/sharethroughBidAdapter.js +1 -1
  126. package/dist/shinezBidAdapter.js +1 -1
  127. package/dist/smaatoBidAdapter.js +1 -1
  128. package/dist/smartadserverBidAdapter.js +1 -1
  129. package/dist/smartxBidAdapter.js +1 -1
  130. package/dist/smilewantedBidAdapter.js +1 -1
  131. package/dist/sonobiBidAdapter.js +1 -1
  132. package/dist/sovrnAnalyticsAdapter.js +1 -1
  133. package/dist/sovrnBidAdapter.js +1 -1
  134. package/dist/sspBCBidAdapter.js +1 -1
  135. package/dist/sublimeBidAdapter.js +1 -1
  136. package/dist/synacormediaBidAdapter.js +1 -1
  137. package/dist/tappxBidAdapter.js +1 -1
  138. package/dist/targetVideoBidAdapter.js +1 -1
  139. package/dist/teadsBidAdapter.js +1 -1
  140. package/dist/trionBidAdapter.js +1 -1
  141. package/dist/tripleliftBidAdapter.js +1 -1
  142. package/dist/trustpidSystem.js +1 -1
  143. package/dist/ttdBidAdapter.js +1 -1
  144. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  145. package/dist/underdogmediaBidAdapter.js +1 -1
  146. package/dist/undertoneBidAdapter.js +1 -1
  147. package/dist/userId.js +1 -1
  148. package/dist/vidazooBidAdapter.js +1 -1
  149. package/dist/videobyteBidAdapter.js +1 -1
  150. package/dist/viewability.js +1 -1
  151. package/dist/visxBidAdapter.js +1 -1
  152. package/dist/vuukleBidAdapter.js +1 -1
  153. package/dist/widespaceBidAdapter.js +1 -1
  154. package/dist/winrBidAdapter.js +1 -1
  155. package/dist/yahoosspBidAdapter.js +1 -1
  156. package/dist/yieldmoBidAdapter.js +1 -1
  157. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  158. package/dist/zeta_global_sspBidAdapter.js +1 -1
  159. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  160. package/karma.conf.maker.js +2 -13
  161. package/modules/.submodules.json +2 -0
  162. package/modules/acuityAdsBidAdapter.js +207 -0
  163. package/modules/acuityAdsBidAdapter.md +79 -0
  164. package/modules/adagioBidAdapter.js +2 -3
  165. package/modules/adgenerationBidAdapter.js +2 -2
  166. package/modules/adkernelBidAdapter.js +28 -12
  167. package/modules/admixerBidAdapter.js +1 -1
  168. package/modules/adnowBidAdapter.js +1 -1
  169. package/modules/adpod.js +1 -1
  170. package/modules/adrelevantisBidAdapter.js +2 -2
  171. package/modules/adriverBidAdapter.js +5 -12
  172. package/modules/adriverIdSystem.js +2 -1
  173. package/modules/adtargetBidAdapter.js +1 -1
  174. package/modules/adtelligentBidAdapter.js +6 -2
  175. package/modules/adtrgtmeBidAdapter.js +333 -0
  176. package/modules/adtrgtmeBidAdapter.md +69 -0
  177. package/modules/adtrueBidAdapter.js +1 -1
  178. package/modules/adxpremiumAnalyticsAdapter.js +1 -1
  179. package/modules/adyoulikeBidAdapter.js +1 -1
  180. package/modules/alkimiBidAdapter.js +2 -1
  181. package/modules/aniviewBidAdapter.js +1 -1
  182. package/modules/appnexusBidAdapter.js +13 -93
  183. package/modules/apstreamBidAdapter.js +2 -2
  184. package/modules/beopBidAdapter.js +4 -4
  185. package/modules/betweenBidAdapter.js +4 -4
  186. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  187. package/modules/bizzclickBidAdapter.js +1 -1
  188. package/modules/brightMountainMediaBidAdapter.js +1 -1
  189. package/modules/browsiRtdProvider.js +24 -10
  190. package/modules/cleanmedianetBidAdapter.js +1 -1
  191. package/modules/consentManagement.js +1 -1
  192. package/modules/consentManagementUsp.js +1 -1
  193. package/modules/consumableBidAdapter.js +43 -3
  194. package/modules/cpmstarBidAdapter.js +23 -13
  195. package/modules/criteoBidAdapter.js +19 -13
  196. package/modules/currency.js +1 -0
  197. package/modules/cwireBidAdapter.js +1 -1
  198. package/modules/datablocksBidAdapter.js +1 -1
  199. package/modules/datawrkzBidAdapter.js +633 -0
  200. package/modules/datawrkzBidAdapter.md +160 -0
  201. package/modules/dfpAdServerVideo.js +2 -2
  202. package/modules/dgkeywordRtdProvider.js +10 -1
  203. package/modules/displayioBidAdapter.js +92 -97
  204. package/modules/dspxBidAdapter.js +1 -1
  205. package/modules/e_volutionBidAdapter.js +3 -3
  206. package/modules/ebdrBidAdapter.js +1 -1
  207. package/modules/emx_digitalBidAdapter.js +1 -1
  208. package/modules/enrichmentFpdModule.js +11 -0
  209. package/modules/fabrickIdSystem.js +2 -2
  210. package/modules/gamoshiBidAdapter.js +1 -1
  211. package/modules/getintentBidAdapter.js +1 -1
  212. package/modules/gjirafaBidAdapter.js +2 -2
  213. package/modules/goldbachBidAdapter.js +8 -8
  214. package/modules/gothamadsBidAdapter.js +2 -2
  215. package/modules/gumgumBidAdapter.js +3 -3
  216. package/modules/h12mediaBidAdapter.js +1 -1
  217. package/modules/id5AnalyticsAdapter.js +1 -1
  218. package/modules/id5IdSystem.js +160 -111
  219. package/modules/id5IdSystem.md +16 -14
  220. package/modules/imRtdProvider.js +20 -7
  221. package/modules/imRtdProvider.md +3 -1
  222. package/modules/impactifyBidAdapter.js +1 -1
  223. package/modules/improvedigitalBidAdapter.js +50 -28
  224. package/modules/inskinBidAdapter.js +1 -1
  225. package/modules/insticatorBidAdapter.js +1 -1
  226. package/modules/integr8BidAdapter.js +2 -2
  227. package/modules/intentIqIdSystem.js +2 -2
  228. package/modules/interactiveOffersBidAdapter.js +1 -1
  229. package/modules/iqmBidAdapter.js +1 -1
  230. package/modules/ixBidAdapter.js +21 -328
  231. package/modules/ixBidAdapter.md +1 -19
  232. package/modules/kargoBidAdapter.js +4 -5
  233. package/modules/krushmediaBidAdapter.js +2 -2
  234. package/modules/lassoBidAdapter.js +3 -3
  235. package/modules/lifestreetBidAdapter.js +143 -0
  236. package/modules/limelightDigitalBidAdapter.js +2 -1
  237. package/modules/livewrappedAnalyticsAdapter.js +3 -3
  238. package/modules/lkqdBidAdapter.js +3 -3
  239. package/modules/loganBidAdapter.js +2 -2
  240. package/modules/luponmediaBidAdapter.js +3 -3
  241. package/modules/mabidderBidAdapter.js +60 -0
  242. package/modules/mabidderBidAdapter.md +31 -0
  243. package/modules/malltvBidAdapter.js +2 -2
  244. package/modules/mediagoBidAdapter.js +462 -0
  245. package/modules/mediagoBidAdapter.md +34 -0
  246. package/modules/mediakeysBidAdapter.js +2 -2
  247. package/modules/mgidBidAdapter.js +2 -2
  248. package/modules/nextMillenniumBidAdapter.js +25 -6
  249. package/modules/nobidBidAdapter.js +2 -2
  250. package/modules/novatiqIdSystem.js +1 -1
  251. package/modules/oneKeyIdSystem.js +78 -0
  252. package/modules/oneKeyIdSystem.md +109 -0
  253. package/modules/oneKeyRtdProvider.js +98 -0
  254. package/modules/oneKeyRtdProvider.md +127 -0
  255. package/modules/open8BidAdapter.js +1 -1
  256. package/modules/openwebBidAdapter.js +1 -1
  257. package/modules/openxAnalyticsAdapter.js +5 -744
  258. package/modules/openxAnalyticsAdapter.md +4 -0
  259. package/modules/openxBidAdapter.js +3 -3
  260. package/modules/permutiveRtdProvider.js +55 -8
  261. package/modules/pixfutureBidAdapter.js +1 -1
  262. package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
  263. package/modules/priceFloors.js +1 -1
  264. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  265. package/modules/pubmaticBidAdapter.js +19 -1
  266. package/modules/pubwiseAnalyticsAdapter.js +1 -1
  267. package/modules/pubwiseBidAdapter.js +3 -3
  268. package/modules/pubxBidAdapter.js +1 -1
  269. package/modules/pubxaiAnalyticsAdapter.js +2 -2
  270. package/modules/quantcastIdSystem.js +1 -1
  271. package/modules/radsBidAdapter.js +1 -1
  272. package/modules/rasBidAdapter.js +8 -0
  273. package/modules/rasBidAdapter.md +14 -13
  274. package/modules/revcontentBidAdapter.js +1 -1
  275. package/modules/richaudienceBidAdapter.js +1 -1
  276. package/modules/rtbhouseBidAdapter.js +25 -1
  277. package/modules/schain.js +1 -1
  278. package/modules/seedtagBidAdapter.md +25 -56
  279. package/modules/showheroes-bsBidAdapter.js +1 -1
  280. package/modules/sizeMappingV2.js +1 -1
  281. package/modules/smaatoBidAdapter.js +2 -2
  282. package/modules/sonobiAnalyticsAdapter.js +1 -1
  283. package/modules/sonobiBidAdapter.js +4 -3
  284. package/modules/staqAnalyticsAdapter.js +1 -1
  285. package/modules/tappxBidAdapter.js +11 -2
  286. package/modules/targetVideoBidAdapter.js +1 -1
  287. package/modules/theAdxBidAdapter.js +2 -2
  288. package/modules/tpmnBidAdapter.js +1 -1
  289. package/modules/trionBidAdapter.js +2 -2
  290. package/modules/tripleliftBidAdapter.js +20 -1
  291. package/modules/trustpidSystem.js +6 -42
  292. package/modules/trustpidSystem.md +10 -10
  293. package/modules/underdogmediaBidAdapter.js +1 -1
  294. package/modules/userId/eids.js +26 -0
  295. package/modules/userId/userId.md +2 -2
  296. package/modules/vdoaiBidAdapter.js +1 -1
  297. package/modules/vidazooBidAdapter.js +7 -5
  298. package/modules/vidoomyBidAdapter.js +1 -1
  299. package/modules/viewability.js +14 -14
  300. package/modules/winrBidAdapter.js +1 -1
  301. package/modules/yahoosspBidAdapter.js +3 -3
  302. package/modules/yandexBidAdapter.js +1 -1
  303. package/modules/yieldmoBidAdapter.js +3 -3
  304. package/modules/yieldoneBidAdapter.js +2 -2
  305. package/modules/zeta_global_sspBidAdapter.js +24 -21
  306. package/package.json +3 -3
  307. package/src/Renderer.js +1 -1
  308. package/src/adloader.js +2 -1
  309. package/src/adserver.js +0 -56
  310. package/src/auction.js +60 -16
  311. package/src/bidfactory.js +1 -1
  312. package/src/native.js +75 -60
  313. package/src/refererDetection.js +12 -1
  314. package/src/sizeMapping.js +5 -7
  315. package/src/targeting.js +1 -1
  316. package/src/userSync.js +1 -1
  317. package/src/utils/promise.js +3 -1
  318. package/src/utils.js +27 -0
  319. package/src/video.js +5 -4
  320. package/src/videoCache.js +8 -2
  321. package/test/pages/instream.html +2 -2
  322. package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
  323. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  324. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  325. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  326. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  327. package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
  328. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  329. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  330. package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
  331. package/test/spec/modules/beopBidAdapter_spec.js +11 -0
  332. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  333. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  334. package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
  335. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  336. package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
  337. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  338. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  339. package/test/spec/modules/currency_spec.js +22 -0
  340. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  341. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  342. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  343. package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
  344. package/test/spec/modules/fpdModule_spec.js +2 -1
  345. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  346. package/test/spec/modules/imRtdProvider_spec.js +10 -5
  347. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  348. package/test/spec/modules/ixBidAdapter_spec.js +216 -123
  349. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  350. package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
  351. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
  352. package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
  353. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  354. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  355. package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
  356. package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
  357. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  358. package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
  359. package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
  360. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  361. package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
  362. package/test/spec/modules/trustpidSystem_spec.js +27 -45
  363. package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
  364. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
  365. package/test/spec/native_spec.js +257 -2
  366. package/test/spec/videoCache_spec.js +37 -7
@@ -1,653 +1,21 @@
1
1
  import { expect } from 'chai';
2
- import openxAdapter, {AUCTION_STATES} from 'modules/openxAnalyticsAdapter.js';
3
- import * as events from 'src/events.js';
4
- import CONSTANTS from 'src/constants.json';
2
+ import openxAdapter from 'modules/openxAnalyticsAdapter.js';
5
3
  import * as utils from 'src/utils.js';
6
- import { server } from 'test/mocks/xhr.js';
7
- import {find} from 'src/polyfill.js';
8
-
9
- const {
10
- EVENTS: { AUCTION_INIT, BID_REQUESTED, BID_RESPONSE, BID_TIMEOUT, BID_WON, AUCTION_END }
11
- } = CONSTANTS;
12
- const SLOT_LOADED = 'slotOnload';
13
- const CURRENT_TIME = 1586000000000;
14
4
 
15
5
  describe('openx analytics adapter', function() {
16
- describe('when validating the configuration', function () {
6
+ describe('deprecation message', function () {
17
7
  let spy;
18
8
  beforeEach(function () {
19
- spy = sinon.spy(utils, 'logError');
9
+ spy = sinon.spy(utils, 'logWarn');
20
10
  });
21
11
 
22
12
  afterEach(function() {
23
- utils.logError.restore();
13
+ utils.logWarn.restore();
24
14
  });
25
15
 
26
- it('should require organization id when no configuration is passed', function() {
16
+ it('should warn on enable', function() {
27
17
  openxAdapter.enableAnalytics();
28
- expect(spy.firstCall.args[0]).to.match(/publisherPlatformId/);
29
- expect(spy.firstCall.args[0]).to.match(/to exist/);
30
- });
31
-
32
- it('should require publisher id when no orgId is passed', function() {
33
- openxAdapter.enableAnalytics({
34
- provider: 'openx',
35
- options: {
36
- publisherAccountId: 12345
37
- }
38
- });
39
- expect(spy.firstCall.args[0]).to.match(/publisherPlatformId/);
40
- expect(spy.firstCall.args[0]).to.match(/to exist/);
41
- });
42
-
43
- it('should validate types', function() {
44
- openxAdapter.enableAnalytics({
45
- provider: 'openx',
46
- options: {
47
- orgId: 'test platformId',
48
- sampling: 'invalid-float'
49
- }
50
- });
51
-
52
- expect(spy.firstCall.args[0]).to.match(/sampling/);
53
- expect(spy.firstCall.args[0]).to.match(/type 'number'/);
54
- });
55
- });
56
-
57
- describe('when tracking analytic events', function () {
58
- const AD_UNIT_CODE = 'test-div-1';
59
- const SLOT_LOAD_WAIT_TIME = 10;
60
-
61
- const DEFAULT_V2_ANALYTICS_CONFIG = {
62
- orgId: 'test-org-id',
63
- publisherAccountId: 123,
64
- publisherPlatformId: 'test-platform-id',
65
- configId: 'my_config',
66
- optimizerConfig: 'my my optimizer',
67
- sample: 1.0,
68
- payloadWaitTime: SLOT_LOAD_WAIT_TIME,
69
- payloadWaitTimePadding: SLOT_LOAD_WAIT_TIME
70
- };
71
-
72
- const auctionInit = {
73
- auctionId: 'test-auction-id',
74
- timestamp: CURRENT_TIME,
75
- timeout: 3000,
76
- adUnitCodes: [AD_UNIT_CODE],
77
- };
78
-
79
- const bidRequestedOpenX = {
80
- auctionId: 'test-auction-id',
81
- auctionStart: CURRENT_TIME,
82
- timeout: 2000,
83
- bids: [
84
- {
85
- adUnitCode: AD_UNIT_CODE,
86
- bidId: 'test-openx-request-id',
87
- bidder: 'openx',
88
- params: { unit: 'test-openx-ad-unit-id' },
89
- userId: {
90
- tdid: 'test-tradedesk-id',
91
- empty_id: '',
92
- null_id: null,
93
- bla_id: '',
94
- digitrustid: { data: { id: '1' } },
95
- lipbid: { lipb: '2' }
96
- }
97
- }
98
- ],
99
- start: CURRENT_TIME + 10
100
- };
101
-
102
- const bidRequestedCloseX = {
103
- auctionId: 'test-auction-id',
104
- auctionStart: CURRENT_TIME,
105
- timeout: 1000,
106
- bids: [
107
- {
108
- adUnitCode: AD_UNIT_CODE,
109
- bidId: 'test-closex-request-id',
110
- bidder: 'closex',
111
- params: { unit: 'test-closex-ad-unit-id' },
112
- userId: {
113
- bla_id: '2',
114
- tdid: 'test-tradedesk-id'
115
- }
116
- }
117
- ],
118
- start: CURRENT_TIME + 20
119
- };
120
-
121
- const bidResponseOpenX = {
122
- adUnitCode: AD_UNIT_CODE,
123
- cpm: 0.5,
124
- netRevenue: true,
125
- requestId: 'test-openx-request-id',
126
- mediaType: 'banner',
127
- width: 300,
128
- height: 250,
129
- adId: 'test-openx-ad-id',
130
- auctionId: 'test-auction-id',
131
- creativeId: 'openx-crid',
132
- currency: 'USD',
133
- timeToRespond: 100,
134
- responseTimestamp: CURRENT_TIME + 30,
135
- ts: 'test-openx-ts'
136
- };
137
-
138
- const bidResponseCloseX = {
139
- adUnitCode: AD_UNIT_CODE,
140
- cpm: 0.3,
141
- netRevenue: true,
142
- requestId: 'test-closex-request-id',
143
- mediaType: 'video',
144
- width: 300,
145
- height: 250,
146
- adId: 'test-closex-ad-id',
147
- auctionId: 'test-auction-id',
148
- creativeId: 'closex-crid',
149
- currency: 'USD',
150
- timeToRespond: 200,
151
- dealId: 'test-closex-deal-id',
152
- responseTimestamp: CURRENT_TIME + 40,
153
- ts: 'test-closex-ts'
154
- };
155
-
156
- const bidTimeoutOpenX = {
157
- 0: {
158
- adUnitCode: AD_UNIT_CODE,
159
- auctionId: 'test-auction-id',
160
- bidId: 'test-openx-request-id'
161
- }};
162
-
163
- const bidTimeoutCloseX = {
164
- 0: {
165
- adUnitCode: AD_UNIT_CODE,
166
- auctionId: 'test-auction-id',
167
- bidId: 'test-closex-request-id'
168
- }
169
- };
170
-
171
- const bidWonOpenX = {
172
- requestId: 'test-openx-request-id',
173
- adId: 'test-openx-ad-id',
174
- adUnitCode: AD_UNIT_CODE,
175
- auctionId: 'test-auction-id'
176
- };
177
-
178
- const auctionEnd = {
179
- auctionId: 'test-auction-id',
180
- timestamp: CURRENT_TIME,
181
- auctionEnd: CURRENT_TIME + 100,
182
- timeout: 3000,
183
- adUnitCodes: [AD_UNIT_CODE],
184
- };
185
-
186
- const bidWonCloseX = {
187
- requestId: 'test-closex-request-id',
188
- adId: 'test-closex-ad-id',
189
- adUnitCode: AD_UNIT_CODE,
190
- auctionId: 'test-auction-id'
191
- };
192
-
193
- function simulateAuction(events) {
194
- let highestBid;
195
-
196
- events.forEach(event => {
197
- const [eventType, args] = event;
198
- if (eventType === BID_RESPONSE) {
199
- highestBid = highestBid || args;
200
- if (highestBid.cpm < args.cpm) {
201
- highestBid = args;
202
- }
203
- }
204
-
205
- if (eventType === SLOT_LOADED) {
206
- const slotLoaded = {
207
- slot: {
208
- getAdUnitPath: () => {
209
- return '/12345678/test_ad_unit';
210
- },
211
- getSlotElementId: () => {
212
- return AD_UNIT_CODE;
213
- },
214
- getTargeting: (key) => {
215
- if (key === 'hb_adid') {
216
- return highestBid ? [highestBid.adId] : [];
217
- } else {
218
- return [];
219
- }
220
- }
221
- }
222
- };
223
- openxAdapter.track({ eventType, args: slotLoaded });
224
- } else {
225
- openxAdapter.track({ eventType, args });
226
- }
227
- });
228
- }
229
-
230
- let clock;
231
-
232
- beforeEach(function() {
233
- sinon.stub(events, 'getEvents').returns([]);
234
- clock = sinon.useFakeTimers(CURRENT_TIME);
235
- });
236
-
237
- afterEach(function() {
238
- events.getEvents.restore();
239
- clock.restore();
240
- });
241
-
242
- describe('when there is an auction', function () {
243
- let auction;
244
- let auction2;
245
- beforeEach(function () {
246
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
247
-
248
- simulateAuction([
249
- [AUCTION_INIT, auctionInit],
250
- [SLOT_LOADED]
251
- ]);
252
-
253
- simulateAuction([
254
- [AUCTION_INIT, {...auctionInit, auctionId: 'second-auction-id'}],
255
- [SLOT_LOADED]
256
- ]);
257
-
258
- clock.tick(SLOT_LOAD_WAIT_TIME);
259
- auction = JSON.parse(server.requests[0].requestBody)[0];
260
- auction2 = JSON.parse(server.requests[1].requestBody)[0];
261
- });
262
-
263
- afterEach(function () {
264
- openxAdapter.reset();
265
- openxAdapter.disableAnalytics();
266
- });
267
-
268
- it('should track auction start time', function () {
269
- expect(auction.startTime).to.equal(auctionInit.timestamp);
270
- });
271
-
272
- it('should track auction time limit', function () {
273
- expect(auction.timeLimit).to.equal(auctionInit.timeout);
274
- });
275
-
276
- it('should track the \'default\' test code', function () {
277
- expect(auction.testCode).to.equal('default');
278
- });
279
-
280
- it('should track auction count', function () {
281
- expect(auction.auctionOrder).to.equal(1);
282
- expect(auction2.auctionOrder).to.equal(2);
283
- });
284
-
285
- it('should track the orgId', function () {
286
- expect(auction.orgId).to.equal(DEFAULT_V2_ANALYTICS_CONFIG.orgId);
287
- });
288
-
289
- it('should track the orgId', function () {
290
- expect(auction.publisherPlatformId).to.equal(DEFAULT_V2_ANALYTICS_CONFIG.publisherPlatformId);
291
- });
292
-
293
- it('should track the orgId', function () {
294
- expect(auction.publisherAccountId).to.equal(DEFAULT_V2_ANALYTICS_CONFIG.publisherAccountId);
295
- });
296
-
297
- it('should track the optimizerConfig', function () {
298
- expect(auction.optimizerConfig).to.equal(DEFAULT_V2_ANALYTICS_CONFIG.optimizerConfig);
299
- });
300
-
301
- it('should track the configId', function () {
302
- expect(auction.configId).to.equal(DEFAULT_V2_ANALYTICS_CONFIG.configId);
303
- });
304
-
305
- it('should track the auction Id', function () {
306
- expect(auction.auctionId).to.equal(auctionInit.auctionId);
307
- });
308
- });
309
-
310
- describe('when there is a custom test code', function () {
311
- let auction;
312
- beforeEach(function () {
313
- openxAdapter.enableAnalytics({
314
- options: {
315
- ...DEFAULT_V2_ANALYTICS_CONFIG,
316
- testCode: 'test-code'
317
- }
318
- });
319
-
320
- simulateAuction([
321
- [AUCTION_INIT, auctionInit],
322
- [SLOT_LOADED],
323
- ]);
324
- clock.tick(SLOT_LOAD_WAIT_TIME);
325
- auction = JSON.parse(server.requests[0].requestBody)[0];
326
- });
327
-
328
- afterEach(function () {
329
- openxAdapter.reset();
330
- openxAdapter.disableAnalytics();
331
- });
332
-
333
- it('should track the custom test code', function () {
334
- expect(auction.testCode).to.equal('test-code');
335
- });
336
- });
337
-
338
- describe('when there is campaign (utm) data', function () {
339
- let auction;
340
- beforeEach(function () {
341
-
342
- });
343
-
344
- afterEach(function () {
345
- openxAdapter.reset();
346
- utils.getWindowLocation.restore();
347
- openxAdapter.disableAnalytics();
348
- });
349
-
350
- it('should track values from query params when they exist', function () {
351
- sinon.stub(utils, 'getWindowLocation').returns({search: '?' +
352
- 'utm_campaign=test%20campaign-name&' +
353
- 'utm_source=test-source&' +
354
- 'utm_medium=test-medium&'
355
- });
356
-
357
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
358
-
359
- simulateAuction([
360
- [AUCTION_INIT, auctionInit],
361
- [SLOT_LOADED],
362
- ]);
363
- clock.tick(SLOT_LOAD_WAIT_TIME);
364
- auction = JSON.parse(server.requests[0].requestBody)[0];
365
-
366
- // ensure that value are URI decoded
367
- expect(auction.campaign.name).to.equal('test campaign-name');
368
- expect(auction.campaign.source).to.equal('test-source');
369
- expect(auction.campaign.medium).to.equal('test-medium');
370
- expect(auction.campaign.content).to.be.undefined;
371
- expect(auction.campaign.term).to.be.undefined;
372
- });
373
-
374
- it('should override query params if configuration parameters exist', function () {
375
- sinon.stub(utils, 'getWindowLocation').returns({search: '?' +
376
- 'utm_campaign=test-campaign-name&' +
377
- 'utm_source=test-source&' +
378
- 'utm_medium=test-medium&' +
379
- 'utm_content=test-content&' +
380
- 'utm_term=test-term'
381
- });
382
-
383
- openxAdapter.enableAnalytics({
384
- options: {
385
- ...DEFAULT_V2_ANALYTICS_CONFIG,
386
- campaign: {
387
- name: 'test-config-name',
388
- source: 'test-config-source',
389
- medium: 'test-config-medium'
390
- }
391
- }
392
- });
393
-
394
- simulateAuction([
395
- [AUCTION_INIT, auctionInit],
396
- [SLOT_LOADED],
397
- ]);
398
- clock.tick(SLOT_LOAD_WAIT_TIME);
399
- auction = JSON.parse(server.requests[0].requestBody)[0];
400
-
401
- expect(auction.campaign.name).to.equal('test-config-name');
402
- expect(auction.campaign.source).to.equal('test-config-source');
403
- expect(auction.campaign.medium).to.equal('test-config-medium');
404
- expect(auction.campaign.content).to.equal('test-content');
405
- expect(auction.campaign.term).to.equal('test-term');
406
- });
407
- });
408
-
409
- describe('when there are bid requests', function () {
410
- let auction;
411
- let openxBidder;
412
- let closexBidder;
413
-
414
- beforeEach(function () {
415
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
416
-
417
- simulateAuction([
418
- [AUCTION_INIT, auctionInit],
419
- [BID_REQUESTED, bidRequestedCloseX],
420
- [BID_REQUESTED, bidRequestedOpenX],
421
- [SLOT_LOADED],
422
- ]);
423
- clock.tick(SLOT_LOAD_WAIT_TIME * 2);
424
- auction = JSON.parse(server.requests[0].requestBody)[0];
425
- openxBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx');
426
- closexBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'closex');
427
- });
428
-
429
- afterEach(function () {
430
- openxAdapter.reset();
431
- openxAdapter.disableAnalytics();
432
- });
433
-
434
- it('should track the bidder', function () {
435
- expect(openxBidder.bidder).to.equal('openx');
436
- expect(closexBidder.bidder).to.equal('closex');
437
- });
438
-
439
- it('should track the adunit code', function () {
440
- expect(auction.adUnits[0].code).to.equal(AD_UNIT_CODE);
441
- });
442
-
443
- it('should track the user ids', function () {
444
- expect(auction.userIdProviders).to.deep.equal(['bla_id', 'digitrustid', 'lipbid', 'tdid']);
445
- });
446
-
447
- it('should not have responded', function () {
448
- expect(openxBidder.hasBidderResponded).to.equal(false);
449
- expect(closexBidder.hasBidderResponded).to.equal(false);
450
- });
451
- });
452
-
453
- describe('when there are request timeouts', function () {
454
- let auction;
455
- let openxBidRequest;
456
- let closexBidRequest;
457
-
458
- beforeEach(function () {
459
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
460
-
461
- simulateAuction([
462
- [AUCTION_INIT, auctionInit],
463
- [BID_REQUESTED, bidRequestedCloseX],
464
- [BID_REQUESTED, bidRequestedOpenX],
465
- [BID_TIMEOUT, bidTimeoutCloseX],
466
- [BID_TIMEOUT, bidTimeoutOpenX],
467
- [AUCTION_END, auctionEnd]
468
- ]);
469
- clock.tick(SLOT_LOAD_WAIT_TIME * 2);
470
- auction = JSON.parse(server.requests[0].requestBody)[0];
471
-
472
- openxBidRequest = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx');
473
- closexBidRequest = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'closex');
474
- });
475
-
476
- afterEach(function () {
477
- openxAdapter.reset();
478
- openxAdapter.disableAnalytics();
479
- });
480
-
481
- it('should track the timeout', function () {
482
- expect(openxBidRequest.timedOut).to.equal(true);
483
- expect(closexBidRequest.timedOut).to.equal(true);
484
- });
485
-
486
- it('should track the timeout value ie timeLimit', function () {
487
- expect(openxBidRequest.timeLimit).to.equal(2000);
488
- expect(closexBidRequest.timeLimit).to.equal(1000);
489
- });
490
- });
491
-
492
- describe('when there are bid responses', function () {
493
- let auction;
494
- let openxBidResponse;
495
- let closexBidResponse;
496
-
497
- beforeEach(function () {
498
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
499
-
500
- simulateAuction([
501
- [AUCTION_INIT, auctionInit],
502
- [BID_REQUESTED, bidRequestedCloseX],
503
- [BID_REQUESTED, bidRequestedOpenX],
504
- [BID_RESPONSE, bidResponseOpenX],
505
- [BID_RESPONSE, bidResponseCloseX],
506
- [AUCTION_END, auctionEnd]
507
- ]);
508
-
509
- clock.tick(SLOT_LOAD_WAIT_TIME * 2);
510
- auction = JSON.parse(server.requests[0].requestBody)[0];
511
-
512
- openxBidResponse = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx').bidResponses[0];
513
- closexBidResponse = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'closex').bidResponses[0];
514
- });
515
-
516
- afterEach(function () {
517
- openxAdapter.reset();
518
- openxAdapter.disableAnalytics();
519
- });
520
-
521
- it('should track the cpm in microCPM', function () {
522
- expect(openxBidResponse.microCpm).to.equal(bidResponseOpenX.cpm * 1000000);
523
- expect(closexBidResponse.microCpm).to.equal(bidResponseCloseX.cpm * 1000000);
524
- });
525
-
526
- it('should track if the bid is in net revenue', function () {
527
- expect(openxBidResponse.netRevenue).to.equal(bidResponseOpenX.netRevenue);
528
- expect(closexBidResponse.netRevenue).to.equal(bidResponseCloseX.netRevenue);
529
- });
530
-
531
- it('should track the mediaType', function () {
532
- expect(openxBidResponse.mediaType).to.equal(bidResponseOpenX.mediaType);
533
- expect(closexBidResponse.mediaType).to.equal(bidResponseCloseX.mediaType);
534
- });
535
-
536
- it('should track the currency', function () {
537
- expect(openxBidResponse.currency).to.equal(bidResponseOpenX.currency);
538
- expect(closexBidResponse.currency).to.equal(bidResponseCloseX.currency);
539
- });
540
-
541
- it('should track the ad width and height', function () {
542
- expect(openxBidResponse.width).to.equal(bidResponseOpenX.width);
543
- expect(openxBidResponse.height).to.equal(bidResponseOpenX.height);
544
-
545
- expect(closexBidResponse.width).to.equal(bidResponseCloseX.width);
546
- expect(closexBidResponse.height).to.equal(bidResponseCloseX.height);
547
- });
548
-
549
- it('should track the bid dealId', function () {
550
- expect(openxBidResponse.dealId).to.equal(bidResponseOpenX.dealId); // no deal id defined
551
- expect(closexBidResponse.dealId).to.equal(bidResponseCloseX.dealId); // deal id defined
552
- });
553
-
554
- it('should track the bid\'s latency', function () {
555
- expect(openxBidResponse.latency).to.equal(bidResponseOpenX.timeToRespond);
556
- expect(closexBidResponse.latency).to.equal(bidResponseCloseX.timeToRespond);
557
- });
558
-
559
- it('should not have any bid winners', function () {
560
- expect(openxBidResponse.winner).to.equal(false);
561
- expect(closexBidResponse.winner).to.equal(false);
562
- });
563
-
564
- it('should track the bid currency', function () {
565
- expect(openxBidResponse.currency).to.equal(bidResponseOpenX.currency);
566
- expect(closexBidResponse.currency).to.equal(bidResponseCloseX.currency);
567
- });
568
-
569
- it('should track the auction end time', function () {
570
- expect(auction.endTime).to.equal(auctionEnd.auctionEnd);
571
- });
572
-
573
- it('should track that the auction ended', function () {
574
- expect(auction.state).to.equal(AUCTION_STATES.ENDED);
575
- });
576
- });
577
-
578
- describe('when there are bidder wins', function () {
579
- let auction;
580
- beforeEach(function () {
581
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
582
-
583
- simulateAuction([
584
- [AUCTION_INIT, auctionInit],
585
- [BID_REQUESTED, bidRequestedOpenX],
586
- [BID_REQUESTED, bidRequestedCloseX],
587
- [BID_RESPONSE, bidResponseOpenX],
588
- [BID_RESPONSE, bidResponseCloseX],
589
- [AUCTION_END, auctionEnd],
590
- [BID_WON, bidWonOpenX]
591
- ]);
592
-
593
- clock.tick(SLOT_LOAD_WAIT_TIME * 2);
594
- auction = JSON.parse(server.requests[0].requestBody)[0];
595
- });
596
-
597
- afterEach(function () {
598
- openxAdapter.reset();
599
- openxAdapter.disableAnalytics();
600
- });
601
-
602
- it('should track that bidder as the winner', function () {
603
- let openxBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx');
604
- expect(openxBidder.bidResponses[0]).to.contain({winner: true});
605
- });
606
-
607
- it('should track that bidder as the losers', function () {
608
- let closexBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'closex');
609
- expect(closexBidder.bidResponses[0]).to.contain({winner: false});
610
- });
611
- });
612
-
613
- describe('when a winning bid renders', function () {
614
- let auction;
615
- beforeEach(function () {
616
- openxAdapter.enableAnalytics({options: DEFAULT_V2_ANALYTICS_CONFIG});
617
-
618
- simulateAuction([
619
- [AUCTION_INIT, auctionInit],
620
- [BID_REQUESTED, bidRequestedOpenX],
621
- [BID_REQUESTED, bidRequestedCloseX],
622
- [BID_RESPONSE, bidResponseOpenX],
623
- [BID_RESPONSE, bidResponseCloseX],
624
- [AUCTION_END, auctionEnd],
625
- [BID_WON, bidWonOpenX],
626
- [SLOT_LOADED]
627
- ]);
628
-
629
- clock.tick(SLOT_LOAD_WAIT_TIME * 2);
630
- auction = JSON.parse(server.requests[0].requestBody)[0];
631
- });
632
-
633
- afterEach(function () {
634
- openxAdapter.reset();
635
- openxAdapter.disableAnalytics();
636
- });
637
-
638
- it('should track that winning bid rendered', function () {
639
- let openxBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx');
640
- expect(openxBidder.bidResponses[0]).to.contain({rendered: true});
641
- });
642
-
643
- it('should track that winning bid render time', function () {
644
- let openxBidder = find(auction.adUnits[0].bidRequests, bidderRequest => bidderRequest.bidder === 'openx');
645
- expect(openxBidder.bidResponses[0]).to.contain({renderTime: CURRENT_TIME});
646
- });
647
-
648
- it('should track that the auction completed', function () {
649
- expect(auction.state).to.equal(AUCTION_STATES.COMPLETED);
650
- });
18
+ expect(spy.firstCall.args[0]).to.match(/OpenX Analytics has been deprecated/);
651
19
  });
652
20
  });
653
21
  });