prebid.js 8.0.0 → 8.1.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 (176) 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/adqueryBidAdapter.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/adyoulikeBidAdapter.js +1 -1
  11. package/dist/ajaBidAdapter.js +1 -1
  12. package/dist/amxBidAdapter.js +1 -1
  13. package/dist/amxIdSystem.js +1 -1
  14. package/dist/appierAnalyticsAdapter.js +1 -1
  15. package/dist/appnexusBidAdapter.js +1 -1
  16. package/dist/asoBidAdapter.js +1 -1
  17. package/dist/axonixBidAdapter.js +1 -1
  18. package/dist/bedigitechBidAdapter.js +1 -1
  19. package/dist/beopBidAdapter.js +1 -1
  20. package/dist/bidglassBidAdapter.js +1 -1
  21. package/dist/bidwatchAnalyticsAdapter.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/colossussspBidAdapter.js +1 -1
  28. package/dist/conceptxBidAdapter.js +1 -1
  29. package/dist/concertBidAdapter.js +1 -1
  30. package/dist/connectadBidAdapter.js +1 -1
  31. package/dist/consumableBidAdapter.js +1 -1
  32. package/dist/conversantAnalyticsAdapter.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/cwireBidAdapter.js +1 -1
  37. package/dist/dependencies.json +3 -0
  38. package/dist/dspxBidAdapter.js +1 -1
  39. package/dist/eplanningBidAdapter.js +1 -1
  40. package/dist/euidIdSystem.js +1 -1
  41. package/dist/feedadBidAdapter.js +1 -1
  42. package/dist/finativeBidAdapter.js +1 -1
  43. package/dist/freepassBidAdapter.js +1 -0
  44. package/dist/freewheel-sspBidAdapter.js +1 -1
  45. package/dist/gmosspBidAdapter.js +1 -1
  46. package/dist/goldbachBidAdapter.js +1 -1
  47. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  48. package/dist/greenbidsRtdProvider.js +1 -1
  49. package/dist/gridBidAdapter.js +1 -1
  50. package/dist/gumgumBidAdapter.js +1 -1
  51. package/dist/h12mediaBidAdapter.js +1 -1
  52. package/dist/hypelabBidAdapter.js +1 -1
  53. package/dist/id5IdSystem.js +1 -1
  54. package/dist/imdsBidAdapter.js +1 -1
  55. package/dist/improvedigitalBidAdapter.js +1 -1
  56. package/dist/insticatorBidAdapter.js +1 -1
  57. package/dist/intentIqIdSystem.js +1 -1
  58. package/dist/ixBidAdapter.js +1 -1
  59. package/dist/justpremiumBidAdapter.js +1 -1
  60. package/dist/kargoBidAdapter.js +1 -1
  61. package/dist/kiviadsBidAdapter.js +1 -0
  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/logicadBidAdapter.js +1 -1
  69. package/dist/loglyliftBidAdapter.js +1 -1
  70. package/dist/magniteAnalyticsAdapter.js +1 -1
  71. package/dist/malltvAnalyticsAdapter.js +1 -1
  72. package/dist/marsmediaBidAdapter.js +1 -1
  73. package/dist/mediafuseBidAdapter.js +1 -1
  74. package/dist/mediasquareBidAdapter.js +1 -1
  75. package/dist/mgidBidAdapter.js +1 -1
  76. package/dist/mgidXBidAdapter.js +1 -0
  77. package/dist/minutemediaBidAdapter.js +1 -1
  78. package/dist/minutemediaplusBidAdapter.js +1 -1
  79. package/dist/nexx360BidAdapter.js +1 -1
  80. package/dist/not-for-prod/prebid.js +134 -131
  81. package/dist/oguryBidAdapter.js +1 -1
  82. package/dist/onetagBidAdapter.js +1 -1
  83. package/dist/ooloAnalyticsAdapter.js +1 -1
  84. package/dist/optidigitalBidAdapter.js +1 -1
  85. package/dist/outbrainBidAdapter.js +1 -1
  86. package/dist/oxxionAnalyticsAdapter.js +1 -1
  87. package/dist/parrableIdSystem.js +1 -1
  88. package/dist/pixfutureBidAdapter.js +1 -1
  89. package/dist/prebid-core.js +1 -1
  90. package/dist/publinkIdSystem.js +1 -1
  91. package/dist/pubmaticBidAdapter.js +1 -1
  92. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  93. package/dist/pxyzBidAdapter.js +1 -1
  94. package/dist/quantcastBidAdapter.js +1 -1
  95. package/dist/readpeakBidAdapter.js +1 -1
  96. package/dist/relaidoBidAdapter.js +1 -1
  97. package/dist/retailspotBidAdapter.js +1 -1
  98. package/dist/rhythmoneBidAdapter.js +1 -1
  99. package/dist/riseBidAdapter.js +1 -1
  100. package/dist/rtbhouseBidAdapter.js +1 -1
  101. package/dist/rubiconBidAdapter.js +1 -1
  102. package/dist/seedingAllianceBidAdapter.js +1 -1
  103. package/dist/seedtagBidAdapter.js +1 -1
  104. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  105. package/dist/sharethroughBidAdapter.js +1 -1
  106. package/dist/shinezBidAdapter.js +1 -1
  107. package/dist/smaatoBidAdapter.js +1 -1
  108. package/dist/smartadserverBidAdapter.js +1 -1
  109. package/dist/smartxBidAdapter.js +1 -1
  110. package/dist/smilewantedBidAdapter.js +1 -1
  111. package/dist/sonobiBidAdapter.js +1 -1
  112. package/dist/sovrnAnalyticsAdapter.js +1 -1
  113. package/dist/sovrnBidAdapter.js +1 -1
  114. package/dist/sspBCBidAdapter.js +1 -1
  115. package/dist/stvBidAdapter.js +1 -1
  116. package/dist/sublimeBidAdapter.js +1 -1
  117. package/dist/targetVideoBidAdapter.js +1 -1
  118. package/dist/teadsBidAdapter.js +1 -1
  119. package/dist/trionBidAdapter.js +1 -1
  120. package/dist/tripleliftBidAdapter.js +1 -1
  121. package/dist/ttdBidAdapter.js +1 -1
  122. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  123. package/dist/uid2IdSystem.js +1 -1
  124. package/dist/underdogmediaBidAdapter.js +1 -1
  125. package/dist/undertoneBidAdapter.js +1 -1
  126. package/dist/vidazooBidAdapter.js +1 -1
  127. package/dist/videobyteBidAdapter.js +1 -1
  128. package/dist/visxBidAdapter.js +1 -1
  129. package/dist/vuukleBidAdapter.js +1 -1
  130. package/dist/widespaceBidAdapter.js +1 -1
  131. package/dist/winrBidAdapter.js +1 -1
  132. package/dist/yahoosspBidAdapter.js +1 -1
  133. package/dist/yieldmoBidAdapter.js +1 -1
  134. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  135. package/modules/amxBidAdapter.js +11 -12
  136. package/modules/bedigitechBidAdapter.js +15 -12
  137. package/modules/bedigitechBidAdapter.md +2 -2
  138. package/modules/beopBidAdapter.js +0 -4
  139. package/modules/bidwatchAnalyticsAdapter.js +33 -5
  140. package/modules/colossussspBidAdapter.js +9 -0
  141. package/modules/conceptxBidAdapter.js +6 -3
  142. package/modules/freepassBidAdapter.js +98 -0
  143. package/modules/freepassBidAdapter.md +31 -0
  144. package/modules/freepassIdSystem.md +1 -1
  145. package/modules/greenbidsAnalyticsAdapter.js +7 -13
  146. package/modules/gridBidAdapter.js +3 -4
  147. package/modules/intentIqIdSystem.js +5 -4
  148. package/modules/ixBidAdapter.js +284 -55
  149. package/modules/kiviadsBidAdapter.js +212 -0
  150. package/modules/kiviadsBidAdapter.md +79 -0
  151. package/modules/mgidXBidAdapter.js +263 -0
  152. package/modules/mgidXBidAdapter.md +79 -0
  153. package/modules/oxxionAnalyticsAdapter.js +33 -5
  154. package/modules/pubmaticBidAdapter.js +18 -2
  155. package/modules/rtbhouseBidAdapter.js +9 -2
  156. package/modules/rtbhouseBidAdapter.md +27 -8
  157. package/modules/rubiconBidAdapter.js +13 -1
  158. package/modules/sharethroughBidAdapter.js +14 -0
  159. package/modules/sonobiBidAdapter.js +4 -7
  160. package/package.json +1 -1
  161. package/test/spec/modules/amxBidAdapter_spec.js +6 -3
  162. package/test/spec/modules/bedigitechBidAdapter_spec.js +25 -36
  163. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +21 -1
  164. package/test/spec/modules/colossussspBidAdapter_spec.js +29 -0
  165. package/test/spec/modules/freepassBidAdapter_spec.js +161 -0
  166. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +0 -15
  167. package/test/spec/modules/gridBidAdapter_spec.js +29 -28
  168. package/test/spec/modules/ixBidAdapter_spec.js +745 -3
  169. package/test/spec/modules/kiviadsBidAdapter_spec.js +404 -0
  170. package/test/spec/modules/mgidXBidAdapter_spec.js +426 -0
  171. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +21 -2
  172. package/test/spec/modules/pubmaticBidAdapter_spec.js +25 -0
  173. package/test/spec/modules/rtbhouseBidAdapter_spec.js +35 -0
  174. package/test/spec/modules/rubiconBidAdapter_spec.js +41 -0
  175. package/test/spec/modules/sharethroughBidAdapter_spec.js +75 -0
  176. package/test/spec/modules/sonobiBidAdapter_spec.js +15 -15
@@ -5,7 +5,7 @@ import { config } from '../src/config.js';
5
5
  import { Renderer } from '../src/Renderer.js';
6
6
  import { userSync } from '../src/userSync.js';
7
7
  import { bidderSettings } from '../src/bidderSettings.js';
8
- import {getAllOrtbKeywords} from '../libraries/keywords/keywords.js';
8
+ import { getAllOrtbKeywords } from '../libraries/keywords/keywords.js';
9
9
  const BIDDER_CODE = 'sonobi';
10
10
  const STR_ENDPOINT = 'https://apex.go.sonobi.com/trinity.json';
11
11
  const PAGEVIEW_ID = generateUUID();
@@ -39,8 +39,8 @@ export const spec = {
39
39
  return false;
40
40
  }
41
41
  } else if (deepAccess(bid, 'mediaTypes.video')) {
42
- if (deepAccess(bid, 'mediaTypes.video.context') === 'outstream' && !bid.params.sizes) {
43
- // bids.params.sizes is required for outstream video adUnits
42
+ if (deepAccess(bid, 'mediaTypes.video.context') === 'outstream' && !deepAccess(bid, 'mediaTypes.video.playerSize')) {
43
+ // playerSize is required for outstream video adUnits
44
44
  return false;
45
45
  }
46
46
  if (deepAccess(bid, 'mediaTypes.video.context') === 'instream' && !deepAccess(bid, 'mediaTypes.video.playerSize')) {
@@ -248,10 +248,7 @@ export const spec = {
248
248
  bidRequest,
249
249
  'renderer.options'
250
250
  ));
251
- let videoSize = deepAccess(bidRequest, 'params.sizes');
252
- if (Array.isArray(videoSize) && Array.isArray(videoSize[0])) { // handle case of multiple sizes
253
- videoSize = videoSize[0]; // Only take the first size for outstream
254
- }
251
+ let videoSize = deepAccess(bidRequest, 'mediaTypes.video.playerSize');
255
252
  if (videoSize) {
256
253
  bids.width = videoSize[0];
257
254
  bids.height = videoSize[1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prebid.js",
3
- "version": "8.0.0",
3
+ "version": "8.1.0",
4
4
  "description": "Header Bidding Management Library",
5
5
  "main": "src/prebid.js",
6
6
  "scripts": {
@@ -39,7 +39,9 @@ const sampleBidderRequest = {
39
39
  gppString: 'example',
40
40
  applicableSections: 'example'
41
41
  },
42
- auctionId: utils.getUniqueIdentifierStr(),
42
+
43
+ auctionId: null,
44
+
43
45
  uspConsent: '1YYY',
44
46
  refererInfo: {
45
47
  reachedTop: true,
@@ -90,7 +92,8 @@ const sampleBidRequestBase = {
90
92
  adUnitCode: 'div-gpt-ad-example',
91
93
  transactionId: utils.getUniqueIdentifierStr(),
92
94
  bidId: sampleRequestId,
93
- auctionId: utils.getUniqueIdentifierStr(),
95
+
96
+ auctionId: null,
94
97
  };
95
98
 
96
99
  const schainConfig = {
@@ -494,7 +497,7 @@ describe('AmxBidAdapter', () => {
494
497
 
495
498
  it('can build a video request', () => {
496
499
  const { data } = spec.buildRequests(
497
- [{...sampleBidRequestVideo, params: { ...sampleBidRequestVideo.params, adUnitId: 'custom-auid' }}],
500
+ [{ ...sampleBidRequestVideo, params: { ...sampleBidRequestVideo.params, adUnitId: 'custom-auid' } }],
498
501
  sampleBidderRequest
499
502
  );
500
503
  expect(Object.keys(data.m).length).to.equal(1);
@@ -25,7 +25,7 @@ describe('BedigitechAdapter', function () {
25
25
  bidderRequestId: '22edbae2733bf6',
26
26
  auctionId: '1d1a030790a475',
27
27
  params: {
28
- placementId: 1234,
28
+ placementId: 309,
29
29
  },
30
30
  };
31
31
 
@@ -57,19 +57,19 @@ describe('BedigitechAdapter', function () {
57
57
  bidderRequestId: '22edbae2733bf6',
58
58
  auctionId: '1d1a030790a475',
59
59
  params: {
60
- placementId: 1234,
60
+ placementId: 309,
61
61
  },
62
62
  }];
63
63
 
64
64
  it('sends bid request to url via GET', function () {
65
65
  const request = spec.buildRequests(bidRequests)[0];
66
66
  expect(request.method).to.equal('GET');
67
- expect(request.url).to.equal('https://bedigitalhb.s3.amazonaws.com/hb.js');
67
+ expect(request.url).to.equal('https://bid.bedigitech.com/bid/pub_bid.php');
68
68
  });
69
69
 
70
70
  it('should attach pid to url', function () {
71
71
  const request = spec.buildRequests(bidRequests)[0];
72
- expect(request.data.pid).to.equal(1234);
72
+ expect(request.data.pid).to.equal(309);
73
73
  });
74
74
  });
75
75
 
@@ -77,15 +77,17 @@ describe('BedigitechAdapter', function () {
77
77
  const response = {
78
78
  'body': [
79
79
  {
80
- 'id': 'bedigitechMyidfdfdf',
81
- 'requestId': 'gshgfshdfgdfsd',
82
- 'cpm': '5.0',
83
80
  'ad': '%3C!--%20Creative%20--%3E',
84
- 'width': 300,
85
- 'height': 250,
81
+ 'cpm': '5.0',
82
+ 'crid': '0af345b42983cc4bc0',
86
83
  'currency': 'USD',
84
+ 'height': 250,
85
+ 'id': 'bedigitechMyidfdfdf',
86
+ 'netRevenue': true,
87
+ 'requestTime': 1686306237,
88
+ 'timeToRespond': 300,
87
89
  'ttl': 300,
88
- 'creativeId': '0af345b42983cc4bc0'
90
+ 'width': 300
89
91
  }
90
92
  ],
91
93
  'headers': {
@@ -93,41 +95,28 @@ describe('BedigitechAdapter', function () {
93
95
  }
94
96
  };
95
97
 
96
- const bidRequest = {
97
- bidder: 'bedigitech',
98
- adUnitCode: 'adunit-code',
99
- mediaTypes: {
100
- banner: {
101
- sizes: [[300, 250], [300, 600]]
102
- }
103
- },
104
- bidId: '30b31c1838de1e',
105
- bidderRequestId: '22edbae2733bf6',
106
- auctionId: '1d1a030790a475',
107
- params: {
108
- placementId: 1234,
109
- },
110
- };
111
-
112
- it('should get correct bid response', function () {
98
+ it('should get correct bid responseiiiiii', function () {
113
99
  const expectedResponse = [
114
100
  {
115
- 'id': 'bedigitechMyidfdfdf',
116
- 'requestId': 'gshgfshdfgdfsd',
117
- 'cpm': '5.0',
118
101
  'ad': '%3C!--%20Creative%20--%3E',
119
- 'width': 300,
120
- 'height': 250,
121
- 'currency': 'USD',
122
- 'ttl': 300,
102
+ 'cpm': '5.0',
123
103
  'creativeId': '0af345b42983cc4bc0',
104
+ 'currency': 'USD',
105
+ 'height': 250,
106
+ 'id': 'bedigitechMyidfdfdf',
124
107
  'meta': {
125
108
  'mediaType': BANNER,
126
109
  },
110
+ 'netRevenue': true,
111
+ 'requestId': 'bedigitechMyidfdfdf',
112
+ 'requestTimestamp': 1686306237,
113
+ 'timeToRespond': 300,
114
+ 'ttl': 300,
115
+ 'width': 300,
116
+ 'bidderCode': 'bedigitech',
127
117
  }
128
118
  ];
129
-
130
- const result = spec.interpretResponse(response, bidRequest);
119
+ const result = spec.interpretResponse(response);
131
120
  expect(result).to.have.lengthOf(1);
132
121
  let resultKeys = Object.keys(result[0]);
133
122
  expect(resultKeys.sort()).to.deep.equal(Object.keys(expectedResponse[0]).sort());
@@ -1,4 +1,5 @@
1
1
  import bidwatchAnalytics from 'modules/bidwatchAnalyticsAdapter.js';
2
+ import {dereferenceWithoutRenderer} from 'modules/bidwatchAnalyticsAdapter.js';
2
3
  import { expect } from 'chai';
3
4
  import { server } from 'test/mocks/xhr.js';
4
5
  let adapterManager = require('src/adapterManager').default;
@@ -155,7 +156,7 @@ describe('BidWatch Analytics', function () {
155
156
  'requestId': '34a63e5d5378a3',
156
157
  'transactionId': 'de664ccb-e18b-4436-aeb0-362382eb1b40',
157
158
  'auctionId': '1e8b993d-8f0a-4232-83eb-3639ddf3a44b',
158
- 'mediaType': 'banner',
159
+ 'mediaType': 'video',
159
160
  'source': 'client',
160
161
  'cpm': 27.4276,
161
162
  'creativeId': '158534630',
@@ -168,6 +169,7 @@ describe('BidWatch Analytics', function () {
168
169
  'example.com'
169
170
  ]
170
171
  },
172
+ 'renderer': 'something',
171
173
  'originalCpm': 25.02521,
172
174
  'originalCurrency': 'EUR',
173
175
  'responseTimestamp': 1647424261559,
@@ -221,6 +223,7 @@ describe('BidWatch Analytics', function () {
221
223
  'example.com'
222
224
  ]
223
225
  },
226
+ 'renderer': 'something',
224
227
  'originalCpm': 25.02521,
225
228
  'originalCurrency': 'EUR',
226
229
  'responseTimestamp': 1647424261558,
@@ -267,7 +270,24 @@ describe('BidWatch Analytics', function () {
267
270
  bidwatchAnalytics.disableAnalytics();
268
271
  bidwatchAnalytics.track.restore();
269
272
  });
273
+ it('test dereferenceWithoutRenderer', function () {
274
+ adapterManager.registerAnalyticsAdapter({
275
+ code: 'bidwatch',
276
+ adapter: bidwatchAnalytics
277
+ });
270
278
 
279
+ adapterManager.enableAnalytics({
280
+ provider: 'bidwatch',
281
+ options: {
282
+ domain: 'test'
283
+ }
284
+ });
285
+ let resultBidWon = JSON.parse(dereferenceWithoutRenderer(bidWon));
286
+ expect(resultBidWon).not.to.have.property('renderer');
287
+ let resultBid = JSON.parse(dereferenceWithoutRenderer(auctionEnd));
288
+ expect(resultBid).to.have.property('bidsReceived').and.to.have.lengthOf(1);
289
+ expect(resultBid.bidsReceived[0]).not.to.have.property('renderer');
290
+ });
271
291
  it('test auctionEnd', function () {
272
292
  adapterManager.registerAnalyticsAdapter({
273
293
  code: 'bidwatch',
@@ -283,6 +283,35 @@ describe('ColossussspAdapter', function () {
283
283
  });
284
284
  });
285
285
 
286
+ describe('gpp consent', function () {
287
+ it('bidderRequest.gppConsent', () => {
288
+ bidderRequest.gppConsent = {
289
+ gppString: 'abc123',
290
+ applicableSections: [8]
291
+ };
292
+
293
+ let serverRequest = spec.buildRequests([bid], bidderRequest);
294
+ let data = serverRequest.data;
295
+ expect(data).to.be.an('object');
296
+ expect(data).to.have.property('gpp');
297
+ expect(data).to.have.property('gpp_sid');
298
+
299
+ delete bidderRequest.gppConsent;
300
+ })
301
+
302
+ it('bidderRequest.ortb2.regs.gpp', () => {
303
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
304
+ bidderRequest.ortb2.regs.gpp = 'abc123';
305
+ bidderRequest.ortb2.regs.gpp_sid = [8];
306
+
307
+ let serverRequest = spec.buildRequests([bid], bidderRequest);
308
+ let data = serverRequest.data;
309
+ expect(data).to.be.an('object');
310
+ expect(data).to.have.property('gpp');
311
+ expect(data).to.have.property('gpp_sid');
312
+ })
313
+ });
314
+
286
315
  describe('interpretResponse', function () {
287
316
  let resObject = {
288
317
  body: [{
@@ -0,0 +1,161 @@
1
+ import {expect} from 'chai';
2
+ import {spec} from 'modules/freepassBidAdapter.js';
3
+ import {newBidder} from 'src/adapters/bidderFactory.js';
4
+
5
+ describe('FreePass adapter', function () {
6
+ const adapter = newBidder(spec);
7
+ describe('inherited functions', function () {
8
+ it('exists and is a function', function () {
9
+ expect(adapter.callBids).to.exist.and.to.be.a('function');
10
+ });
11
+ });
12
+
13
+ describe('isBidRequestValid', function () {
14
+ const bid = {
15
+ bidder: 'freepass',
16
+ userId: {
17
+ freepassId: {
18
+ userId: 'fpid'
19
+ }
20
+ },
21
+ adUnitCode: 'adunit-code',
22
+ };
23
+
24
+ it('should return true when required params found', function () {
25
+ expect(spec.isBidRequestValid(bid)).to.equal(true);
26
+ });
27
+
28
+ it('should return false when adUnitCode is missing', function () {
29
+ let localBid = Object.assign({}, bid);
30
+ delete localBid.adUnitCode;
31
+ expect(spec.isBidRequestValid(localBid)).to.equal(false);
32
+ });
33
+ });
34
+
35
+ describe('buildRequests', function () {
36
+ let bidRequests, bidderRequest;
37
+ beforeEach(function () {
38
+ bidRequests = [{
39
+ 'bidder': 'freepass',
40
+ 'userId': {
41
+ 'freepassId': {
42
+ 'userIp': '172.21.0.1',
43
+ 'userId': '56c4c789-71ce-46f5-989e-9e543f3d5f96',
44
+ 'commonId': 'commonIdValue'
45
+ }
46
+ }
47
+ }];
48
+ bidderRequest = {};
49
+ });
50
+
51
+ it('should return an empty array when no bid requests', function () {
52
+ const bidRequest = spec.buildRequests([], bidderRequest);
53
+ expect(bidRequest).to.be.an('array');
54
+ expect(bidRequest.length).to.equal(0);
55
+ });
56
+
57
+ it('should return a valid bid request object', function () {
58
+ const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
59
+ expect(bidRequest).to.be.an('object');
60
+ expect(bidRequest.data).to.be.an('object');
61
+ expect(bidRequest.method).to.equal('POST');
62
+ expect(bidRequest.url).to.not.equal('');
63
+ expect(bidRequest.url).to.not.equal(undefined);
64
+ expect(bidRequest.url).to.not.equal(null);
65
+ });
66
+
67
+ it('should add user id to user information', function () {
68
+ const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
69
+ const ortbData = bidRequest.data;
70
+ expect(ortbData.user).to.be.an('object');
71
+ expect(ortbData.user.id).to.equal('56c4c789-71ce-46f5-989e-9e543f3d5f96');
72
+ });
73
+
74
+ it('should add freepass commonId to extended user information', function () {
75
+ const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
76
+ const ortbData = bidRequest.data;
77
+ expect(ortbData.user).to.be.an('object');
78
+ expect(ortbData.user.ext).to.be.an('object');
79
+ expect(ortbData.user.ext.fuid).to.equal('commonIdValue');
80
+ });
81
+
82
+ it('should skip freepass commonId when not available', function () {
83
+ let localBidRequests = [Object.assign({}, bidRequests[0])];
84
+ delete localBidRequests[0].userId.freepassId.commonId;
85
+ const bidRequest = spec.buildRequests(localBidRequests, bidderRequest);
86
+ const ortbData = bidRequest.data;
87
+ expect(ortbData.user).to.be.an('object');
88
+ expect(ortbData.user.ext).to.be.an('object');
89
+ expect(ortbData.user.ext.fuid).to.be.undefined;
90
+ });
91
+
92
+ it('should add IP information to extended device information', function () {
93
+ const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
94
+ const ortbData = bidRequest.data;
95
+ expect(ortbData.device).to.be.an('object');
96
+ expect(ortbData.device.ip).to.equal('172.21.0.1');
97
+ expect(ortbData.device.ext).to.be.an('object');
98
+ expect(ortbData.device.ext.is_accurate_ip).to.equal(1);
99
+ });
100
+
101
+ it('should skip IP information when not available', function () {
102
+ let localBidRequests = [Object.assign({}, bidRequests[0])];
103
+ delete localBidRequests[0].userId.freepassId.userIp;
104
+ const bidRequest = spec.buildRequests(localBidRequests, bidderRequest);
105
+ const ortbData = bidRequest.data;
106
+ expect(ortbData.device).to.be.an('object');
107
+ expect(ortbData.device.ip).to.be.undefined;
108
+ expect(ortbData.device.ext).to.be.an('object');
109
+ expect(ortbData.device.ext.is_accurate_ip).to.equal(0);
110
+ });
111
+ });
112
+
113
+ describe('interpretResponse', function () {
114
+ let bidRequests, bidderRequest;
115
+ beforeEach(function () {
116
+ bidRequests = [{
117
+ 'bidId': '28ffdf2a952532',
118
+ 'bidder': 'freepass',
119
+ 'userId': {
120
+ 'freepassId': {
121
+ 'userIp': '172.21.0.1',
122
+ 'userId': '56c4c789-71ce-46f5-989e-9e543f3d5f96',
123
+ 'commonId': 'commonIdValue'
124
+ }
125
+ }
126
+ }];
127
+ bidderRequest = {};
128
+ });
129
+
130
+ const ad = '<iframe src=\'http://127.0.0.1:8081/banner.html?w=300&h=250&cr=0\' width=\'300\' height=\'250\' style=\'border:none;\'></iframe>';
131
+ const serverResponse = {
132
+ body: {
133
+ 'cur': 'JPY',
134
+ 'seatbid': [{
135
+ 'bid': [{
136
+ 'impid': '28ffdf2a952532',
137
+ 'price': 97,
138
+ 'adm': ad,
139
+ 'w': 300,
140
+ 'h': 250,
141
+ 'crid': 'creative0'
142
+ }]
143
+ }]
144
+ }
145
+ };
146
+ it('should interpret server response', function () {
147
+ const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
148
+ const bids = spec.interpretResponse(serverResponse, bidRequest);
149
+ expect(bids).to.be.an('array');
150
+
151
+ const bid = bids[0];
152
+ expect(bid).to.be.an('object');
153
+ expect(bid.currency).to.equal('JPY');
154
+ expect(bid.cpm).to.equal(97);
155
+ expect(bid.ad).to.equal(ad)
156
+ expect(bid.width).to.equal(300);
157
+ expect(bid.height).to.equal(250);
158
+ expect(bid.creativeId).to.equal('creative0');
159
+ });
160
+ });
161
+ });
@@ -389,7 +389,6 @@ describe('Greenbids Prebid AnalyticsAdapter Testing', function () {
389
389
  it('should parse config correctly with optional values', function () {
390
390
  expect(greenbidsAnalyticsAdapter.getAnalyticsOptions().options).to.deep.equal(configOptions);
391
391
  expect(greenbidsAnalyticsAdapter.getAnalyticsOptions().pbuid).to.equal(configOptions.pbuid);
392
- expect(greenbidsAnalyticsAdapter.getAnalyticsOptions().sampled).to.equal(false);
393
392
  });
394
393
 
395
394
  it('should not enable Analytics when pbuid is missing', function () {
@@ -400,19 +399,5 @@ describe('Greenbids Prebid AnalyticsAdapter Testing', function () {
400
399
  const validConfig = greenbidsAnalyticsAdapter.initConfig(configOptions);
401
400
  expect(validConfig).to.equal(false);
402
401
  });
403
- it('should fall back to default value when sampling factor is not number', function () {
404
- const configOptions = {
405
- options: {
406
- pbuid: pbuid,
407
- sampling: 'string',
408
- }
409
- };
410
- greenbidsAnalyticsAdapter.enableAnalytics({
411
- provider: 'greenbidsAnalytics',
412
- options: configOptions
413
- });
414
-
415
- expect(greenbidsAnalyticsAdapter.getAnalyticsOptions().sampled).to.equal(false);
416
- });
417
402
  });
418
403
  });
@@ -911,11 +911,11 @@ describe('TheMediaGrid Adapter', function () {
911
911
 
912
912
  describe('interpretResponse', function () {
913
913
  const responses = [
914
- {'bid': [{'impid': '659423fff799cb', 'price': 1.15, 'adm': '<div>test content 1</div>', 'auid': 1, 'h': 250, 'w': 300, 'dealid': 11}], 'seat': '1'},
915
- {'bid': [{'impid': '4dff80cc4ee346', 'price': 0.5, 'adm': '<div>test content 2</div>', 'auid': 2, 'h': 600, 'w': 300}], 'seat': '1'},
916
- {'bid': [{'impid': '5703af74d0472a', 'price': 0.15, 'adm': '<div>test content 3</div>', 'auid': 1, 'h': 90, 'w': 728}], 'seat': '1'},
917
- {'bid': [{'impid': '2344da98f78b42', 'price': 0, 'auid': 3, 'h': 250, 'w': 300}], 'seat': '1'},
918
- {'bid': [{'price': 0, 'adm': '<div>test content 5</div>', 'h': 250, 'w': 300}], 'seat': '1'},
914
+ {'bid': [{'impid': '659423fff799cb', 'adid': '13_14_4353', 'price': 1.15, 'adm': '<div>test content 1</div>', 'auid': 1, 'h': 250, 'w': 300, 'dealid': 11}], 'seat': '1'},
915
+ {'bid': [{'impid': '4dff80cc4ee346', 'adid': '13_15_6454', 'price': 0.5, 'adm': '<div>test content 2</div>', 'auid': 2, 'h': 600, 'w': 300}], 'seat': '1'},
916
+ {'bid': [{'impid': '5703af74d0472a', 'adid': '13_16_7654', 'price': 0.15, 'adm': '<div>test content 3</div>', 'auid': 1, 'h': 90, 'w': 728}], 'seat': '1'},
917
+ {'bid': [{'impid': '2344da98f78b42', 'adid': '13_17_5433', 'price': 0, 'auid': 3, 'h': 250, 'w': 300}], 'seat': '1'},
918
+ {'bid': [{'price': 0, 'adid': '13_18_34645', 'adm': '<div>test content 5</div>', 'h': 250, 'w': 300}], 'seat': '1'},
919
919
  undefined,
920
920
  {'bid': [], 'seat': '1'},
921
921
  {'seat': '1'},
@@ -940,7 +940,7 @@ describe('TheMediaGrid Adapter', function () {
940
940
  {
941
941
  'requestId': '659423fff799cb',
942
942
  'cpm': 1.15,
943
- 'creativeId': 1,
943
+ 'creativeId': '13_14_4353',
944
944
  'dealId': 11,
945
945
  'width': 300,
946
946
  'height': 250,
@@ -1000,7 +1000,7 @@ describe('TheMediaGrid Adapter', function () {
1000
1000
  {
1001
1001
  'requestId': '659423fff799cb',
1002
1002
  'cpm': 1.15,
1003
- 'creativeId': 1,
1003
+ 'creativeId': '13_14_4353',
1004
1004
  'dealId': 11,
1005
1005
  'width': 300,
1006
1006
  'height': 250,
@@ -1016,7 +1016,7 @@ describe('TheMediaGrid Adapter', function () {
1016
1016
  {
1017
1017
  'requestId': '4dff80cc4ee346',
1018
1018
  'cpm': 0.5,
1019
- 'creativeId': 2,
1019
+ 'creativeId': '13_15_6454',
1020
1020
  'dealId': undefined,
1021
1021
  'width': 300,
1022
1022
  'height': 600,
@@ -1032,7 +1032,7 @@ describe('TheMediaGrid Adapter', function () {
1032
1032
  {
1033
1033
  'requestId': '5703af74d0472a',
1034
1034
  'cpm': 0.15,
1035
- 'creativeId': 1,
1035
+ 'creativeId': '13_16_7654',
1036
1036
  'dealId': undefined,
1037
1037
  'width': 728,
1038
1038
  'height': 90,
@@ -1135,18 +1135,18 @@ describe('TheMediaGrid Adapter', function () {
1135
1135
  }
1136
1136
  ];
1137
1137
  const response = [
1138
- {'bid': [{'impid': '659423fff799cb', 'price': 1.15, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"21341234\"><\/Ad>\n<\/VAST>', 'auid': 11, content_type: 'video', w: 300, h: 600}], 'seat': '2'},
1139
- {'bid': [{'impid': '2bc598e42b6a', 'price': 1.00, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"21331274\"><\/Ad>\n<\/VAST>', 'auid': 12, content_type: 'video'}], 'seat': '2'},
1140
- {'bid': [{'impid': '23312a43bc42', 'price': 2.00, 'nurl': 'https://some_test_vast_url.com', 'auid': 13, content_type: 'video', 'adomain': ['example.com'], w: 300, h: 600}], 'seat': '2'},
1141
- {'bid': [{'impid': '112432ab4f34', 'price': 1.80, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"32115432\"><\/Ad>\n<\/VAST>', 'nurl': 'https://wrong_url.com', 'auid': 14, content_type: 'video', 'adomain': ['example.com'], w: 300, h: 600}], 'seat': '2'},
1142
- {'bid': [{'impid': 'a74b342f8cd', 'price': 1.50, 'nurl': '', 'auid': 15, content_type: 'video'}], 'seat': '2'}
1138
+ {'bid': [{'impid': '659423fff799cb', 'adid': '35_56_6454', 'price': 1.15, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"21341234\"><\/Ad>\n<\/VAST>', 'auid': 11, content_type: 'video', w: 300, h: 600}], 'seat': '2'},
1139
+ {'bid': [{'impid': '2bc598e42b6a', 'adid': '35_57_2344', 'price': 1.00, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"21331274\"><\/Ad>\n<\/VAST>', content_type: 'video'}], 'seat': '2'},
1140
+ {'bid': [{'impid': '23312a43bc42', 'adid': '35_58_5345', 'price': 2.00, 'nurl': 'https://some_test_vast_url.com', 'auid': 13, content_type: 'video', 'adomain': ['example.com'], w: 300, h: 600}], 'seat': '2'},
1141
+ {'bid': [{'impid': '112432ab4f34', 'adid': '35_59_56756', 'price': 1.80, 'adm': '<VAST version=\"3.0\">\n<Ad id=\"32115432\"><\/Ad>\n<\/VAST>', 'nurl': 'https://wrong_url.com', 'auid': 14, content_type: 'video', 'adomain': ['example.com'], w: 300, h: 600}], 'seat': '2'},
1142
+ {'bid': [{'impid': 'a74b342f8cd', 'adid': '35_60_523452', 'price': 1.50, 'nurl': '', 'auid': 15, content_type: 'video'}], 'seat': '2'}
1143
1143
  ];
1144
1144
  const [request] = spec.buildRequests(bidRequests);
1145
1145
  const expectedResponse = [
1146
1146
  {
1147
1147
  'requestId': '659423fff799cb',
1148
1148
  'cpm': 1.15,
1149
- 'creativeId': 11,
1149
+ 'creativeId': '35_56_6454',
1150
1150
  'dealId': undefined,
1151
1151
  'width': 300,
1152
1152
  'height': 600,
@@ -1165,7 +1165,7 @@ describe('TheMediaGrid Adapter', function () {
1165
1165
  {
1166
1166
  'requestId': '2bc598e42b6a',
1167
1167
  'cpm': 1.00,
1168
- 'creativeId': 12,
1168
+ 'creativeId': '35_57_2344',
1169
1169
  'dealId': undefined,
1170
1170
  'width': undefined,
1171
1171
  'height': undefined,
@@ -1184,7 +1184,7 @@ describe('TheMediaGrid Adapter', function () {
1184
1184
  {
1185
1185
  'requestId': '23312a43bc42',
1186
1186
  'cpm': 2.00,
1187
- 'creativeId': 13,
1187
+ 'creativeId': '35_58_5345',
1188
1188
  'dealId': undefined,
1189
1189
  'width': 300,
1190
1190
  'height': 600,
@@ -1200,7 +1200,7 @@ describe('TheMediaGrid Adapter', function () {
1200
1200
  {
1201
1201
  'requestId': '112432ab4f34',
1202
1202
  'cpm': 1.80,
1203
- 'creativeId': 14,
1203
+ 'creativeId': '35_59_56756',
1204
1204
  'dealId': undefined,
1205
1205
  'width': 300,
1206
1206
  'height': 600,
@@ -1265,11 +1265,11 @@ describe('TheMediaGrid Adapter', function () {
1265
1265
 
1266
1266
  it('complicated case', function () {
1267
1267
  const fullResponse = [
1268
- {'bid': [{'impid': '2164be6358b9', 'price': 1.15, 'adm': '<div>test content 1</div>', 'auid': 1, 'h': 250, 'w': 300, dealid: 11}], 'seat': '1'},
1269
- {'bid': [{'impid': '4e111f1b66e4', 'price': 0.5, 'adm': '<div>test content 2</div>', 'auid': 2, 'h': 600, 'w': 300, dealid: 12}], 'seat': '1'},
1270
- {'bid': [{'impid': '26d6f897b516', 'price': 0.15, 'adm': '<div>test content 3</div>', 'auid': 1, 'h': 90, 'w': 728}], 'seat': '1'},
1271
- {'bid': [{'impid': '326bde7fbf69', 'price': 0.15, 'adm': '<div>test content 4</div>', 'auid': 1, 'h': 600, 'w': 300}], 'seat': '1'},
1272
- {'bid': [{'impid': '2234f233b22a', 'price': 0.5, 'adm': '<div>test content 5</div>', 'auid': 2, 'h': 600, 'w': 350}], 'seat': '1'},
1268
+ {'bid': [{'impid': '2164be6358b9', 'adid': '32_52_7543', 'price': 1.15, 'adm': '<div>test content 1</div>', 'auid': 1, 'h': 250, 'w': 300, dealid: 11}], 'seat': '1'},
1269
+ {'bid': [{'impid': '4e111f1b66e4', 'adid': '32_54_4535', 'price': 0.5, 'adm': '<div>test content 2</div>', 'auid': 2, 'h': 600, 'w': 300, dealid: 12}], 'seat': '1'},
1270
+ {'bid': [{'impid': '26d6f897b516', 'adid': '32_53_75467', 'price': 0.15, 'adm': '<div>test content 3</div>', 'auid': 1, 'h': 90, 'w': 728}], 'seat': '1'},
1271
+ {'bid': [{'impid': '326bde7fbf69', 'adid': '32_54_12342', 'price': 0.15, 'adm': '<div>test content 4</div>', 'auid': 1, 'h': 600, 'w': 300}], 'seat': '1'},
1272
+ {'bid': [{'impid': '2234f233b22a', 'adid': '32_55_987686', 'price': 0.5, 'adm': '<div>test content 5</div>', 'auid': 2, 'h': 600, 'w': 350}], 'seat': '1'},
1273
1273
  ];
1274
1274
  const bidRequests = [
1275
1275
  {
@@ -1333,7 +1333,7 @@ describe('TheMediaGrid Adapter', function () {
1333
1333
  {
1334
1334
  'requestId': '2164be6358b9',
1335
1335
  'cpm': 1.15,
1336
- 'creativeId': 1,
1336
+ 'creativeId': '32_52_7543',
1337
1337
  'dealId': 11,
1338
1338
  'width': 300,
1339
1339
  'height': 250,
@@ -1349,7 +1349,7 @@ describe('TheMediaGrid Adapter', function () {
1349
1349
  {
1350
1350
  'requestId': '4e111f1b66e4',
1351
1351
  'cpm': 0.5,
1352
- 'creativeId': 2,
1352
+ 'creativeId': '32_54_4535',
1353
1353
  'dealId': 12,
1354
1354
  'width': 300,
1355
1355
  'height': 600,
@@ -1365,7 +1365,7 @@ describe('TheMediaGrid Adapter', function () {
1365
1365
  {
1366
1366
  'requestId': '26d6f897b516',
1367
1367
  'cpm': 0.15,
1368
- 'creativeId': 1,
1368
+ 'creativeId': '32_53_75467',
1369
1369
  'dealId': undefined,
1370
1370
  'width': 728,
1371
1371
  'height': 90,
@@ -1381,7 +1381,7 @@ describe('TheMediaGrid Adapter', function () {
1381
1381
  {
1382
1382
  'requestId': '326bde7fbf69',
1383
1383
  'cpm': 0.15,
1384
- 'creativeId': 1,
1384
+ 'creativeId': '32_54_12342',
1385
1385
  'dealId': undefined,
1386
1386
  'width': 300,
1387
1387
  'height': 600,
@@ -1421,6 +1421,7 @@ describe('TheMediaGrid Adapter', function () {
1421
1421
  'price': 1.15,
1422
1422
  'adm': '<div>test content 1</div>',
1423
1423
  'auid': 1,
1424
+ 'adid': '234_6454_3453',
1424
1425
  'h': 250,
1425
1426
  'w': 300,
1426
1427
  'dealid': 11,
@@ -1440,7 +1441,7 @@ describe('TheMediaGrid Adapter', function () {
1440
1441
  {
1441
1442
  'requestId': '26d6f897b516',
1442
1443
  'cpm': 1.15,
1443
- 'creativeId': 1,
1444
+ 'creativeId': '234_6454_3453',
1444
1445
  'dealId': 11,
1445
1446
  'width': 300,
1446
1447
  'height': 250,