prebid.js 9.0.0 → 9.2.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 (307) hide show
  1. package/.nvmrc +1 -1
  2. package/browsers.json +3 -3
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/acuityadsBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioRtdProvider.js +1 -1
  11. package/dist/adagioUtils.js +1 -0
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/admanBidAdapter.js +1 -1
  14. package/dist/adpod.js +1 -1
  15. package/dist/adprimeBidAdapter.js +1 -1
  16. package/dist/adqueryBidAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adstirBidAdapter.js +1 -1
  19. package/dist/adtrgtmeBidAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adyoulikeBidAdapter.js +1 -1
  22. package/dist/agmaAnalyticsAdapter.js +1 -1
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/appnexusUtils.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/autoplayDetection.js +1 -1
  31. package/dist/axisBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/beyondmediaBidAdapter.js +1 -1
  34. package/dist/bidglassBidAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bliinkBidAdapter.js +1 -1
  37. package/dist/boldwinBidAdapter.js +1 -1
  38. package/dist/bridBidAdapter.js +1 -1
  39. package/dist/bridgewellBidAdapter.js +1 -1
  40. package/dist/brightMountainMediaBidAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/chunk-core.js +1 -1
  44. package/dist/compassBidAdapter.js +1 -1
  45. package/dist/concertBidAdapter.js +1 -1
  46. package/dist/connectadBidAdapter.js +1 -1
  47. package/dist/consumableBidAdapter.js +1 -1
  48. package/dist/contentexchangeBidAdapter.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/cwireBidAdapter.js +1 -1
  54. package/dist/dailymotionBidAdapter.js +1 -1
  55. package/dist/dependencies.json +83 -4
  56. package/dist/dspxBidAdapter.js +1 -1
  57. package/dist/dxkultureBidAdapter.js +1 -1
  58. package/dist/e_volutionBidAdapter.js +1 -1
  59. package/dist/emtvBidAdapter.js +1 -1
  60. package/dist/eplanningBidAdapter.js +1 -1
  61. package/dist/euidIdSystem.js +1 -1
  62. package/dist/exadsBidAdapter.js +1 -1
  63. package/dist/feedadBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/freewheel-sspBidAdapter.js +1 -1
  66. package/dist/globalsunBidAdapter.js +1 -1
  67. package/dist/gmosspBidAdapter.js +1 -1
  68. package/dist/goldbachBidAdapter.js +1 -1
  69. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  70. package/dist/greenbidsRtdProvider.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gumgumBidAdapter.js +1 -1
  73. package/dist/h12mediaBidAdapter.js +1 -1
  74. package/dist/hypelabBidAdapter.js +1 -1
  75. package/dist/id5IdSystem.js +1 -1
  76. package/dist/illuminBidAdapter.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/insticatorBidAdapter.js +1 -1
  80. package/dist/iqzoneBidAdapter.js +1 -1
  81. package/dist/ixBidAdapter.js +1 -1
  82. package/dist/jixieBidAdapter.js +1 -1
  83. package/dist/justpremiumBidAdapter.js +1 -1
  84. package/dist/kargoBidAdapter.js +1 -1
  85. package/dist/kimberliteBidAdapter.js +1 -1
  86. package/dist/kiviadsBidAdapter.js +1 -1
  87. package/dist/konduitAnalyticsAdapter.js +1 -1
  88. package/dist/krushmediaBidAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/liveIntentIdSystem.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/loyalBidAdapter.js +1 -1
  97. package/dist/luceadBidAdapter.js +1 -1
  98. package/dist/lunamediahbBidAdapter.js +1 -1
  99. package/dist/magniteAnalyticsAdapter.js +1 -1
  100. package/dist/malltvAnalyticsAdapter.js +1 -1
  101. package/dist/marsmediaBidAdapter.js +1 -1
  102. package/dist/mathildeadsBidAdapter.js +1 -1
  103. package/dist/mediafuseBidAdapter.js +1 -1
  104. package/dist/mediasquareBidAdapter.js +1 -1
  105. package/dist/mgidBidAdapter.js +1 -1
  106. package/dist/mgidXBidAdapter.js +1 -1
  107. package/dist/minutemediaBidAdapter.js +1 -1
  108. package/dist/missenaBidAdapter.js +1 -1
  109. package/dist/mobfoxpbBidAdapter.js +1 -1
  110. package/dist/mobianRtdProvider.js +1 -0
  111. package/dist/nexx360BidAdapter.js +1 -1
  112. package/dist/nobidAnalyticsAdapter.js +1 -1
  113. package/dist/nobidBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +190 -186
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openwebBidAdapter.js +1 -1
  119. package/dist/openxBidAdapter.js +1 -1
  120. package/dist/optidigitalBidAdapter.js +1 -1
  121. package/dist/ortbConverter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/ozoneBidAdapter.js +1 -1
  124. package/dist/paapi.js +1 -1
  125. package/dist/pgamsspBidAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/playdigoBidAdapter.js +1 -1
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/pubCircleBidAdapter.js +1 -1
  130. package/dist/publinkIdSystem.js +1 -1
  131. package/dist/publirBidAdapter.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  135. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/qtBidAdapter.js +1 -1
  138. package/dist/quantcastBidAdapter.js +1 -1
  139. package/dist/raynRtdProvider.js +1 -1
  140. package/dist/readpeakBidAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/retailspotBidAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/richaudienceBidAdapter.js +1 -0
  145. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  146. package/dist/riseBidAdapter.js +1 -1
  147. package/dist/rubiconBidAdapter.js +1 -1
  148. package/dist/seedingAllianceBidAdapter.js +1 -1
  149. package/dist/seedtagBidAdapter.js +1 -1
  150. package/dist/setupadBidAdapter.js +1 -1
  151. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  152. package/dist/sharethroughBidAdapter.js +1 -1
  153. package/dist/shinezBidAdapter.js +1 -1
  154. package/dist/shinezRtbBidAdapter.js +1 -1
  155. package/dist/smaatoBidAdapter.js +1 -1
  156. package/dist/smartadserverBidAdapter.js +1 -1
  157. package/dist/smartxBidAdapter.js +1 -1
  158. package/dist/smartytechBidAdapter.js +1 -1
  159. package/dist/smilewantedBidAdapter.js +1 -1
  160. package/dist/sonobiBidAdapter.js +1 -1
  161. package/dist/sovrnBidAdapter.js +1 -1
  162. package/dist/sspBCBidAdapter.js +1 -1
  163. package/dist/stnBidAdapter.js +1 -1
  164. package/dist/stvBidAdapter.js +1 -1
  165. package/dist/sublimeBidAdapter.js +1 -1
  166. package/dist/taboolaBidAdapter.js +1 -1
  167. package/dist/tagorasBidAdapter.js +1 -1
  168. package/dist/targetVideoBidAdapter.js +1 -1
  169. package/dist/teadsBidAdapter.js +1 -1
  170. package/dist/teqblazeUtils.js +1 -0
  171. package/dist/themoneytizerBidAdapter.js +1 -1
  172. package/dist/topicsFpdModule.js +1 -1
  173. package/dist/trionBidAdapter.js +1 -1
  174. package/dist/tripleliftBidAdapter.js +1 -1
  175. package/dist/ttdBidAdapter.js +1 -1
  176. package/dist/twistDigitalBidAdapter.js +1 -1
  177. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  178. package/dist/uid2IdSystem.js +1 -1
  179. package/dist/underdogmediaBidAdapter.js +1 -1
  180. package/dist/undertoneBidAdapter.js +1 -1
  181. package/dist/unrulyBidAdapter.js +1 -1
  182. package/dist/vidazooBidAdapter.js +1 -1
  183. package/dist/videobyteBidAdapter.js +1 -1
  184. package/dist/visiblemeasuresBidAdapter.js +1 -1
  185. package/dist/visxBidAdapter.js +1 -1
  186. package/dist/vuukleBidAdapter.js +1 -1
  187. package/dist/widespaceBidAdapter.js +1 -1
  188. package/dist/winrBidAdapter.js +1 -1
  189. package/dist/yahooAdsBidAdapter.js +1 -1
  190. package/dist/yieldmoBidAdapter.js +1 -1
  191. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  192. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  193. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  194. package/libraries/adagioUtils/adagioUtils.js +35 -0
  195. package/libraries/appnexusUtils/anUtils.js +1 -0
  196. package/libraries/autoplayDetection/autoplay.js +8 -1
  197. package/libraries/ortbConverter/converter.js +1 -1
  198. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  199. package/modules/.submodules.json +1 -0
  200. package/modules/acuityadsBidAdapter.js +5 -203
  201. package/modules/adagioBidAdapter.js +1 -17
  202. package/modules/adagioRtdProvider.js +41 -51
  203. package/modules/adagioRtdProvider.md +1 -0
  204. package/modules/admanBidAdapter.js +31 -188
  205. package/modules/adprimeBidAdapter.js +28 -165
  206. package/modules/axisBidAdapter.js +33 -165
  207. package/modules/beyondmediaBidAdapter.js +5 -189
  208. package/modules/bliinkBidAdapter.js +3 -31
  209. package/modules/boldwinBidAdapter.js +21 -159
  210. package/modules/ceeIdSystem.js +1 -1
  211. package/modules/compassBidAdapter.js +5 -198
  212. package/modules/contentexchangeBidAdapter.js +5 -200
  213. package/modules/conversantBidAdapter.js +1 -0
  214. package/modules/dailymotionBidAdapter.js +1 -1
  215. package/modules/e_volutionBidAdapter.js +4 -186
  216. package/modules/emtvBidAdapter.js +5 -198
  217. package/modules/globalsunBidAdapter.js +5 -199
  218. package/modules/id5IdSystem.js +31 -2
  219. package/modules/id5IdSystem.md +67 -2
  220. package/modules/iqzoneBidAdapter.js +5 -224
  221. package/modules/kiviadsBidAdapter.js +5 -199
  222. package/modules/krushmediaBidAdapter.js +25 -143
  223. package/modules/loyalBidAdapter.js +4 -178
  224. package/modules/lunamediahbBidAdapter.js +5 -118
  225. package/modules/mathildeadsBidAdapter.js +5 -198
  226. package/modules/mgidXBidAdapter.js +14 -209
  227. package/modules/mobfoxpbBidAdapter.js +4 -135
  228. package/modules/mobianRtdProvider.js +52 -0
  229. package/modules/mobianRtdProvider.md +11 -0
  230. package/modules/nobidAnalyticsAdapter.js +2 -3
  231. package/modules/novatiqIdSystem.md +2 -3
  232. package/modules/ozoneBidAdapter.js +117 -58
  233. package/modules/paapi.js +2 -1
  234. package/modules/pgamsspBidAdapter.js +5 -240
  235. package/modules/playdigoBidAdapter.js +4 -186
  236. package/modules/prebidServerBidAdapter/index.js +9 -2
  237. package/modules/pubCircleBidAdapter.js +5 -218
  238. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  239. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  240. package/modules/qtBidAdapter.js +5 -224
  241. package/modules/raynRtdProvider.js +36 -3
  242. package/modules/richaudienceBidAdapter.js +375 -0
  243. package/modules/richaudienceBidAdapter.md +1 -1
  244. package/modules/seedtagBidAdapter.js +1 -0
  245. package/modules/setupadBidAdapter.js +76 -153
  246. package/modules/setupadBidAdapter.md +1 -1
  247. package/modules/smaatoBidAdapter.js +17 -6
  248. package/modules/smartytechBidAdapter.js +7 -2
  249. package/modules/topicsFpdModule.js +1 -1
  250. package/modules/uid2IdSystem.js +0 -1
  251. package/modules/uid2IdSystem_shared.js +0 -1
  252. package/modules/visiblemeasuresBidAdapter.js +5 -199
  253. package/modules/zeta_global_sspAnalyticsAdapter.js +8 -4
  254. package/package.json +1 -1
  255. package/src/auction.js +5 -63
  256. package/src/utils/focusTimeout.js +41 -0
  257. package/src/utils/ttlCollection.js +2 -1
  258. package/src/utils.js +42 -0
  259. package/src/videoCache.js +72 -0
  260. package/test/mocks/videoCacheStub.js +1 -1
  261. package/test/spec/auctionmanager_spec.js +16 -1
  262. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  263. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  264. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  265. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  266. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  267. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  268. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  269. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  270. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  271. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  272. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  273. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  274. package/test/spec/modules/dailymotionBidAdapter_spec.js +3 -3
  275. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  276. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  277. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  278. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  279. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  280. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  281. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  282. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  283. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  284. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  285. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  286. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  287. package/test/spec/modules/mobianRtdProvider_spec.js +107 -0
  288. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  289. package/test/spec/modules/paapi_spec.js +5 -5
  290. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  291. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  292. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  293. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  294. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  295. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  296. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  297. package/test/spec/modules/richaudienceBidAdapter_spec.js +1304 -0
  298. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  299. package/test/spec/modules/setupadBidAdapter_spec.js +139 -97
  300. package/test/spec/modules/smaatoBidAdapter_spec.js +27 -0
  301. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  302. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  303. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  304. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +4 -0
  305. package/test/spec/ortbConverter/converter_spec.js +7 -3
  306. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  307. package/test/spec/videoCache_spec.js +56 -53
@@ -1,145 +1,252 @@
1
1
  import {expect} from 'chai';
2
2
  import {spec} from '../../../modules/lunamediahbBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
+ import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
+
6
+ const bidder = 'lunamediahb';
4
7
 
5
8
  describe('LunamediaHBBidAdapter', function () {
6
- const bid = {
7
- bidId: '23fhj33i987f',
8
- bidder: 'lunamediahb',
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
19
+ const bids = [
20
+ {
21
+ bidId: getUniqueIdentifierStr(),
22
+ bidder: bidder,
23
+ mediaTypes: {
24
+ [BANNER]: {
25
+ sizes: [[300, 250]]
26
+ }
27
+ },
28
+ params: {
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
32
+ },
33
+ {
34
+ bidId: getUniqueIdentifierStr(),
35
+ bidder: bidder,
36
+ mediaTypes: {
37
+ [VIDEO]: {
38
+ playerSize: [[300, 300]],
39
+ minduration: 5,
40
+ maxduration: 60
41
+ }
42
+ },
43
+ params: {
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
47
+ },
48
+ {
49
+ bidId: getUniqueIdentifierStr(),
50
+ bidder: bidder,
51
+ mediaTypes: {
52
+ [NATIVE]: {
53
+ native: {
54
+ title: {
55
+ required: true
56
+ },
57
+ body: {
58
+ required: true
59
+ },
60
+ icon: {
61
+ required: true,
62
+ size: [64, 64]
63
+ }
64
+ }
65
+ }
66
+ },
67
+ params: {
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
71
+ }
72
+ ];
73
+
74
+ const invalidBid = {
75
+ bidId: getUniqueIdentifierStr(),
76
+ bidder: bidder,
9
77
  mediaTypes: {
10
78
  [BANNER]: {
11
79
  sizes: [[300, 250]]
12
80
  }
13
81
  },
14
82
  params: {
15
- placementId: 783,
16
- traffic: BANNER
83
+
17
84
  }
18
- };
85
+ }
19
86
 
20
87
  const bidderRequest = {
88
+ uspConsent: '1---',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
21
93
  refererInfo: {
22
- referer: 'test.com'
23
- }
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
103
+ },
104
+ timeout: 500
24
105
  };
25
106
 
26
107
  describe('isBidRequestValid', function () {
27
108
  it('Should return true if there are bidId, params and key parameters present', function () {
28
- expect(spec.isBidRequestValid(bid)).to.be.true;
109
+ expect(spec.isBidRequestValid(bids[0])).to.be.true;
29
110
  });
30
111
  it('Should return false if at least one of parameters is not present', function () {
31
- delete bid.params.placementId;
32
- expect(spec.isBidRequestValid(bid)).to.be.false;
112
+ expect(spec.isBidRequestValid(invalidBid)).to.be.false;
33
113
  });
34
114
  });
35
115
 
36
116
  describe('buildRequests', function () {
37
- let serverRequest = spec.buildRequests([bid], bidderRequest);
117
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
118
+
38
119
  it('Creates a ServerRequest object with method, URL and data', function () {
39
120
  expect(serverRequest).to.exist;
40
121
  expect(serverRequest.method).to.exist;
41
122
  expect(serverRequest.url).to.exist;
42
123
  expect(serverRequest.data).to.exist;
43
124
  });
125
+
44
126
  it('Returns POST method', function () {
45
127
  expect(serverRequest.method).to.equal('POST');
46
128
  });
129
+
47
130
  it('Returns valid URL', function () {
48
131
  expect(serverRequest.url).to.equal('https://balancer.lmgssp.com/?c=o&m=multi');
49
132
  });
50
- it('Returns valid data if array of bids is valid', function () {
133
+
134
+ it('Returns general data valid', function () {
51
135
  let data = serverRequest.data;
52
136
  expect(data).to.be.an('object');
53
- expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements');
137
+ expect(data).to.have.all.keys('deviceWidth',
138
+ 'deviceHeight',
139
+ 'language',
140
+ 'secure',
141
+ 'host',
142
+ 'page',
143
+ 'placements',
144
+ 'coppa',
145
+ 'ccpa',
146
+ 'gdpr',
147
+ 'tmax'
148
+ );
54
149
  expect(data.deviceWidth).to.be.a('number');
55
150
  expect(data.deviceHeight).to.be.a('number');
56
151
  expect(data.language).to.be.a('string');
57
152
  expect(data.secure).to.be.within(0, 1);
58
153
  expect(data.host).to.be.a('string');
59
154
  expect(data.page).to.be.a('string');
60
- expect(data.gdpr).to.not.exist;
61
- expect(data.ccpa).to.not.exist;
62
- let placement = data['placements'][0];
63
- expect(placement).to.have.keys('placementId', 'bidId', 'traffic', 'sizes', 'schain');
64
- expect(placement.placementId).to.equal(783);
65
- expect(placement.bidId).to.equal('23fhj33i987f');
66
- expect(placement.traffic).to.equal(BANNER);
67
- expect(placement.schain).to.be.an('object');
68
- expect(placement.sizes).to.be.an('array');
155
+ expect(data.coppa).to.be.a('number');
156
+ expect(data.gdpr).to.be.a('object');
157
+ expect(data.ccpa).to.be.a('string');
158
+ expect(data.tmax).to.be.a('number');
159
+ expect(data.placements).to.have.lengthOf(3);
69
160
  });
70
161
 
71
- it('Returns valid data for mediatype video', function () {
72
- const playerSize = [300, 300];
73
- bid.mediaTypes = {};
74
- bid.params.traffic = VIDEO;
75
- bid.mediaTypes[VIDEO] = {
76
- playerSize
77
- };
78
- serverRequest = spec.buildRequests([bid], bidderRequest);
79
- let data = serverRequest.data;
80
- expect(data).to.be.an('object');
81
- let placement = data['placements'][0];
82
- expect(placement).to.be.an('object');
83
- expect(placement).to.have.keys('placementId', 'bidId', 'traffic', 'wPlayer', 'hPlayer', 'schain', 'videoContext');
84
- expect(placement.traffic).to.equal(VIDEO);
85
- expect(placement.wPlayer).to.equal(playerSize[0]);
86
- expect(placement.hPlayer).to.equal(playerSize[1]);
87
- });
162
+ it('Returns valid placements', function () {
163
+ const { placements } = serverRequest.data;
164
+ for (let i = 0, len = placements.length; i < len; i++) {
165
+ const placement = placements[i];
166
+ expect(placement.placementId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
167
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
168
+ expect(placement.bidId).to.be.a('string');
169
+ expect(placement.schain).to.be.an('object');
170
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
171
+ expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
88
173
 
89
- it('Returns valid data for mediatype native', function () {
90
- const native = {
91
- title: {
92
- required: true
93
- },
94
- body: {
95
- required: true
96
- },
97
- icon: {
98
- required: true,
99
- size: [64, 64]
174
+ if (placement.adFormat === BANNER) {
175
+ expect(placement.sizes).to.be.an('array');
100
176
  }
101
- };
102
-
103
- bid.mediaTypes = {};
104
- bid.params.traffic = NATIVE;
105
- bid.mediaTypes[NATIVE] = native;
106
- serverRequest = spec.buildRequests([bid], bidderRequest);
107
- let data = serverRequest.data;
108
- expect(data).to.be.an('object');
109
- let placement = data['placements'][0];
110
- expect(placement).to.be.an('object');
111
- expect(placement).to.have.keys('placementId', 'bidId', 'traffic', 'native', 'schain');
112
- expect(placement.traffic).to.equal(NATIVE);
113
- expect(placement.native).to.equal(native);
177
+ switch (placement.adFormat) {
178
+ case BANNER:
179
+ expect(placement.sizes).to.be.an('array');
180
+ break;
181
+ case VIDEO:
182
+ expect(placement.playerSize).to.be.an('array');
183
+ expect(placement.minduration).to.be.an('number');
184
+ expect(placement.maxduration).to.be.an('number');
185
+ break;
186
+ case NATIVE:
187
+ expect(placement.native).to.be.an('object');
188
+ break;
189
+ }
190
+ }
114
191
  });
115
192
 
116
193
  it('Returns data with gdprConsent and without uspConsent', function () {
117
- bidderRequest.gdprConsent = 'test';
118
- serverRequest = spec.buildRequests([bid], bidderRequest);
194
+ delete bidderRequest.uspConsent;
195
+ serverRequest = spec.buildRequests(bids, bidderRequest);
119
196
  let data = serverRequest.data;
120
197
  expect(data.gdpr).to.exist;
121
- expect(data.gdpr).to.be.a('string');
122
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
198
+ expect(data.gdpr).to.be.a('object');
199
+ expect(data.gdpr).to.have.property('consentString');
200
+ expect(data.gdpr).to.not.have.property('vendorData');
201
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
123
202
  expect(data.ccpa).to.not.exist;
124
203
  delete bidderRequest.gdprConsent;
125
204
  });
126
205
 
127
206
  it('Returns data with uspConsent and without gdprConsent', function () {
128
- bidderRequest.uspConsent = 'test';
129
- serverRequest = spec.buildRequests([bid], bidderRequest);
207
+ bidderRequest.uspConsent = '1---';
208
+ delete bidderRequest.gdprConsent;
209
+ serverRequest = spec.buildRequests(bids, bidderRequest);
130
210
  let data = serverRequest.data;
131
211
  expect(data.ccpa).to.exist;
132
212
  expect(data.ccpa).to.be.a('string');
133
213
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
134
214
  expect(data.gdpr).to.not.exist;
135
215
  });
216
+ });
217
+
218
+ describe('gpp consent', function () {
219
+ it('bidderRequest.gppConsent', () => {
220
+ bidderRequest.gppConsent = {
221
+ gppString: 'abc123',
222
+ applicableSections: [8]
223
+ };
136
224
 
137
- it('Returns empty data if no valid requests are passed', function () {
138
- serverRequest = spec.buildRequests([]);
225
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
139
226
  let data = serverRequest.data;
140
- expect(data.placements).to.be.an('array').that.is.empty;
141
- });
227
+ expect(data).to.be.an('object');
228
+ expect(data).to.have.property('gpp');
229
+ expect(data).to.have.property('gpp_sid');
230
+
231
+ delete bidderRequest.gppConsent;
232
+ })
233
+
234
+ it('bidderRequest.ortb2.regs.gpp', () => {
235
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
236
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
237
+ bidderRequest.ortb2.regs.gpp = 'abc123';
238
+ bidderRequest.ortb2.regs.gpp_sid = [8];
239
+
240
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
241
+ let data = serverRequest.data;
242
+ expect(data).to.be.an('object');
243
+ expect(data).to.have.property('gpp');
244
+ expect(data).to.have.property('gpp_sid');
245
+
246
+ bidderRequest.ortb2;
247
+ })
142
248
  });
249
+
143
250
  describe('interpretResponse', function () {
144
251
  it('Should interpret banner response', function () {
145
252
  const banner = {
@@ -154,23 +261,28 @@ describe('LunamediaHBBidAdapter', function () {
154
261
  creativeId: '2',
155
262
  netRevenue: true,
156
263
  currency: 'USD',
157
- dealId: '1'
264
+ dealId: '1',
265
+ meta: {
266
+ advertiserDomains: ['google.com'],
267
+ advertiserId: 1234
268
+ }
158
269
  }]
159
270
  };
160
271
  let bannerResponses = spec.interpretResponse(banner);
161
272
  expect(bannerResponses).to.be.an('array').that.is.not.empty;
162
273
  let dataItem = bannerResponses[0];
163
274
  expect(dataItem).to.have.all.keys('requestId', 'cpm', 'width', 'height', 'ad', 'ttl', 'creativeId',
164
- 'netRevenue', 'currency', 'dealId', 'mediaType');
165
- expect(dataItem.requestId).to.equal('23fhj33i987f');
166
- expect(dataItem.cpm).to.equal(0.4);
167
- expect(dataItem.width).to.equal(300);
168
- expect(dataItem.height).to.equal(250);
169
- expect(dataItem.ad).to.equal('Test');
170
- expect(dataItem.ttl).to.equal(120);
171
- expect(dataItem.creativeId).to.equal('2');
275
+ 'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
276
+ expect(dataItem.requestId).to.equal(banner.body[0].requestId);
277
+ expect(dataItem.cpm).to.equal(banner.body[0].cpm);
278
+ expect(dataItem.width).to.equal(banner.body[0].width);
279
+ expect(dataItem.height).to.equal(banner.body[0].height);
280
+ expect(dataItem.ad).to.equal(banner.body[0].ad);
281
+ expect(dataItem.ttl).to.equal(banner.body[0].ttl);
282
+ expect(dataItem.creativeId).to.equal(banner.body[0].creativeId);
172
283
  expect(dataItem.netRevenue).to.be.true;
173
- expect(dataItem.currency).to.equal('USD');
284
+ expect(dataItem.currency).to.equal(banner.body[0].currency);
285
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
174
286
  });
175
287
  it('Should interpret video response', function () {
176
288
  const video = {
@@ -183,7 +295,11 @@ describe('LunamediaHBBidAdapter', function () {
183
295
  creativeId: '2',
184
296
  netRevenue: true,
185
297
  currency: 'USD',
186
- dealId: '1'
298
+ dealId: '1',
299
+ meta: {
300
+ advertiserDomains: ['google.com'],
301
+ advertiserId: 1234
302
+ }
187
303
  }]
188
304
  };
189
305
  let videoResponses = spec.interpretResponse(video);
@@ -191,7 +307,7 @@ describe('LunamediaHBBidAdapter', function () {
191
307
 
192
308
  let dataItem = videoResponses[0];
193
309
  expect(dataItem).to.have.all.keys('requestId', 'cpm', 'vastUrl', 'ttl', 'creativeId',
194
- 'netRevenue', 'currency', 'dealId', 'mediaType');
310
+ 'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
195
311
  expect(dataItem.requestId).to.equal('23fhj33i987f');
196
312
  expect(dataItem.cpm).to.equal(0.5);
197
313
  expect(dataItem.vastUrl).to.equal('test.com');
@@ -199,6 +315,7 @@ describe('LunamediaHBBidAdapter', function () {
199
315
  expect(dataItem.creativeId).to.equal('2');
200
316
  expect(dataItem.netRevenue).to.be.true;
201
317
  expect(dataItem.currency).to.equal('USD');
318
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
202
319
  });
203
320
  it('Should interpret native response', function () {
204
321
  const native = {
@@ -216,13 +333,17 @@ describe('LunamediaHBBidAdapter', function () {
216
333
  creativeId: '2',
217
334
  netRevenue: true,
218
335
  currency: 'USD',
336
+ meta: {
337
+ advertiserDomains: ['google.com'],
338
+ advertiserId: 1234
339
+ }
219
340
  }]
220
341
  };
221
342
  let nativeResponses = spec.interpretResponse(native);
222
343
  expect(nativeResponses).to.be.an('array').that.is.not.empty;
223
344
 
224
345
  let dataItem = nativeResponses[0];
225
- expect(dataItem).to.have.keys('requestId', 'cpm', 'ttl', 'creativeId', 'netRevenue', 'currency', 'mediaType', 'native');
346
+ expect(dataItem).to.have.keys('requestId', 'cpm', 'ttl', 'creativeId', 'netRevenue', 'currency', 'mediaType', 'native', 'meta');
226
347
  expect(dataItem.native).to.have.keys('clickUrl', 'impressionTrackers', 'title', 'image')
227
348
  expect(dataItem.requestId).to.equal('23fhj33i987f');
228
349
  expect(dataItem.cpm).to.equal(0.4);
@@ -235,6 +356,7 @@ describe('LunamediaHBBidAdapter', function () {
235
356
  expect(dataItem.creativeId).to.equal('2');
236
357
  expect(dataItem.netRevenue).to.be.true;
237
358
  expect(dataItem.currency).to.equal('USD');
359
+ expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
238
360
  });
239
361
  it('Should return an empty array if invalid banner response is passed', function () {
240
362
  const invBanner = {
@@ -326,5 +448,17 @@ describe('LunamediaHBBidAdapter', function () {
326
448
  expect(syncData[0].url).to.be.a('string')
327
449
  expect(syncData[0].url).to.equal('https://cookie.lmgssp.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
328
450
  });
451
+ it('Should return array of objects with proper sync config , include GPP', function() {
452
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
453
+ gppString: 'abc123',
454
+ applicableSections: [8]
455
+ });
456
+ expect(syncData).to.be.an('array').which.is.not.empty;
457
+ expect(syncData[0]).to.be.an('object')
458
+ expect(syncData[0].type).to.be.a('string')
459
+ expect(syncData[0].type).to.equal('image')
460
+ expect(syncData[0].url).to.be.a('string')
461
+ expect(syncData[0].url).to.equal('https://cookie.lmgssp.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
462
+ });
329
463
  });
330
464
  });
@@ -3,21 +3,32 @@ import { spec } from '../../../modules/mathildeadsBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'mathildeads'
6
+ const bidder = 'mathildeads';
7
7
 
8
8
  describe('MathildeAdsBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
9
19
  const bids = [
10
20
  {
11
21
  bidId: getUniqueIdentifierStr(),
12
- bidder: bidder,
22
+ bidder,
13
23
  mediaTypes: {
14
24
  [BANNER]: {
15
25
  sizes: [[300, 250]]
16
26
  }
17
27
  },
18
28
  params: {
19
- placementId: 'testBanner',
20
- }
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
21
32
  },
22
33
  {
23
34
  bidId: getUniqueIdentifierStr(),
@@ -30,8 +41,9 @@ describe('MathildeAdsBidAdapter', function () {
30
41
  }
31
42
  },
32
43
  params: {
33
- placementId: 'testVideo',
34
- }
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
35
47
  },
36
48
  {
37
49
  bidId: getUniqueIdentifierStr(),
@@ -53,8 +65,9 @@ describe('MathildeAdsBidAdapter', function () {
53
65
  }
54
66
  },
55
67
  params: {
56
- placementId: 'testNative',
57
- }
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
58
71
  }
59
72
  ];
60
73
 
@@ -66,14 +79,27 @@ describe('MathildeAdsBidAdapter', function () {
66
79
  sizes: [[300, 250]]
67
80
  }
68
81
  },
69
- params: {}
82
+ params: {
83
+
84
+ }
70
85
  }
71
86
 
72
87
  const bidderRequest = {
73
88
  uspConsent: '1---',
74
- gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
75
93
  refererInfo: {
76
- referer: 'https://test.com'
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
77
103
  },
78
104
  timeout: 500
79
105
  };
@@ -127,7 +153,7 @@ describe('MathildeAdsBidAdapter', function () {
127
153
  expect(data.host).to.be.a('string');
128
154
  expect(data.page).to.be.a('string');
129
155
  expect(data.coppa).to.be.a('number');
130
- expect(data.gdpr).to.be.a('string');
156
+ expect(data.gdpr).to.be.a('object');
131
157
  expect(data.ccpa).to.be.a('string');
132
158
  expect(data.tmax).to.be.a('number');
133
159
  expect(data.placements).to.have.lengthOf(3);
@@ -142,6 +168,8 @@ describe('MathildeAdsBidAdapter', function () {
142
168
  expect(placement.bidId).to.be.a('string');
143
169
  expect(placement.schain).to.be.an('object');
144
170
  expect(placement.bidfloor).to.exist.and.to.equal(0);
171
+ expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
145
173
 
146
174
  if (placement.adFormat === BANNER) {
147
175
  expect(placement.sizes).to.be.an('array');
@@ -167,8 +195,10 @@ describe('MathildeAdsBidAdapter', function () {
167
195
  serverRequest = spec.buildRequests(bids, bidderRequest);
168
196
  let data = serverRequest.data;
169
197
  expect(data.gdpr).to.exist;
170
- expect(data.gdpr).to.be.a('string');
171
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
198
+ expect(data.gdpr).to.be.a('object');
199
+ expect(data.gdpr).to.have.property('consentString');
200
+ expect(data.gdpr).to.not.have.property('vendorData');
201
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
172
202
  expect(data.ccpa).to.not.exist;
173
203
  delete bidderRequest.gdprConsent;
174
204
  });
@@ -183,12 +213,38 @@ describe('MathildeAdsBidAdapter', function () {
183
213
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
184
214
  expect(data.gdpr).to.not.exist;
185
215
  });
216
+ });
217
+
218
+ describe('gpp consent', function () {
219
+ it('bidderRequest.gppConsent', () => {
220
+ bidderRequest.gppConsent = {
221
+ gppString: 'abc123',
222
+ applicableSections: [8]
223
+ };
186
224
 
187
- it('Returns empty data if no valid requests are passed', function () {
188
- serverRequest = spec.buildRequests([], bidderRequest);
225
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
189
226
  let data = serverRequest.data;
190
- expect(data.placements).to.be.an('array').that.is.empty;
191
- });
227
+ expect(data).to.be.an('object');
228
+ expect(data).to.have.property('gpp');
229
+ expect(data).to.have.property('gpp_sid');
230
+
231
+ delete bidderRequest.gppConsent;
232
+ })
233
+
234
+ it('bidderRequest.ortb2.regs.gpp', () => {
235
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
236
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
237
+ bidderRequest.ortb2.regs.gpp = 'abc123';
238
+ bidderRequest.ortb2.regs.gpp_sid = [8];
239
+
240
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
241
+ let data = serverRequest.data;
242
+ expect(data).to.be.an('object');
243
+ expect(data).to.have.property('gpp');
244
+ expect(data).to.have.property('gpp_sid');
245
+
246
+ bidderRequest.ortb2;
247
+ })
192
248
  });
193
249
 
194
250
  describe('interpretResponse', function () {
@@ -367,6 +423,7 @@ describe('MathildeAdsBidAdapter', function () {
367
423
  expect(serverResponses).to.be.an('array').that.is.empty;
368
424
  });
369
425
  });
426
+
370
427
  describe('getUserSyncs', function() {
371
428
  it('Should return array of objects with proper sync config , include GDPR', function() {
372
429
  const syncData = spec.getUserSyncs({}, {}, {
@@ -391,5 +448,17 @@ describe('MathildeAdsBidAdapter', function () {
391
448
  expect(syncData[0].url).to.be.a('string')
392
449
  expect(syncData[0].url).to.equal('https://cs2.mathilde-ads.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
393
450
  });
451
+ it('Should return array of objects with proper sync config , include GPP', function() {
452
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
453
+ gppString: 'abc123',
454
+ applicableSections: [8]
455
+ });
456
+ expect(syncData).to.be.an('array').which.is.not.empty;
457
+ expect(syncData[0]).to.be.an('object')
458
+ expect(syncData[0].type).to.be.a('string')
459
+ expect(syncData[0].type).to.equal('image')
460
+ expect(syncData[0].url).to.be.a('string')
461
+ expect(syncData[0].url).to.equal('https://cs2.mathilde-ads.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
462
+ });
394
463
  });
395
464
  });
@@ -5,7 +5,7 @@ import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
  import { config } from '../../../src/config';
6
6
  import { USERSYNC_DEFAULT_CONFIG } from '../../../src/userSync';
7
7
 
8
- const bidder = 'mgidX'
8
+ const bidder = 'mgidX';
9
9
 
10
10
  describe('MGIDXBidAdapter', function () {
11
11
  const userIdAsEids = [{
@@ -95,9 +95,17 @@ describe('MGIDXBidAdapter', function () {
95
95
  vendorData: {}
96
96
  },
97
97
  refererInfo: {
98
- referer: 'https://test.com'
98
+ referer: 'https://test.com',
99
+ page: 'https://test.com'
99
100
  },
100
- timeout: 1000
101
+ ortb2: {
102
+ device: {
103
+ w: 1512,
104
+ h: 982,
105
+ language: 'en-UK'
106
+ }
107
+ },
108
+ timeout: 500
101
109
  };
102
110
 
103
111
  describe('isBidRequestValid', function () {