prebid.js 7.26.0 → 7.28.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 (334) hide show
  1. package/.github/workflows/issue_tracker.yml +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/adWMGAnalyticsAdapter.js +1 -1
  5. package/dist/adagioAnalyticsAdapter.js +1 -1
  6. package/dist/adagioBidAdapter.js +1 -1
  7. package/dist/adbookpspBidAdapter.js +1 -1
  8. package/dist/adgenerationBidAdapter.js +1 -1
  9. package/dist/adhashBidAdapter.js +1 -1
  10. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxAdServerVideo.js +1 -1
  12. package/dist/adlooxAnalyticsAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/admaticBidAdapter.js +1 -1
  15. package/dist/admixerBidAdapter.js +1 -1
  16. package/dist/adomikAnalyticsAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgAnalyticsAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  22. package/dist/aidemBidAdapter.js +1 -0
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/analyticsAdapter.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/atsAnalyticsAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/bidViewability.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/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/browsiRtdProvider.js +1 -1
  39. package/dist/bucksenseBidAdapter.js +1 -1
  40. package/dist/byDataAnalyticsAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/concertAnalyticsAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/datablocksAnalyticsAdapter.js +1 -1
  54. package/dist/dependencies.json +6 -0
  55. package/dist/dfpAdServerVideo.js +1 -1
  56. package/dist/discoveryBidAdapter.js +1 -1
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/eplanningAnalyticsAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/fintezaAnalyticsAdapter.js +1 -1
  62. package/dist/fluctBidAdapter.js +1 -1
  63. package/dist/ftrackIdSystem.js +1 -1
  64. package/dist/gdprEnforcement.js +1 -1
  65. package/dist/genericAnalyticsAdapter.js +1 -0
  66. package/dist/geoedgeRtdProvider.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/glomexBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/googleAnalyticsAdapter.js +1 -1
  72. package/dist/gravitoIdSystem.js +1 -1
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  76. package/dist/gumgumBidAdapter.js +1 -1
  77. package/dist/h12mediaBidAdapter.js +1 -1
  78. package/dist/hadronAnalyticsAdapter.js +1 -1
  79. package/dist/id5AnalyticsAdapter.js +1 -1
  80. package/dist/id5IdSystem.js +1 -1
  81. package/dist/impactifyBidAdapter.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/jwplayerRtdProvider.js +1 -1
  89. package/dist/kargoAnalyticsAdapter.js +1 -1
  90. package/dist/kargoBidAdapter.js +1 -1
  91. package/dist/kinessoIdSystem.js +1 -1
  92. package/dist/konduitAnalyticsAdapter.js +1 -1
  93. package/dist/kueezBidAdapter.js +1 -1
  94. package/dist/kueezRtbBidAdapter.js +1 -1
  95. package/dist/lassoBidAdapter.js +1 -1
  96. package/dist/lifestreetBidAdapter.js +1 -1
  97. package/dist/limelightDigitalBidAdapter.js +1 -1
  98. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  99. package/dist/liveIntentIdSystem.js +1 -1
  100. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  101. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  102. package/dist/logicadBidAdapter.js +1 -1
  103. package/dist/loglyliftBidAdapter.js +1 -1
  104. package/dist/lotamePanoramaIdSystem.js +1 -1
  105. package/dist/magniteAnalyticsAdapter.js +1 -1
  106. package/dist/malltvAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  108. package/dist/marsmediaBidAdapter.js +1 -1
  109. package/dist/mediafuseBidAdapter.js +1 -1
  110. package/dist/mediagoBidAdapter.js +1 -1
  111. package/dist/medianetAnalyticsAdapter.js +1 -1
  112. package/dist/mediasquareBidAdapter.js +1 -1
  113. package/dist/mgidBidAdapter.js +1 -1
  114. package/dist/minutemediaBidAdapter.js +1 -1
  115. package/dist/nexx360BidAdapter.js +1 -1
  116. package/dist/not-for-prod/prebid.js +206 -202
  117. package/dist/oguryBidAdapter.js +1 -1
  118. package/dist/onetagBidAdapter.js +1 -1
  119. package/dist/ooloAnalyticsAdapter.js +1 -1
  120. package/dist/openxAnalyticsAdapter.js +1 -1
  121. package/dist/optimonAnalyticsAdapter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/parrableIdSystem.js +1 -1
  124. package/dist/pbsExtensions.js +1 -1
  125. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/prebid-core.js +2 -2
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  130. package/dist/pubCommonId.js +1 -1
  131. package/dist/pubProvidedIdSystem.js +1 -1
  132. package/dist/publinkIdSystem.js +1 -1
  133. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  134. package/dist/pubmaticBidAdapter.js +1 -1
  135. package/dist/pubperfAnalyticsAdapter.js +1 -1
  136. package/dist/pubstackAnalyticsAdapter.js +1 -1
  137. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  138. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  139. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  140. package/dist/pxyzBidAdapter.js +1 -1
  141. package/dist/quantcastBidAdapter.js +1 -1
  142. package/dist/quantcastIdSystem.js +1 -1
  143. package/dist/rasBidAdapter.js +1 -1
  144. package/dist/readpeakBidAdapter.js +1 -1
  145. package/dist/realvuAnalyticsAdapter.js +1 -1
  146. package/dist/redtramBidAdapter.js +1 -0
  147. package/dist/relaidoBidAdapter.js +1 -1
  148. package/dist/relevantAnalyticsAdapter.js +1 -1
  149. package/dist/rhythmoneBidAdapter.js +1 -1
  150. package/dist/riseBidAdapter.js +1 -1
  151. package/dist/rivrAnalyticsAdapter.js +1 -1
  152. package/dist/roxotAnalyticsAdapter.js +1 -1
  153. package/dist/rtbhouseBidAdapter.js +1 -1
  154. package/dist/rtdModule.js +1 -1
  155. package/dist/rubiconAnalyticsAdapter.js +1 -1
  156. package/dist/rubiconBidAdapter.js +1 -1
  157. package/dist/s2sTesting.js +1 -1
  158. package/dist/scaleableAnalyticsAdapter.js +1 -1
  159. package/dist/schain.js +1 -1
  160. package/dist/seedingAllianceBidAdapter.js +1 -1
  161. package/dist/seedtagBidAdapter.js +1 -1
  162. package/dist/sharedIdSystem.js +1 -1
  163. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  164. package/dist/sharethroughBidAdapter.js +1 -1
  165. package/dist/shinezBidAdapter.js +1 -1
  166. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  167. package/dist/smaatoBidAdapter.js +1 -1
  168. package/dist/smartadserverBidAdapter.js +1 -1
  169. package/dist/smartxBidAdapter.js +1 -1
  170. package/dist/smilewantedBidAdapter.js +1 -1
  171. package/dist/sonobiAnalyticsAdapter.js +1 -1
  172. package/dist/sonobiBidAdapter.js +1 -1
  173. package/dist/sovrnAnalyticsAdapter.js +1 -1
  174. package/dist/sovrnBidAdapter.js +1 -1
  175. package/dist/sspBCBidAdapter.js +1 -1
  176. package/dist/staqAnalyticsAdapter.js +1 -1
  177. package/dist/sublimeBidAdapter.js +1 -1
  178. package/dist/synacormediaBidAdapter.js +1 -1
  179. package/dist/taboolaBidAdapter.js +1 -1
  180. package/dist/tapadIdSystem.js +1 -1
  181. package/dist/targetVideoBidAdapter.js +1 -1
  182. package/dist/teadsBidAdapter.js +1 -1
  183. package/dist/teadsIdSystem.js +1 -1
  184. package/dist/terceptAnalyticsAdapter.js +1 -1
  185. package/dist/trionBidAdapter.js +1 -1
  186. package/dist/tripleliftBidAdapter.js +1 -1
  187. package/dist/ttdBidAdapter.js +1 -1
  188. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  189. package/dist/underdogmediaBidAdapter.js +1 -1
  190. package/dist/undertoneBidAdapter.js +1 -1
  191. package/dist/userId.js +1 -1
  192. package/dist/vidazooBidAdapter.js +1 -1
  193. package/dist/videobyteBidAdapter.js +1 -1
  194. package/dist/visxBidAdapter.js +1 -1
  195. package/dist/vuukleBidAdapter.js +1 -1
  196. package/dist/weboramaRtdProvider.js +1 -1
  197. package/dist/widespaceBidAdapter.js +1 -1
  198. package/dist/winrBidAdapter.js +1 -1
  199. package/dist/yahoosspBidAdapter.js +1 -1
  200. package/dist/yandexBidAdapter.js +1 -1
  201. package/dist/yieldlabBidAdapter.js +1 -1
  202. package/dist/yieldliftBidAdapter.js +1 -1
  203. package/dist/yieldmoBidAdapter.js +1 -1
  204. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  205. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  206. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  207. package/integrationExamples/gpt/growthcode.html +134 -0
  208. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  209. package/libraries/ortb2.5StrictTranslator/dsl.js +54 -0
  210. package/libraries/ortb2.5StrictTranslator/spec.js +81 -0
  211. package/libraries/ortb2.5StrictTranslator/translator.js +37 -0
  212. package/libraries/ortb2.5Translator/translator.js +82 -0
  213. package/modules/33acrossIdSystem.js +3 -0
  214. package/modules/adhashBidAdapter.js +115 -30
  215. package/modules/adhashBidAdapter.md +1 -3
  216. package/modules/admaticBidAdapter.js +10 -1
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/browsiRtdProvider.js +6 -4
  221. package/modules/bucksenseBidAdapter.js +1 -1
  222. package/modules/criteoBidAdapter.js +3 -3
  223. package/modules/discoveryBidAdapter.js +3 -0
  224. package/modules/eplanningBidAdapter.js +2 -6
  225. package/modules/fluctBidAdapter.js +5 -0
  226. package/modules/gdprEnforcement.js +26 -24
  227. package/modules/genericAnalyticsAdapter.js +157 -0
  228. package/modules/geoedgeRtdProvider.js +22 -0
  229. package/modules/glomexBidAdapter.js +2 -0
  230. package/modules/gravitoIdSystem.js +3 -4
  231. package/modules/gridBidAdapter.js +1 -1
  232. package/modules/gridNMBidAdapter.js +1 -1
  233. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  234. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  235. package/modules/impactifyBidAdapter.js +19 -1
  236. package/modules/jwplayerRtdProvider.js +1 -2
  237. package/modules/kargoBidAdapter.js +1 -1
  238. package/modules/lassoBidAdapter.js +8 -4
  239. package/modules/limelightDigitalBidAdapter.js +1 -1
  240. package/modules/liveIntentIdSystem.js +1 -2
  241. package/modules/mediagoBidAdapter.js +2 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nexx360BidAdapter.js +264 -138
  244. package/modules/openxBidAdapter.md +15 -14
  245. package/modules/pubCommonId.js +2 -1
  246. package/modules/pubProvidedIdSystem.js +2 -0
  247. package/modules/rasBidAdapter.js +8 -3
  248. package/modules/rasBidAdapter.md +16 -15
  249. package/modules/redtramBidAdapter.js +155 -0
  250. package/modules/redtramBidAdapter.md +33 -0
  251. package/modules/riseBidAdapter.js +15 -0
  252. package/modules/riseBidAdapter.md +3 -3
  253. package/modules/rtbhouseBidAdapter.js +90 -29
  254. package/modules/rubiconBidAdapter.js +2 -1
  255. package/modules/seedtagBidAdapter.js +67 -56
  256. package/modules/seedtagBidAdapter.md +60 -0
  257. package/modules/sharedIdSystem.js +3 -1
  258. package/modules/smartxBidAdapter.js +1 -1
  259. package/modules/smnBidAdapter.md +52 -0
  260. package/modules/taboolaBidAdapter.js +20 -7
  261. package/modules/tripleliftBidAdapter.js +1 -1
  262. package/modules/ttdBidAdapter.js +4 -0
  263. package/modules/vidazooBidAdapter.js +31 -8
  264. package/modules/yandexBidAdapter.js +85 -19
  265. package/modules/yandexBidAdapter.md +7 -7
  266. package/modules/yieldlabBidAdapter.js +10 -4
  267. package/modules/yieldliftBidAdapter.js +3 -3
  268. package/package.json +2 -2
  269. package/src/auction.js +30 -4
  270. package/src/consentHandler.js +8 -0
  271. package/src/constants.json +2 -1
  272. package/src/events.js +4 -0
  273. package/src/native.js +31 -20
  274. package/src/refererDetection.js +6 -1
  275. package/src/storageManager.js +6 -3
  276. package/test/helpers/analytics.js +34 -0
  277. package/test/helpers/refererDetectionHelper.js +88 -0
  278. package/test/mocks/analyticsStub.js +3 -1
  279. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  280. package/test/spec/auctionmanager_spec.js +119 -1
  281. package/test/spec/modules/33acrossIdSystem_spec.js +4 -1
  282. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  283. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  284. package/test/spec/modules/adhashBidAdapter_spec.js +65 -11
  285. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  286. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  287. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  288. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  289. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  290. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  291. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  292. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  293. package/test/spec/modules/fpdModule_spec.js +1 -1
  294. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  295. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  296. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  297. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  298. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  299. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  300. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  301. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  302. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  303. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  304. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  305. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  306. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  307. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  308. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  309. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  310. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  311. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  312. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  313. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  314. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  315. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  316. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  317. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  318. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  319. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  320. package/test/spec/modules/taboolaBidAdapter_spec.js +39 -0
  321. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  322. package/test/spec/modules/ttdBidAdapter_spec.js +50 -9
  323. package/test/spec/modules/vidazooBidAdapter_spec.js +173 -27
  324. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  325. package/test/spec/modules/yieldlabBidAdapter_spec.js +49 -20
  326. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  327. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  328. package/test/spec/native_spec.js +68 -56
  329. package/test/spec/ortb2.5StrictTranslator/dsl_spec.js +137 -0
  330. package/test/spec/ortb2.5StrictTranslator/spec_spec.js +358 -0
  331. package/test/spec/ortb2.5StrictTranslator/translator_spec.js +16 -0
  332. package/test/spec/ortb2.5Translator/translator_spec.js +64 -0
  333. package/test/spec/refererDetection_spec.js +46 -95
  334. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -1,4 +1,4 @@
1
- import {expect} from 'chai';
1
+ import { expect } from 'chai';
2
2
  import {
3
3
  spec as adapter,
4
4
  SUPPORTED_ID_SYSTEMS,
@@ -15,8 +15,9 @@ import {
15
15
  getVidazooSessionId,
16
16
  } from 'modules/vidazooBidAdapter.js';
17
17
  import * as utils from 'src/utils.js';
18
- import {version} from 'package.json';
19
- import {useFakeTimers} from 'sinon';
18
+ import { version } from 'package.json';
19
+ import { useFakeTimers } from 'sinon';
20
+ import { BANNER, VIDEO } from '../../../src/mediaTypes';
20
21
 
21
22
  const SUB_DOMAIN = 'openrtb';
22
23
 
@@ -38,9 +39,47 @@ const BID = {
38
39
  'sizes': [[300, 250], [300, 600]],
39
40
  'bidderRequestId': '1fdb5ff1b6eaa7',
40
41
  'requestId': 'b0777d85-d061-450e-9bc7-260dd54bbb7a',
41
- 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc'
42
+ 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
43
+ 'mediaTypes': [BANNER],
44
+ 'ortb2Imp': {
45
+ 'ext': {
46
+ 'gpid': '1234567890'
47
+ }
48
+ }
42
49
  };
43
50
 
51
+ const VIDEO_BID = {
52
+ 'bidId': '2d52001cabd527',
53
+ 'adUnitCode': '63550ad1ff6642d368cba59dh5884270560',
54
+ 'bidderRequestId': '12a8ae9ada9c13',
55
+ 'transactionId': '56e184c6-bde9-497b-b9b9-cf47a61381ee',
56
+ 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
57
+ 'params': {
58
+ 'subDomain': SUB_DOMAIN,
59
+ 'cId': '635509f7ff6642d368cb9837',
60
+ 'pId': '59ac17c192832d0011283fe3',
61
+ 'bidFloor': 0.1
62
+ },
63
+ 'sizes': [[545, 307]],
64
+ 'mediaTypes': {
65
+ 'video': {
66
+ 'playerSize': [[545, 307]],
67
+ 'context': 'instream',
68
+ 'mimes': [
69
+ 'video/mp4',
70
+ 'application/javascript'
71
+ ],
72
+ 'protocols': [2, 3, 5, 6],
73
+ 'maxduration': 60,
74
+ 'minduration': 0,
75
+ 'startdelay': 0,
76
+ 'linearity': 1,
77
+ 'api': [2],
78
+ 'placement': 1
79
+ }
80
+ }
81
+ }
82
+
44
83
  const BIDDER_REQUEST = {
45
84
  'gdprConsent': {
46
85
  'consentString': 'consent_string',
@@ -50,7 +89,13 @@ const BIDDER_REQUEST = {
50
89
  'refererInfo': {
51
90
  'page': 'https://www.greatsite.com',
52
91
  'ref': 'https://www.somereferrer.com'
53
- }
92
+ },
93
+ 'ortb2': {
94
+ 'site': {
95
+ 'cat': ['IAB2'],
96
+ 'pagecat': ['IAB2-2']
97
+ }
98
+ },
54
99
  };
55
100
 
56
101
  const SERVER_RESPONSE = {
@@ -75,6 +120,23 @@ const SERVER_RESPONSE = {
75
120
  }
76
121
  };
77
122
 
123
+ const VIDEO_SERVER_RESPONSE = {
124
+ body: {
125
+ 'cid': '635509f7ff6642d368cb9837',
126
+ 'results': [{
127
+ 'ad': '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
128
+ 'advertiserDomains': ['vidazoo.com'],
129
+ 'exp': 60,
130
+ 'width': 545,
131
+ 'height': 307,
132
+ 'mediaType': 'video',
133
+ 'creativeId': '12610997325162499419',
134
+ 'price': 2,
135
+ 'cookies': []
136
+ }]
137
+ }
138
+ }
139
+
78
140
  const REQUEST = {
79
141
  data: {
80
142
  width: 300,
@@ -85,7 +147,7 @@ const REQUEST = {
85
147
 
86
148
  function getTopWindowQueryParams() {
87
149
  try {
88
- const parsedUrl = utils.parseUrl(window.top.document.URL, {decodeSearchAsString: true});
150
+ const parsedUrl = utils.parseUrl(window.top.document.URL, { decodeSearchAsString: true });
89
151
  return parsedUrl.search;
90
152
  } catch (e) {
91
153
  return '';
@@ -113,6 +175,11 @@ describe('VidazooBidAdapter', function () {
113
175
  it('exists and is a string', function () {
114
176
  expect(adapter.code).to.exist.and.to.be.a('string');
115
177
  });
178
+
179
+ it('exists and contains media types', function () {
180
+ expect(adapter.supportedMediaTypes).to.exist.and.to.be.an('array').with.length(2);
181
+ expect(adapter.supportedMediaTypes).to.contain.members([BANNER, VIDEO]);
182
+ });
116
183
  });
117
184
 
118
185
  describe('validate bid requests', function () {
@@ -150,14 +217,67 @@ describe('VidazooBidAdapter', function () {
150
217
  before(function () {
151
218
  $$PREBID_GLOBAL$$.bidderSettings = {
152
219
  vidazoo: {
153
- storageAllowed: true
220
+ storageAllowed: true,
154
221
  }
155
222
  };
156
223
  sandbox = sinon.sandbox.create();
157
224
  sandbox.stub(Date, 'now').returns(1000);
158
225
  });
159
226
 
160
- it('should build request for each size', function () {
227
+ it('should build video request', function () {
228
+ const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
229
+ const requests = adapter.buildRequests([VIDEO_BID], BIDDER_REQUEST);
230
+ expect(requests).to.have.length(1);
231
+ expect(requests[0]).to.deep.equal({
232
+ method: 'POST',
233
+ url: `${createDomain(SUB_DOMAIN)}/prebid/multi/635509f7ff6642d368cb9837`,
234
+ data: {
235
+ adUnitCode: '63550ad1ff6642d368cba59dh5884270560',
236
+ bidFloor: 0.1,
237
+ bidId: '2d52001cabd527',
238
+ bidderVersion: adapter.version,
239
+ cat: ['IAB2'],
240
+ pagecat: ['IAB2-2'],
241
+ cb: 1000,
242
+ dealId: 1,
243
+ gdpr: 1,
244
+ gdprConsent: 'consent_string',
245
+ usPrivacy: 'consent_string',
246
+ gpid: '',
247
+ prebidVersion: version,
248
+ ptrace: '1000',
249
+ publisherId: '59ac17c192832d0011283fe3',
250
+ url: 'https%3A%2F%2Fwww.greatsite.com',
251
+ referrer: 'https://www.somereferrer.com',
252
+ res: `${window.top.screen.width}x${window.top.screen.height}`,
253
+ schain: VIDEO_BID.schain,
254
+ sessionId: '',
255
+ sizes: ['545x307'],
256
+ uniqueDealId: `${hashUrl}_${Date.now().toString()}`,
257
+ uqs: getTopWindowQueryParams(),
258
+ isStorageAllowed: true,
259
+ mediaTypes: {
260
+ video: {
261
+ api: [2],
262
+ context: 'instream',
263
+ linearity: 1,
264
+ maxduration: 60,
265
+ mimes: [
266
+ 'video/mp4',
267
+ 'application/javascript'
268
+ ],
269
+ minduration: 0,
270
+ placement: 1,
271
+ playerSize: [[545, 307]],
272
+ protocols: [2, 3, 5, 6],
273
+ startdelay: 0
274
+ }
275
+ }
276
+ }
277
+ });
278
+ });
279
+
280
+ it('should build banner request for each size', function () {
161
281
  const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
162
282
  const requests = adapter.buildRequests([BID], BIDDER_REQUEST);
163
283
  expect(requests).to.have.length(1);
@@ -176,7 +296,7 @@ describe('VidazooBidAdapter', function () {
176
296
  bidId: '2d52001cabd527',
177
297
  adUnitCode: 'div-gpt-ad-12345-0',
178
298
  publisherId: '59ac17c192832d0011283fe3',
179
- dealId: 1,
299
+ dealId: 2,
180
300
  sessionId: '',
181
301
  uniqueDealId: `${hashUrl}_${Date.now().toString()}`,
182
302
  bidderVersion: adapter.version,
@@ -184,9 +304,14 @@ describe('VidazooBidAdapter', function () {
184
304
  schain: BID.schain,
185
305
  ptrace: '1000',
186
306
  res: `${window.top.screen.width}x${window.top.screen.height}`,
307
+ mediaTypes: [BANNER],
187
308
  uqs: getTopWindowQueryParams(),
188
309
  'ext.param1': 'loremipsum',
189
310
  'ext.param2': 'dolorsitamet',
311
+ isStorageAllowed: true,
312
+ gpid: '1234567890',
313
+ cat: ['IAB2'],
314
+ pagecat: ['IAB2-2']
190
315
  }
191
316
  });
192
317
  });
@@ -196,9 +321,10 @@ describe('VidazooBidAdapter', function () {
196
321
  sandbox.restore();
197
322
  });
198
323
  });
324
+
199
325
  describe('getUserSyncs', function () {
200
326
  it('should have valid user sync with iframeEnabled', function () {
201
- const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
327
+ const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
202
328
 
203
329
  expect(result).to.deep.equal([{
204
330
  type: 'iframe',
@@ -207,7 +333,7 @@ describe('VidazooBidAdapter', function () {
207
333
  });
208
334
 
209
335
  it('should have valid user sync with cid on response', function () {
210
- const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
336
+ const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
211
337
  expect(result).to.deep.equal([{
212
338
  type: 'iframe',
213
339
  url: 'https://sync.cootlogix.com/api/sync/iframe/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy='
@@ -215,7 +341,7 @@ describe('VidazooBidAdapter', function () {
215
341
  });
216
342
 
217
343
  it('should have valid user sync with pixelEnabled', function () {
218
- const result = adapter.getUserSyncs({pixelEnabled: true}, [SERVER_RESPONSE]);
344
+ const result = adapter.getUserSyncs({ pixelEnabled: true }, [SERVER_RESPONSE]);
219
345
 
220
346
  expect(result).to.deep.equal([{
221
347
  'url': 'https://sync.cootlogix.com/api/sync/image/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy=',
@@ -231,16 +357,16 @@ describe('VidazooBidAdapter', function () {
231
357
  });
232
358
 
233
359
  it('should return empty array when there is no ad', function () {
234
- const responses = adapter.interpretResponse({price: 1, ad: ''});
360
+ const responses = adapter.interpretResponse({ price: 1, ad: '' });
235
361
  expect(responses).to.be.empty;
236
362
  });
237
363
 
238
364
  it('should return empty array when there is no price', function () {
239
- const responses = adapter.interpretResponse({price: null, ad: 'great ad'});
365
+ const responses = adapter.interpretResponse({ price: null, ad: 'great ad' });
240
366
  expect(responses).to.be.empty;
241
367
  });
242
368
 
243
- it('should return an array of interpreted responses', function () {
369
+ it('should return an array of interpreted banner responses', function () {
244
370
  const responses = adapter.interpretResponse(SERVER_RESPONSE, REQUEST);
245
371
  expect(responses).to.have.length(1);
246
372
  expect(responses[0]).to.deep.equal({
@@ -259,6 +385,26 @@ describe('VidazooBidAdapter', function () {
259
385
  });
260
386
  });
261
387
 
388
+ it('should return an array of interpreted video responses', function () {
389
+ const responses = adapter.interpretResponse(VIDEO_SERVER_RESPONSE, REQUEST);
390
+ expect(responses).to.have.length(1);
391
+ expect(responses[0]).to.deep.equal({
392
+ requestId: '2d52001cabd527',
393
+ cpm: 2,
394
+ width: 545,
395
+ height: 307,
396
+ mediaType: 'video',
397
+ creativeId: '12610997325162499419',
398
+ currency: 'USD',
399
+ netRevenue: true,
400
+ ttl: 60,
401
+ vastXml: '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
402
+ meta: {
403
+ advertiserDomains: ['vidazoo.com']
404
+ }
405
+ });
406
+ });
407
+
262
408
  it('should take default TTL', function () {
263
409
  const serverResponse = utils.deepClone(SERVER_RESPONSE);
264
410
  delete serverResponse.body.results[0].exp;
@@ -276,11 +422,11 @@ describe('VidazooBidAdapter', function () {
276
422
  const userId = (function () {
277
423
  switch (idSystemProvider) {
278
424
  case 'lipb':
279
- return {lipbid: id};
425
+ return { lipbid: id };
280
426
  case 'parrableId':
281
- return {eid: id};
427
+ return { eid: id };
282
428
  case 'id5id':
283
- return {uid: id};
429
+ return { uid: id };
284
430
  default:
285
431
  return id;
286
432
  }
@@ -299,18 +445,18 @@ describe('VidazooBidAdapter', function () {
299
445
 
300
446
  describe('alternate param names extractors', function () {
301
447
  it('should return undefined when param not supported', function () {
302
- const cid = extractCID({'c_id': '1'});
303
- const pid = extractPID({'p_id': '1'});
304
- const subDomain = extractSubDomain({'sub_domain': 'prebid'});
448
+ const cid = extractCID({ 'c_id': '1' });
449
+ const pid = extractPID({ 'p_id': '1' });
450
+ const subDomain = extractSubDomain({ 'sub_domain': 'prebid' });
305
451
  expect(cid).to.be.undefined;
306
452
  expect(pid).to.be.undefined;
307
453
  expect(subDomain).to.be.undefined;
308
454
  });
309
455
 
310
456
  it('should return value when param supported', function () {
311
- const cid = extractCID({'cID': '1'});
312
- const pid = extractPID({'Pid': '2'});
313
- const subDomain = extractSubDomain({'subDOMAIN': 'prebid'});
457
+ const cid = extractCID({ 'cID': '1' });
458
+ const pid = extractPID({ 'Pid': '2' });
459
+ const subDomain = extractSubDomain({ 'subDOMAIN': 'prebid' });
314
460
  expect(cid).to.be.equal('1');
315
461
  expect(pid).to.be.equal('2');
316
462
  expect(subDomain).to.be.equal('prebid');
@@ -423,7 +569,7 @@ describe('VidazooBidAdapter', function () {
423
569
  now
424
570
  });
425
571
  setStorageItem('myKey', 2020);
426
- const {value, created} = getStorageItem('myKey');
572
+ const { value, created } = getStorageItem('myKey');
427
573
  expect(created).to.be.equal(now);
428
574
  expect(value).to.be.equal(2020);
429
575
  expect(typeof value).to.be.equal('number');
@@ -439,8 +585,8 @@ describe('VidazooBidAdapter', function () {
439
585
  });
440
586
 
441
587
  it('should parse JSON value', function () {
442
- const data = JSON.stringify({event: 'send'});
443
- const {event} = tryParseJSON(data);
588
+ const data = JSON.stringify({ event: 'send' });
589
+ const { event } = tryParseJSON(data);
444
590
  expect(event).to.be.equal('send');
445
591
  });
446
592
 
@@ -1,15 +1,14 @@
1
- import {assert, expect} from 'chai';
2
- import {spec} from 'modules/yandexBidAdapter.js';
3
- import {parseUrl} from 'src/utils.js';
4
- import {BANNER} from '../../../src/mediaTypes';
1
+ import { assert, expect } from 'chai';
2
+ import { spec } from 'modules/yandexBidAdapter.js';
3
+ import { parseUrl } from 'src/utils.js';
4
+ import { BANNER } from '../../../src/mediaTypes';
5
5
 
6
6
  describe('Yandex adapter', function () {
7
7
  function getBidConfig() {
8
8
  return {
9
9
  bidder: 'yandex',
10
10
  params: {
11
- pageId: 123,
12
- impId: 1,
11
+ placementId: '123-1',
13
12
  },
14
13
  };
15
14
  }
@@ -32,7 +31,7 @@ describe('Yandex adapter', function () {
32
31
 
33
32
  describe('isBidRequestValid', function () {
34
33
  it('should return true when required params found', function () {
35
- const bid = getBidConfig();
34
+ const bid = getBidRequest();
36
35
  assert(spec.isBidRequestValid(bid));
37
36
  });
38
37
 
@@ -40,18 +39,28 @@ describe('Yandex adapter', function () {
40
39
  expect(spec.isBidRequestValid({})).to.be.false;
41
40
  });
42
41
 
43
- it('should return false when required params.pageId are not passed', function () {
42
+ it('should return false when required params.placementId are not passed', function () {
43
+ const bid = getBidConfig();
44
+ delete bid.params.placementId;
45
+
46
+ expect(spec.isBidRequestValid(bid)).to.be.false;
47
+ });
48
+
49
+ it('should return false when required params.placementId are not valid', function () {
44
50
  const bid = getBidConfig();
45
- delete bid.params.pageId;
51
+ bid.params.placementId = '123';
46
52
 
47
- expect(spec.isBidRequestValid(bid)).to.be.false
53
+ expect(spec.isBidRequestValid(bid)).to.be.false;
48
54
  });
49
55
 
50
- it('should return false when required params.impId are not passed', function () {
56
+ it('should return true when passed deprecated placement config', function () {
51
57
  const bid = getBidConfig();
52
- delete bid.params.impId;
58
+ delete bid.params.placementId;
59
+
60
+ bid.params.pageId = 123;
61
+ bid.params.impId = 1;
53
62
 
54
- expect(spec.isBidRequestValid(bid)).to.be.false
63
+ expect(spec.isBidRequestValid(bid));
55
64
  });
56
65
  });
57
66
 
@@ -658,36 +658,65 @@ describe('yieldlabBidAdapter', () => {
658
658
  });
659
659
 
660
660
  describe('getBidFloor', function () {
661
- let bidRequest, getFloor;
662
-
663
- it('should add valid bid floor', () => {
664
- getFloor = () => {
665
- return {
666
- currency: 'EUR',
667
- floor: 1.33
668
- };
669
- };
661
+ let bidRequest, bidRequest2, currency, floor;
662
+ const getFloor = () => {
663
+ return {
664
+ currency: currency,
665
+ floor: floor
666
+ }
667
+ }
668
+
669
+ it('should add valid bid floor in the format floor={adslotId}:{floorPriceInCents}[, ...]', () => {
670
+ bidRequest = Object.assign(DEFAULT_REQUEST(), {
671
+ getFloor: () => {
672
+ return {
673
+ currency: 'EUR',
674
+ floor: 1.33
675
+ }
676
+ }});
677
+ bidRequest2 = Object.assign(DEFAULT_REQUEST(), {
678
+ params: {
679
+ adslotId: 2222
680
+ },
681
+ getFloor: () => {
682
+ return {
683
+ currency: 'EUR',
684
+ floor: 2.99
685
+ }
686
+ }
687
+ });
688
+ const result = spec.buildRequests([bidRequest, bidRequest2], REQPARAMS)
689
+ expect(result).to.have.nested.property('queryParams.floor', '1111:133,2222:299')
690
+ });
691
+
692
+ it('should round the floor price up', () => {
693
+ currency = 'EUR';
694
+ floor = 0.745;
670
695
  bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
671
696
  const result = spec.buildRequests([bidRequest], REQPARAMS)
672
- expect(result).to.have.nested.property('queryParams.floor', 1.33)
697
+ expect(result).to.have.nested.property('queryParams.floor', '1111:75')
673
698
  });
674
699
 
675
- it('should not add empty bid floor', () => {
676
- getFloor = () => {
677
- return {};
678
- };
700
+ it('should round the floor price down', () => {
701
+ currency = 'EUR';
702
+ floor = 0.034;
679
703
  bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
680
704
  const result = spec.buildRequests([bidRequest], REQPARAMS)
705
+ expect(result).to.have.nested.property('queryParams.floor', '1111:3')
706
+ });
707
+
708
+ it('should not add empty bid floor', () => {
709
+ bidRequest = Object.assign(DEFAULT_REQUEST(), {
710
+ getFloor: () => {
711
+ return {};
712
+ }})
713
+ const result = spec.buildRequests([bidRequest], REQPARAMS)
681
714
  expect(result).not.to.have.nested.property('queryParams.floor')
682
715
  });
683
716
 
684
717
  it('should not add bid floor when currency is not matching', () => {
685
- getFloor = (currency, mediaType, size) => {
686
- return {
687
- currency: 'USD',
688
- floor: 1.33
689
- };
690
- };
718
+ currency = 'USD';
719
+ floor = 1.33;
691
720
  bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
692
721
  const result = spec.buildRequests([bidRequest], REQPARAMS)
693
722
  expect(result).not.to.have.nested.property('queryParams.floor')
@@ -229,7 +229,7 @@ describe('YieldLift', function () {
229
229
  expect(bids[index]).to.have.property('ad', RESPONSE.body.seatbid[0].bid[index].adm);
230
230
  expect(bids[index]).to.have.property('creativeId', RESPONSE.body.seatbid[0].bid[index].crid);
231
231
  expect(bids[index].meta).to.have.property('advertiserDomains', RESPONSE.body.seatbid[0].bid[index].advertiserDomains);
232
- expect(bids[index]).to.have.property('ttl', 30);
232
+ expect(bids[index]).to.have.property('ttl', 300);
233
233
  expect(bids[index]).to.have.property('netRevenue', true);
234
234
  }
235
235
  });
@@ -1,6 +1,7 @@
1
1
  import yieldoneAnalytics from 'modules/yieldoneAnalyticsAdapter.js';
2
2
  import { targeting } from 'src/targeting.js';
3
3
  import { expect } from 'chai';
4
+ import _ from 'lodash';
4
5
  let events = require('src/events');
5
6
  let adapterManager = require('src/adapterManager').default;
6
7
  let constants = require('src/constants.json');
@@ -225,7 +226,9 @@ describe('Yieldone Prebid Analytic', function () {
225
226
  pubId: initOptions.pubId,
226
227
  page: {url: testReferrer},
227
228
  wrapper_version: '$prebid.version$',
228
- events: expectedEvents
229
+ events: sinon.match(evs => {
230
+ return !expectedEvents.some((expectedEvent) => evs.find(ev => _.isEqual(ev, expectedEvent)) === -1)
231
+ })
229
232
  };
230
233
 
231
234
  const preparedWinnerParams = Object.assign({adServerTargeting: fakeTargeting}, winner);
@@ -262,7 +265,7 @@ describe('Yieldone Prebid Analytic', function () {
262
265
 
263
266
  events.emit(constants.EVENTS.AUCTION_END, auctionEnd);
264
267
 
265
- expect(yieldoneAnalytics.eventsStorage[auctionId]).to.deep.equal(expectedResult);
268
+ sinon.assert.match(yieldoneAnalytics.eventsStorage[auctionId], expectedResult);
266
269
 
267
270
  delete yieldoneAnalytics.eventsStorage[auctionId];
268
271