prebid.js 7.31.0 → 7.32.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 (180) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adlooxRtdProvider.js +1 -1
  7. package/dist/adrelevantisBidAdapter.js +1 -1
  8. package/dist/adtrgtmeBidAdapter.js +1 -1
  9. package/dist/adxcgBidAdapter.js +1 -1
  10. package/dist/aidemBidAdapter.js +1 -1
  11. package/dist/ajaBidAdapter.js +1 -1
  12. package/dist/alkimiBidAdapter.js +1 -1
  13. package/dist/amxBidAdapter.js +1 -1
  14. package/dist/amxIdSystem.js +1 -1
  15. package/dist/aolBidAdapter.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/appushBidAdapter.js +1 -0
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/bidglassBidAdapter.js +1 -1
  22. package/dist/big-richmediaBidAdapter.js +1 -1
  23. package/dist/bridgewellBidAdapter.js +1 -1
  24. package/dist/brightMountainMediaBidAdapter.js +1 -1
  25. package/dist/carodaBidAdapter.js +1 -1
  26. package/dist/chtnwBidAdapter.js +1 -1
  27. package/dist/concertBidAdapter.js +1 -1
  28. package/dist/connectIdSystem.js +1 -1
  29. package/dist/connectadBidAdapter.js +1 -1
  30. package/dist/consumableBidAdapter.js +1 -1
  31. package/dist/conversantBidAdapter.js +1 -1
  32. package/dist/craftBidAdapter.js +1 -1
  33. package/dist/criteoBidAdapter.js +1 -1
  34. package/dist/dspxBidAdapter.js +1 -1
  35. package/dist/eplanningBidAdapter.js +1 -1
  36. package/dist/feedadBidAdapter.js +1 -1
  37. package/dist/finativeBidAdapter.js +1 -1
  38. package/dist/glimpseBidAdapter.js +1 -1
  39. package/dist/gmosspBidAdapter.js +1 -1
  40. package/dist/goldbachBidAdapter.js +1 -1
  41. package/dist/gridBidAdapter.js +1 -1
  42. package/dist/gridNMBidAdapter.js +1 -1
  43. package/dist/gumgumBidAdapter.js +1 -1
  44. package/dist/h12mediaBidAdapter.js +1 -1
  45. package/dist/holidBidAdapter.js +1 -0
  46. package/dist/id5IdSystem.js +1 -1
  47. package/dist/improvedigitalBidAdapter.js +1 -1
  48. package/dist/inmarBidAdapter.js +1 -1
  49. package/dist/insticatorBidAdapter.js +1 -1
  50. package/dist/ixBidAdapter.js +1 -1
  51. package/dist/justpremiumBidAdapter.js +1 -1
  52. package/dist/jwplayerVideoProvider.js +1 -1
  53. package/dist/konduitAnalyticsAdapter.js +1 -1
  54. package/dist/kueezBidAdapter.js +1 -1
  55. package/dist/kueezRtbBidAdapter.js +1 -1
  56. package/dist/lassoBidAdapter.js +1 -1
  57. package/dist/lifestreetBidAdapter.js +1 -1
  58. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  59. package/dist/logicadBidAdapter.js +1 -1
  60. package/dist/loglyliftBidAdapter.js +1 -1
  61. package/dist/magniteAnalyticsAdapter.js +1 -1
  62. package/dist/malltvAnalyticsAdapter.js +1 -1
  63. package/dist/marsmediaBidAdapter.js +1 -1
  64. package/dist/mediafuseBidAdapter.js +1 -1
  65. package/dist/medianetRtdProvider.js +1 -1
  66. package/dist/mediasquareBidAdapter.js +1 -1
  67. package/dist/mgidBidAdapter.js +1 -1
  68. package/dist/minutemediaBidAdapter.js +1 -1
  69. package/dist/nexx360BidAdapter.js +1 -1
  70. package/dist/not-for-prod/prebid.js +126 -123
  71. package/dist/oguryBidAdapter.js +1 -1
  72. package/dist/onetagBidAdapter.js +1 -1
  73. package/dist/ooloAnalyticsAdapter.js +1 -1
  74. package/dist/orbitsoftBidAdapter.js +1 -0
  75. package/dist/outbrainBidAdapter.js +1 -1
  76. package/dist/parrableIdSystem.js +1 -1
  77. package/dist/permutiveRtdProvider.js +1 -1
  78. package/dist/pixfutureBidAdapter.js +1 -1
  79. package/dist/prebid-core.js +1 -1
  80. package/dist/publinkIdSystem.js +1 -1
  81. package/dist/pubmaticBidAdapter.js +1 -1
  82. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  83. package/dist/pxyzBidAdapter.js +1 -1
  84. package/dist/quantcastBidAdapter.js +1 -1
  85. package/dist/readpeakBidAdapter.js +1 -1
  86. package/dist/relaidoBidAdapter.js +1 -1
  87. package/dist/rhythmoneBidAdapter.js +1 -1
  88. package/dist/riseBidAdapter.js +1 -1
  89. package/dist/rubiconAnalyticsAdapter.js +1 -1
  90. package/dist/rubiconBidAdapter.js +1 -1
  91. package/dist/seedingAllianceBidAdapter.js +1 -1
  92. package/dist/seedtagBidAdapter.js +1 -1
  93. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  94. package/dist/sharethroughBidAdapter.js +1 -1
  95. package/dist/shinezBidAdapter.js +1 -1
  96. package/dist/smaatoBidAdapter.js +1 -1
  97. package/dist/smartadserverBidAdapter.js +1 -1
  98. package/dist/smartxBidAdapter.js +1 -1
  99. package/dist/smilewantedBidAdapter.js +1 -1
  100. package/dist/sonobiBidAdapter.js +1 -1
  101. package/dist/sovrnAnalyticsAdapter.js +1 -1
  102. package/dist/sovrnBidAdapter.js +1 -1
  103. package/dist/sspBCBidAdapter.js +1 -1
  104. package/dist/sublimeBidAdapter.js +1 -1
  105. package/dist/synacormediaBidAdapter.js +1 -1
  106. package/dist/taboolaBidAdapter.js +1 -1
  107. package/dist/targetVideoBidAdapter.js +1 -1
  108. package/dist/teadsBidAdapter.js +1 -1
  109. package/dist/trionBidAdapter.js +1 -1
  110. package/dist/tripleliftBidAdapter.js +1 -1
  111. package/dist/ttdBidAdapter.js +1 -1
  112. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  113. package/dist/uid2IdSystem.js +1 -1
  114. package/dist/underdogmediaBidAdapter.js +1 -1
  115. package/dist/undertoneBidAdapter.js +1 -1
  116. package/dist/vidazooBidAdapter.js +1 -1
  117. package/dist/videobyteBidAdapter.js +1 -1
  118. package/dist/visxBidAdapter.js +1 -1
  119. package/dist/vuukleBidAdapter.js +1 -1
  120. package/dist/widespaceBidAdapter.js +1 -1
  121. package/dist/winrBidAdapter.js +1 -1
  122. package/dist/yahoosspBidAdapter.js +1 -1
  123. package/dist/yieldlabBidAdapter.js +1 -1
  124. package/dist/yieldmoBidAdapter.js +1 -1
  125. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  126. package/integrationExamples/gpt/adloox.html +5 -0
  127. package/modules/adagioBidAdapter.js +0 -4
  128. package/modules/adagioBidAdapter.md +4 -22
  129. package/modules/adlooxAnalyticsAdapter.md +5 -3
  130. package/modules/adlooxRtdProvider.js +82 -278
  131. package/modules/adlooxRtdProvider.md +6 -6
  132. package/modules/aidemBidAdapter.js +4 -0
  133. package/modules/aidemBidAdapter.md +1 -0
  134. package/modules/alkimiBidAdapter.js +23 -6
  135. package/modules/aolBidAdapter.js +12 -0
  136. package/modules/appnexusBidAdapter.js +2 -2
  137. package/modules/appushBidAdapter.js +188 -0
  138. package/modules/appushBidAdapter.md +79 -0
  139. package/modules/asoBidAdapter.js +8 -5
  140. package/modules/confiantRtdProvider.js +1 -1
  141. package/modules/connectIdSystem.js +15 -1
  142. package/modules/feedadBidAdapter.js +7 -5
  143. package/modules/holidBidAdapter.js +170 -0
  144. package/modules/holidBidAdapter.md +36 -0
  145. package/modules/jwplayerVideoProvider.js +10 -3
  146. package/modules/kueezRtbBidAdapter.js +21 -8
  147. package/modules/medianetRtdProvider.js +4 -4
  148. package/modules/nexx360BidAdapter.js +5 -7
  149. package/modules/orbitsoftBidAdapter.js +150 -0
  150. package/modules/permutiveRtdProvider.js +1 -1
  151. package/modules/riseBidAdapter.js +2 -1
  152. package/modules/riseBidAdapter.md +2 -0
  153. package/modules/seedtagBidAdapter.js +12 -0
  154. package/modules/smartxBidAdapter.js +6 -0
  155. package/modules/taboolaBidAdapter.js +61 -14
  156. package/modules/yahoosspBidAdapter.js +5 -0
  157. package/modules/yieldlabBidAdapter.js +150 -134
  158. package/modules/yieldmoBidAdapter.js +1 -12
  159. package/package.json +1 -1
  160. package/test/spec/modules/adagioBidAdapter_spec.js +1 -28
  161. package/test/spec/modules/adlooxRtdProvider_spec.js +28 -120
  162. package/test/spec/modules/aidemBidAdapter_spec.js +10 -2
  163. package/test/spec/modules/alkimiBidAdapter_spec.js +15 -3
  164. package/test/spec/modules/aolBidAdapter_spec.js +22 -0
  165. package/test/spec/modules/appnexusBidAdapter_spec.js +7 -3
  166. package/test/spec/modules/appushBidAdapter_spec.js +372 -0
  167. package/test/spec/modules/connectIdSystem_spec.js +17 -5
  168. package/test/spec/modules/feedadBidAdapter_spec.js +23 -1
  169. package/test/spec/modules/holidBidAdapter_spec.js +165 -0
  170. package/test/spec/modules/kueezRtbBidAdapter_spec.js +147 -24
  171. package/test/spec/modules/medianetRtdProvider_spec.js +3 -3
  172. package/test/spec/modules/orbitsoftBidAdapter_spec.js +255 -0
  173. package/test/spec/modules/riseBidAdapter_spec.js +7 -0
  174. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -10
  175. package/test/spec/modules/smartxBidAdapter_spec.js +10 -0
  176. package/test/spec/modules/taboolaBidAdapter_spec.js +142 -5
  177. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +45 -10
  178. package/test/spec/modules/yahoosspBidAdapter_spec.js +16 -1
  179. package/test/spec/modules/yieldlabBidAdapter_spec.js +311 -301
  180. package/test/spec/modules/yieldmoBidAdapter_spec.js +70 -0
@@ -1,7 +1,7 @@
1
1
  import { config } from 'src/config.js';
2
- import { expect } from 'chai'
3
- import { spec } from 'modules/yieldlabBidAdapter.js'
4
- import { newBidder } from 'src/adapters/bidderFactory.js'
2
+ import { expect } from 'chai';
3
+ import { spec } from 'modules/yieldlabBidAdapter.js';
4
+ import { newBidder } from 'src/adapters/bidderFactory.js';
5
5
 
6
6
  const DEFAULT_REQUEST = () => ({
7
7
  bidder: 'yieldlab',
@@ -11,11 +11,11 @@ const DEFAULT_REQUEST = () => ({
11
11
  targeting: {
12
12
  key1: 'value1',
13
13
  key2: 'value2',
14
- notDoubleEncoded: 'value3,value4'
14
+ notDoubleEncoded: 'value3,value4',
15
15
  },
16
16
  customParams: {
17
17
  extraParam: true,
18
- foo: 'bar'
18
+ foo: 'bar',
19
19
  },
20
20
  extId: 'abc',
21
21
  iabContent: {
@@ -31,8 +31,8 @@ const DEFAULT_REQUEST = () => ({
31
31
  cat: ['cat1', 'cat2,ppp', 'cat3|||//'],
32
32
  context: '7',
33
33
  keywords: ['k1,', 'k2..'],
34
- live: '0'
35
- }
34
+ live: '0',
35
+ },
36
36
  },
37
37
  bidderRequestId: '143346cf0f1731',
38
38
  auctionId: '2e41f65424c87c',
@@ -43,8 +43,14 @@ const DEFAULT_REQUEST = () => ({
43
43
  source: 'netid.de',
44
44
  uids: [{
45
45
  id: 'fH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg',
46
- atype: 1
47
- }]
46
+ atype: 1,
47
+ }],
48
+ }, {
49
+ source: 'digitrust.de',
50
+ uids: [{
51
+ id: 'd8aa10fa-d86c-451d-aad8-5f16162a9e64',
52
+ atype: 2,
53
+ }],
48
54
  }],
49
55
  schain: {
50
56
  ver: '1.0',
@@ -53,32 +59,32 @@ const DEFAULT_REQUEST = () => ({
53
59
  {
54
60
  asi: 'indirectseller.com',
55
61
  sid: '1',
56
- hp: 1
62
+ hp: 1,
57
63
  },
58
64
  {
59
65
  asi: 'indirectseller2.com',
60
66
  name: 'indirectseller2 name with comma , and bang !',
61
67
  sid: '2',
62
- hp: 1
63
- }
64
- ]
65
- }
66
- })
68
+ hp: 1,
69
+ },
70
+ ],
71
+ },
72
+ });
67
73
 
68
74
  const VIDEO_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
69
75
  mediaTypes: {
70
76
  video: {
71
77
  playerSize: [[640, 480]],
72
- context: 'instream'
73
- }
74
- }
75
- })
78
+ context: 'instream',
79
+ },
80
+ },
81
+ });
76
82
 
77
83
  const NATIVE_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
78
84
  mediaTypes: {
79
- native: {}
80
- }
81
- })
85
+ native: {},
86
+ },
87
+ });
82
88
 
83
89
  const IAB_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
84
90
  params: {
@@ -113,7 +119,7 @@ const IAB_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
113
119
  name: 'bar',
114
120
  cattax: 532,
115
121
  cat: [1, 'foo', true],
116
- domain: 'producer.test'
122
+ domain: 'producer.test',
117
123
  },
118
124
  data: {
119
125
  id: 'foo',
@@ -123,8 +129,8 @@ const IAB_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
123
129
  value: 'bar',
124
130
  ext: {
125
131
  foo: {
126
- bar: 'bar'
127
- }
132
+ bar: 'bar',
133
+ },
128
134
  },
129
135
  }, {
130
136
  name: 'foo2',
@@ -133,27 +139,27 @@ const IAB_REQUEST = () => Object.assign(DEFAULT_REQUEST(), {
133
139
  test: {
134
140
  nums: {
135
141
  int: 123,
136
- float: 123.123
142
+ float: 123.123,
137
143
  },
138
144
  bool: true,
139
- string: 'foo2'
140
- }
141
- }
145
+ string: 'foo2',
146
+ },
147
+ },
142
148
  }],
143
149
  },
144
150
  network: {
145
151
  id: 'foo',
146
152
  name: 'bar',
147
- domain: 'network.test'
153
+ domain: 'network.test',
148
154
  },
149
155
  channel: {
150
156
  id: 'bar',
151
157
  name: 'foo',
152
- domain: 'channel.test'
153
- }
154
- }
155
- }
156
- })
158
+ domain: 'channel.test',
159
+ },
160
+ },
161
+ },
162
+ });
157
163
 
158
164
  const RESPONSE = {
159
165
  advertiser: 'yieldlab',
@@ -163,169 +169,173 @@ const RESPONSE = {
163
169
  price: 1,
164
170
  pid: 2222,
165
171
  adsize: '728x90',
166
- adtype: 'BANNER'
167
- }
172
+ adtype: 'BANNER',
173
+ };
168
174
 
169
175
  const NATIVE_RESPONSE = Object.assign({}, RESPONSE, {
170
176
  adtype: 'NATIVE',
171
177
  native: {
172
178
  link: {
173
- url: 'https://www.yieldlab.de'
179
+ url: 'https://www.yieldlab.de',
174
180
  },
175
181
  assets: [
176
182
  {
177
183
  id: 1,
178
184
  title: {
179
- text: 'This is a great headline'
180
- }
185
+ text: 'This is a great headline',
186
+ },
181
187
  },
182
188
  {
183
189
  id: 2,
184
190
  img: {
185
191
  url: 'https://localhost:8080/yl-logo100x100.jpg',
186
192
  w: 100,
187
- h: 100
188
- }
193
+ h: 100,
194
+ },
189
195
  },
190
196
  {
191
197
  id: 3,
192
198
  data: {
193
- value: 'Native body value'
194
- }
195
- }
199
+ value: 'Native body value',
200
+ },
201
+ },
196
202
  ],
197
203
  imptrackers: [
198
204
  'http://localhost:8080/ve?d=ODE9ZSY2MTI1MjAzNjMzMzYxPXN0JjA0NWUwZDk0NTY5Yi05M2FiLWUwZTQtOWFjNy1hYWY0MzFiZj1kaXQmMj12',
199
205
  'http://localhost:8080/md/1111/9efa4e76-2030-4f04-bb9f-322541f8d611?mdata=false&pvid=false&ids=x:1',
200
- 'http://localhost:8080/imp?s=13216&d=2171514&a=12548955&ts=1633363025216&tid=fb134faa-7ca9-4e0e-ba39-b96549d0e540&l=0'
201
- ]
202
- }
203
- })
206
+ 'http://localhost:8080/imp?s=13216&d=2171514&a=12548955&ts=1633363025216&tid=fb134faa-7ca9-4e0e-ba39-b96549d0e540&l=0',
207
+ ],
208
+ },
209
+ });
204
210
 
205
211
  const VIDEO_RESPONSE = Object.assign({}, RESPONSE, {
206
- adtype: 'VIDEO'
207
- })
212
+ adtype: 'VIDEO',
213
+ });
208
214
 
209
215
  const PVID_RESPONSE = Object.assign({}, VIDEO_RESPONSE, {
210
- pvid: '43513f11-55a0-4a83-94e5-0ebc08f54a2c'
211
- })
216
+ pvid: '43513f11-55a0-4a83-94e5-0ebc08f54a2c',
217
+ });
212
218
 
213
219
  const REQPARAMS = {
214
220
  json: true,
215
- ts: 1234567890
216
- }
221
+ ts: 1234567890,
222
+ };
217
223
 
218
224
  const REQPARAMS_GDPR = Object.assign({}, REQPARAMS, {
219
225
  gdpr: true,
220
- consent: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA'
221
- })
226
+ consent: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA',
227
+ });
222
228
 
223
229
  const REQPARAMS_IAB_CONTENT = Object.assign({}, REQPARAMS, {
224
- iab_content: 'id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0'
225
- })
230
+ iab_content: 'id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0',
231
+ });
226
232
 
227
233
  describe('yieldlabBidAdapter', () => {
228
234
  describe('instantiation from spec', () => {
229
235
  it('is working properly', () => {
230
- const yieldlabBidAdapter = newBidder(spec)
231
- expect(yieldlabBidAdapter.callBids).to.exist.and.to.be.a('function')
232
- })
233
- })
236
+ const yieldlabBidAdapter = newBidder(spec);
237
+ expect(yieldlabBidAdapter.callBids).to.exist.and.to.be.a('function');
238
+ });
239
+ });
234
240
 
235
241
  describe('isBidRequestValid', () => {
236
242
  it('should return true when all required parameters are found', () => {
237
243
  const request = {
238
244
  params: {
239
245
  adslotId: '1111',
240
- supplyId: '2222'
241
- }
242
- }
243
- expect(spec.isBidRequestValid(request)).to.equal(true)
244
- })
246
+ supplyId: '2222',
247
+ },
248
+ };
249
+ expect(spec.isBidRequestValid(request)).to.equal(true);
250
+ });
245
251
 
246
252
  it('should return false when required parameters are missing', () => {
247
- expect(spec.isBidRequestValid({})).to.equal(false)
248
- })
249
- })
253
+ expect(spec.isBidRequestValid({})).to.equal(false);
254
+ });
255
+ });
250
256
 
251
257
  describe('buildRequests', () => {
252
- const bidRequests = [DEFAULT_REQUEST()]
258
+ const bidRequests = [DEFAULT_REQUEST()];
253
259
 
254
260
  describe('default functionality', () => {
255
- let request
261
+ let request;
256
262
 
257
263
  before(() => {
258
- request = spec.buildRequests(bidRequests)
259
- })
264
+ request = spec.buildRequests(bidRequests);
265
+ });
260
266
 
261
267
  it('sends bid request to ENDPOINT via GET', () => {
262
- expect(request.method).to.equal('GET')
263
- })
268
+ expect(request.method).to.equal('GET');
269
+ });
264
270
 
265
271
  it('returns a list of valid requests', () => {
266
- expect(request.validBidRequests).to.eql(bidRequests)
267
- })
272
+ expect(request.validBidRequests).to.eql(bidRequests);
273
+ });
268
274
 
269
275
  it('passes single-encoded targeting to bid request', () => {
270
- expect(request.url).to.include('t=key1%3Dvalue1%26key2%3Dvalue2%26notDoubleEncoded%3Dvalue3%2Cvalue4')
271
- })
276
+ expect(request.url).to.include('t=key1%3Dvalue1%26key2%3Dvalue2%26notDoubleEncoded%3Dvalue3%2Cvalue4');
277
+ });
272
278
 
273
279
  it('passes userids to bid request', () => {
274
- expect(request.url).to.include('ids=netid.de%3AfH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg')
275
- })
280
+ expect(request.url).to.include('ids=netid.de%3AfH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg%2Cdigitrust.de%3Ad8aa10fa-d86c-451d-aad8-5f16162a9e64');
281
+ });
282
+
283
+ it('passes atype to bid request', () => {
284
+ expect(request.url).to.include('atypes=netid.de%3A1%2Cdigitrust.de%3A2');
285
+ });
276
286
 
277
287
  it('passes extra params to bid request', () => {
278
- expect(request.url).to.include('extraParam=true&foo=bar')
279
- })
288
+ expect(request.url).to.include('extraParam=true&foo=bar');
289
+ });
280
290
 
281
291
  it('passes unencoded schain string to bid request', () => {
282
- expect(request.url).to.include('schain=1.0,1!indirectseller.com,1,1,,,,!indirectseller2.com,2,1,,indirectseller2%20name%20with%20comma%20%2C%20and%20bang%20%21,,')
283
- })
292
+ expect(request.url).to.include('schain=1.0,1!indirectseller.com,1,1,,,,!indirectseller2.com,2,1,,indirectseller2%20name%20with%20comma%20%2C%20and%20bang%20%21,,');
293
+ });
284
294
 
285
295
  it('passes iab_content string to bid request', () => {
286
- expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0')
287
- })
296
+ expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0');
297
+ });
288
298
 
289
299
  it('passes correct size to bid request', () => {
290
- expect(request.url).to.include('728x90')
291
- })
300
+ expect(request.url).to.include('728x90');
301
+ });
292
302
 
293
303
  it('passes external id to bid request', () => {
294
- expect(request.url).to.include('id=abc')
295
- })
296
- })
304
+ expect(request.url).to.include('id=abc');
305
+ });
306
+ });
297
307
 
298
308
  describe('iab_content handling', () => {
299
309
  const siteConfig = {
300
310
  ortb2: {
301
311
  site: {
302
312
  content: {
303
- id: 'id_from_config'
304
- }
305
- }
306
- }
307
- }
313
+ id: 'id_from_config',
314
+ },
315
+ },
316
+ },
317
+ };
308
318
 
309
319
  beforeEach(() => {
310
- config.setConfig(siteConfig)
311
- })
320
+ config.setConfig(siteConfig);
321
+ });
312
322
 
313
323
  afterEach(() => {
314
- config.resetConfig()
315
- })
324
+ config.resetConfig();
325
+ });
316
326
 
317
327
  it('generates iab_content string from bidder params', () => {
318
- const request = spec.buildRequests(bidRequests)
319
- expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0')
320
- })
328
+ const request = spec.buildRequests(bidRequests);
329
+ expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0');
330
+ });
321
331
 
322
332
  it('generates iab_content string from first party data if not provided in bidder params', () => {
323
- const requestWithoutIabContent = DEFAULT_REQUEST()
324
- delete requestWithoutIabContent.params.iabContent
333
+ const requestWithoutIabContent = DEFAULT_REQUEST();
334
+ delete requestWithoutIabContent.params.iabContent;
325
335
 
326
- const request = spec.buildRequests([{...requestWithoutIabContent, ...siteConfig}])
327
- expect(request.url).to.include('iab_content=id%3Aid_from_config')
328
- })
336
+ const request = spec.buildRequests([{...requestWithoutIabContent, ...siteConfig}]);
337
+ expect(request.url).to.include('iab_content=id%3Aid_from_config');
338
+ });
329
339
 
330
340
  it('flattens the iabContent, encodes the values, joins the keywords into one value, and than encodes the iab_content request param ', () => {
331
341
  const expectedIabContentValue = encodeURIComponent(
@@ -372,18 +382,18 @@ describe('yieldlabBidAdapter', () => {
372
382
  'channel.id:bar,' +
373
383
  'channel.name:foo,' +
374
384
  'channel.domain:channel.test'
375
- )
376
- const request = spec.buildRequests([IAB_REQUEST()], REQPARAMS)
377
- expect(request.url).to.include('iab_content=' + expectedIabContentValue)
378
- })
379
- })
385
+ );
386
+ const request = spec.buildRequests([IAB_REQUEST()], REQPARAMS);
387
+ expect(request.url).to.include('iab_content=' + expectedIabContentValue);
388
+ });
389
+ });
380
390
 
381
391
  it('passes unencoded schain string to bid request when complete == 0', () => {
382
- const schainRequest = DEFAULT_REQUEST()
392
+ const schainRequest = DEFAULT_REQUEST();
383
393
  schainRequest.schain.complete = 0; //
384
- const request = spec.buildRequests([schainRequest])
385
- expect(request.url).to.include('schain=1.0,0!indirectseller.com,1,1,,,,!indirectseller2.com,2,1,,indirectseller2%20name%20with%20comma%20%2C%20and%20bang%20%21,,')
386
- })
394
+ const request = spec.buildRequests([schainRequest]);
395
+ expect(request.url).to.include('schain=1.0,0!indirectseller.com,1,1,,,,!indirectseller2.com,2,1,,indirectseller2%20name%20with%20comma%20%2C%20and%20bang%20%21,,');
396
+ });
387
397
 
388
398
  it('passes encoded referer to bid request', () => {
389
399
  const refererRequest = spec.buildRequests(bidRequests, {
@@ -392,123 +402,123 @@ describe('yieldlabBidAdapter', () => {
392
402
  numIframes: 0,
393
403
  reachedTop: true,
394
404
  page: 'https://www.yieldlab.de/test?with=querystring',
395
- stack: ['https://www.yieldlab.de/test?with=querystring']
396
- }
397
- })
405
+ stack: ['https://www.yieldlab.de/test?with=querystring'],
406
+ },
407
+ });
398
408
 
399
- expect(refererRequest.url).to.include('pubref=https%3A%2F%2Fwww.yieldlab.de%2Ftest%3Fwith%3Dquerystring')
400
- })
409
+ expect(refererRequest.url).to.include('pubref=https%3A%2F%2Fwww.yieldlab.de%2Ftest%3Fwith%3Dquerystring');
410
+ });
401
411
 
402
412
  it('passes gdpr flag and consent if present', () => {
403
413
  const gdprRequest = spec.buildRequests(bidRequests, {
404
414
  gdprConsent: {
405
415
  consentString: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA',
406
- gdprApplies: true
407
- }
408
- })
416
+ gdprApplies: true,
417
+ },
418
+ });
409
419
 
410
- expect(gdprRequest.url).to.include('consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA')
411
- expect(gdprRequest.url).to.include('gdpr=true')
412
- })
420
+ expect(gdprRequest.url).to.include('consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
421
+ expect(gdprRequest.url).to.include('gdpr=true');
422
+ });
413
423
 
414
424
  describe('sizes handling', () => {
415
425
  it('passes correct size to bid request for mediaType banner', () => {
416
426
  const bannerRequest = DEFAULT_REQUEST();
417
427
  bannerRequest.mediaTypes = {
418
428
  banner: {
419
- sizes: [[123, 456]]
420
- }
421
- }
429
+ sizes: [[123, 456]],
430
+ },
431
+ };
422
432
 
423
433
  // when mediaTypes is present it has precedence over the sizes field (728, 90)
424
- let request = spec.buildRequests([bannerRequest], REQPARAMS)
425
- expect(request.url).to.include('sizes')
426
- expect(request.url).to.include('123x456')
427
-
428
- bannerRequest.mediaTypes.banner.sizes = [123, 456]
429
- request = spec.buildRequests([bannerRequest], REQPARAMS)
430
- expect(request.url).to.include('123x456')
431
-
432
- bannerRequest.mediaTypes.banner.sizes = [[123, 456], [320, 240]]
433
- request = spec.buildRequests([bannerRequest], REQPARAMS)
434
- expect(request.url).to.include('123x456')
435
- expect(request.url).to.include('320x240')
436
- })
434
+ let request = spec.buildRequests([bannerRequest], REQPARAMS);
435
+ expect(request.url).to.include('sizes');
436
+ expect(request.url).to.include('123x456');
437
+
438
+ bannerRequest.mediaTypes.banner.sizes = [123, 456];
439
+ request = spec.buildRequests([bannerRequest], REQPARAMS);
440
+ expect(request.url).to.include('123x456');
441
+
442
+ bannerRequest.mediaTypes.banner.sizes = [[123, 456], [320, 240]];
443
+ request = spec.buildRequests([bannerRequest], REQPARAMS);
444
+ expect(request.url).to.include('123x456');
445
+ expect(request.url).to.include('320x240');
446
+ });
437
447
 
438
448
  it('passes correct sizes to bid request when mediaType is not present', () => {
439
449
  // information is taken from the top level sizes field
440
450
  const sizesRequest = DEFAULT_REQUEST();
441
451
 
442
- let request = spec.buildRequests([sizesRequest], REQPARAMS)
443
- expect(request.url).to.include('sizes')
444
- expect(request.url).to.include('728x90')
452
+ let request = spec.buildRequests([sizesRequest], REQPARAMS);
453
+ expect(request.url).to.include('sizes');
454
+ expect(request.url).to.include('728x90');
445
455
 
446
- sizesRequest.sizes = [[728, 90]]
447
- request = spec.buildRequests([sizesRequest], REQPARAMS)
448
- expect(request.url).to.include('728x90')
456
+ sizesRequest.sizes = [[728, 90]];
457
+ request = spec.buildRequests([sizesRequest], REQPARAMS);
458
+ expect(request.url).to.include('728x90');
449
459
 
450
- sizesRequest.sizes = [[728, 90], [320, 240]]
451
- request = spec.buildRequests([sizesRequest], REQPARAMS)
452
- expect(request.url).to.include('728x90')
453
- })
460
+ sizesRequest.sizes = [[728, 90], [320, 240]];
461
+ request = spec.buildRequests([sizesRequest], REQPARAMS);
462
+ expect(request.url).to.include('728x90');
463
+ });
454
464
 
455
465
  it('does not pass the sizes parameter for mediaType video', () => {
456
466
  const videoRequest = VIDEO_REQUEST();
457
467
 
458
- let request = spec.buildRequests([videoRequest], REQPARAMS)
459
- expect(request.url).to.not.include('sizes')
460
- })
468
+ let request = spec.buildRequests([videoRequest], REQPARAMS);
469
+ expect(request.url).to.not.include('sizes');
470
+ });
461
471
 
462
472
  it('does not pass the sizes parameter for mediaType native', () => {
463
473
  const nativeRequest = NATIVE_REQUEST();
464
474
 
465
- let request = spec.buildRequests([nativeRequest], REQPARAMS)
466
- expect(request.url).to.not.include('sizes')
467
- })
468
- })
469
- })
475
+ let request = spec.buildRequests([nativeRequest], REQPARAMS);
476
+ expect(request.url).to.not.include('sizes');
477
+ });
478
+ });
479
+ });
470
480
 
471
481
  describe('interpretResponse', () => {
472
- let bidRequest
482
+ let bidRequest;
473
483
 
474
484
  before(() => {
475
- bidRequest = DEFAULT_REQUEST()
476
- })
485
+ bidRequest = DEFAULT_REQUEST();
486
+ });
477
487
 
478
488
  it('handles nobid responses', () => {
479
- expect(spec.interpretResponse({body: {}}, {validBidRequests: []}).length).to.equal(0)
480
- expect(spec.interpretResponse({body: []}, {validBidRequests: []}).length).to.equal(0)
481
- })
489
+ expect(spec.interpretResponse({body: {}}, {validBidRequests: []}).length).to.equal(0);
490
+ expect(spec.interpretResponse({body: []}, {validBidRequests: []}).length).to.equal(0);
491
+ });
482
492
 
483
493
  it('should get correct bid response', () => {
484
- const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS})
485
-
486
- expect(result[0].requestId).to.equal('2d925f27f5079f')
487
- expect(result[0].cpm).to.equal(0.01)
488
- expect(result[0].width).to.equal(728)
489
- expect(result[0].height).to.equal(90)
490
- expect(result[0].creativeId).to.equal('1111')
491
- expect(result[0].dealId).to.equal(2222)
492
- expect(result[0].currency).to.equal('EUR')
493
- expect(result[0].netRevenue).to.equal(false)
494
- expect(result[0].ttl).to.equal(300)
495
- expect(result[0].referrer).to.equal('')
496
- expect(result[0].meta.advertiserDomains).to.equal('yieldlab')
497
- expect(result[0].ad).to.include('<script src="https://ad.yieldlab.net/d/1111/2222/?ts=')
498
- expect(result[0].ad).to.include('&id=abc')
499
- })
494
+ const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS});
495
+
496
+ expect(result[0].requestId).to.equal('2d925f27f5079f');
497
+ expect(result[0].cpm).to.equal(0.01);
498
+ expect(result[0].width).to.equal(728);
499
+ expect(result[0].height).to.equal(90);
500
+ expect(result[0].creativeId).to.equal('1111');
501
+ expect(result[0].dealId).to.equal(2222);
502
+ expect(result[0].currency).to.equal('EUR');
503
+ expect(result[0].netRevenue).to.equal(false);
504
+ expect(result[0].ttl).to.equal(300);
505
+ expect(result[0].referrer).to.equal('');
506
+ expect(result[0].meta.advertiserDomains).to.equal('yieldlab');
507
+ expect(result[0].ad).to.include('<script src="https://ad.yieldlab.net/d/1111/2222/?ts=');
508
+ expect(result[0].ad).to.include('&id=abc');
509
+ });
500
510
 
501
511
  it('should append gdpr parameters to adtag', () => {
502
- const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS_GDPR})
512
+ const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS_GDPR});
503
513
 
504
- expect(result[0].ad).to.include('&gdpr=true')
505
- expect(result[0].ad).to.include('&consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA')
506
- })
514
+ expect(result[0].ad).to.include('&gdpr=true');
515
+ expect(result[0].ad).to.include('&consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
516
+ });
507
517
 
508
518
  it('should append iab_content to adtag', () => {
509
- const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS_IAB_CONTENT})
510
- expect(result[0].ad).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0')
511
- })
519
+ const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [bidRequest], queryParams: REQPARAMS_IAB_CONTENT});
520
+ expect(result[0].ad).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0');
521
+ });
512
522
 
513
523
  it('should get correct bid response when passing more than one size', () => {
514
524
  const REQUEST2 = Object.assign(DEFAULT_REQUEST(), {
@@ -516,115 +526,115 @@ describe('yieldlabBidAdapter', () => {
516
526
  [800, 250],
517
527
  [728, 90],
518
528
  [970, 90],
519
- ]
520
- })
521
- const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [REQUEST2], queryParams: REQPARAMS})
522
-
523
- expect(result[0].requestId).to.equal('2d925f27f5079f')
524
- expect(result[0].cpm).to.equal(0.01)
525
- expect(result[0].width).to.equal(728)
526
- expect(result[0].height).to.equal(90)
527
- expect(result[0].creativeId).to.equal('1111')
528
- expect(result[0].dealId).to.equal(2222)
529
- expect(result[0].currency).to.equal('EUR')
530
- expect(result[0].netRevenue).to.equal(false)
531
- expect(result[0].ttl).to.equal(300)
532
- expect(result[0].referrer).to.equal('')
533
- expect(result[0].meta.advertiserDomains).to.equal('yieldlab')
534
- expect(result[0].ad).to.include('<script src="https://ad.yieldlab.net/d/1111/2222/?ts=')
535
- expect(result[0].ad).to.include('&id=abc')
536
- })
529
+ ],
530
+ });
531
+ const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [REQUEST2], queryParams: REQPARAMS});
532
+
533
+ expect(result[0].requestId).to.equal('2d925f27f5079f');
534
+ expect(result[0].cpm).to.equal(0.01);
535
+ expect(result[0].width).to.equal(728);
536
+ expect(result[0].height).to.equal(90);
537
+ expect(result[0].creativeId).to.equal('1111');
538
+ expect(result[0].dealId).to.equal(2222);
539
+ expect(result[0].currency).to.equal('EUR');
540
+ expect(result[0].netRevenue).to.equal(false);
541
+ expect(result[0].ttl).to.equal(300);
542
+ expect(result[0].referrer).to.equal('');
543
+ expect(result[0].meta.advertiserDomains).to.equal('yieldlab');
544
+ expect(result[0].ad).to.include('<script src="https://ad.yieldlab.net/d/1111/2222/?ts=');
545
+ expect(result[0].ad).to.include('&id=abc');
546
+ });
537
547
 
538
548
  it('should add vastUrl when type is video', () => {
539
- const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS})
549
+ const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS});
540
550
 
541
- expect(result[0].requestId).to.equal('2d925f27f5079f')
542
- expect(result[0].cpm).to.equal(0.01)
543
- expect(result[0].mediaType).to.equal('video')
544
- expect(result[0].vastUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=')
545
- expect(result[0].vastUrl).to.include('&id=abc')
546
- })
551
+ expect(result[0].requestId).to.equal('2d925f27f5079f');
552
+ expect(result[0].cpm).to.equal(0.01);
553
+ expect(result[0].mediaType).to.equal('video');
554
+ expect(result[0].vastUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=');
555
+ expect(result[0].vastUrl).to.include('&id=abc');
556
+ });
547
557
 
548
558
  it('should add adUrl and native assets when type is Native', () => {
549
- const result = spec.interpretResponse({body: [NATIVE_RESPONSE]}, {validBidRequests: [NATIVE_REQUEST()], queryParams: REQPARAMS})
550
-
551
- expect(result[0].requestId).to.equal('2d925f27f5079f')
552
- expect(result[0].cpm).to.equal(0.01)
553
- expect(result[0].mediaType).to.equal('native')
554
- expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=')
555
- expect(result[0].native.title).to.equal('This is a great headline')
556
- expect(result[0].native.body).to.equal('Native body value')
557
- expect(result[0].native.image.url).to.equal('https://localhost:8080/yl-logo100x100.jpg')
558
- expect(result[0].native.image.width).to.equal(100)
559
- expect(result[0].native.image.height).to.equal(100)
560
- expect(result[0].native.clickUrl).to.equal('https://www.yieldlab.de')
561
- expect(result[0].native.impressionTrackers.length).to.equal(3)
562
- })
559
+ const result = spec.interpretResponse({body: [NATIVE_RESPONSE]}, {validBidRequests: [NATIVE_REQUEST()], queryParams: REQPARAMS});
560
+
561
+ expect(result[0].requestId).to.equal('2d925f27f5079f');
562
+ expect(result[0].cpm).to.equal(0.01);
563
+ expect(result[0].mediaType).to.equal('native');
564
+ expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=');
565
+ expect(result[0].native.title).to.equal('This is a great headline');
566
+ expect(result[0].native.body).to.equal('Native body value');
567
+ expect(result[0].native.image.url).to.equal('https://localhost:8080/yl-logo100x100.jpg');
568
+ expect(result[0].native.image.width).to.equal(100);
569
+ expect(result[0].native.image.height).to.equal(100);
570
+ expect(result[0].native.clickUrl).to.equal('https://www.yieldlab.de');
571
+ expect(result[0].native.impressionTrackers.length).to.equal(3);
572
+ });
563
573
 
564
574
  it('should add adUrl and default native assets when type is Native', () => {
565
575
  const NATIVE_RESPONSE_2 = Object.assign({}, NATIVE_RESPONSE, {
566
576
  native: {
567
577
  link: {
568
- url: 'https://www.yieldlab.de'
578
+ url: 'https://www.yieldlab.de',
569
579
  },
570
580
  assets: [],
571
- imptrackers: []
572
- }
573
- })
574
- const result = spec.interpretResponse({body: [NATIVE_RESPONSE_2]}, {validBidRequests: [NATIVE_REQUEST()], queryParams: REQPARAMS})
575
-
576
- expect(result[0].requestId).to.equal('2d925f27f5079f')
577
- expect(result[0].cpm).to.equal(0.01)
578
- expect(result[0].mediaType).to.equal('native')
579
- expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=')
580
- expect(result[0].native.title).to.equal('')
581
- expect(result[0].native.body).to.equal('')
582
- expect(result[0].native.image.url).to.equal('')
583
- expect(result[0].native.image.width).to.equal(0)
584
- expect(result[0].native.image.height).to.equal(0)
585
- })
581
+ imptrackers: [],
582
+ },
583
+ });
584
+ const result = spec.interpretResponse({body: [NATIVE_RESPONSE_2]}, {validBidRequests: [NATIVE_REQUEST()], queryParams: REQPARAMS});
585
+
586
+ expect(result[0].requestId).to.equal('2d925f27f5079f');
587
+ expect(result[0].cpm).to.equal(0.01);
588
+ expect(result[0].mediaType).to.equal('native');
589
+ expect(result[0].adUrl).to.include('https://ad.yieldlab.net/d/1111/2222/?ts=');
590
+ expect(result[0].native.title).to.equal('');
591
+ expect(result[0].native.body).to.equal('');
592
+ expect(result[0].native.image.url).to.equal('');
593
+ expect(result[0].native.image.width).to.equal(0);
594
+ expect(result[0].native.image.height).to.equal(0);
595
+ });
586
596
 
587
597
  it('should append gdpr parameters to vastUrl', () => {
588
- const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS_GDPR})
598
+ const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS_GDPR});
589
599
 
590
- expect(result[0].vastUrl).to.include('&gdpr=true')
591
- expect(result[0].vastUrl).to.include('&consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA')
592
- })
600
+ expect(result[0].vastUrl).to.include('&gdpr=true');
601
+ expect(result[0].vastUrl).to.include('&consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA');
602
+ });
593
603
 
594
604
  it('should add renderer if outstream context', () => {
595
605
  const OUTSTREAM_REQUEST = Object.assign(DEFAULT_REQUEST(), {
596
606
  mediaTypes: {
597
607
  video: {
598
608
  playerSize: [[640, 480]],
599
- context: 'outstream'
600
- }
601
- }
602
- })
603
- const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [OUTSTREAM_REQUEST], queryParams: REQPARAMS})
604
-
605
- expect(result[0].renderer.id).to.equal('2d925f27f5079f')
606
- expect(result[0].renderer.url).to.equal('https://ad.adition.com/dynamic.ad?a=o193092&ma_loadEvent=ma-start-event')
607
- expect(result[0].width).to.equal(640)
608
- expect(result[0].height).to.equal(480)
609
- })
609
+ context: 'outstream',
610
+ },
611
+ },
612
+ });
613
+ const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [OUTSTREAM_REQUEST], queryParams: REQPARAMS});
614
+
615
+ expect(result[0].renderer.id).to.equal('2d925f27f5079f');
616
+ expect(result[0].renderer.url).to.equal('https://ad.adition.com/dynamic.ad?a=o193092&ma_loadEvent=ma-start-event');
617
+ expect(result[0].width).to.equal(640);
618
+ expect(result[0].height).to.equal(480);
619
+ });
610
620
 
611
621
  it('should add pvid to adtag urls when present', () => {
612
- const result = spec.interpretResponse({body: [PVID_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS})
622
+ const result = spec.interpretResponse({body: [PVID_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS});
613
623
 
614
- expect(result[0].ad).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c')
615
- expect(result[0].vastUrl).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c')
616
- })
624
+ expect(result[0].ad).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c');
625
+ expect(result[0].vastUrl).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c');
626
+ });
617
627
 
618
628
  it('should append iab_content to vastUrl', () => {
619
- const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS_IAB_CONTENT})
620
- expect(result[0].vastUrl).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0')
621
- })
622
- })
629
+ const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST()], queryParams: REQPARAMS_IAB_CONTENT});
630
+ expect(result[0].vastUrl).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0');
631
+ });
632
+ });
623
633
 
624
634
  describe('getUserSyncs', () => {
625
635
  const syncOptions = {
626
636
  iframeEnabled: true,
627
- pixelEnabled: false
637
+ pixelEnabled: false,
628
638
  };
629
639
  const expectedUrlSnippets = ['https://ad.yieldlab.net/d/6846326/766/2x2?', 'ts=', 'type=h'];
630
640
 
@@ -632,9 +642,9 @@ describe('yieldlabBidAdapter', () => {
632
642
  const bidRequest = {
633
643
  gdprConsent: {
634
644
  consentString: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA',
635
- gdprApplies: true
645
+ gdprApplies: true,
636
646
  },
637
- uspConsent: '1YYY'
647
+ uspConsent: '1YYY',
638
648
  };
639
649
  const sync = spec.getUserSyncs(syncOptions, [], bidRequest.gdprConsent, bidRequest.uspConsent);
640
650
  expect(expectedUrlSnippets.every(urlSnippet => sync[0].url.includes(urlSnippet)));
@@ -647,8 +657,8 @@ describe('yieldlabBidAdapter', () => {
647
657
 
648
658
  it('should return user sync even without gdprApplies in gdprConsent', () => {
649
659
  const gdprConsent = {
650
- consentString: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA'
651
- }
660
+ consentString: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA',
661
+ };
652
662
  const sync = spec.getUserSyncs(syncOptions, [], gdprConsent, undefined);
653
663
  expect(expectedUrlSnippets.every(urlSnippet => sync[0].url.includes(urlSnippet)));
654
664
  expect(sync[0].url).to.have.string('gdpr_consent=' + gdprConsent.consentString);
@@ -662,64 +672,64 @@ describe('yieldlabBidAdapter', () => {
662
672
  const getFloor = () => {
663
673
  return {
664
674
  currency: currency,
665
- floor: floor
666
- }
667
- }
675
+ floor: floor,
676
+ };
677
+ };
668
678
 
669
679
  it('should add valid bid floor in the format floor={adslotId}:{floorPriceInCents}[, ...]', () => {
670
680
  bidRequest = Object.assign(DEFAULT_REQUEST(), {
671
681
  getFloor: () => {
672
682
  return {
673
683
  currency: 'EUR',
674
- floor: 1.33
675
- }
684
+ floor: 1.33,
685
+ };
676
686
  }});
677
687
  bidRequest2 = Object.assign(DEFAULT_REQUEST(), {
678
688
  params: {
679
- adslotId: 2222
689
+ adslotId: 2222,
680
690
  },
681
691
  getFloor: () => {
682
692
  return {
683
693
  currency: 'EUR',
684
- floor: 2.99
685
- }
686
- }
694
+ floor: 2.99,
695
+ };
696
+ },
687
697
  });
688
- const result = spec.buildRequests([bidRequest, bidRequest2], REQPARAMS)
689
- expect(result).to.have.nested.property('queryParams.floor', '1111:133,2222:299')
698
+ const result = spec.buildRequests([bidRequest, bidRequest2], REQPARAMS);
699
+ expect(result).to.have.nested.property('queryParams.floor', '1111:133,2222:299');
690
700
  });
691
701
 
692
702
  it('should round the floor price up', () => {
693
703
  currency = 'EUR';
694
704
  floor = 0.745;
695
- bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
696
- const result = spec.buildRequests([bidRequest], REQPARAMS)
697
- expect(result).to.have.nested.property('queryParams.floor', '1111:75')
705
+ bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor});
706
+ const result = spec.buildRequests([bidRequest], REQPARAMS);
707
+ expect(result).to.have.nested.property('queryParams.floor', '1111:75');
698
708
  });
699
709
 
700
710
  it('should round the floor price down', () => {
701
711
  currency = 'EUR';
702
712
  floor = 0.034;
703
- bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
704
- const result = spec.buildRequests([bidRequest], REQPARAMS)
705
- expect(result).to.have.nested.property('queryParams.floor', '1111:3')
713
+ bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor});
714
+ const result = spec.buildRequests([bidRequest], REQPARAMS);
715
+ expect(result).to.have.nested.property('queryParams.floor', '1111:3');
706
716
  });
707
717
 
708
718
  it('should not add empty bid floor', () => {
709
719
  bidRequest = Object.assign(DEFAULT_REQUEST(), {
710
720
  getFloor: () => {
711
721
  return {};
712
- }})
713
- const result = spec.buildRequests([bidRequest], REQPARAMS)
714
- expect(result).not.to.have.nested.property('queryParams.floor')
722
+ }});
723
+ const result = spec.buildRequests([bidRequest], REQPARAMS);
724
+ expect(result).not.to.have.nested.property('queryParams.floor');
715
725
  });
716
726
 
717
727
  it('should not add bid floor when currency is not matching', () => {
718
728
  currency = 'USD';
719
729
  floor = 1.33;
720
- bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor})
721
- const result = spec.buildRequests([bidRequest], REQPARAMS)
722
- expect(result).not.to.have.nested.property('queryParams.floor')
730
+ bidRequest = Object.assign(DEFAULT_REQUEST(), {getFloor});
731
+ const result = spec.buildRequests([bidRequest], REQPARAMS);
732
+ expect(result).not.to.have.nested.property('queryParams.floor');
723
733
  });
724
734
  });
725
- })
735
+ });