prebid.js 7.52.0 → 7.54.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 (236) hide show
  1. package/dist/1plusXRtdProvider.js +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/adhashBidAdapter.js +1 -1
  8. package/dist/adkernelBidAdapter.js +1 -1
  9. package/dist/adqueryBidAdapter.js +1 -1
  10. package/dist/adrelevantisBidAdapter.js +1 -1
  11. package/dist/adtrgtmeBidAdapter.js +1 -1
  12. package/dist/adxcgBidAdapter.js +1 -1
  13. package/dist/adyoulikeBidAdapter.js +1 -1
  14. package/dist/airgridRtdProvider.js +1 -1
  15. package/dist/ajaBidAdapter.js +1 -1
  16. package/dist/amxBidAdapter.js +1 -1
  17. package/dist/amxIdSystem.js +1 -1
  18. package/dist/appierAnalyticsAdapter.js +1 -1
  19. package/dist/appnexusBidAdapter.js +1 -1
  20. package/dist/asoBidAdapter.js +1 -1
  21. package/dist/axonixBidAdapter.js +1 -1
  22. package/dist/beopBidAdapter.js +1 -1
  23. package/dist/bidglassBidAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/bridgewellBidAdapter.js +1 -1
  26. package/dist/brightMountainMediaBidAdapter.js +1 -1
  27. package/dist/carodaBidAdapter.js +1 -1
  28. package/dist/chtnwBidAdapter.js +1 -1
  29. package/dist/conceptxBidAdapter.js +1 -0
  30. package/dist/concertBidAdapter.js +1 -1
  31. package/dist/connectadBidAdapter.js +1 -1
  32. package/dist/consumableBidAdapter.js +1 -1
  33. package/dist/conversantAnalyticsAdapter.js +1 -1
  34. package/dist/conversantBidAdapter.js +1 -1
  35. package/dist/craftBidAdapter.js +1 -1
  36. package/dist/criteoBidAdapter.js +1 -1
  37. package/dist/cwireBidAdapter.js +1 -1
  38. package/dist/dspxBidAdapter.js +1 -1
  39. package/dist/eplanningBidAdapter.js +1 -1
  40. package/dist/eskimiBidAdapter.js +1 -1
  41. package/dist/euidIdSystem.js +1 -0
  42. package/dist/feedadBidAdapter.js +1 -1
  43. package/dist/finativeBidAdapter.js +1 -1
  44. package/dist/freepassIdSystem.js +1 -0
  45. package/dist/freewheel-sspBidAdapter.js +1 -1
  46. package/dist/glimpseBidAdapter.js +1 -1
  47. package/dist/gmosspBidAdapter.js +1 -1
  48. package/dist/goldbachBidAdapter.js +1 -1
  49. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  50. package/dist/greenbidsRtdProvider.js +1 -1
  51. package/dist/gridBidAdapter.js +1 -1
  52. package/dist/gumgumBidAdapter.js +1 -1
  53. package/dist/h12mediaBidAdapter.js +1 -1
  54. package/dist/hypelabBidAdapter.js +1 -0
  55. package/dist/id5IdSystem.js +1 -1
  56. package/dist/improvedigitalBidAdapter.js +1 -1
  57. package/dist/inmarBidAdapter.js +1 -1
  58. package/dist/insticatorBidAdapter.js +1 -1
  59. package/dist/ixBidAdapter.js +1 -1
  60. package/dist/justpremiumBidAdapter.js +1 -1
  61. package/dist/kargoBidAdapter.js +1 -1
  62. package/dist/konduitAnalyticsAdapter.js +1 -1
  63. package/dist/kueezBidAdapter.js +1 -1
  64. package/dist/kueezRtbBidAdapter.js +1 -1
  65. package/dist/kulturemediaBidAdapter.js +1 -1
  66. package/dist/lassoBidAdapter.js +1 -1
  67. package/dist/lifestreetBidAdapter.js +1 -1
  68. package/dist/limelightDigitalBidAdapter.js +1 -1
  69. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  70. package/dist/logicadBidAdapter.js +1 -1
  71. package/dist/loglyliftBidAdapter.js +1 -1
  72. package/dist/magniteAnalyticsAdapter.js +1 -1
  73. package/dist/malltvAnalyticsAdapter.js +1 -1
  74. package/dist/marsmediaBidAdapter.js +1 -1
  75. package/dist/mediafuseBidAdapter.js +1 -1
  76. package/dist/mediasquareBidAdapter.js +1 -1
  77. package/dist/mgidBidAdapter.js +1 -1
  78. package/dist/minutemediaBidAdapter.js +1 -1
  79. package/dist/minutemediaplusBidAdapter.js +1 -1
  80. package/dist/nexx360BidAdapter.js +1 -1
  81. package/dist/not-for-prod/prebid.js +153 -148
  82. package/dist/oguryBidAdapter.js +1 -1
  83. package/dist/onetagBidAdapter.js +1 -1
  84. package/dist/ooloAnalyticsAdapter.js +1 -1
  85. package/dist/optidigitalBidAdapter.js +1 -1
  86. package/dist/outbrainBidAdapter.js +1 -1
  87. package/dist/oxxionRtdProvider.js +1 -1
  88. package/dist/pairIdSystem.js +1 -1
  89. package/dist/parrableIdSystem.js +1 -1
  90. package/dist/pixfutureBidAdapter.js +1 -1
  91. package/dist/prebid-core.js +1 -1
  92. package/dist/proxistoreBidAdapter.js +1 -1
  93. package/dist/publinkIdSystem.js +1 -1
  94. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  95. package/dist/pubmaticBidAdapter.js +1 -1
  96. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  97. package/dist/pxyzBidAdapter.js +1 -1
  98. package/dist/quantcastBidAdapter.js +1 -1
  99. package/dist/readpeakBidAdapter.js +1 -1
  100. package/dist/relaidoBidAdapter.js +1 -1
  101. package/dist/retailspotBidAdapter.js +1 -1
  102. package/dist/rhythmoneBidAdapter.js +1 -1
  103. package/dist/richaudienceBidAdapter.js +1 -1
  104. package/dist/riseBidAdapter.js +1 -1
  105. package/dist/rubiconAnalyticsAdapter.js +1 -1
  106. package/dist/rubiconBidAdapter.js +1 -1
  107. package/dist/schain.js +1 -1
  108. package/dist/seedingAllianceBidAdapter.js +1 -1
  109. package/dist/seedtagBidAdapter.js +1 -1
  110. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  111. package/dist/sharethroughBidAdapter.js +1 -1
  112. package/dist/shinezBidAdapter.js +1 -1
  113. package/dist/sirdataRtdProvider.js +1 -1
  114. package/dist/smaatoBidAdapter.js +1 -1
  115. package/dist/smartadserverBidAdapter.js +1 -1
  116. package/dist/smartxBidAdapter.js +1 -1
  117. package/dist/smilewantedBidAdapter.js +1 -1
  118. package/dist/sonobiBidAdapter.js +1 -1
  119. package/dist/sovrnAnalyticsAdapter.js +1 -1
  120. package/dist/sovrnBidAdapter.js +1 -1
  121. package/dist/sspBCBidAdapter.js +1 -1
  122. package/dist/stroeerCoreBidAdapter.js +1 -1
  123. package/dist/stvBidAdapter.js +1 -1
  124. package/dist/sublimeBidAdapter.js +1 -1
  125. package/dist/synacormediaBidAdapter.js +1 -1
  126. package/dist/targetVideoBidAdapter.js +1 -1
  127. package/dist/teadsBidAdapter.js +1 -1
  128. package/dist/topicsFpdModule.js +1 -1
  129. package/dist/trionBidAdapter.js +1 -1
  130. package/dist/tripleliftBidAdapter.js +1 -1
  131. package/dist/ttdBidAdapter.js +1 -1
  132. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  133. package/dist/uid2IdSystem.js +1 -1
  134. package/dist/uid2IdSystem_shared.js +1 -0
  135. package/dist/underdogmediaBidAdapter.js +1 -1
  136. package/dist/undertoneBidAdapter.js +1 -1
  137. package/dist/userId.js +1 -1
  138. package/dist/vidazooBidAdapter.js +1 -1
  139. package/dist/videobyteBidAdapter.js +1 -1
  140. package/dist/videojsVideoProvider.js +1 -1
  141. package/dist/viouslyBidAdapter.js +1 -1
  142. package/dist/visxBidAdapter.js +1 -1
  143. package/dist/vrtcalBidAdapter.js +1 -1
  144. package/dist/vuukleBidAdapter.js +1 -1
  145. package/dist/weboramaRtdProvider.js +1 -1
  146. package/dist/widespaceBidAdapter.js +1 -1
  147. package/dist/winrBidAdapter.js +1 -1
  148. package/dist/yahoosspBidAdapter.js +1 -1
  149. package/dist/yieldlabBidAdapter.js +1 -1
  150. package/dist/yieldmoBidAdapter.js +1 -1
  151. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  152. package/dist/zeta_global_sspBidAdapter.js +1 -1
  153. package/integrationExamples/gpt/userId_example.html +20 -6
  154. package/modules/.submodules.json +3 -1
  155. package/modules/1plusXRtdProvider.js +31 -60
  156. package/modules/adagioBidAdapter.js +86 -24
  157. package/modules/adhashBidAdapter.js +56 -34
  158. package/modules/adkernelBidAdapter.js +2 -2
  159. package/modules/airgridRtdProvider.js +11 -12
  160. package/modules/asoBidAdapter.js +2 -1
  161. package/modules/beopBidAdapter.js +6 -0
  162. package/modules/conceptxBidAdapter.js +70 -0
  163. package/modules/conceptxBidAdapter.md +36 -0
  164. package/modules/criteoBidAdapter.js +9 -2
  165. package/modules/eskimiBidAdapter.js +171 -41
  166. package/modules/eskimiBidAdapter.md +35 -16
  167. package/modules/euidIdSystem.js +121 -0
  168. package/modules/euidIdSystem.md +131 -0
  169. package/modules/freepassIdSystem.js +61 -0
  170. package/modules/freepassIdSystem.md +47 -0
  171. package/modules/greenbidsAnalyticsAdapter.js +1 -1
  172. package/modules/hypelabBidAdapter.js +153 -0
  173. package/modules/hypelabBidAdapter.md +38 -0
  174. package/modules/id5IdSystem.js +3 -5
  175. package/modules/ixBidAdapter.js +12 -1
  176. package/modules/limelightDigitalBidAdapter.js +1 -1
  177. package/modules/logicadBidAdapter.js +14 -1
  178. package/modules/mediasquareBidAdapter.js +13 -5
  179. package/modules/nexx360BidAdapter.js +1 -0
  180. package/modules/oxxionRtdProvider.js +7 -29
  181. package/modules/pairIdSystem.js +10 -5
  182. package/modules/proxistoreBidAdapter.js +11 -14
  183. package/modules/pubmaticAnalyticsAdapter.js +31 -8
  184. package/modules/richaudienceBidAdapter.js +10 -1
  185. package/modules/riseBidAdapter.js +1 -1
  186. package/modules/schain.js +2 -2
  187. package/modules/sirdataRtdProvider.js +73 -146
  188. package/modules/sovrnBidAdapter.js +4 -1
  189. package/modules/stroeerCoreBidAdapter.js +55 -6
  190. package/modules/teadsBidAdapter.js +0 -1
  191. package/modules/topicsFpdModule.js +4 -1
  192. package/modules/uid2IdSystem.js +27 -210
  193. package/modules/uid2IdSystem.md +104 -23
  194. package/modules/uid2IdSystem_shared.js +232 -0
  195. package/modules/userId/eids.js +8 -0
  196. package/modules/userId/userId.md +2 -1
  197. package/modules/videojsVideoProvider.js +2 -0
  198. package/modules/viouslyBidAdapter.js +2 -2
  199. package/modules/vrtcalBidAdapter.js +5 -0
  200. package/modules/weboramaRtdProvider.js +25 -95
  201. package/modules/weboramaRtdProvider.md +4 -4
  202. package/modules/yieldlabBidAdapter.js +23 -14
  203. package/modules/zeta_global_sspBidAdapter.js +27 -22
  204. package/package.json +1 -1
  205. package/src/adloader.js +1 -0
  206. package/test/spec/modules/1plusXRtdProvider_spec.js +98 -149
  207. package/test/spec/modules/adagioBidAdapter_spec.js +46 -17
  208. package/test/spec/modules/adhashBidAdapter_spec.js +18 -2
  209. package/test/spec/modules/airgridRtdProvider_spec.js +2 -0
  210. package/test/spec/modules/beopBidAdapter_spec.js +24 -0
  211. package/test/spec/modules/conceptxBidAdapter_spec.js +136 -0
  212. package/test/spec/modules/criteoBidAdapter_spec.js +1 -1
  213. package/test/spec/modules/eids_spec.js +15 -0
  214. package/test/spec/modules/eskimiBidAdapter_spec.js +264 -112
  215. package/test/spec/modules/euidIdSystem_spec.js +130 -0
  216. package/test/spec/modules/freepassIdSystem_spec.js +186 -0
  217. package/test/spec/modules/hypelabBidAdapter_spec.js +281 -0
  218. package/test/spec/modules/id5IdSystem_spec.js +10 -3
  219. package/test/spec/modules/ixBidAdapter_spec.js +30 -0
  220. package/test/spec/modules/logicadBidAdapter_spec.js +122 -2
  221. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -0
  222. package/test/spec/modules/oxxionRtdProvider_spec.js +3 -2
  223. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +7 -0
  224. package/test/spec/modules/richaudienceBidAdapter_spec.js +44 -0
  225. package/test/spec/modules/schain_spec.js +9 -0
  226. package/test/spec/modules/sirdataRtdProvider_spec.js +110 -17
  227. package/test/spec/modules/sovrnBidAdapter_spec.js +13 -0
  228. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +151 -6
  229. package/test/spec/modules/teadsBidAdapter_spec.js +7 -0
  230. package/test/spec/modules/uid2IdSystem_helpers.js +70 -0
  231. package/test/spec/modules/uid2IdSystem_spec.js +131 -86
  232. package/test/spec/modules/userId_spec.js +16 -12
  233. package/test/spec/modules/vrtcalBidAdapter_spec.js +9 -2
  234. package/test/spec/modules/weboramaRtdProvider_spec.js +331 -205
  235. package/test/spec/modules/yieldlabBidAdapter_spec.js +42 -2
  236. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +200 -4
@@ -35,7 +35,52 @@ describe('LogicadAdapter', function () {
35
35
  third: 'fakesharedid'
36
36
  }
37
37
  }]
38
- }]
38
+ }],
39
+ ortb2: {
40
+ device: {
41
+ sua: {
42
+ source: 2,
43
+ platform: {
44
+ brand: 'Windows',
45
+ version: ['10', '0', '0']
46
+ },
47
+ browsers: [
48
+ {
49
+ brand: 'Chromium',
50
+ version: ['112', '0', '5615', '20']
51
+ },
52
+ {
53
+ brand: 'Google Chrome',
54
+ version: ['112', '0', '5615', '20']
55
+ },
56
+ {
57
+ brand: 'Not:A-Brand',
58
+ version: ['99', '0', '0', '0']
59
+ }
60
+ ],
61
+ mobile: 0,
62
+ model: '',
63
+ bitness: '64',
64
+ architecture: 'x86'
65
+ }
66
+ },
67
+ user: {
68
+ data: [
69
+ {
70
+ ext: {
71
+ segtax: 600,
72
+ segclass: '2206021246'
73
+ },
74
+ segment: [
75
+ {
76
+ id: '1'
77
+ }
78
+ ],
79
+ name: 'cd.ladsp.com'
80
+ }
81
+ ]
82
+ }
83
+ }
39
84
  }];
40
85
  const nativeBidRequests = [{
41
86
  bidder: 'logicad',
@@ -77,7 +122,52 @@ describe('LogicadAdapter', function () {
77
122
  third: 'fakesharedid'
78
123
  }
79
124
  }]
80
- }]
125
+ }],
126
+ ortb2: {
127
+ device: {
128
+ sua: {
129
+ source: 2,
130
+ platform: {
131
+ brand: 'Windows',
132
+ version: ['10', '0', '0']
133
+ },
134
+ browsers: [
135
+ {
136
+ brand: 'Chromium',
137
+ version: ['112', '0', '5615', '20']
138
+ },
139
+ {
140
+ brand: 'Google Chrome',
141
+ version: ['112', '0', '5615', '20']
142
+ },
143
+ {
144
+ brand: 'Not:A-Brand',
145
+ version: ['99', '0', '0', '0']
146
+ }
147
+ ],
148
+ mobile: 0,
149
+ model: '',
150
+ bitness: '64',
151
+ architecture: 'x86'
152
+ }
153
+ },
154
+ user: {
155
+ data: [
156
+ {
157
+ ext: {
158
+ segtax: 600,
159
+ segclass: '2206021246'
160
+ },
161
+ segment: [
162
+ {
163
+ id: '1'
164
+ }
165
+ ],
166
+ name: 'cd.ladsp.com'
167
+ }
168
+ ]
169
+ }
170
+ }
81
171
  }];
82
172
  const bidderRequest = {
83
173
  refererInfo: {
@@ -184,6 +274,36 @@ describe('LogicadAdapter', function () {
184
274
  expect(data.auctionId).to.equal('18fd8b8b0bd757');
185
275
  expect(data.eids[0].source).to.equal('sharedid.org');
186
276
  expect(data.eids[0].uids[0].id).to.equal('fakesharedid');
277
+
278
+ expect(data.sua.source).to.equal(2);
279
+ expect(data.sua.platform.brand).to.equal('Windows');
280
+ expect(data.sua.platform.version[0]).to.equal('10');
281
+ expect(data.sua.platform.version[1]).to.equal('0');
282
+ expect(data.sua.platform.version[2]).to.equal('0');
283
+ expect(data.sua.browsers[0].brand).to.equal('Chromium');
284
+ expect(data.sua.browsers[0].version[0]).to.equal('112');
285
+ expect(data.sua.browsers[0].version[1]).to.equal('0');
286
+ expect(data.sua.browsers[0].version[2]).to.equal('5615');
287
+ expect(data.sua.browsers[0].version[3]).to.equal('20');
288
+ expect(data.sua.browsers[1].brand).to.equal('Google Chrome');
289
+ expect(data.sua.browsers[1].version[0]).to.equal('112');
290
+ expect(data.sua.browsers[1].version[1]).to.equal('0');
291
+ expect(data.sua.browsers[1].version[2]).to.equal('5615');
292
+ expect(data.sua.browsers[1].version[3]).to.equal('20');
293
+ expect(data.sua.browsers[2].brand).to.equal('Not:A-Brand');
294
+ expect(data.sua.browsers[2].version[0]).to.equal('99');
295
+ expect(data.sua.browsers[2].version[1]).to.equal('0');
296
+ expect(data.sua.browsers[2].version[2]).to.equal('0');
297
+ expect(data.sua.browsers[2].version[3]).to.equal('0');
298
+ expect(data.sua.mobile).to.equal(0);
299
+ expect(data.sua.model).to.equal('');
300
+ expect(data.sua.bitness).to.equal('64');
301
+ expect(data.sua.architecture).to.equal('x86');
302
+
303
+ expect(data.userData[0].name).to.equal('cd.ladsp.com');
304
+ expect(data.userData[0].segment[0].id).to.equal('1');
305
+ expect(data.userData[0].ext.segtax).to.equal(600);
306
+ expect(data.userData[0].ext.segclass).to.equal('2206021246');
187
307
  });
188
308
  });
189
309
 
@@ -98,6 +98,7 @@ describe('MediaSquare bid adapter tests', function () {
98
98
  'code': 'test/publishername_atf_desktop_rg_pave',
99
99
  'bid_id': 'aaaa1234',
100
100
  'adomain': ['test.com'],
101
+ 'context': 'instream',
101
102
  }],
102
103
  }};
103
104
 
@@ -161,7 +162,10 @@ describe('MediaSquare bid adapter tests', function () {
161
162
  expect(bid.ttl).to.equal(300);
162
163
  expect(bid.requestId).to.equal('aaaa1234');
163
164
  expect(bid.mediasquare).to.exist;
165
+ expect(bid.mediasquare.bidder).to.exist;
164
166
  expect(bid.mediasquare.bidder).to.equal('msqClassic');
167
+ expect(bid.mediasquare.context).to.exist;
168
+ expect(bid.mediasquare.context).to.equal('instream');
165
169
  expect(bid.mediasquare.code).to.equal([DEFAULT_PARAMS[0].params.owner, DEFAULT_PARAMS[0].params.code].join('/'));
166
170
  expect(bid.meta).to.exist;
167
171
  expect(bid.meta.advertiserDomains).to.exist;
@@ -114,7 +114,8 @@ describe('oxxionRtdProvider', () => {
114
114
  auctionEnd.bidsReceived = bids;
115
115
  it('call everything', function() {
116
116
  oxxionSubmodule.getBidRequestData(request, null, moduleConfig);
117
- oxxionSubmodule.onAuctionEndEvent(auctionEnd, moduleConfig);
117
+ oxxionSubmodule.onBidResponseEvent(auctionEnd.bidsReceived[0], moduleConfig);
118
+ oxxionSubmodule.onBidResponseEvent(auctionEnd.bidsReceived[1], moduleConfig);
118
119
  });
119
120
  it('check vastImpUrl', function() {
120
121
  expect(auctionEnd.bidsReceived[0]).to.have.property('vastImpUrl');
@@ -136,7 +137,7 @@ describe('oxxionRtdProvider', () => {
136
137
  expect(inlineImpressions).to.have.lengthOf.above(0);
137
138
  });
138
139
  it('check cpmIncrement', function() {
139
- expect(auctionEnd.bidsReceived[1].vastImpUrl).to.contain(encodeURI('cpmIncrement=1'));
140
+ expect(auctionEnd.bidsReceived[1].vastImpUrl).to.contain(encodeURI('cpmIncrement=0'));
140
141
  });
141
142
  });
142
143
  });
@@ -443,6 +443,13 @@ describe('pubmatic analytics adapter', function () {
443
443
  expect(data.eg).to.equal('1.23');
444
444
  expect(data.en).to.equal('1.23');
445
445
  expect(data.piid).to.equal('partnerImpressionID-1');
446
+ expect(data.plt).to.equal('1');
447
+ expect(data.psz).to.equal('640x480');
448
+ expect(data.tgid).to.equal('15');
449
+ expect(data.orig).to.equal('www.test.com');
450
+ expect(data.ss).to.equal('1');
451
+ expect(data.fskp).to.equal('0');
452
+ expect(data.af).to.equal('video');
446
453
  });
447
454
 
448
455
  it('bidCpmAdjustment: USD: Logger: best case + win tracker', function() {
@@ -29,6 +29,37 @@ describe('Richaudience adapter tests', function () {
29
29
  user: {}
30
30
  }];
31
31
 
32
+ var DEFAULT_PARAMS_NEW_SIZES_GPID = [{
33
+ adUnitCode: 'test-div',
34
+ bidId: '2c7c8e9c900244',
35
+ ortb2Imp: {
36
+ ext: {
37
+ gpid: '/19968336/header-bid-tag-1#example-2',
38
+ data: {
39
+ pbadslot: '/19968336/header-bid-tag-1#example-2'
40
+ }
41
+ }
42
+ },
43
+ mediaTypes: {
44
+ banner: {
45
+ sizes: [
46
+ [300, 250], [300, 600], [728, 90], [970, 250]]
47
+ }
48
+ },
49
+ bidder: 'richaudience',
50
+ params: {
51
+ bidfloor: 0.5,
52
+ pid: 'ADb1f40rmi',
53
+ supplyType: 'site',
54
+ keywords: 'key1=value1;key2=value2'
55
+ },
56
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
57
+ bidRequestsCount: 1,
58
+ bidderRequestId: '1858b7382993ca',
59
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
60
+ user: {}
61
+ }];
62
+
32
63
  var DEFAULT_PARAMS_VIDEO_IN = [{
33
64
  adUnitCode: 'test-div',
34
65
  bidId: '2c7c8e9c900244',
@@ -236,6 +267,7 @@ describe('Richaudience adapter tests', function () {
236
267
  expect(requestContent).to.have.property('numIframes').and.to.equal(0);
237
268
  expect(typeof requestContent.scr_rsl === 'string')
238
269
  expect(typeof requestContent.cpuc === 'number')
270
+ expect(typeof requestContent.gpid === 'string')
239
271
  expect(requestContent).to.have.property('kws').and.to.equal('key1=value1;key2=value2');
240
272
  })
241
273
 
@@ -831,6 +863,18 @@ describe('Richaudience adapter tests', function () {
831
863
  expect(requestContent).to.have.property('schain').to.deep.equal(schain);
832
864
  })
833
865
 
866
+ it('should pass gpid', function() {
867
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES_GPID, {
868
+ gdprConsent: {
869
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
870
+ gdprApplies: true
871
+ },
872
+ refererInfo: {}
873
+ })
874
+ const requestContent = JSON.parse(request[0].data);
875
+ expect(requestContent).to.have.property('gpid').and.to.equal('/19968336/header-bid-tag-1#example-2');
876
+ })
877
+
834
878
  describe('userSync', function () {
835
879
  it('Verifies user syncs iframe include', function () {
836
880
  config.setConfig({
@@ -469,6 +469,15 @@ describe('#makeBidRequestsHook', function() {
469
469
  makeBidRequestsHook(testCallback, testBidderRequests);
470
470
  });
471
471
 
472
+ it('should not share the same schain object between different bid requests', (done) => {
473
+ config.setBidderConfig(goodStrictBidderConfig);
474
+ makeBidRequestsHook((requests) => {
475
+ requests[0].bids[0].schain.field = 'value';
476
+ expect(requests[1].bids[0].schain.field).to.not.exist;
477
+ done();
478
+ }, deepClone(bidderRequests))
479
+ });
480
+
472
481
  it('should reject bad strict config but allow a bad relaxed config for bidders trying to override it', function () {
473
482
  function testCallback(bidderRequests) {
474
483
  expect(bidderRequests[0].bids[0].schain).to.exist;
@@ -1,26 +1,31 @@
1
- import {addSegmentData, getSegmentsAndCategories, sirdataSubmodule} from 'modules/sirdataRtdProvider.js';
1
+ import {addSegmentData, getSegmentsAndCategories, sirdataSubmodule, setOrtb2} from 'modules/sirdataRtdProvider.js';
2
2
  import {server} from 'test/mocks/xhr.js';
3
3
 
4
4
  const responseHeader = {'Content-Type': 'application/json'};
5
5
 
6
6
  describe('sirdataRtdProvider', function () {
7
7
  describe('sirdataSubmodule', function () {
8
+ it('exists', function () {
9
+ expect(sirdataSubmodule.init).to.be.a('function');
10
+ });
8
11
  it('successfully instantiates', function () {
9
12
  expect(sirdataSubmodule.init()).to.equal(true);
10
13
  });
14
+ it('has the correct module name', function () {
15
+ expect(sirdataSubmodule.name).to.equal('SirdataRTDModule');
16
+ });
11
17
  });
12
18
 
13
19
  describe('Add Segment Data', function () {
14
20
  it('adds segment data', function () {
15
- const config = {
21
+ const firstConfig = {
16
22
  params: {
17
- setGptKeyValues: false,
23
+ partnerId: 1,
24
+ key: 1,
25
+ setGptKeyValues: true,
26
+ gptCurationId: 27449,
18
27
  contextualMinRelevancyScore: 50,
19
- bidders: [{
20
- bidder: 'appnexus'
21
- }, {
22
- bidder: 'other'
23
- }]
28
+ bidders: []
24
29
  }
25
30
  };
26
31
 
@@ -37,21 +42,47 @@ describe('sirdataRtdProvider', function () {
37
42
  }
38
43
  ];
39
44
 
40
- let data = {
45
+ let firstReqBidsConfigObj = {
46
+ adUnits: adUnits,
47
+ ortb2Fragments: {
48
+ global: {}
49
+ }
50
+ };
51
+
52
+ let firstData = {
41
53
  segments: [111111, 222222],
42
- contextual_categories: {'333333': 100}
54
+ contextual_categories: {'333333': 100},
55
+ 'segtaxid': null,
56
+ 'cattaxid': null,
57
+ 'shared_taxonomy': {
58
+ '27449': {
59
+ 'segments': [444444, 555555],
60
+ 'segtaxid': null,
61
+ 'cattaxid': null,
62
+ 'contextual_categories': {'666666': 100}
63
+ }
64
+ },
65
+ 'global_taxonomy': {
66
+ '9998': {
67
+ 'segments': [123, 234],
68
+ 'segtaxid': 4,
69
+ 'cattaxid': 7,
70
+ 'contextual_categories': {'345': 100, '456': 100}
71
+ }
72
+ }
43
73
  };
44
74
 
45
- addSegmentData({adUnits}, data, config, () => {
75
+ addSegmentData(firstReqBidsConfigObj, firstData, firstConfig, () => {
46
76
  });
47
- expect(adUnits[0].bids[0].params.keywords).to.have.deep.property('sd_rtd', ['111111', '222222', '333333']);
77
+
78
+ expect(firstReqBidsConfigObj.ortb2Fragments.global.user.data[0].ext.segtax).to.equal(4);
48
79
  });
49
80
  });
50
81
 
51
82
  describe('Get Segments And Categories', function () {
52
83
  it('gets data from async request and adds segment data', function () {
53
84
  const overrideAppnexus = function (adUnit, list, data, bid) {
54
- deepSetValue(bid, 'params.keywords.custom', list);
85
+ deepSetValue(bid, 'params.keywords.custom', list.segments.concat(list.categories));
55
86
  }
56
87
 
57
88
  const config = {
@@ -60,16 +91,21 @@ describe('sirdataRtdProvider', function () {
60
91
  contextualMinRelevancyScore: 50,
61
92
  bidders: [{
62
93
  bidder: 'appnexus',
63
- customFunction: overrideAppnexus
94
+ customFunction: overrideAppnexus,
95
+ curationId: 27446
64
96
  }, {
65
- bidder: 'smartadserver'
97
+ bidder: 'smartadserver',
98
+ curationId: 27440
66
99
  }, {
67
100
  bidder: 'ix',
68
101
  sizeLimit: 1200,
102
+ curationId: 27248
69
103
  }, {
70
104
  bidder: 'rubicon',
105
+ curationId: 27452
71
106
  }, {
72
107
  bidder: 'proxistore',
108
+ curationId: 27484
73
109
  }]
74
110
  }
75
111
  };
@@ -146,6 +182,12 @@ describe('sirdataRtdProvider', function () {
146
182
  'segtaxid': 552,
147
183
  'cattaxid': 553,
148
184
  'contextual_categories': {'666666': 100}
185
+ },
186
+ '27446': {
187
+ 'segments': [777777, 888888],
188
+ 'segtaxid': 552,
189
+ 'cattaxid': 553,
190
+ 'contextual_categories': {'999999': 100}
149
191
  }
150
192
  },
151
193
  'global_taxonomy': {
@@ -164,8 +206,6 @@ describe('sirdataRtdProvider', function () {
164
206
  let request = server.requests[0];
165
207
  request.respond(200, responseHeader, JSON.stringify(data));
166
208
 
167
- expect(reqBidsConfigObj.adUnits[0].bids[1].params).to.have.deep.property('target', 'sd_rtd=111111;sd_rtd=222222;sd_rtd=333333;sd_rtd=444444;sd_rtd=555555;sd_rtd=666666');
168
-
169
209
  expect(reqBidsConfigObj.ortb2Fragments.global.site.content.data[0].name).to.equal(
170
210
  'sirdata.com'
171
211
  );
@@ -185,4 +225,57 @@ describe('sirdataRtdProvider', function () {
185
225
  expect(reqBidsConfigObj.ortb2Fragments.global.user.data[0].ext.segtax).to.equal(4);
186
226
  });
187
227
  });
228
+
229
+ describe('Set ortb2 for bidder', function () {
230
+ it('set ortb2 for a givent bidder', function () {
231
+ const config = {
232
+ params: {
233
+ setGptKeyValues: false,
234
+ contextualMinRelevancyScore: 50,
235
+ bidders: [{
236
+ bidder: 'appnexus',
237
+ }]
238
+ }
239
+ };
240
+
241
+ let reqBidsConfigObj = {
242
+ adUnits: [{
243
+ bids: [{
244
+ bidder: 'appnexus',
245
+ params: {
246
+ placementId: 13144370
247
+ }
248
+ }]
249
+ }],
250
+ ortb2Fragments: {
251
+ global: {}
252
+ }
253
+ };
254
+
255
+ let data = {
256
+ 'segments': [111111, 222222],
257
+ 'segtaxid': null,
258
+ 'cattaxid': null,
259
+ 'contextual_categories': {'333333': 100},
260
+ 'shared_taxonomy': {
261
+ '27440': {
262
+ 'segments': [444444, 555555],
263
+ 'segtaxid': null,
264
+ 'cattaxid': null,
265
+ 'contextual_categories': {'666666': 100}
266
+ }
267
+ },
268
+ 'global_taxonomy': {}
269
+ };
270
+
271
+ window.googletag = window.googletag || {};
272
+ window.googletag.cmd = window.googletag.cmd || [];
273
+
274
+ let test = setOrtb2(reqBidsConfigObj.ortb2Fragments, 'appnexus', 'user', []);
275
+ expect(test).to.be.false;
276
+
277
+ test = setOrtb2(reqBidsConfigObj.ortb2Fragments, 'appnexus', 'user', ['1']);
278
+ expect(test).to.be.true;
279
+ });
280
+ });
188
281
  });
@@ -170,6 +170,19 @@ describe('sovrnBidAdapter', function() {
170
170
  expect(payload.site.domain).to.equal('example.com')
171
171
  })
172
172
 
173
+ it('sets correct timeout', function() {
174
+ const bidderRequest = {
175
+ ...baseBidderRequest,
176
+ bidderCode: 'sovrn',
177
+ auctionId: '1d1a030790a475',
178
+ bidderRequestId: '22edbae2733bf6',
179
+ timeout: 3000,
180
+ bids: [baseBidRequest]
181
+ }
182
+ const payload = JSON.parse(spec.buildRequests([baseBidRequest], bidderRequest).data)
183
+ expect(payload.tmax).to.equal(3000)
184
+ })
185
+
173
186
  it('includes the ad unit code in the request', function() {
174
187
  const impression = payload.imp[0]
175
188
  expect(impression.adunitcode).to.equal('adunit-code')
@@ -527,14 +527,16 @@ describe('stroeerCore bid adapter', function () {
527
527
  'bid': 'bid8',
528
528
  'viz': true,
529
529
  'ban': {
530
- 'siz': [[300, 600], [160, 60]]
531
- }
530
+ 'siz': [[300, 600], [160, 60]],
531
+ 'fp': undefined
532
+ },
532
533
  },
533
534
  {
534
535
  'sid': 'ABC=',
535
536
  'bid': 'bid12',
536
537
  'ban': {
537
- 'siz': [[100, 200], [300, 500]]
538
+ 'siz': [[100, 200], [300, 500]],
539
+ 'fp': undefined
538
540
  },
539
541
  'viz': undefined
540
542
  }
@@ -548,7 +550,8 @@ describe('stroeerCore bid adapter', function () {
548
550
  'vid': {
549
551
  'ctx': 'instream',
550
552
  'siz': [640, 480],
551
- 'mim': ['video/mp4', 'video/quicktime']
553
+ 'mim': ['video/mp4', 'video/quicktime'],
554
+ 'fp': undefined
552
555
  }
553
556
  }
554
557
  ];
@@ -589,7 +592,8 @@ describe('stroeerCore bid adapter', function () {
589
592
  'bid': 'bid3',
590
593
  'viz': true,
591
594
  'ban': {
592
- 'siz': [[100, 200], [300, 500]]
595
+ 'siz': [[100, 200], [300, 500]],
596
+ 'fp': undefined
593
597
  }
594
598
  }
595
599
  ];
@@ -602,7 +606,8 @@ describe('stroeerCore bid adapter', function () {
602
606
  'vid': {
603
607
  'ctx': 'instream',
604
608
  'siz': [640, 480],
605
- 'mim': ['video/mp4', 'video/quicktime']
609
+ 'mim': ['video/mp4', 'video/quicktime'],
610
+ 'fp': undefined
606
611
  }
607
612
  }
608
613
  ];
@@ -696,6 +701,146 @@ describe('stroeerCore bid adapter', function () {
696
701
  const serverRequestInfo = spec.buildRequests(bidReq.bids, bidReq);
697
702
  assert.deepEqual(serverRequestInfo.data.schain, schain);
698
703
  });
704
+
705
+ it('should add floor info to banner bid request if floor is available', () => {
706
+ const bidReq = buildBidderRequest();
707
+
708
+ const getFloorStub1 = sinon.stub();
709
+ const getFloorStub2 = sinon.stub();
710
+
711
+ getFloorStub1
712
+ .returns({})
713
+ .withArgs({currency: 'EUR', mediaType: BANNER, size: '*'})
714
+ .returns({currency: 'TRY', floor: 0.7})
715
+ .withArgs({currency: 'EUR', mediaType: 'banner', size: [300, 600]})
716
+ .returns({currency: 'TRY', floor: 1.3})
717
+ .withArgs({currency: 'EUR', mediaType: 'banner', size: [160, 60]})
718
+ .returns({currency: 'TRY', floor: 2.5})
719
+
720
+ getFloorStub2
721
+ .returns({})
722
+ .withArgs({currency: 'EUR', mediaType: 'banner', size: '*'})
723
+ .returns({currency: 'USD', floor: 1.2})
724
+ .withArgs({currency: 'EUR', mediaType: 'banner', size: [728, 90]})
725
+ .returns({currency: 'USD', floor: 1.85})
726
+
727
+ bidReq.bids[0].getFloor = getFloorStub1;
728
+ bidReq.bids[1].getFloor = getFloorStub2;
729
+
730
+ const serverRequestInfo = spec.buildRequests(bidReq.bids, bidReq);
731
+
732
+ const serverRequestBids = serverRequestInfo.data.bids;
733
+ const firstBid = serverRequestBids[0];
734
+ const secondBid = serverRequestBids[1];
735
+
736
+ assert.nestedPropertyVal(firstBid, 'ban.fp.def', 0.7);
737
+ assert.nestedPropertyVal(firstBid, 'ban.fp.cur', 'TRY');
738
+ assert.deepNestedPropertyVal(firstBid, 'ban.fp.siz', [{w: 300, h: 600, p: 1.3}, {w: 160, h: 60, p: 2.5}]);
739
+
740
+ assert.isTrue(getFloorStub1.calledThrice);
741
+
742
+ assert.nestedPropertyVal(secondBid, 'ban.fp.def', 1.2);
743
+ assert.nestedPropertyVal(secondBid, 'ban.fp.cur', 'USD');
744
+ assert.deepNestedPropertyVal(secondBid, 'ban.fp.siz', [{w: 728, h: 90, p: 1.85}]);
745
+
746
+ assert.isTrue(getFloorStub2.calledTwice);
747
+ });
748
+
749
+ it('should add floor info to video bid request if floor is available', () => {
750
+ const bidReq = buildBidderRequest();
751
+
752
+ const getFloorStub1 = sinon.stub();
753
+ const getFloorStub2 = sinon.stub();
754
+
755
+ getFloorStub1
756
+ .returns({})
757
+ .withArgs({currency: 'EUR', mediaType: 'video', size: '*'})
758
+ .returns({currency: 'NZD', floor: 3.25})
759
+ .withArgs({currency: 'EUR', mediaType: 'video', size: [640, 480]})
760
+ .returns({currency: 'NZD', floor: 4.10});
761
+
762
+ getFloorStub2
763
+ .returns({})
764
+ .withArgs({currency: 'EUR', mediaType: 'video', size: '*'})
765
+ .returns({currency: 'GBP', floor: 4.75})
766
+ .withArgs({currency: 'EUR', mediaType: 'video', size: [1280, 720]})
767
+ .returns({currency: 'GBP', floor: 6.50})
768
+
769
+ delete bidReq.bids[0].mediaTypes.banner;
770
+ bidReq.bids[0].mediaTypes.video = {
771
+ playerSize: [640, 480],
772
+ context: 'instream'
773
+ };
774
+
775
+ delete bidReq.bids[1].mediaTypes.banner;
776
+ bidReq.bids[1].mediaTypes.video = {
777
+ playerSize: [1280, 720],
778
+ context: 'outstream'
779
+ };
780
+
781
+ bidReq.bids[0].getFloor = getFloorStub1;
782
+ bidReq.bids[1].getFloor = getFloorStub2;
783
+
784
+ const serverRequestInfo = spec.buildRequests(bidReq.bids, bidReq);
785
+
786
+ const serverRequestBids = serverRequestInfo.data.bids;
787
+ const firstBid = serverRequestBids[0];
788
+ const secondBid = serverRequestBids[1];
789
+
790
+ assert.nestedPropertyVal(firstBid, 'vid.fp.def', 3.25);
791
+ assert.nestedPropertyVal(firstBid, 'vid.fp.cur', 'NZD');
792
+ assert.deepNestedPropertyVal(firstBid, 'vid.fp.siz', [{w: 640, h: 480, p: 4.10}]);
793
+
794
+ assert.isTrue(getFloorStub1.calledTwice);
795
+
796
+ assert.nestedPropertyVal(secondBid, 'vid.fp.def', 4.75);
797
+ assert.nestedPropertyVal(secondBid, 'vid.fp.cur', 'GBP');
798
+ assert.deepNestedPropertyVal(secondBid, 'vid.fp.siz', [{w: 1280, h: 720, p: 6.50}]);
799
+
800
+ assert.isTrue(getFloorStub2.calledTwice);
801
+ });
802
+
803
+ it('should not add floor info to bid request if floor is unavailable', () => {
804
+ const bidReq = buildBidderRequest();
805
+ const getFloorSpy = sinon.spy(() => ({}));
806
+
807
+ delete bidReq.bids[0].getFloor;
808
+ bidReq.bids[1].getFloor = getFloorSpy;
809
+
810
+ const serverRequestInfo = spec.buildRequests(bidReq.bids, bidReq);
811
+
812
+ const serverRequestBids = serverRequestInfo.data.bids;
813
+ const firstBid = serverRequestBids[0];
814
+ const secondBid = serverRequestBids[1];
815
+
816
+ assert.nestedPropertyVal(firstBid, 'ban.fp', undefined);
817
+ assert.nestedPropertyVal(secondBid, 'ban.fp', undefined);
818
+
819
+ assert.isTrue(getFloorSpy.calledWith({currency: 'EUR', mediaType: 'banner', size: '*'}));
820
+ assert.isTrue(getFloorSpy.calledWith({currency: 'EUR', mediaType: 'banner', size: [728, 90]}));
821
+ assert.isTrue(getFloorSpy.calledTwice);
822
+ });
823
+
824
+ it('should not add floor info for a size when it is the same as the default', () => {
825
+ const bidReq = buildBidderRequest();
826
+ const getFloorStub = sinon.stub();
827
+
828
+ getFloorStub
829
+ .returns({currency: 'EUR', floor: 1.9})
830
+ .withArgs({currency: 'EUR', mediaType: BANNER, size: [160, 60]})
831
+ .returns({currency: 'EUR', floor: 2.7});
832
+
833
+ bidReq.bids[0].getFloor = getFloorStub;
834
+
835
+ const serverRequestInfo = spec.buildRequests(bidReq.bids, bidReq);
836
+
837
+ const serverRequestBids = serverRequestInfo.data.bids;
838
+ const bid = serverRequestBids[0];
839
+
840
+ assert.nestedPropertyVal(bid, 'ban.fp.def', 1.9);
841
+ assert.nestedPropertyVal(bid, 'ban.fp.cur', 'EUR');
842
+ assert.deepNestedPropertyVal(bid, 'ban.fp.siz', [{w: 160, h: 60, p: 2.7}]);
843
+ });
699
844
  });
700
845
  });
701
846
  });