prebid.js 7.25.0 → 7.27.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 (353) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  9. package/dist/adlooxAdServerVideo.js +1 -1
  10. package/dist/adlooxAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxRtdProvider.js +1 -1
  12. package/dist/admaticBidAdapter.js +1 -1
  13. package/dist/admixerBidAdapter.js +1 -1
  14. package/dist/adomikAnalyticsAdapter.js +1 -1
  15. package/dist/adrelevantisBidAdapter.js +1 -1
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgAnalyticsAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  20. package/dist/aidemBidAdapter.js +1 -0
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/analyticsAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/axonixBidAdapter.js +1 -1
  30. package/dist/beopBidAdapter.js +1 -1
  31. package/dist/bidViewability.js +1 -1
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/browsiRtdProvider.js +1 -1
  38. package/dist/bucksenseBidAdapter.js +1 -1
  39. package/dist/byDataAnalyticsAdapter.js +1 -1
  40. package/dist/captifyRtdProvider.js +1 -0
  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/kinessoIdSystem.js +1 -1
  91. package/dist/konduitAnalyticsAdapter.js +1 -1
  92. package/dist/kueezBidAdapter.js +1 -1
  93. package/dist/kueezRtbBidAdapter.js +1 -1
  94. package/dist/lassoBidAdapter.js +1 -1
  95. package/dist/lifestreetBidAdapter.js +1 -1
  96. package/dist/limelightDigitalBidAdapter.js +1 -1
  97. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  98. package/dist/liveIntentIdSystem.js +1 -1
  99. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  100. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  101. package/dist/logicadBidAdapter.js +1 -1
  102. package/dist/loglyliftBidAdapter.js +1 -1
  103. package/dist/lotamePanoramaIdSystem.js +1 -1
  104. package/dist/magniteAnalyticsAdapter.js +1 -1
  105. package/dist/malltvAnalyticsAdapter.js +1 -1
  106. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaBidAdapter.js +1 -1
  108. package/dist/mediafuseBidAdapter.js +1 -1
  109. package/dist/medianetAnalyticsAdapter.js +1 -1
  110. package/dist/mediasquareBidAdapter.js +1 -1
  111. package/dist/mgidBidAdapter.js +1 -1
  112. package/dist/minutemediaBidAdapter.js +1 -1
  113. package/dist/nextMillenniumBidAdapter.js +1 -1
  114. package/dist/nexx360BidAdapter.js +1 -1
  115. package/dist/not-for-prod/prebid.js +240 -202
  116. package/dist/oguryBidAdapter.js +1 -1
  117. package/dist/onetagBidAdapter.js +1 -1
  118. package/dist/ooloAnalyticsAdapter.js +1 -1
  119. package/dist/openxAnalyticsAdapter.js +1 -1
  120. package/dist/optimonAnalyticsAdapter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/parrableIdSystem.js +1 -1
  123. package/dist/pbsExtensions.js +1 -1
  124. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/prebid-core.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  129. package/dist/pubCommonId.js +1 -1
  130. package/dist/pubProvidedIdSystem.js +1 -1
  131. package/dist/publinkIdSystem.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubperfAnalyticsAdapter.js +1 -1
  135. package/dist/pubstackAnalyticsAdapter.js +1 -1
  136. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  137. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  138. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  139. package/dist/pxyzBidAdapter.js +1 -1
  140. package/dist/quantcastBidAdapter.js +1 -1
  141. package/dist/quantcastIdSystem.js +1 -1
  142. package/dist/rasBidAdapter.js +1 -1
  143. package/dist/readpeakBidAdapter.js +1 -1
  144. package/dist/realvuAnalyticsAdapter.js +1 -1
  145. package/dist/redtramBidAdapter.js +1 -0
  146. package/dist/relaidoBidAdapter.js +1 -1
  147. package/dist/relevantAnalyticsAdapter.js +1 -1
  148. package/dist/rhythmoneBidAdapter.js +1 -1
  149. package/dist/riseBidAdapter.js +1 -1
  150. package/dist/rivrAnalyticsAdapter.js +1 -1
  151. package/dist/roxotAnalyticsAdapter.js +1 -1
  152. package/dist/rtbhouseBidAdapter.js +1 -1
  153. package/dist/rtdModule.js +1 -1
  154. package/dist/rubiconAnalyticsAdapter.js +1 -1
  155. package/dist/rubiconBidAdapter.js +1 -1
  156. package/dist/s2sTesting.js +1 -1
  157. package/dist/scaleableAnalyticsAdapter.js +1 -1
  158. package/dist/schain.js +1 -1
  159. package/dist/seedingAllianceBidAdapter.js +1 -1
  160. package/dist/seedtagBidAdapter.js +1 -1
  161. package/dist/sharedIdSystem.js +1 -1
  162. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  163. package/dist/sharethroughBidAdapter.js +1 -1
  164. package/dist/shinezBidAdapter.js +1 -1
  165. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  166. package/dist/smaatoBidAdapter.js +1 -1
  167. package/dist/smartadserverBidAdapter.js +1 -1
  168. package/dist/smartxBidAdapter.js +1 -1
  169. package/dist/smartytechBidAdapter.js +1 -0
  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/tappxBidAdapter.js +1 -1
  182. package/dist/targetVideoBidAdapter.js +1 -1
  183. package/dist/teadsBidAdapter.js +1 -1
  184. package/dist/teadsIdSystem.js +1 -1
  185. package/dist/terceptAnalyticsAdapter.js +1 -1
  186. package/dist/trionBidAdapter.js +1 -1
  187. package/dist/tripleliftBidAdapter.js +1 -1
  188. package/dist/ttdBidAdapter.js +1 -1
  189. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  190. package/dist/underdogmediaBidAdapter.js +1 -1
  191. package/dist/undertoneBidAdapter.js +1 -1
  192. package/dist/userId.js +1 -1
  193. package/dist/vidazooBidAdapter.js +1 -1
  194. package/dist/videobyteBidAdapter.js +1 -1
  195. package/dist/viqeoBidAdapter.js +1 -0
  196. package/dist/visxBidAdapter.js +1 -1
  197. package/dist/vuukleBidAdapter.js +1 -1
  198. package/dist/weboramaRtdProvider.js +1 -1
  199. package/dist/widespaceBidAdapter.js +1 -1
  200. package/dist/winrBidAdapter.js +1 -1
  201. package/dist/yahoosspBidAdapter.js +1 -1
  202. package/dist/yandexBidAdapter.js +1 -1
  203. package/dist/yieldlabBidAdapter.js +1 -1
  204. package/dist/yieldliftBidAdapter.js +1 -1
  205. package/dist/yieldmoBidAdapter.js +1 -1
  206. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  207. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  208. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  209. package/dist/zeta_global_sspBidAdapter.js +1 -1
  210. package/dist/zeusPrimeRtdProvider.js +31 -0
  211. package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
  212. package/integrationExamples/gpt/growthcode.html +134 -0
  213. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  214. package/modules/.submodules.json +3 -1
  215. package/modules/admaticBidAdapter.js +116 -58
  216. package/modules/admaticBidAdapter.md +2 -2
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/beopBidAdapter.js +17 -2
  221. package/modules/browsiRtdProvider.js +6 -4
  222. package/modules/bucksenseBidAdapter.js +1 -1
  223. package/modules/captifyRtdProvider.js +146 -0
  224. package/modules/captifyRtdProvider.md +68 -0
  225. package/modules/criteoBidAdapter.js +3 -3
  226. package/modules/discoveryBidAdapter.js +38 -17
  227. package/modules/discoveryBidAdapter.md +7 -6
  228. package/modules/eplanningBidAdapter.js +2 -6
  229. package/modules/fluctBidAdapter.js +5 -0
  230. package/modules/gdprEnforcement.js +26 -24
  231. package/modules/genericAnalyticsAdapter.js +157 -0
  232. package/modules/geoedgeRtdProvider.js +22 -0
  233. package/modules/glomexBidAdapter.js +2 -0
  234. package/modules/gravitoIdSystem.js +3 -4
  235. package/modules/gridBidAdapter.js +441 -23
  236. package/modules/gridNMBidAdapter.js +1 -1
  237. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  238. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  239. package/modules/impactifyBidAdapter.js +19 -1
  240. package/modules/jwplayerRtdProvider.js +1 -2
  241. package/modules/limelightDigitalBidAdapter.js +1 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nextMillenniumBidAdapter.js +19 -23
  244. package/modules/nexx360BidAdapter.js +264 -138
  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/smartadserverBidAdapter.js +6 -2
  259. package/modules/smartxBidAdapter.js +11 -8
  260. package/modules/smartytechBidAdapter.js +78 -0
  261. package/modules/smartytechBidAdapter.md +44 -0
  262. package/modules/smnBidAdapter.md +52 -0
  263. package/modules/taboolaBidAdapter.js +3 -3
  264. package/modules/taboolaBidAdapter.md +0 -2
  265. package/modules/tappxBidAdapter.js +21 -6
  266. package/modules/tripleliftBidAdapter.js +1 -1
  267. package/modules/ttdBidAdapter.js +8 -3
  268. package/modules/userId/index.js +1 -1
  269. package/modules/vidazooBidAdapter.js +26 -3
  270. package/modules/viqeoBidAdapter.js +180 -0
  271. package/modules/viqeoBidAdapter.md +56 -0
  272. package/modules/yandexBidAdapter.js +85 -19
  273. package/modules/yandexBidAdapter.md +7 -7
  274. package/modules/yieldlabBidAdapter.js +29 -12
  275. package/modules/yieldliftBidAdapter.js +3 -3
  276. package/modules/yieldoneBidAdapter.js +60 -8
  277. package/modules/yieldoneBidAdapter.md +109 -9
  278. package/modules/zeta_global_sspBidAdapter.js +4 -0
  279. package/modules/zeusPrimeRtdProvider.js +357 -0
  280. package/modules/zeusPrimeRtdProvider.md +60 -0
  281. package/package.json +1 -1
  282. package/src/adloader.js +0 -1
  283. package/src/auction.js +19 -3
  284. package/src/consentHandler.js +8 -0
  285. package/src/events.js +4 -0
  286. package/src/native.js +31 -20
  287. package/src/refererDetection.js +6 -1
  288. package/src/storageManager.js +6 -3
  289. package/test/helpers/analytics.js +34 -0
  290. package/test/mocks/analyticsStub.js +3 -1
  291. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  292. package/test/spec/auctionmanager_spec.js +86 -0
  293. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  294. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  295. package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
  296. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  297. package/test/spec/modules/beopBidAdapter_spec.js +52 -0
  298. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  299. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  300. package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
  301. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  302. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
  303. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  304. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  305. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  306. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  307. package/test/spec/modules/fpdModule_spec.js +1 -1
  308. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  309. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  310. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  311. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  312. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  313. package/test/spec/modules/gridBidAdapter_spec.js +289 -1
  314. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  315. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  316. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  317. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  318. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  319. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  320. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  321. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
  322. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  323. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  324. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  325. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  326. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  327. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  328. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  329. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  330. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  331. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  332. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  333. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  334. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  335. package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
  336. package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
  337. package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
  338. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  339. package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
  340. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  341. package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
  342. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  343. package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
  344. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  345. package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
  346. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  347. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  348. package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
  349. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
  350. package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
  351. package/test/spec/native_spec.js +68 -56
  352. package/test/spec/refererDetection_spec.js +45 -7
  353. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -216,4 +216,56 @@ describe('BeOp Bid Adapter tests', () => {
216
216
  expect(triggerPixelStub.getCall(0).args[0]).to.exist.and.to.include('pid=5a8af500c9e77c00017e4cad');
217
217
  });
218
218
  });
219
+
220
+ describe('Ensure keywords is always array of string', function () {
221
+ let bidRequests = [];
222
+ afterEach(function () {
223
+ bidRequests = [];
224
+ });
225
+
226
+ it('should work with keywords as an array', function () {
227
+ let bid = Object.assign({}, validBid);
228
+ bid.params.keywords = ['a', 'b'];
229
+ bidRequests.push(bid);
230
+ config.setConfig({
231
+ currency: { adServerCurrency: 'USD' }
232
+ });
233
+ const request = spec.buildRequests(bidRequests, {});
234
+ const payload = JSON.parse(request.data);
235
+ const url = request.url;
236
+ expect(payload.kwds).to.exist;
237
+ expect(payload.kwds).to.include('a');
238
+ expect(payload.kwds).to.include('b');
239
+ });
240
+
241
+ it('should work with keywords as a string', function () {
242
+ let bid = Object.assign({}, validBid);
243
+ bid.params.keywords = 'list of keywords';
244
+ bidRequests.push(bid);
245
+ config.setConfig({
246
+ currency: { adServerCurrency: 'USD' }
247
+ });
248
+ const request = spec.buildRequests(bidRequests, {});
249
+ const payload = JSON.parse(request.data);
250
+ const url = request.url;
251
+ expect(payload.kwds).to.exist;
252
+ expect(payload.kwds).to.include('list of keywords');
253
+ });
254
+
255
+ it('should work with keywords as a string containing a comma', function () {
256
+ let bid = Object.assign({}, validBid);
257
+ bid.params.keywords = 'list, of, keywords';
258
+ bidRequests.push(bid);
259
+ config.setConfig({
260
+ currency: { adServerCurrency: 'USD' }
261
+ });
262
+ const request = spec.buildRequests(bidRequests, {});
263
+ const payload = JSON.parse(request.data);
264
+ const url = request.url;
265
+ expect(payload.kwds).to.exist;
266
+ expect(payload.kwds).to.include('list');
267
+ expect(payload.kwds).to.include('of');
268
+ expect(payload.kwds).to.include('keywords');
269
+ })
270
+ })
219
271
  });
@@ -297,7 +297,6 @@ describe('BidWatch Analytics', function () {
297
297
  expect(message.auctionEnd[0]).to.have.property('bidderRequests').and.to.have.lengthOf(1);
298
298
  expect(message.auctionEnd[0].bidderRequests[0]).to.have.property('gdprConsent');
299
299
  expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).not.to.have.property('vendorData');
300
- sinon.assert.callCount(bidwatchAnalytics.track, 4);
301
300
  });
302
301
 
303
302
  it('test bidWon', function() {
@@ -318,7 +317,6 @@ describe('BidWatch Analytics', function () {
318
317
  expect(message).not.to.have.property('ad');
319
318
  expect(message).to.have.property('adId')
320
319
  expect(message).to.have.property('cpmIncrement').and.to.equal(27.4276);
321
- sinon.assert.callCount(bidwatchAnalytics.track, 1);
322
320
  });
323
321
  });
324
322
  });
@@ -252,7 +252,8 @@ describe('browsi Real time data sub module', function () {
252
252
  })
253
253
  it('should send event if type is correct', function () {
254
254
  sendPageviewEvent('PAGEVIEW')
255
-
255
+ const pageViewEvent = new CustomEvent('browsi_pageview', {});
256
+ window.dispatchEvent(pageViewEvent);
256
257
  const expectedCall = {
257
258
  vendor: 'browsi',
258
259
  type: 'pageview',
@@ -0,0 +1,253 @@
1
+ import {addSegmentData, captifySubmodule, getMatchingBidders, setCaptifyTargeting} from 'modules/captifyRtdProvider.js';
2
+ import {server} from 'test/mocks/xhr.js';
3
+ import {config} from 'src/config.js';
4
+ import {deepAccess} from '../../../src/utils';
5
+
6
+ const responseHeader = {'Content-Type': 'application/json'};
7
+ const defaultRequestUrl = 'https://live-classification.cpx.to/prebid-segments';
8
+
9
+ describe('captifyRtdProvider', function () {
10
+ describe('init function', function () {
11
+ it('successfully instantiates, when configured properly', function () {
12
+ const config = {
13
+ params: {
14
+ pubId: 123456,
15
+ bidders: ['appnexus'],
16
+ }
17
+ };
18
+ expect(captifySubmodule.init(config, null)).to.equal(true);
19
+ });
20
+
21
+ it('return false on init, when config is invalid', function () {
22
+ const config = {
23
+ params: {}
24
+ };
25
+ expect(captifySubmodule.init(config, null)).to.equal(false);
26
+ expect(captifySubmodule.init(null, null)).to.equal(false);
27
+ });
28
+
29
+ it('return false on init, when pubId is absent', function () {
30
+ const config = {
31
+ params: {
32
+ bidders: ['appnexus'],
33
+ }
34
+ };
35
+ expect(captifySubmodule.init(config, null)).to.equal(false);
36
+ expect(captifySubmodule.init(null, null)).to.equal(false);
37
+ });
38
+
39
+ it('return false on init, when bidders is empty array', function () {
40
+ const config = {
41
+ params: {
42
+ bidders: [],
43
+ pubId: 123,
44
+ }
45
+ };
46
+ expect(captifySubmodule.init(config, null)).to.equal(false);
47
+ expect(captifySubmodule.init(null, null)).to.equal(false);
48
+ });
49
+ });
50
+
51
+ describe('addSegmentData function', function () {
52
+ it('adds segment data', function () {
53
+ config.resetConfig();
54
+
55
+ let data = {
56
+ xandr: [111111, 222222],
57
+ };
58
+
59
+ addSegmentData(['appnexus'], data);
60
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
61
+ });
62
+ });
63
+
64
+ describe('getMatchingBidders function', function () {
65
+ it('returns only bidders that used within adUnits', function () {
66
+ const moduleConfig = {
67
+ params: {
68
+ pubId: 123,
69
+ bidders: ['appnexus', 'pubmatic'],
70
+ }
71
+ };
72
+ let reqBidsConfigObj = {
73
+ adUnits: [{
74
+ bids: [{
75
+ bidder: 'appnexus',
76
+ params: {
77
+ placementId: 13144370
78
+ }
79
+ }]
80
+ }]
81
+ };
82
+
83
+ let matchedBidders = getMatchingBidders(moduleConfig, reqBidsConfigObj);
84
+ expect(matchedBidders).to.eql(['appnexus']);
85
+ });
86
+
87
+ it('return empty result, when there are no bidders configured for adUnits', function () {
88
+ const moduleConfig = {
89
+ params: {
90
+ pubId: 123,
91
+ bidders: ['pubmatic'],
92
+ }
93
+ };
94
+ let reqBidsConfigObj = {
95
+ adUnits: [{
96
+ bids: []
97
+ }]
98
+ };
99
+ expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
100
+ });
101
+
102
+ it('return empty result, when there are no bidders matched', function () {
103
+ const moduleConfig = {
104
+ params: {
105
+ pubId: 123,
106
+ bidders: ['pubmatic'],
107
+ }
108
+ };
109
+ let reqBidsConfigObj = {
110
+ adUnits: [{
111
+ bids: [{
112
+ params: {
113
+ bidder: 'appnexus',
114
+ placementId: 13144370,
115
+ }
116
+ }]
117
+ }]
118
+ };
119
+ expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
120
+ });
121
+
122
+ it('return empty result, when there are no adUnits with bidders', function () {
123
+ const moduleConfig = {
124
+ params: {
125
+ pubId: 123,
126
+ bidders: ['pubmatic'],
127
+ }
128
+ };
129
+ let reqBidsConfigObj = {
130
+ adUnits: [{
131
+ bids: [{
132
+ params: {
133
+ placementId: 13144370,
134
+ }
135
+ }]
136
+ }]
137
+ };
138
+ expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
139
+ });
140
+ });
141
+
142
+ describe('integration test with mock live-classification response', function () {
143
+ const moduleConfig = {
144
+ params: {
145
+ pubId: 123456,
146
+ bidders: ['appnexus'],
147
+ }
148
+ };
149
+
150
+ const reqBidsConfigObj = {
151
+ adUnits: [{
152
+ bids: [{
153
+ bidder: 'appnexus',
154
+ params: {
155
+ placementId: 13144370
156
+ }
157
+ }, {
158
+ bidder: 'other'
159
+ }]
160
+ }]
161
+ };
162
+
163
+ const expectedUrlParam = 'http://localhost:9876/context.html';
164
+
165
+ it('gets data from async request and adds segment data', function () {
166
+ config.resetConfig();
167
+ let data = {xandr: [111111, 222222]};
168
+ const callbackSpy = sinon.spy();
169
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
170
+ let request = server.requests[0];
171
+ let requestBody = JSON.parse(server.requests[0].requestBody);
172
+ expect(request.url).to.be.eq(defaultRequestUrl);
173
+ expect(requestBody['pubId']).to.eq(moduleConfig.params.pubId);
174
+ expect(requestBody['url']).to.eq(expectedUrlParam);
175
+ request.respond(200, responseHeader, JSON.stringify(data));
176
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
177
+ expect(callbackSpy.calledOnce).to.be.true;
178
+ });
179
+
180
+ it('do not send classification request, if no matching adUnits on page', function () {
181
+ config.resetConfig();
182
+ let reqBidsConfigObj = {
183
+ adUnits: [{
184
+ bids: [
185
+ {bidder: 'pubmatic'}
186
+ ]
187
+ }]
188
+ };
189
+ const callbackSpy = sinon.spy();
190
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
191
+ expect(server.requests).to.be.empty;
192
+ });
193
+
194
+ it('gets data from async request and adds segment data, using URL from config', function () {
195
+ config.resetConfig();
196
+ let data = {xandr: [111111, 222222]};
197
+ const callbackSpy = sinon.spy();
198
+ const testUrl = 'http://my-test-server.com/path';
199
+ const conf = {
200
+ params: {
201
+ url: testUrl,
202
+ pubId: 123456,
203
+ bidders: ['appnexus'],
204
+ }
205
+ };
206
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, conf, {});
207
+ let request = server.requests[0];
208
+ let requestBody = JSON.parse(server.requests[0].requestBody);
209
+ expect(request.url).to.be.eq(testUrl);
210
+ expect(requestBody['pubId']).to.eq(conf.params.pubId);
211
+ expect(requestBody['url']).to.eq(expectedUrlParam);
212
+ request.respond(200, responseHeader, JSON.stringify(data));
213
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
214
+ expect(callbackSpy.calledOnce).to.be.true;
215
+ });
216
+
217
+ it('do not set anything, in case server responded with 202', function () {
218
+ config.resetConfig();
219
+ const callbackSpy = sinon.spy();
220
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
221
+ let request = server.requests[0];
222
+ let requestBody = JSON.parse(server.requests[0].requestBody);
223
+ expect(request.url).to.be.eq(defaultRequestUrl);
224
+ expect(requestBody['pubId']).to.eq(moduleConfig.params.pubId);
225
+ expect(requestBody['url']).to.eq(expectedUrlParam);
226
+ request.respond(202, responseHeader, '');
227
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
228
+ expect(callbackSpy.calledOnce).to.be.true;
229
+ });
230
+
231
+ it('do not set anything, in case server responded with error', function () {
232
+ config.resetConfig();
233
+ const callbackSpy = sinon.spy();
234
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
235
+ let request = server.requests[0];
236
+ expect(request.url).to.be.eq(defaultRequestUrl);
237
+ request.respond(500, null, '');
238
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
239
+ expect(callbackSpy.calledOnce).to.be.true;
240
+ });
241
+
242
+ it('do not set anything, in case request error', function () {
243
+ config.resetConfig();
244
+ const callbackSpy = sinon.spy();
245
+ setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
246
+ let request = server.requests[0];
247
+ expect(request.url).to.be.eq(defaultRequestUrl);
248
+ request.abort('test error');
249
+ expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
250
+ expect(callbackSpy.calledOnce).to.be.true;
251
+ });
252
+ });
253
+ });
@@ -1,5 +1,6 @@
1
1
  import concertAnalytics from 'modules/concertAnalyticsAdapter.js';
2
2
  import { expect } from 'chai';
3
+ import {expectEvents} from '../../helpers/analytics.js';
3
4
  const sinon = require('sinon');
4
5
  let adapterManager = require('src/adapterManager').default;
5
6
  let events = require('src/events');
@@ -46,10 +47,7 @@ describe('ConcertAnalyticsAdapter', function() {
46
47
 
47
48
  it('should catch all events', function() {
48
49
  sandbox.spy(concertAnalytics, 'track');
49
-
50
- fireBidEvents(events);
51
- // 5 Concert events + 1 Clean.io event
52
- sandbox.assert.callCount(concertAnalytics.track, 6);
50
+ expectEvents().to.beTrackedBy(concertAnalytics.track);
53
51
  });
54
52
 
55
53
  it('should report data for BID_RESPONSE, BID_WON events', function() {
@@ -1,14 +1,14 @@
1
1
  import { expect } from 'chai';
2
2
  import { spec } from 'modules/discoveryBidAdapter.js';
3
3
 
4
- describe('DiscoveryDSP:BidAdapterTests', function () {
4
+ describe('discovery:BidAdapterTests', function () {
5
5
  let bidRequestData = {
6
- bidderCode: 'DiscoveryDSP',
6
+ bidderCode: 'discovery',
7
7
  auctionId: 'ff66e39e-4075-4d18-9854-56fde9b879ac',
8
8
  bidderRequestId: '4fec04e87ad785',
9
9
  bids: [
10
10
  {
11
- bidder: 'DiscoveryDSP',
11
+ bidder: 'discovery',
12
12
  params: {
13
13
  token: 'd0f4902b616cc5c38cbe0a08676d0ed9',
14
14
  },
@@ -32,25 +32,26 @@ describe('DiscoveryDSP:BidAdapterTests', function () {
32
32
  };
33
33
  let request = [];
34
34
 
35
- it('DiscoveryDSP:validate_pub_params', function () {
35
+ it('discovery:validate_pub_params', function () {
36
36
  expect(
37
37
  spec.isBidRequestValid({
38
- bidder: 'DiscoveryDSP',
38
+ bidder: 'discovery',
39
39
  params: {
40
40
  token: ['d0f4902b616cc5c38cbe0a08676d0ed9'],
41
- media: ['test_media']
41
+ tagid: ['test_tagid'],
42
+ publisher: ['test_publisher']
42
43
  },
43
44
  })
44
45
  ).to.equal(true);
45
46
  });
46
47
 
47
- it('DiscoveryDSP:validate_generated_params', function () {
48
+ it('discovery:validate_generated_params', function () {
48
49
  request = spec.buildRequests(bidRequestData.bids, bidRequestData);
49
50
  let req_data = JSON.parse(request.data);
50
51
  expect(req_data.imp).to.have.lengthOf(1);
51
52
  });
52
53
 
53
- it('DiscoveryDSP:validate_response_params', function () {
54
+ it('discovery:validate_response_params', function () {
54
55
  let tempAdm = '<link rel=\"stylesheet\" href=\"https://cdn.mediago.io/js/style/style_banner_336x280_standard.css\"><div id=\"mgcontainer-e1746bcc817beaba9d63bd4254aad533\" class=\"mediago-placement_46ee9c c336x280_standard_46ee9c mediago-placement c336x280_standard\" style=\"width:336px;height:280px;overflow:hidden\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-placement-top_46ee9c mediago-placement-top\" style=\"background-image:url(https://d2cli4kgl5uxre.cloudfront.net/ML/d8e9b4aa20fae1739d2aad8c926d3f15__scv1__306x304.png)\"></div></a><div class=\"mediago-placement-bottom_46ee9c mediago-placement-bottom\"><div class=\"mediago-middle_46ee9c mediago-middle\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-title_46ee9c mediago-title\">秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた</div></a><div style=\"margin-top:10px;\"><a class=\"mediago-ad-icon_46ee9c mediago-ad-icon\" title=\"ad\" href=\"//www.mediago.io/privacy\" target=\"_blank\">AD</a> <a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-brand-name_46ee9c mediago-brand-name\">Factable</div></a></div></div></div></div>'
55
56
  tempAdm += '%3Cscr';
56
57
  tempAdm += 'ipt%3E';
@@ -1,4 +1,5 @@
1
1
  import { expect } from 'chai';
2
+ import {config} from 'src/config.js';
2
3
  import { getRefererInfo } from 'src/refererDetection.js';
3
4
  import {processFpd, coreStorage, resetEnrichments} from 'modules/enrichmentFpdModule.js';
4
5
  import * as enrichmentModule from 'modules/enrichmentFpdModule.js';
@@ -77,10 +78,10 @@ describe('the first party data enrichment module', function() {
77
78
  expect(validated.site.keywords).to.be.undefined;
78
79
  });
79
80
 
80
- it('adds page domain values if canonical url exists', function() {
81
+ it('adds page domain values if pageUrl url exists', function() {
82
+ config.setConfig({'pageUrl': 'https://www.subdomain.domain.co.uk/path?query=12345'});
81
83
  width = 800;
82
84
  height = 500;
83
- canonical.href = 'https://www.subdomain.domain.co.uk/path?query=12345';
84
85
 
85
86
  let validated = syncProcessFpd({}, {}).global;
86
87
 
@@ -152,9 +152,6 @@ describe('eplanning analytics adapter', function () {
152
152
 
153
153
  // Step 10 check that the host to send the ajax request is configurable via options
154
154
  expect(eplAnalyticsAdapter.context.host).to.equal(initOptions.host);
155
-
156
- // Step 11 verify that we received 7 events (6 E-Planning events + 1 Clean.io event)
157
- sinon.assert.callCount(eplAnalyticsAdapter.track, 7);
158
155
  });
159
156
  });
160
157
  });
@@ -840,7 +840,7 @@ describe('E-Planning Adapter', function () {
840
840
  });
841
841
 
842
842
  it('should correctly map the parameters in the response vast', function () {
843
- const bidResponse = spec.interpretResponse(responseVast, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
843
+ const bidResponse = spec.interpretResponse(responseVast, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID }, data: { vv: 2 } })[0];
844
844
  const expectedResponse = {
845
845
  requestId: BID_ID,
846
846
  cpm: CPM,
@@ -851,13 +851,13 @@ describe('E-Planning Adapter', function () {
851
851
  netRevenue: true,
852
852
  currency: 'USD',
853
853
  vastXml: ADM_VAST,
854
- mediaTypes: VIDEO
854
+ mediaType: VIDEO
855
855
  };
856
856
  expect(bidResponse).to.deep.equal(expectedResponse);
857
857
  });
858
858
 
859
859
  it('should correctly map the parameters in the response vast vv 1', function () {
860
- const bidResponse = spec.interpretResponse(responseVastVV1, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
860
+ const bidResponse = spec.interpretResponse(responseVastVV1, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID }, data: { vv: 1 } })[0];
861
861
  const expectedResponse = {
862
862
  requestId: BID_ID,
863
863
  cpm: CPM,
@@ -868,7 +868,7 @@ describe('E-Planning Adapter', function () {
868
868
  netRevenue: true,
869
869
  currency: 'USD',
870
870
  vastXml: ADM_VAST_VV_1,
871
- mediaTypes: VIDEO
871
+ mediaType: VIDEO
872
872
  };
873
873
  expect(bidResponse).to.deep.equal(expectedResponse);
874
874
  });
@@ -94,7 +94,12 @@ describe('fluctAdapter', function () {
94
94
  expect(request.data.params.kv).to.eql(undefined);
95
95
  });
96
96
 
97
- it('includes filtered user.eids if any exists', function () {
97
+ it('includes no data.schain by default', function () {
98
+ const request = spec.buildRequests(bidRequests, bidderRequest)[0];
99
+ expect(request.data.schain).to.eql(undefined);
100
+ });
101
+
102
+ it('includes filtered user.eids if any exist', function () {
98
103
  const bidRequests2 = bidRequests.map(
99
104
  (bidReq) => Object.assign(bidReq, {
100
105
  userIdAsEids: [
@@ -175,6 +180,37 @@ describe('fluctAdapter', function () {
175
180
  imsids: ['imsid1', 'imsid2']
176
181
  });
177
182
  });
183
+
184
+ it('includes data.schain if any exists', function () {
185
+ // this should be done by schain.js
186
+ const bidRequests2 = bidRequests.map(
187
+ (bidReq) => Object.assign(bidReq, {
188
+ schain: {
189
+ ver: '1.0',
190
+ complete: 1,
191
+ nodes: [
192
+ {
193
+ asi: 'example.com',
194
+ sid: 'publisher-id',
195
+ hp: 1
196
+ }
197
+ ]
198
+ }
199
+ })
200
+ );
201
+ const request = spec.buildRequests(bidRequests2, bidderRequest)[0];
202
+ expect(request.data.schain).to.eql({
203
+ ver: '1.0',
204
+ complete: 1,
205
+ nodes: [
206
+ {
207
+ asi: 'example.com',
208
+ sid: 'publisher-id',
209
+ hp: 1
210
+ }
211
+ ]
212
+ });
213
+ });
178
214
  });
179
215
 
180
216
  describe('interpretResponse', function() {
@@ -130,7 +130,7 @@ describe('the first party data module', function () {
130
130
  }
131
131
  };
132
132
 
133
- canonical.href = 'https://www.domain.com/path?query=12345';
133
+ config.setConfig({'pageUrl': 'https://www.domain.com/path?query=12345'});
134
134
  width = 1120;
135
135
  height = 750;
136
136