prebid.js 9.1.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 (290) hide show
  1. package/browsers.json +3 -3
  2. package/dist/33acrossAnalyticsAdapter.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/33acrossIdSystem.js +1 -1
  5. package/dist/BTBidAdapter.js +1 -1
  6. package/dist/acuityadsBidAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adagioRtdProvider.js +1 -1
  10. package/dist/adagioUtils.js +1 -0
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/admanBidAdapter.js +1 -1
  13. package/dist/adpod.js +1 -1
  14. package/dist/adprimeBidAdapter.js +1 -1
  15. package/dist/adqueryBidAdapter.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adstirBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgBidAdapter.js +1 -1
  20. package/dist/adyoulikeBidAdapter.js +1 -1
  21. package/dist/agmaAnalyticsAdapter.js +1 -1
  22. package/dist/ajaBidAdapter.js +1 -1
  23. package/dist/amxBidAdapter.js +1 -1
  24. package/dist/amxIdSystem.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/appnexusUtils.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/autoplayDetection.js +1 -1
  30. package/dist/axisBidAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/beyondmediaBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bliinkBidAdapter.js +1 -1
  36. package/dist/boldwinBidAdapter.js +1 -1
  37. package/dist/bridBidAdapter.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/carodaBidAdapter.js +1 -1
  41. package/dist/chtnwBidAdapter.js +1 -1
  42. package/dist/chunk-core.js +1 -1
  43. package/dist/compassBidAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/contentexchangeBidAdapter.js +1 -1
  48. package/dist/conversantAnalyticsAdapter.js +1 -1
  49. package/dist/conversantBidAdapter.js +1 -1
  50. package/dist/craftBidAdapter.js +1 -1
  51. package/dist/criteoBidAdapter.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/dailymotionBidAdapter.js +1 -1
  54. package/dist/dependencies.json +78 -2
  55. package/dist/dspxBidAdapter.js +1 -1
  56. package/dist/dxkultureBidAdapter.js +1 -1
  57. package/dist/e_volutionBidAdapter.js +1 -1
  58. package/dist/emtvBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/euidIdSystem.js +1 -1
  61. package/dist/exadsBidAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/globalsunBidAdapter.js +1 -1
  66. package/dist/gmosspBidAdapter.js +1 -1
  67. package/dist/goldbachBidAdapter.js +1 -1
  68. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  69. package/dist/greenbidsRtdProvider.js +1 -1
  70. package/dist/gridBidAdapter.js +1 -1
  71. package/dist/gumgumBidAdapter.js +1 -1
  72. package/dist/h12mediaBidAdapter.js +1 -1
  73. package/dist/hypelabBidAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/illuminBidAdapter.js +1 -1
  76. package/dist/imdsBidAdapter.js +1 -1
  77. package/dist/improvedigitalBidAdapter.js +1 -1
  78. package/dist/insticatorBidAdapter.js +1 -1
  79. package/dist/iqzoneBidAdapter.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/jixieBidAdapter.js +1 -1
  82. package/dist/justpremiumBidAdapter.js +1 -1
  83. package/dist/kargoBidAdapter.js +1 -1
  84. package/dist/kimberliteBidAdapter.js +1 -1
  85. package/dist/kiviadsBidAdapter.js +1 -1
  86. package/dist/konduitAnalyticsAdapter.js +1 -1
  87. package/dist/krushmediaBidAdapter.js +1 -1
  88. package/dist/kueezBidAdapter.js +1 -1
  89. package/dist/kueezRtbBidAdapter.js +1 -1
  90. package/dist/lassoBidAdapter.js +1 -1
  91. package/dist/lifestreetBidAdapter.js +1 -1
  92. package/dist/liveIntentIdSystem.js +1 -1
  93. package/dist/logicadBidAdapter.js +1 -1
  94. package/dist/loglyliftBidAdapter.js +1 -1
  95. package/dist/loyalBidAdapter.js +1 -1
  96. package/dist/luceadBidAdapter.js +1 -1
  97. package/dist/lunamediahbBidAdapter.js +1 -1
  98. package/dist/magniteAnalyticsAdapter.js +1 -1
  99. package/dist/malltvAnalyticsAdapter.js +1 -1
  100. package/dist/marsmediaBidAdapter.js +1 -1
  101. package/dist/mathildeadsBidAdapter.js +1 -1
  102. package/dist/mediafuseBidAdapter.js +1 -1
  103. package/dist/mediasquareBidAdapter.js +1 -1
  104. package/dist/mgidBidAdapter.js +1 -1
  105. package/dist/mgidXBidAdapter.js +1 -1
  106. package/dist/minutemediaBidAdapter.js +1 -1
  107. package/dist/missenaBidAdapter.js +1 -1
  108. package/dist/mobfoxpbBidAdapter.js +1 -1
  109. package/dist/mobianRtdProvider.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/nobidAnalyticsAdapter.js +1 -1
  112. package/dist/nobidBidAdapter.js +1 -1
  113. package/dist/not-for-prod/prebid.js +187 -185
  114. package/dist/oguryBidAdapter.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/openwebBidAdapter.js +1 -1
  118. package/dist/openxBidAdapter.js +1 -1
  119. package/dist/optidigitalBidAdapter.js +1 -1
  120. package/dist/ortbConverter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/ozoneBidAdapter.js +1 -1
  123. package/dist/paapi.js +1 -1
  124. package/dist/pgamsspBidAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/playdigoBidAdapter.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/pubCircleBidAdapter.js +1 -1
  129. package/dist/publinkIdSystem.js +1 -1
  130. package/dist/publirBidAdapter.js +1 -1
  131. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  132. package/dist/pubmaticBidAdapter.js +1 -1
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pxyzBidAdapter.js +1 -1
  136. package/dist/qtBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/raynRtdProvider.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/relaidoBidAdapter.js +1 -1
  141. package/dist/retailspotBidAdapter.js +1 -1
  142. package/dist/rhythmoneBidAdapter.js +1 -1
  143. package/dist/riseBidAdapter.js +1 -1
  144. package/dist/rubiconBidAdapter.js +1 -1
  145. package/dist/seedingAllianceBidAdapter.js +1 -1
  146. package/dist/seedtagBidAdapter.js +1 -1
  147. package/dist/setupadBidAdapter.js +1 -1
  148. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  149. package/dist/sharethroughBidAdapter.js +1 -1
  150. package/dist/shinezBidAdapter.js +1 -1
  151. package/dist/shinezRtbBidAdapter.js +1 -1
  152. package/dist/smaatoBidAdapter.js +1 -1
  153. package/dist/smartadserverBidAdapter.js +1 -1
  154. package/dist/smartxBidAdapter.js +1 -1
  155. package/dist/smartytechBidAdapter.js +1 -1
  156. package/dist/smilewantedBidAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnBidAdapter.js +1 -1
  159. package/dist/sspBCBidAdapter.js +1 -1
  160. package/dist/stnBidAdapter.js +1 -1
  161. package/dist/stvBidAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/taboolaBidAdapter.js +1 -1
  164. package/dist/tagorasBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/teqblazeUtils.js +1 -0
  168. package/dist/themoneytizerBidAdapter.js +1 -1
  169. package/dist/topicsFpdModule.js +1 -1
  170. package/dist/trionBidAdapter.js +1 -1
  171. package/dist/tripleliftBidAdapter.js +1 -1
  172. package/dist/ttdBidAdapter.js +1 -1
  173. package/dist/twistDigitalBidAdapter.js +1 -1
  174. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  175. package/dist/uid2IdSystem.js +1 -1
  176. package/dist/underdogmediaBidAdapter.js +1 -1
  177. package/dist/undertoneBidAdapter.js +1 -1
  178. package/dist/unrulyBidAdapter.js +1 -1
  179. package/dist/vidazooBidAdapter.js +1 -1
  180. package/dist/videobyteBidAdapter.js +1 -1
  181. package/dist/visiblemeasuresBidAdapter.js +1 -1
  182. package/dist/visxBidAdapter.js +1 -1
  183. package/dist/vuukleBidAdapter.js +1 -1
  184. package/dist/widespaceBidAdapter.js +1 -1
  185. package/dist/winrBidAdapter.js +1 -1
  186. package/dist/yahooAdsBidAdapter.js +1 -1
  187. package/dist/yieldmoBidAdapter.js +1 -1
  188. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  189. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  190. package/libraries/adagioUtils/adagioUtils.js +35 -0
  191. package/libraries/appnexusUtils/anUtils.js +1 -0
  192. package/libraries/autoplayDetection/autoplay.js +8 -1
  193. package/libraries/ortbConverter/converter.js +1 -1
  194. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  195. package/modules/.submodules.json +1 -0
  196. package/modules/acuityadsBidAdapter.js +5 -203
  197. package/modules/adagioBidAdapter.js +1 -17
  198. package/modules/adagioRtdProvider.js +41 -51
  199. package/modules/adagioRtdProvider.md +1 -0
  200. package/modules/admanBidAdapter.js +31 -188
  201. package/modules/adprimeBidAdapter.js +28 -165
  202. package/modules/axisBidAdapter.js +33 -165
  203. package/modules/beyondmediaBidAdapter.js +5 -189
  204. package/modules/bliinkBidAdapter.js +3 -31
  205. package/modules/boldwinBidAdapter.js +21 -159
  206. package/modules/ceeIdSystem.js +1 -1
  207. package/modules/compassBidAdapter.js +5 -198
  208. package/modules/contentexchangeBidAdapter.js +5 -200
  209. package/modules/conversantBidAdapter.js +1 -0
  210. package/modules/e_volutionBidAdapter.js +4 -186
  211. package/modules/emtvBidAdapter.js +5 -198
  212. package/modules/globalsunBidAdapter.js +5 -199
  213. package/modules/id5IdSystem.js +31 -2
  214. package/modules/id5IdSystem.md +67 -2
  215. package/modules/iqzoneBidAdapter.js +5 -224
  216. package/modules/kiviadsBidAdapter.js +5 -199
  217. package/modules/krushmediaBidAdapter.js +25 -143
  218. package/modules/loyalBidAdapter.js +4 -178
  219. package/modules/lunamediahbBidAdapter.js +5 -118
  220. package/modules/mathildeadsBidAdapter.js +5 -198
  221. package/modules/mgidXBidAdapter.js +14 -207
  222. package/modules/mobfoxpbBidAdapter.js +4 -135
  223. package/modules/mobianRtdProvider.js +2 -2
  224. package/modules/nobidAnalyticsAdapter.js +2 -3
  225. package/modules/ozoneBidAdapter.js +117 -58
  226. package/modules/paapi.js +2 -1
  227. package/modules/pgamsspBidAdapter.js +5 -240
  228. package/modules/playdigoBidAdapter.js +4 -186
  229. package/modules/prebidServerBidAdapter/index.js +9 -2
  230. package/modules/pubCircleBidAdapter.js +5 -218
  231. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  232. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  233. package/modules/qtBidAdapter.js +5 -224
  234. package/modules/raynRtdProvider.js +36 -3
  235. package/modules/seedtagBidAdapter.js +1 -0
  236. package/modules/setupadBidAdapter.js +58 -140
  237. package/modules/smartytechBidAdapter.js +7 -2
  238. package/modules/topicsFpdModule.js +1 -1
  239. package/modules/uid2IdSystem.js +0 -1
  240. package/modules/uid2IdSystem_shared.js +0 -1
  241. package/modules/visiblemeasuresBidAdapter.js +5 -199
  242. package/package.json +1 -1
  243. package/src/auction.js +5 -63
  244. package/src/utils/focusTimeout.js +41 -0
  245. package/src/utils/ttlCollection.js +2 -1
  246. package/src/utils.js +42 -0
  247. package/src/videoCache.js +72 -0
  248. package/test/mocks/videoCacheStub.js +1 -1
  249. package/test/spec/auctionmanager_spec.js +16 -1
  250. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  251. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  252. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  253. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  254. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  255. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  256. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  257. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  258. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  259. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  260. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  261. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  262. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  263. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  264. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  265. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  266. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  267. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  268. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  269. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  270. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  271. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  272. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  273. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  274. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  275. package/test/spec/modules/paapi_spec.js +5 -5
  276. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  277. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  278. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  279. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  280. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  281. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  282. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  283. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  284. package/test/spec/modules/setupadBidAdapter_spec.js +124 -97
  285. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  286. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  287. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  288. package/test/spec/ortbConverter/converter_spec.js +7 -3
  289. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  290. package/test/spec/videoCache_spec.js +56 -53
@@ -1,11 +1,21 @@
1
1
  import { expect } from 'chai';
2
- import { spec } from '../../../modules/pubCircleBidAdapter';
2
+ import { spec } from '../../../modules/pubCircleBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'pubcircle'
6
+ const bidder = 'pubcircle';
7
7
 
8
8
  describe('PubCircleBidAdapter', 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(),
@@ -16,8 +26,9 @@ describe('PubCircleBidAdapter', function () {
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('PubCircleBidAdapter', 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('PubCircleBidAdapter', function () {
53
65
  }
54
66
  },
55
67
  params: {
56
- placementId: 'testNative',
57
- }
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
58
71
  }
59
72
  ];
60
73
 
@@ -73,9 +86,20 @@ describe('PubCircleBidAdapter', function () {
73
86
 
74
87
  const bidderRequest = {
75
88
  uspConsent: '1---',
76
- gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
77
93
  refererInfo: {
78
- 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
+ }
79
103
  },
80
104
  timeout: 500
81
105
  };
@@ -129,7 +153,7 @@ describe('PubCircleBidAdapter', function () {
129
153
  expect(data.host).to.be.a('string');
130
154
  expect(data.page).to.be.a('string');
131
155
  expect(data.coppa).to.be.a('number');
132
- expect(data.gdpr).to.be.a('string');
156
+ expect(data.gdpr).to.be.a('object');
133
157
  expect(data.ccpa).to.be.a('string');
134
158
  expect(data.tmax).to.be.a('number');
135
159
  expect(data.placements).to.have.lengthOf(3);
@@ -145,6 +169,7 @@ describe('PubCircleBidAdapter', function () {
145
169
  expect(placement.schain).to.be.an('object');
146
170
  expect(placement.bidfloor).to.exist.and.to.equal(0);
147
171
  expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
148
173
 
149
174
  if (placement.adFormat === BANNER) {
150
175
  expect(placement.sizes).to.be.an('array');
@@ -170,8 +195,10 @@ describe('PubCircleBidAdapter', function () {
170
195
  serverRequest = spec.buildRequests(bids, bidderRequest);
171
196
  let data = serverRequest.data;
172
197
  expect(data.gdpr).to.exist;
173
- expect(data.gdpr).to.be.a('string');
174
- 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);
175
202
  expect(data.ccpa).to.not.exist;
176
203
  delete bidderRequest.gdprConsent;
177
204
  });
@@ -186,12 +213,38 @@ describe('PubCircleBidAdapter', function () {
186
213
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
187
214
  expect(data.gdpr).to.not.exist;
188
215
  });
216
+ });
189
217
 
190
- it('Returns empty data if no valid requests are passed', function () {
191
- serverRequest = spec.buildRequests([], bidderRequest);
218
+ describe('gpp consent', function () {
219
+ it('bidderRequest.gppConsent', () => {
220
+ bidderRequest.gppConsent = {
221
+ gppString: 'abc123',
222
+ applicableSections: [8]
223
+ };
224
+
225
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
192
226
  let data = serverRequest.data;
193
- expect(data.placements).to.be.an('array').that.is.empty;
194
- });
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
+ })
195
248
  });
196
249
 
197
250
  describe('interpretResponse', function () {
@@ -395,5 +448,17 @@ describe('PubCircleBidAdapter', function () {
395
448
  expect(syncData[0].url).to.be.a('string')
396
449
  expect(syncData[0].url).to.equal('https://cs.pubcircle.ai/image?pbjs=1&ccpa_consent=1---&coppa=0')
397
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://cs.pubcircle.ai/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
462
+ });
398
463
  });
399
464
  });
@@ -568,7 +568,7 @@ describe('pubmatic analytics adapter', function () {
568
568
  expect(data.tgid).to.equal(15);
569
569
  expect(data.fmv).to.equal('floorModelTest');
570
570
  expect(data.ft).to.equal(1);
571
- expect(data.pbv).to.equal(getGlobal()?.version || '-1');
571
+ expect(data.pbv).to.equal('$prebid.version$' || '-1');
572
572
  expect(data.s).to.be.an('array');
573
573
  expect(data.s.length).to.equal(2);
574
574
  // slot 1
@@ -786,7 +786,7 @@ describe('pubmatic analytics adapter', function () {
786
786
  expect(data.pid).to.equal('1111');
787
787
  expect(data.fmv).to.equal('floorModelTest');
788
788
  expect(data.ft).to.equal(1);
789
- expect(data.pbv).to.equal(getGlobal()?.version || '-1');
789
+ expect(data.pbv).to.equal('$prebid.version$' || '-1');
790
790
  expect(data.s).to.be.an('array');
791
791
  expect(data.s.length).to.equal(2);
792
792
  expect(data.tgid).to.equal(0);
@@ -866,7 +866,7 @@ describe('pubmatic analytics adapter', function () {
866
866
  expect(data.tgid).to.equal(0);// test group id should be between 0-15 else set to 0
867
867
  expect(data.fmv).to.equal('floorModelTest');
868
868
  expect(data.ft).to.equal(1);
869
- expect(data.pbv).to.equal(getGlobal()?.version || '-1');
869
+ expect(data.pbv).to.equal('$prebid.version$' || '-1');
870
870
  expect(data.s).to.be.an('array');
871
871
  expect(data.s.length).to.equal(2);
872
872
  // slot 1
@@ -1434,7 +1434,7 @@ describe('pubmatic analytics adapter', function () {
1434
1434
  expect(data.tst).to.equal(1519767016);
1435
1435
  expect(data.tgid).to.equal(15);
1436
1436
  expect(data.fmv).to.equal('floorModelTest');
1437
- expect(data.pbv).to.equal(getGlobal()?.version || '-1');
1437
+ expect(data.pbv).to.equal('$prebid.version$' || '-1');
1438
1438
  expect(data.ft).to.equal(1);
1439
1439
  expect(data.s).to.be.an('array');
1440
1440
  expect(data.s.length).to.equal(2);
@@ -1566,7 +1566,7 @@ describe('pubmatic analytics adapter', function () {
1566
1566
  expect(data.tst).to.equal(1519767016);
1567
1567
  expect(data.tgid).to.equal(15);
1568
1568
  expect(data.fmv).to.equal('floorModelTest');
1569
- expect(data.pbv).to.equal(getGlobal()?.version || '-1');
1569
+ expect(data.pbv).to.equal('$prebid.version$' || '-1');
1570
1570
  expect(data.ft).to.equal(1);
1571
1571
  expect(data.s).to.be.an('array');
1572
1572
  expect(data.s.length).to.equal(2);
@@ -1657,8 +1657,55 @@ describe('pubmatic analytics adapter', function () {
1657
1657
  expect(data.origbidid).to.equal('partnerImpressionID-1');
1658
1658
  });
1659
1659
 
1660
+ it('Logger: should use originalRequestId to find the bid', function() {
1661
+ MOCK.BID_RESPONSE[1]['originalRequestId'] = '3bd4ebb1c900e2';
1662
+ MOCK.BID_RESPONSE[1]['requestId'] = '54d4ebb1c9003e';
1663
+ sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
1664
+ return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
1665
+ });
1666
+
1667
+ config.setConfig({
1668
+ testGroupId: 15
1669
+ });
1670
+
1671
+ events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
1672
+ events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
1673
+ events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
1674
+ events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
1675
+ events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
1676
+ events.emit(AUCTION_END, MOCK.AUCTION_END);
1677
+ events.emit(SET_TARGETING, MOCK.SET_TARGETING);
1678
+ events.emit(BID_WON, MOCK.BID_WON[0]);
1679
+ events.emit(BID_WON, MOCK.BID_WON[1]);
1680
+
1681
+ clock.tick(2000 + 1000);
1682
+ expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1683
+ let request = requests[2]; // logger is executed late, trackers execute first
1684
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1685
+ let data = getLoggerJsonFromRequest(request.requestBody);
1686
+ expect(data.s).to.be.an('array');
1687
+ expect(data.s.length).to.equal(2);
1688
+
1689
+ // slot 1
1690
+ expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
1691
+ expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
1692
+
1693
+ // slot 2
1694
+ expect(data.s[1].ps[0].bidid).to.equal('54d4ebb1c9003e');
1695
+ expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
1696
+
1697
+ // tracker slot1
1698
+ let firstTracker = requests[0].url;
1699
+ expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1700
+ data = {};
1701
+ firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1702
+ expect(data.bidid).to.equal('2ecff0db240757');
1703
+ expect(data.origbidid).to.equal('partnerImpressionID-1');
1704
+ });
1705
+
1660
1706
  it('Logger: best case + win tracker. Log bidId when partnerimpressionid is missing', function() {
1661
1707
  delete MOCK.BID_RESPONSE[1]['partnerImpId'];
1708
+ MOCK.BID_RESPONSE[1]['requestId'] = '3bd4ebb1c900e2';
1662
1709
  MOCK.BID_RESPONSE[1]['prebidBidId'] = 'Prebid-bid-id-1';
1663
1710
  sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
1664
1711
  return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
@@ -26,7 +26,7 @@ describe('QTBidAdapter', function () {
26
26
  }
27
27
  },
28
28
  params: {
29
- placementId: 'testBanner',
29
+ placementId: 'testBanner'
30
30
  },
31
31
  userIdAsEids
32
32
  },
@@ -41,7 +41,7 @@ describe('QTBidAdapter', function () {
41
41
  }
42
42
  },
43
43
  params: {
44
- placementId: 'testVideo',
44
+ placementId: 'testVideo'
45
45
  },
46
46
  userIdAsEids
47
47
  },
@@ -91,7 +91,15 @@ describe('QTBidAdapter', function () {
91
91
  vendorData: {}
92
92
  },
93
93
  refererInfo: {
94
- 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
+ }
95
103
  },
96
104
  timeout: 500
97
105
  };
@@ -119,6 +127,10 @@ describe('QTBidAdapter', function () {
119
127
  expect(serverRequest.method).to.equal('POST');
120
128
  });
121
129
 
130
+ it('Returns valid URL', function () {
131
+ expect(serverRequest.url).to.equal('https://endpoint1.qt.io/pbjs');
132
+ });
133
+
122
134
  it('Returns general data valid', function () {
123
135
  let data = serverRequest.data;
124
136
  expect(data).to.be.an('object');
@@ -152,6 +152,7 @@ describe('rayn RTD Submodule', function () {
152
152
  2: ['71', '313'],
153
153
  4: ['33', '145', '712']
154
154
  };
155
+ TEST_SEGMENTS['103015'] = ['agdv23', 'avscg3'];
155
156
 
156
157
  const bidderOrtb2 = {};
157
158
  const bidders = RTD_CONFIG.dataProviders[0].params.bidders;
@@ -174,6 +175,9 @@ describe('rayn RTD Submodule', function () {
174
175
  TEST_SEGMENTS['4']['3'].forEach((id) => {
175
176
  expect(ortb2.user.data[0].segment.find(segment => segment.id === id)).to.exist;
176
177
  });
178
+ TEST_SEGMENTS['103015'].forEach((id) => {
179
+ expect(ortb2.user.data[1].segment.find(segment => segment.id === id)).to.exist;
180
+ });
177
181
  });
178
182
  });
179
183
  });
@@ -229,6 +233,27 @@ describe('rayn RTD Submodule', function () {
229
233
  logMessageSpy.restore();
230
234
  });
231
235
 
236
+ it('should update reqBidsConfigObj and execute callback using persona segment from localStorage', function () {
237
+ const callbackSpy = sinon.spy();
238
+ const logMessageSpy = sinon.spy(utils, 'logMessage');
239
+ const testSegments = {
240
+ 103015: ['agdv23', 'avscg3']
241
+ };
242
+
243
+ getDataFromLocalStorageStub
244
+ .withArgs(raynRTD.RAYN_LOCAL_STORAGE_KEY)
245
+ .returns(JSON.stringify(testSegments));
246
+
247
+ const reqBidsConfigObj = { ortb2Fragments: { bidder: {} } };
248
+
249
+ raynRTD.raynSubmodule.getBidRequestData(reqBidsConfigObj, callbackSpy, RTD_CONFIG.dataProviders[0]);
250
+
251
+ expect(callbackSpy.calledOnce).to.be.true;
252
+ expect(logMessageSpy.lastCall.lastArg).to.equal(`Segtax data from localStorage: ${JSON.stringify(testSegments)}`);
253
+
254
+ logMessageSpy.restore();
255
+ });
256
+
232
257
  it('should update reqBidsConfigObj and execute callback using segments from raynJS', function () {
233
258
  const callbackSpy = sinon.spy();
234
259
  const logMessageSpy = sinon.spy(utils, 'logMessage');
@@ -37,6 +37,7 @@ function getSlotConfigs(mediaTypes, params) {
37
37
  ortb2Imp: {
38
38
  ext: {
39
39
  tid: 'd704d006-0d6e-4a09-ad6c-179e7e758096',
40
+ gpid: 'some-gpid'
40
41
  }
41
42
  },
42
43
  adUnitCode: adUnitCode,
@@ -299,6 +300,7 @@ describe('Seedtag Adapter', function () {
299
300
  expect(data.ttfb).to.be.greaterThanOrEqual(0);
300
301
 
301
302
  expect(data.bidRequests[0].adUnitCode).to.equal(adUnitCode);
303
+ expect(data.bidRequests[0].gpid).to.equal('some-gpid');
302
304
  });
303
305
 
304
306
  describe('GDPR params', function () {
@@ -1,4 +1,4 @@
1
- import { spec } from 'modules/setupadBidAdapter.js';
1
+ import { spec, biddersCreativeIds } from 'modules/setupadBidAdapter.js';
2
2
 
3
3
  describe('SetupadAdapter', function () {
4
4
  const userIdAsEids = [
@@ -42,9 +42,104 @@ describe('SetupadAdapter', function () {
42
42
  },
43
43
  userIdAsEids,
44
44
  },
45
+ {
46
+ adUnitCode: 'test-div-2',
47
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
48
+ bidId: '22c4871113f461',
49
+ bidder: 'rubicon',
50
+ bidderRequestId: '15246a574e859f',
51
+ uspConsent: 'usp-context-string',
52
+ gdprConsent: {
53
+ consentString: 'BOtmiBKOtmiBKABABAENAFAAAAACeAAA',
54
+ gdprApplies: true,
55
+ },
56
+ params: {
57
+ placement_id: '123',
58
+ account_id: 'test-account-id',
59
+ },
60
+ sizes: [[300, 250]],
61
+ ortb2: {
62
+ device: {
63
+ w: 1500,
64
+ h: 1000,
65
+ },
66
+ site: {
67
+ domain: 'test.com',
68
+ page: 'http://test.com',
69
+ },
70
+ },
71
+ userIdAsEids,
72
+ },
45
73
  ];
46
74
 
47
75
  const bidderRequest = {
76
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
77
+ auctionStart: 1579746300522,
78
+ bidderCode: 'setupad',
79
+ bidderRequestId: '15246a574e859f',
80
+ bids: [
81
+ {
82
+ adUnitCode: 'test-div',
83
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
84
+ bidId: '22c4871113f461',
85
+ bidder: 'rubicon',
86
+ bidderRequestId: '15246a574e859f',
87
+ uspConsent: 'usp-context-string',
88
+ gdprConsent: {
89
+ consentString: 'BOtmiBKOtmiBKABABAENAFAAAAACeAAA',
90
+ gdprApplies: true,
91
+ },
92
+ params: {
93
+ placement_id: '123',
94
+ account_id: 'test-account-id',
95
+ },
96
+ sizes: [[300, 250]],
97
+ ortb2: {
98
+ device: {
99
+ w: 1500,
100
+ h: 1000,
101
+ },
102
+ site: {
103
+ domain: 'test.com',
104
+ page: 'http://test.com',
105
+ },
106
+ },
107
+ userIdAsEids,
108
+ },
109
+ {
110
+ adUnitCode: 'test-div-2',
111
+ auctionId: 'b06c5141-fe8f-4cdf-9d7d-54415490a917',
112
+ bidId: '22c4871113f461',
113
+ bidder: 'rubicon',
114
+ bidderRequestId: '15246a574e859f',
115
+ uspConsent: 'usp-context-string',
116
+ gdprConsent: {
117
+ consentString: 'BOtmiBKOtmiBKABABAENAFAAAAACeAAA',
118
+ gdprApplies: true,
119
+ },
120
+ params: {
121
+ placement_id: '123',
122
+ account_id: 'test-account-id',
123
+ },
124
+ sizes: [[300, 250]],
125
+ ortb2: {
126
+ device: {
127
+ w: 1500,
128
+ h: 1000,
129
+ },
130
+ site: {
131
+ domain: 'test.com',
132
+ page: 'http://test.com',
133
+ },
134
+ },
135
+ userIdAsEids,
136
+ },
137
+ ],
138
+ gdprConsent: {
139
+ consentString: 'BOtmiBKOtmiBKABABAENAFAAAAACeAAA',
140
+ vendorData: {},
141
+ gdprApplies: true,
142
+ },
48
143
  ortb2: {
49
144
  device: {
50
145
  w: 1500,
@@ -52,39 +147,27 @@ describe('SetupadAdapter', function () {
52
147
  },
53
148
  },
54
149
  refererInfo: {
150
+ canonicalUrl: null,
55
151
  domain: 'test.com',
56
152
  page: 'http://test.com',
57
- ref: '',
153
+ referer: null,
58
154
  },
59
155
  };
60
156
 
61
157
  const serverResponse = {
62
158
  body: {
63
- id: 'f7b3d2da-e762-410c-b069-424f92c4c4b2',
64
159
  seatbid: [
65
160
  {
66
- bid: [
67
- {
68
- id: 'test-bid-id',
69
- price: 0.8,
70
- adm: 'this is an ad',
71
- adid: 'test-ad-id',
72
- adomain: ['test.addomain.com'],
73
- w: 300,
74
- h: 250,
75
- },
76
- ],
77
- seat: 'testBidder',
161
+ bid: [{ crid: 123 }, { crid: 1234 }],
162
+ seat: 'pubmatic',
78
163
  },
79
- ],
80
- cur: 'USD',
81
- ext: {
82
- sync: {
83
- image: ['urlA?gdpr={{.GDPR}}'],
84
- iframe: ['urlB'],
164
+ {
165
+ bid: [{ crid: 12345 }],
166
+ seat: 'setupad',
85
167
  },
86
- },
168
+ ],
87
169
  },
170
+ testCase: 1,
88
171
  };
89
172
 
90
173
  describe('isBidRequestValid', function () {
@@ -119,77 +202,25 @@ describe('SetupadAdapter', function () {
119
202
  });
120
203
 
121
204
  describe('buildRequests', function () {
122
- it('check request params with GDPR and USP', function () {
123
- const request = spec.buildRequests(bidRequests, bidRequests[0]);
124
- expect(JSON.parse(request[0].data).user.ext.consent).to.equal(
125
- 'BOtmiBKOtmiBKABABAENAFAAAAACeAAA'
126
- );
127
- expect(JSON.parse(request[0].data).regs.ext.gdpr).to.equal(1);
128
- expect(JSON.parse(request[0].data).regs.ext.us_privacy).to.equal('usp-context-string');
129
- });
130
-
131
- it('check request params without GDPR', function () {
132
- let bidRequestsWithoutGDPR = Object.assign({}, bidRequests[0]);
133
- delete bidRequestsWithoutGDPR.gdprConsent;
134
- const request = spec.buildRequests([bidRequestsWithoutGDPR], bidRequestsWithoutGDPR);
135
- expect(JSON.parse(request[0].data).regs.ext.gdpr).to.be.undefined;
136
- expect(JSON.parse(request[0].data).regs.ext.us_privacy).to.equal('usp-context-string');
205
+ it('should return correct storedrequest id for bids if placement_id is provided', function () {
206
+ const request = spec.buildRequests(bidRequests, bidderRequest);
207
+ expect(request.data.imp[0].ext.prebid.storedrequest.id).to.equal('123');
137
208
  });
138
209
 
139
210
  it('should return correct storedrequest id if account_id is provided', function () {
140
- const request = spec.buildRequests(bidRequests, bidRequests[0]);
141
- expect(JSON.parse(request[0].data).ext.prebid.storedrequest.id).to.equal('test-account-id');
142
- });
143
-
144
- it('should return correct storedrequest id if account_id is not provided', function () {
145
- let bidRequestsWithoutAccountId = Object.assign({}, bidRequests[0]);
146
- delete bidRequestsWithoutAccountId.params.account_id;
147
- const request = spec.buildRequests(
148
- [bidRequestsWithoutAccountId],
149
- bidRequestsWithoutAccountId
150
- );
151
- expect(JSON.parse(request[0].data).ext.prebid.storedrequest.id).to.equal('default');
152
- });
153
-
154
- it('validate generated params', function () {
155
- const request = spec.buildRequests(bidRequests);
156
- expect(request[0].bidId).to.equal('22c4871113f461');
157
- expect(JSON.parse(request[0].data).id).to.equal('15246a574e859f');
158
- });
159
-
160
- it('check if correct site object was added', function () {
161
211
  const request = spec.buildRequests(bidRequests, bidderRequest);
162
- const siteObj = JSON.parse(request[0].data).site;
163
-
164
- expect(siteObj.domain).to.equal('test.com');
165
- expect(siteObj.page).to.equal('http://test.com');
166
- expect(siteObj.ref).to.equal('');
212
+ expect(request.data.ext.prebid.storedrequest.id).to.equal('test-account-id');
167
213
  });
168
214
 
169
- it('check if correct device object was added', function () {
215
+ it('should return setupad custom adapter param', function () {
170
216
  const request = spec.buildRequests(bidRequests, bidderRequest);
171
- const deviceObj = JSON.parse(request[0].data).device;
172
-
173
- expect(deviceObj.w).to.equal(1500);
174
- expect(deviceObj.h).to.equal(1000);
175
- });
176
-
177
- it('check if imp object was added', function () {
178
- const request = spec.buildRequests(bidRequests);
179
- expect(JSON.parse(request[0].data).imp).to.be.an('array');
180
- });
181
-
182
- it('should send "user.ext.eids" in the request for Prebid.js supported modules only', function () {
183
- const request = spec.buildRequests(bidRequests);
184
- expect(JSON.parse(request[0].data).user.ext.eids).to.deep.equal(userIdAsEids);
217
+ expect(request.data.setupad).to.equal('adapter');
185
218
  });
186
219
 
187
- it('should send an undefined "user.ext.eids" in the request if userId module is unsupported', function () {
188
- let bidRequestsUnsupportedUserIdModule = Object.assign({}, bidRequests[0]);
189
- delete bidRequestsUnsupportedUserIdModule.userIdAsEids;
190
- const request = spec.buildRequests(bidRequestsUnsupportedUserIdModule);
191
-
192
- expect(JSON.parse(request[0].data).user.ext.eids).to.be.undefined;
220
+ // Change this to 1 whenever TEST_REQUEST = 1. This is allowed only for testing requests locally
221
+ it('should return correct test attribute value from global value', function () {
222
+ const request = spec.buildRequests(bidRequests, bidderRequest);
223
+ expect(request.data.test).to.equal(0);
193
224
  });
194
225
  });
195
226
 
@@ -256,25 +287,21 @@ describe('SetupadAdapter', function () {
256
287
  describe('interpretResponse', function () {
257
288
  it('should return empty array if error during parsing', () => {
258
289
  const wrongServerResponse = 'wrong data';
259
- let request = spec.buildRequests(bidRequests, bidRequests[0]);
290
+ let request = spec.buildRequests(bidRequests, bidderRequest);
260
291
  let result = spec.interpretResponse(wrongServerResponse, request);
261
292
 
262
293
  expect(result).to.be.instanceof(Array);
263
294
  expect(result.length).to.equal(0);
264
295
  });
265
296
 
266
- it('should get correct bid response', function () {
267
- const result = spec.interpretResponse(serverResponse, bidRequests[0]);
268
- expect(result).to.be.an('array').with.lengthOf(1);
269
- expect(result[0].requestId).to.equal('22c4871113f461');
270
- expect(result[0].cpm).to.equal(0.8);
271
- expect(result[0].width).to.equal(300);
272
- expect(result[0].height).to.equal(250);
273
- expect(result[0].creativeId).to.equal('test-bid-id');
274
- expect(result[0].currency).to.equal('USD');
275
- expect(result[0].netRevenue).to.equal(true);
276
- expect(result[0].ttl).to.equal(360);
277
- expect(result[0].ad).to.equal('this is an ad');
297
+ it('should update biddersCreativeIds correctly', function () {
298
+ spec.interpretResponse(serverResponse, bidderRequest);
299
+
300
+ expect(biddersCreativeIds).to.deep.equal({
301
+ 123: 'pubmatic',
302
+ 1234: 'pubmatic',
303
+ 12345: 'setupad',
304
+ });
278
305
  });
279
306
  });
280
307
 
@@ -204,7 +204,11 @@ function mockResponseData(requestData) {
204
204
  creativeId: `creative-id-${index}`,
205
205
  cpm: Math.floor(Math.random() * 100),
206
206
  currency: `UAH-${rndIndex}`,
207
- mediaType: mediaType
207
+ mediaType: mediaType,
208
+ meta: {
209
+ primaryCatId: 'IAB2-2',
210
+ secondaryCatIds: ['IAB2-14', 'IAB2-6']
211
+ }
208
212
  };
209
213
  });
210
214
  return {