prebid.js 7.30.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 (197) 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/adkernelBidAdapter.js +1 -1
  7. package/dist/adlooxRtdProvider.js +1 -1
  8. package/dist/adrelevantisBidAdapter.js +1 -1
  9. package/dist/adtrgtmeBidAdapter.js +1 -1
  10. package/dist/adxcgBidAdapter.js +1 -1
  11. package/dist/aidemBidAdapter.js +1 -1
  12. package/dist/ajaBidAdapter.js +1 -1
  13. package/dist/alkimiBidAdapter.js +1 -1
  14. package/dist/amxBidAdapter.js +1 -1
  15. package/dist/amxIdSystem.js +1 -1
  16. package/dist/aolBidAdapter.js +1 -1
  17. package/dist/appierAnalyticsAdapter.js +1 -1
  18. package/dist/appnexusBidAdapter.js +1 -1
  19. package/dist/appushBidAdapter.js +1 -0
  20. package/dist/asoBidAdapter.js +1 -1
  21. package/dist/axonixBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/big-richmediaBidAdapter.js +1 -1
  24. package/dist/bridgewellBidAdapter.js +1 -1
  25. package/dist/brightMountainMediaBidAdapter.js +1 -1
  26. package/dist/carodaBidAdapter.js +1 -1
  27. package/dist/chtnwBidAdapter.js +1 -1
  28. package/dist/concertBidAdapter.js +1 -1
  29. package/dist/confiantRtdProvider.js +1 -0
  30. package/dist/connectIdSystem.js +1 -1
  31. package/dist/connectadBidAdapter.js +1 -1
  32. package/dist/consumableBidAdapter.js +1 -1
  33. package/dist/conversantBidAdapter.js +1 -1
  34. package/dist/craftBidAdapter.js +1 -1
  35. package/dist/criteoBidAdapter.js +1 -1
  36. package/dist/datawrkzBidAdapter.js +1 -1
  37. package/dist/dspxBidAdapter.js +1 -1
  38. package/dist/eplanningBidAdapter.js +1 -1
  39. package/dist/feedadBidAdapter.js +1 -1
  40. package/dist/finativeBidAdapter.js +1 -1
  41. package/dist/glimpseBidAdapter.js +1 -1
  42. package/dist/gmosspBidAdapter.js +1 -1
  43. package/dist/goldbachBidAdapter.js +1 -1
  44. package/dist/gridBidAdapter.js +1 -1
  45. package/dist/gridNMBidAdapter.js +1 -1
  46. package/dist/gumgumBidAdapter.js +1 -1
  47. package/dist/h12mediaBidAdapter.js +1 -1
  48. package/dist/holidBidAdapter.js +1 -0
  49. package/dist/id5IdSystem.js +1 -1
  50. package/dist/improvedigitalBidAdapter.js +1 -1
  51. package/dist/inmarBidAdapter.js +1 -1
  52. package/dist/insticatorBidAdapter.js +1 -1
  53. package/dist/ixBidAdapter.js +1 -1
  54. package/dist/justpremiumBidAdapter.js +1 -1
  55. package/dist/jwplayerVideoProvider.js +1 -1
  56. package/dist/konduitAnalyticsAdapter.js +1 -1
  57. package/dist/kueezBidAdapter.js +1 -1
  58. package/dist/kueezRtbBidAdapter.js +1 -1
  59. package/dist/lassoBidAdapter.js +1 -1
  60. package/dist/lifestreetBidAdapter.js +1 -1
  61. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  62. package/dist/logicadBidAdapter.js +1 -1
  63. package/dist/loglyliftBidAdapter.js +1 -1
  64. package/dist/magniteAnalyticsAdapter.js +1 -1
  65. package/dist/malltvAnalyticsAdapter.js +1 -1
  66. package/dist/marsmediaBidAdapter.js +1 -1
  67. package/dist/mediafuseBidAdapter.js +1 -1
  68. package/dist/medianetRtdProvider.js +1 -1
  69. package/dist/mediasquareBidAdapter.js +1 -1
  70. package/dist/mgidBidAdapter.js +1 -1
  71. package/dist/minutemediaBidAdapter.js +1 -1
  72. package/dist/nexx360BidAdapter.js +1 -1
  73. package/dist/not-for-prod/prebid.js +131 -127
  74. package/dist/oguryBidAdapter.js +1 -1
  75. package/dist/onetagBidAdapter.js +1 -1
  76. package/dist/ooloAnalyticsAdapter.js +1 -1
  77. package/dist/orbitsoftBidAdapter.js +1 -0
  78. package/dist/outbrainBidAdapter.js +1 -1
  79. package/dist/parrableIdSystem.js +1 -1
  80. package/dist/pbsExtensions.js +1 -1
  81. package/dist/permutiveRtdProvider.js +1 -1
  82. package/dist/pixfutureBidAdapter.js +1 -1
  83. package/dist/prebid-core.js +1 -1
  84. package/dist/prebidServerBidAdapter.js +1 -1
  85. package/dist/publinkIdSystem.js +1 -1
  86. package/dist/pubmaticBidAdapter.js +1 -1
  87. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  88. package/dist/pxyzBidAdapter.js +1 -1
  89. package/dist/quantcastBidAdapter.js +1 -1
  90. package/dist/readpeakBidAdapter.js +1 -1
  91. package/dist/relaidoBidAdapter.js +1 -1
  92. package/dist/rhythmoneBidAdapter.js +1 -1
  93. package/dist/riseBidAdapter.js +1 -1
  94. package/dist/rubiconAnalyticsAdapter.js +1 -1
  95. package/dist/rubiconBidAdapter.js +1 -1
  96. package/dist/seedingAllianceBidAdapter.js +1 -1
  97. package/dist/seedtagBidAdapter.js +1 -1
  98. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  99. package/dist/sharethroughBidAdapter.js +1 -1
  100. package/dist/shinezBidAdapter.js +1 -1
  101. package/dist/smaatoBidAdapter.js +1 -1
  102. package/dist/smartadserverBidAdapter.js +1 -1
  103. package/dist/smartxBidAdapter.js +1 -1
  104. package/dist/smilewantedBidAdapter.js +1 -1
  105. package/dist/sonobiBidAdapter.js +1 -1
  106. package/dist/sovrnAnalyticsAdapter.js +1 -1
  107. package/dist/sovrnBidAdapter.js +1 -1
  108. package/dist/sspBCBidAdapter.js +1 -1
  109. package/dist/sublimeBidAdapter.js +1 -1
  110. package/dist/synacormediaBidAdapter.js +1 -1
  111. package/dist/taboolaBidAdapter.js +1 -1
  112. package/dist/targetVideoBidAdapter.js +1 -1
  113. package/dist/teadsBidAdapter.js +1 -1
  114. package/dist/trionBidAdapter.js +1 -1
  115. package/dist/tripleliftBidAdapter.js +1 -1
  116. package/dist/ttdBidAdapter.js +1 -1
  117. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  118. package/dist/uid2IdSystem.js +1 -1
  119. package/dist/underdogmediaBidAdapter.js +1 -1
  120. package/dist/undertoneBidAdapter.js +1 -1
  121. package/dist/vidazooBidAdapter.js +1 -1
  122. package/dist/videobyteBidAdapter.js +1 -1
  123. package/dist/visxBidAdapter.js +1 -1
  124. package/dist/vuukleBidAdapter.js +1 -1
  125. package/dist/widespaceBidAdapter.js +1 -1
  126. package/dist/winrBidAdapter.js +1 -1
  127. package/dist/yahoosspBidAdapter.js +1 -1
  128. package/dist/yieldlabBidAdapter.js +1 -1
  129. package/dist/yieldmoBidAdapter.js +1 -1
  130. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  131. package/integrationExamples/gpt/adloox.html +5 -0
  132. package/libraries/pbsExtensions/processors/adUnitCode.js +13 -0
  133. package/libraries/pbsExtensions/processors/pbs.js +5 -0
  134. package/modules/.submodules.json +1 -0
  135. package/modules/adagioBidAdapter.js +0 -4
  136. package/modules/adagioBidAdapter.md +4 -22
  137. package/modules/adkernelBidAdapter.js +2 -1
  138. package/modules/adlooxAnalyticsAdapter.md +5 -3
  139. package/modules/adlooxRtdProvider.js +82 -278
  140. package/modules/adlooxRtdProvider.md +6 -6
  141. package/modules/aidemBidAdapter.js +4 -0
  142. package/modules/aidemBidAdapter.md +1 -0
  143. package/modules/alkimiBidAdapter.js +23 -6
  144. package/modules/aolBidAdapter.js +12 -0
  145. package/modules/appnexusBidAdapter.js +2 -2
  146. package/modules/appushBidAdapter.js +188 -0
  147. package/modules/appushBidAdapter.md +79 -0
  148. package/modules/asoBidAdapter.js +8 -5
  149. package/modules/confiantRtdProvider.js +128 -0
  150. package/modules/confiantRtdProvider.md +45 -0
  151. package/modules/connectIdSystem.js +15 -1
  152. package/modules/datawrkzBidAdapter.js +24 -4
  153. package/modules/feedadBidAdapter.js +17 -7
  154. package/modules/holidBidAdapter.js +170 -0
  155. package/modules/holidBidAdapter.md +36 -0
  156. package/modules/jwplayerVideoProvider.js +10 -3
  157. package/modules/kueezRtbBidAdapter.js +21 -8
  158. package/modules/medianetRtdProvider.js +4 -4
  159. package/modules/nexx360BidAdapter.js +5 -7
  160. package/modules/orbitsoftBidAdapter.js +150 -0
  161. package/modules/permutiveRtdProvider.js +1 -1
  162. package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
  163. package/modules/riseBidAdapter.js +2 -1
  164. package/modules/riseBidAdapter.md +2 -0
  165. package/modules/seedtagBidAdapter.js +12 -0
  166. package/modules/smartxBidAdapter.js +6 -0
  167. package/modules/taboolaBidAdapter.js +61 -14
  168. package/modules/yahoosspBidAdapter.js +5 -0
  169. package/modules/yieldlabBidAdapter.js +150 -134
  170. package/modules/yieldmoBidAdapter.js +1 -12
  171. package/package.json +1 -1
  172. package/src/adloader.js +2 -1
  173. package/src/prebid.js +7 -8
  174. package/test/spec/modules/adagioBidAdapter_spec.js +1 -28
  175. package/test/spec/modules/adlooxRtdProvider_spec.js +28 -120
  176. package/test/spec/modules/aidemBidAdapter_spec.js +10 -2
  177. package/test/spec/modules/alkimiBidAdapter_spec.js +15 -3
  178. package/test/spec/modules/aolBidAdapter_spec.js +22 -0
  179. package/test/spec/modules/appnexusBidAdapter_spec.js +7 -3
  180. package/test/spec/modules/appushBidAdapter_spec.js +372 -0
  181. package/test/spec/modules/confiantRtdProvider_spec.js +107 -0
  182. package/test/spec/modules/connectIdSystem_spec.js +17 -5
  183. package/test/spec/modules/feedadBidAdapter_spec.js +60 -13
  184. package/test/spec/modules/holidBidAdapter_spec.js +165 -0
  185. package/test/spec/modules/kueezRtbBidAdapter_spec.js +147 -24
  186. package/test/spec/modules/medianetRtdProvider_spec.js +3 -3
  187. package/test/spec/modules/orbitsoftBidAdapter_spec.js +255 -0
  188. package/test/spec/modules/riseBidAdapter_spec.js +7 -0
  189. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -10
  190. package/test/spec/modules/smartxBidAdapter_spec.js +10 -0
  191. package/test/spec/modules/taboolaBidAdapter_spec.js +142 -5
  192. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +45 -10
  193. package/test/spec/modules/yahoosspBidAdapter_spec.js +16 -1
  194. package/test/spec/modules/yieldlabBidAdapter_spec.js +311 -301
  195. package/test/spec/modules/yieldmoBidAdapter_spec.js +70 -0
  196. package/test/spec/ortbConverter/pbsExtensions/adUnitCode_spec.js +23 -0
  197. package/test/spec/unit/pbjs_api_spec.js +11 -0
@@ -0,0 +1,165 @@
1
+ import { expect } from 'chai'
2
+ import { spec } from 'modules/holidBidAdapter.js'
3
+
4
+ describe('holidBidAdapterTests', () => {
5
+ const bidRequestData = {
6
+ bidder: 'holid',
7
+ adUnitCode: 'test-div',
8
+ bidId: 'bid-id',
9
+ auctionId: 'test-id',
10
+ params: { adUnitID: '12345' },
11
+ mediaTypes: { banner: {} },
12
+ sizes: [[300, 250]],
13
+ ortb2: {
14
+ site: {
15
+ publisher: {
16
+ domain: 'https://foo.bar',
17
+ }
18
+ },
19
+ regs: {
20
+ gdpr: 1,
21
+ },
22
+ user: {
23
+ ext: {
24
+ consent: 'G4ll0p1ng_Un1c0rn5',
25
+ }
26
+ },
27
+ device: {
28
+ h: 410,
29
+ w: 1860,
30
+ }
31
+ }
32
+ }
33
+
34
+ describe('isBidRequestValid', () => {
35
+ const bid = JSON.parse(JSON.stringify(bidRequestData))
36
+
37
+ it('should return true', () => {
38
+ expect(spec.isBidRequestValid(bid)).to.equal(true)
39
+ })
40
+
41
+ it('should return false when required params are not passed', () => {
42
+ const bid = JSON.parse(JSON.stringify(bidRequestData))
43
+ delete bid.params.adUnitID
44
+
45
+ expect(spec.isBidRequestValid(bid)).to.equal(false)
46
+ })
47
+ })
48
+
49
+ describe('buildRequests', () => {
50
+ const bid = JSON.parse(JSON.stringify(bidRequestData))
51
+ const request = spec.buildRequests([bid], bid)
52
+ const payload = JSON.parse(request[0].data)
53
+
54
+ it('should include ext in imp', () => {
55
+ expect(payload.imp[0].ext).to.exist
56
+ expect(payload.imp[0].ext).to.deep.equal({
57
+ prebid: { storedrequest: { id: '12345' } },
58
+ })
59
+ })
60
+
61
+ it('should include banner format in imp', () => {
62
+ expect(payload.imp[0].banner).to.exist
63
+ expect(payload.imp[0].banner).to.deep.equal({
64
+ format: [{ w: 300, h: 250 }],
65
+ })
66
+ })
67
+
68
+ it('should include ortb2 first party data', () => {
69
+ expect(payload.device.w).to.equal(1860)
70
+ expect(payload.device.h).to.equal(410)
71
+ expect(payload.user.ext.consent).to.equal('G4ll0p1ng_Un1c0rn5')
72
+ expect(payload.regs.gdpr).to.equal(1)
73
+ })
74
+ })
75
+
76
+ describe('interpretResponse', () => {
77
+ const serverResponse = {
78
+ body: {
79
+ id: 'test-id',
80
+ cur: 'USD',
81
+ seatbid: [
82
+ {
83
+ bid: [
84
+ {
85
+ id: 'testbidid',
86
+ price: 0.4,
87
+ adm: 'test-ad',
88
+ adid: 789456,
89
+ crid: 1234,
90
+ w: 300,
91
+ h: 250,
92
+ },
93
+ ],
94
+ },
95
+ ],
96
+ },
97
+ }
98
+
99
+ const interpretedResponse = spec.interpretResponse(
100
+ serverResponse,
101
+ bidRequestData
102
+ )
103
+
104
+ it('should interpret response', () => {
105
+ expect(interpretedResponse[0].requestId).to.equal(bidRequestData.bidId)
106
+ expect(interpretedResponse[0].cpm).to.equal(
107
+ serverResponse.body.seatbid[0].bid[0].price
108
+ )
109
+ expect(interpretedResponse[0].ad).to.equal(
110
+ serverResponse.body.seatbid[0].bid[0].adm
111
+ )
112
+ expect(interpretedResponse[0].creativeId).to.equal(
113
+ serverResponse.body.seatbid[0].bid[0].crid
114
+ )
115
+ expect(interpretedResponse[0].width).to.equal(
116
+ serverResponse.body.seatbid[0].bid[0].w
117
+ )
118
+ expect(interpretedResponse[0].height).to.equal(
119
+ serverResponse.body.seatbid[0].bid[0].h
120
+ )
121
+ expect(interpretedResponse[0].currency).to.equal(serverResponse.body.cur)
122
+ })
123
+ })
124
+
125
+ describe('getUserSyncs', () => {
126
+ it('should return user sync', () => {
127
+ const optionsType = {
128
+ iframeEnabled: true,
129
+ pixelEnabled: true,
130
+ }
131
+ const serverResponse = [
132
+ {
133
+ body: {
134
+ ext: {
135
+ responsetimemillis: {
136
+ 'test seat 1': 2,
137
+ 'test seat 2': 1,
138
+ },
139
+ },
140
+ },
141
+ },
142
+ ]
143
+ const gdprConsent = {
144
+ gdprApplies: 1,
145
+ consentString: 'dkj49Sjmfjuj34as:12jaf90123hufabidfy9u23brfpoig',
146
+ }
147
+ const uspConsent = 'mkjvbiniwot4827obfoy8sdg8203gb'
148
+ const expectedUserSyncs = [
149
+ {
150
+ type: 'iframe',
151
+ url: 'https://null.holid.io/sync.html?bidders=%5B%22test%20seat%201%22%2C%22test%20seat%202%22%5D&gdpr=1&gdpr_consent=dkj49Sjmfjuj34as:12jaf90123hufabidfy9u23brfpoig&usp_consent=mkjvbiniwot4827obfoy8sdg8203gb&type=iframe',
152
+ },
153
+ ]
154
+
155
+ const userSyncs = spec.getUserSyncs(
156
+ optionsType,
157
+ serverResponse,
158
+ gdprConsent,
159
+ uspConsent
160
+ )
161
+
162
+ expect(userSyncs).to.deep.equal(expectedUserSyncs)
163
+ })
164
+ })
165
+ })
@@ -1,4 +1,4 @@
1
- import {expect} from 'chai';
1
+ import { expect } from 'chai';
2
2
  import {
3
3
  spec as adapter,
4
4
  SUPPORTED_ID_SYSTEMS,
@@ -13,8 +13,9 @@ import {
13
13
  getUniqueDealId,
14
14
  } from 'modules/kueezRtbBidAdapter.js';
15
15
  import * as utils from 'src/utils.js';
16
- import {version} from 'package.json';
17
- import {useFakeTimers} from 'sinon';
16
+ import { version } from 'package.json';
17
+ import { useFakeTimers } from 'sinon';
18
+ import { BANNER, VIDEO } from '../../../src/mediaTypes';
18
19
 
19
20
  const SUB_DOMAIN = 'exchange';
20
21
 
@@ -36,9 +37,42 @@ const BID = {
36
37
  'sizes': [[300, 250], [300, 600]],
37
38
  'bidderRequestId': '1fdb5ff1b6eaa7',
38
39
  'requestId': 'b0777d85-d061-450e-9bc7-260dd54bbb7a',
39
- 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc'
40
+ 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
41
+ 'mediaTypes': [BANNER]
40
42
  };
41
43
 
44
+ const VIDEO_BID = {
45
+ 'bidId': '2d52001cabd527',
46
+ 'adUnitCode': '63550ad1ff6642d368cba59dh5884270560',
47
+ 'bidderRequestId': '12a8ae9ada9c13',
48
+ 'transactionId': '56e184c6-bde9-497b-b9b9-cf47a61381ee',
49
+ 'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
50
+ 'params': {
51
+ 'subDomain': SUB_DOMAIN,
52
+ 'cId': '635509f7ff6642d368cb9837',
53
+ 'pId': '59ac17c192832d0011283fe3',
54
+ 'bidFloor': 0.1
55
+ },
56
+ 'sizes': [[545, 307]],
57
+ 'mediaTypes': {
58
+ 'video': {
59
+ 'playerSize': [[545, 307]],
60
+ 'context': 'instream',
61
+ 'mimes': [
62
+ 'video/mp4',
63
+ 'application/javascript'
64
+ ],
65
+ 'protocols': [2, 3, 5, 6],
66
+ 'maxduration': 60,
67
+ 'minduration': 0,
68
+ 'startdelay': 0,
69
+ 'linearity': 1,
70
+ 'api': [2],
71
+ 'placement': 1
72
+ }
73
+ }
74
+ }
75
+
42
76
  const BIDDER_REQUEST = {
43
77
  'gdprConsent': {
44
78
  'consentString': 'consent_string',
@@ -73,6 +107,23 @@ const SERVER_RESPONSE = {
73
107
  }
74
108
  };
75
109
 
110
+ const VIDEO_SERVER_RESPONSE = {
111
+ body: {
112
+ 'cid': '635509f7ff6642d368cb9837',
113
+ 'results': [{
114
+ 'ad': '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
115
+ 'advertiserDomains': ['kueezrtb.com'],
116
+ 'exp': 60,
117
+ 'width': 545,
118
+ 'height': 307,
119
+ 'mediaType': 'video',
120
+ 'creativeId': '12610997325162499419',
121
+ 'price': 2,
122
+ 'cookies': []
123
+ }]
124
+ }
125
+ };
126
+
76
127
  const REQUEST = {
77
128
  data: {
78
129
  width: 300,
@@ -83,7 +134,7 @@ const REQUEST = {
83
134
 
84
135
  function getTopWindowQueryParams() {
85
136
  try {
86
- const parsedUrl = utils.parseUrl(window.top.document.URL, {decodeSearchAsString: true});
137
+ const parsedUrl = utils.parseUrl(window.top.document.URL, { decodeSearchAsString: true });
87
138
  return parsedUrl.search;
88
139
  } catch (e) {
89
140
  return '';
@@ -111,6 +162,11 @@ describe('KueezRtbBidAdapter', function () {
111
162
  it('exists and is a string', function () {
112
163
  expect(adapter.code).to.exist.and.to.be.a('string');
113
164
  });
165
+
166
+ it('exists and contains media types', function () {
167
+ expect(adapter.supportedMediaTypes).to.exist.and.to.be.an('array').with.length(2);
168
+ expect(adapter.supportedMediaTypes).to.contain.members([BANNER, VIDEO]);
169
+ });
114
170
  });
115
171
 
116
172
  describe('validate bid requests', function () {
@@ -155,7 +211,53 @@ describe('KueezRtbBidAdapter', function () {
155
211
  sandbox.stub(Date, 'now').returns(1000);
156
212
  });
157
213
 
158
- it('should build request for each size', function () {
214
+ it('should build video request', function () {
215
+ const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
216
+ const requests = adapter.buildRequests([VIDEO_BID], BIDDER_REQUEST);
217
+ expect(requests).to.have.length(1);
218
+ expect(requests[0]).to.deep.equal({
219
+ method: 'POST',
220
+ url: `${createDomain(SUB_DOMAIN)}/prebid/multi/635509f7ff6642d368cb9837`,
221
+ data: {
222
+ adUnitCode: '63550ad1ff6642d368cba59dh5884270560',
223
+ bidFloor: 0.1,
224
+ bidId: '2d52001cabd527',
225
+ bidderVersion: adapter.version,
226
+ cb: 1000,
227
+ gdpr: 1,
228
+ gdprConsent: 'consent_string',
229
+ usPrivacy: 'consent_string',
230
+ prebidVersion: version,
231
+ publisherId: '59ac17c192832d0011283fe3',
232
+ url: 'https%3A%2F%2Fwww.greatsite.com',
233
+ referrer: 'https://www.somereferrer.com',
234
+ res: `${window.top.screen.width}x${window.top.screen.height}`,
235
+ schain: VIDEO_BID.schain,
236
+ sizes: ['545x307'],
237
+ uniqueDealId: `${hashUrl}_${Date.now().toString()}`,
238
+ uqs: getTopWindowQueryParams(),
239
+ mediaTypes: {
240
+ video: {
241
+ api: [2],
242
+ context: 'instream',
243
+ linearity: 1,
244
+ maxduration: 60,
245
+ mimes: [
246
+ 'video/mp4',
247
+ 'application/javascript'
248
+ ],
249
+ minduration: 0,
250
+ placement: 1,
251
+ playerSize: [[545, 307]],
252
+ protocols: [2, 3, 5, 6],
253
+ startdelay: 0
254
+ }
255
+ }
256
+ }
257
+ });
258
+ });
259
+
260
+ it('should build banner request for each size', function () {
159
261
  const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
160
262
  const requests = adapter.buildRequests([BID], BIDDER_REQUEST);
161
263
  expect(requests).to.have.length(1);
@@ -179,6 +281,7 @@ describe('KueezRtbBidAdapter', function () {
179
281
  prebidVersion: version,
180
282
  schain: BID.schain,
181
283
  res: `${window.top.screen.width}x${window.top.screen.height}`,
284
+ mediaTypes: [BANNER],
182
285
  uqs: getTopWindowQueryParams(),
183
286
  'ext.param1': 'loremipsum',
184
287
  'ext.param2': 'dolorsitamet',
@@ -193,7 +296,7 @@ describe('KueezRtbBidAdapter', function () {
193
296
  });
194
297
  describe('getUserSyncs', function () {
195
298
  it('should have valid user sync with iframeEnabled', function () {
196
- const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
299
+ const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
197
300
 
198
301
  expect(result).to.deep.equal([{
199
302
  type: 'iframe',
@@ -202,7 +305,7 @@ describe('KueezRtbBidAdapter', function () {
202
305
  });
203
306
 
204
307
  it('should have valid user sync with cid on response', function () {
205
- const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
308
+ const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
206
309
  expect(result).to.deep.equal([{
207
310
  type: 'iframe',
208
311
  url: 'https://sync.kueezrtb.com/api/sync/iframe/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy='
@@ -210,7 +313,7 @@ describe('KueezRtbBidAdapter', function () {
210
313
  });
211
314
 
212
315
  it('should have valid user sync with pixelEnabled', function () {
213
- const result = adapter.getUserSyncs({pixelEnabled: true}, [SERVER_RESPONSE]);
316
+ const result = adapter.getUserSyncs({ pixelEnabled: true }, [SERVER_RESPONSE]);
214
317
 
215
318
  expect(result).to.deep.equal([{
216
319
  'url': 'https://sync.kueezrtb.com/api/sync/image/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy=',
@@ -226,16 +329,16 @@ describe('KueezRtbBidAdapter', function () {
226
329
  });
227
330
 
228
331
  it('should return empty array when there is no ad', function () {
229
- const responses = adapter.interpretResponse({price: 1, ad: ''});
332
+ const responses = adapter.interpretResponse({ price: 1, ad: '' });
230
333
  expect(responses).to.be.empty;
231
334
  });
232
335
 
233
336
  it('should return empty array when there is no price', function () {
234
- const responses = adapter.interpretResponse({price: null, ad: 'great ad'});
337
+ const responses = adapter.interpretResponse({ price: null, ad: 'great ad' });
235
338
  expect(responses).to.be.empty;
236
339
  });
237
340
 
238
- it('should return an array of interpreted responses', function () {
341
+ it('should return an array of interpreted banner responses', function () {
239
342
  const responses = adapter.interpretResponse(SERVER_RESPONSE, REQUEST);
240
343
  expect(responses).to.have.length(1);
241
344
  expect(responses[0]).to.deep.equal({
@@ -254,6 +357,26 @@ describe('KueezRtbBidAdapter', function () {
254
357
  });
255
358
  });
256
359
 
360
+ it('should return an array of interpreted video responses', function () {
361
+ const responses = adapter.interpretResponse(VIDEO_SERVER_RESPONSE, REQUEST);
362
+ expect(responses).to.have.length(1);
363
+ expect(responses[0]).to.deep.equal({
364
+ requestId: '2d52001cabd527',
365
+ cpm: 2,
366
+ width: 545,
367
+ height: 307,
368
+ mediaType: 'video',
369
+ creativeId: '12610997325162499419',
370
+ currency: 'USD',
371
+ netRevenue: true,
372
+ ttl: 60,
373
+ vastXml: '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
374
+ meta: {
375
+ advertiserDomains: ['kueezrtb.com']
376
+ }
377
+ });
378
+ });
379
+
257
380
  it('should take default TTL', function () {
258
381
  const serverResponse = utils.deepClone(SERVER_RESPONSE);
259
382
  delete serverResponse.body.results[0].exp;
@@ -271,11 +394,11 @@ describe('KueezRtbBidAdapter', function () {
271
394
  const userId = (function () {
272
395
  switch (idSystemProvider) {
273
396
  case 'lipb':
274
- return {lipbid: id};
397
+ return { lipbid: id };
275
398
  case 'parrableId':
276
- return {eid: id};
399
+ return { eid: id };
277
400
  case 'id5id':
278
- return {uid: id};
401
+ return { uid: id };
279
402
  default:
280
403
  return id;
281
404
  }
@@ -294,18 +417,18 @@ describe('KueezRtbBidAdapter', function () {
294
417
 
295
418
  describe('alternate param names extractors', function () {
296
419
  it('should return undefined when param not supported', function () {
297
- const cid = extractCID({'c_id': '1'});
298
- const pid = extractPID({'p_id': '1'});
299
- const subDomain = extractSubDomain({'sub_domain': 'prebid'});
420
+ const cid = extractCID({ 'c_id': '1' });
421
+ const pid = extractPID({ 'p_id': '1' });
422
+ const subDomain = extractSubDomain({ 'sub_domain': 'prebid' });
300
423
  expect(cid).to.be.undefined;
301
424
  expect(pid).to.be.undefined;
302
425
  expect(subDomain).to.be.undefined;
303
426
  });
304
427
 
305
428
  it('should return value when param supported', function () {
306
- const cid = extractCID({'cID': '1'});
307
- const pid = extractPID({'Pid': '2'});
308
- const subDomain = extractSubDomain({'subDOMAIN': 'prebid'});
429
+ const cid = extractCID({ 'cID': '1' });
430
+ const pid = extractPID({ 'Pid': '2' });
431
+ const subDomain = extractSubDomain({ 'subDOMAIN': 'prebid' });
309
432
  expect(cid).to.be.equal('1');
310
433
  expect(pid).to.be.equal('2');
311
434
  expect(subDomain).to.be.equal('prebid');
@@ -365,7 +488,7 @@ describe('KueezRtbBidAdapter', function () {
365
488
  now
366
489
  });
367
490
  setStorageItem('myKey', 2020);
368
- const {value, created} = getStorageItem('myKey');
491
+ const { value, created } = getStorageItem('myKey');
369
492
  expect(created).to.be.equal(now);
370
493
  expect(value).to.be.equal(2020);
371
494
  expect(typeof value).to.be.equal('number');
@@ -381,8 +504,8 @@ describe('KueezRtbBidAdapter', function () {
381
504
  });
382
505
 
383
506
  it('should parse JSON value', function () {
384
- const data = JSON.stringify({event: 'send'});
385
- const {event} = tryParseJSON(data);
507
+ const data = JSON.stringify({ event: 'send' });
508
+ const { event } = tryParseJSON(data);
386
509
  expect(event).to.be.equal('send');
387
510
  });
388
511
 
@@ -66,12 +66,12 @@ describe('medianet realtime module', function () {
66
66
  describe('getTargeting should work correctly', function () {
67
67
  it('should return empty if not loaded', function () {
68
68
  window.mnjs.loaded = false;
69
- assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData([]), {});
69
+ assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData([], {}, {}, {}), {});
70
70
  });
71
71
 
72
72
  it('should return ad unit codes when ad units are present', function () {
73
73
  const adUnitCodes = ['code1', 'code2'];
74
- assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData(adUnitCodes), {
74
+ assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData(adUnitCodes, {}, {}, {}), {
75
75
  code1: {'mnadc': 'code1'},
76
76
  code2: {'mnadc': 'code2'},
77
77
  });
@@ -79,7 +79,7 @@ describe('medianet realtime module', function () {
79
79
 
80
80
  it('should call mnjs.getTargetingData if loaded', function () {
81
81
  window.mnjs.loaded = true;
82
- medianetRTD.medianetRtdModule.getTargetingData([]);
82
+ medianetRTD.medianetRtdModule.getTargetingData([], {}, {}, {});
83
83
  assert.equal(getTargetingDataSpy.called, true);
84
84
  });
85
85
  });