prebid.js 9.53.2 → 9.53.3

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 (196) hide show
  1. package/dist/33acrossAnalyticsAdapter.js +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/BTBidAdapter.js +1 -1
  5. package/dist/adagioAnalyticsAdapter.js +1 -1
  6. package/dist/adagioBidAdapter.js +1 -1
  7. package/dist/adagioRtdProvider.js +1 -1
  8. package/dist/adagioUtils.js +1 -1
  9. package/dist/addefendBidAdapter.js +1 -1
  10. package/dist/adgenerationBidAdapter.js +1 -1
  11. package/dist/adlooxRtdProvider.js +1 -1
  12. package/dist/adqueryBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adstirBidAdapter.js +1 -1
  15. package/dist/adtrgtmeBidAdapter.js +1 -1
  16. package/dist/adxcgAnalyticsAdapter.js +1 -1
  17. package/dist/adxcgBidAdapter.js +1 -1
  18. package/dist/adyoulikeBidAdapter.js +1 -1
  19. package/dist/agmaAnalyticsAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/amxBidAdapter.js +1 -1
  22. package/dist/amxIdSystem.js +1 -1
  23. package/dist/aniviewBidAdapter.js +1 -1
  24. package/dist/appierAnalyticsAdapter.js +1 -1
  25. package/dist/appnexusBidAdapter.js +1 -1
  26. package/dist/asoBidAdapter.js +1 -1
  27. package/dist/axonixBidAdapter.js +1 -1
  28. package/dist/beopBidAdapter.js +1 -1
  29. package/dist/bidglassBidAdapter.js +1 -1
  30. package/dist/big-richmediaBidAdapter.js +1 -1
  31. package/dist/bitmediaBidAdapter.js +1 -1
  32. package/dist/bridBidAdapter.js +1 -1
  33. package/dist/bridgeuppBidAdapter.js +1 -1
  34. package/dist/bridgewellBidAdapter.js +1 -1
  35. package/dist/brightMountainMediaBidAdapter.js +1 -1
  36. package/dist/carodaBidAdapter.js +1 -1
  37. package/dist/chtnwBidAdapter.js +1 -1
  38. package/dist/chunk-core.js +1 -1
  39. package/dist/concertBidAdapter.js +1 -1
  40. package/dist/connectadBidAdapter.js +1 -1
  41. package/dist/consumableBidAdapter.js +1 -1
  42. package/dist/contxtfulBidAdapter.js +1 -1
  43. package/dist/conversantAnalyticsAdapter.js +1 -1
  44. package/dist/conversantBidAdapter.js +1 -1
  45. package/dist/craftBidAdapter.js +1 -1
  46. package/dist/criteoBidAdapter.js +1 -1
  47. package/dist/cwireBidAdapter.js +1 -1
  48. package/dist/dailymotionBidAdapter.js +1 -1
  49. package/dist/debugging-standalone.js +1 -1
  50. package/dist/dspxBidAdapter.js +1 -1
  51. package/dist/dxkultureBidAdapter.js +1 -1
  52. package/dist/eplanningBidAdapter.js +1 -1
  53. package/dist/equativBidAdapter.js +1 -1
  54. package/dist/eskimiBidAdapter.js +1 -1
  55. package/dist/euidIdSystem.js +1 -1
  56. package/dist/exadsBidAdapter.js +1 -1
  57. package/dist/excoBidAdapter.js +1 -1
  58. package/dist/feedadBidAdapter.js +1 -1
  59. package/dist/finativeBidAdapter.js +1 -1
  60. package/dist/freewheel-sspBidAdapter.js +1 -1
  61. package/dist/gmosspBidAdapter.js +1 -1
  62. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  63. package/dist/greenbidsBidAdapter.js +1 -1
  64. package/dist/greenbidsRtdProvider.js +1 -1
  65. package/dist/gridBidAdapter.js +1 -1
  66. package/dist/gumgumBidAdapter.js +1 -1
  67. package/dist/h12mediaBidAdapter.js +1 -1
  68. package/dist/hypelabBidAdapter.js +1 -1
  69. package/dist/id5AnalyticsAdapter.js +1 -1
  70. package/dist/id5IdSystem.js +1 -1
  71. package/dist/imdsBidAdapter.js +1 -1
  72. package/dist/improvedigitalBidAdapter.js +1 -1
  73. package/dist/inmobiBidAdapter.js +1 -1
  74. package/dist/insticatorBidAdapter.js +1 -1
  75. package/dist/intentIqAnalyticsAdapter.js +1 -1
  76. package/dist/ixBidAdapter.js +1 -1
  77. package/dist/jixieBidAdapter.js +1 -1
  78. package/dist/justpremiumBidAdapter.js +1 -1
  79. package/dist/kargoBidAdapter.js +1 -1
  80. package/dist/kimberliteBidAdapter.js +1 -1
  81. package/dist/konduitAnalyticsAdapter.js +1 -1
  82. package/dist/kueezBidAdapter.js +1 -1
  83. package/dist/lassoBidAdapter.js +1 -1
  84. package/dist/lifestreetBidAdapter.js +1 -1
  85. package/dist/liveIntentId.js +1 -1
  86. package/dist/logicadBidAdapter.js +1 -1
  87. package/dist/loglyliftBidAdapter.js +1 -1
  88. package/dist/luceadBidAdapter.js +1 -1
  89. package/dist/mabidderBidAdapter.js +1 -1
  90. package/dist/madsenseBidAdapter.js +1 -1
  91. package/dist/magniteAnalyticsAdapter.js +1 -1
  92. package/dist/malltvAnalyticsAdapter.js +1 -1
  93. package/dist/marsmediaBidAdapter.js +1 -1
  94. package/dist/mediafuseBidAdapter.js +1 -1
  95. package/dist/medianetBidAdapter.js +1 -1
  96. package/dist/medianetUtils.js +1 -1
  97. package/dist/mediasquareBidAdapter.js +1 -1
  98. package/dist/mgidBidAdapter.js +1 -1
  99. package/dist/missenaBidAdapter.js +1 -1
  100. package/dist/mobilefuseBidAdapter.js +1 -1
  101. package/dist/nextMillenniumBidAdapter.js +1 -1
  102. package/dist/nexx360Utils.js +1 -1
  103. package/dist/nobidAnalyticsAdapter.js +1 -1
  104. package/dist/nobidBidAdapter.js +1 -1
  105. package/dist/nodalsAiRtdProvider.js +1 -1
  106. package/dist/not-for-prod/prebid.js +172 -172
  107. package/dist/objectGuard.js +1 -1
  108. package/dist/oguryBidAdapter.js +1 -1
  109. package/dist/onetagBidAdapter.js +1 -1
  110. package/dist/ooloAnalyticsAdapter.js +1 -1
  111. package/dist/openxBidAdapter.js +1 -1
  112. package/dist/optidigitalBidAdapter.js +1 -1
  113. package/dist/orbidderBidAdapter.js +1 -1
  114. package/dist/outbrainBidAdapter.js +1 -1
  115. package/dist/pixfutureBidAdapter.js +1 -1
  116. package/dist/publinkIdSystem.js +1 -1
  117. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  118. package/dist/pubmaticBidAdapter.js +1 -1
  119. package/dist/pubmaticIdSystem.js +1 -1
  120. package/dist/pubmaticRtdProvider.js +1 -1
  121. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  122. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  123. package/dist/pxyzBidAdapter.js +1 -1
  124. package/dist/quantcastBidAdapter.js +1 -1
  125. package/dist/readpeakBidAdapter.js +1 -1
  126. package/dist/relaidoBidAdapter.js +1 -1
  127. package/dist/retailspotBidAdapter.js +1 -1
  128. package/dist/rhythmoneBidAdapter.js +1 -1
  129. package/dist/riseUtils.js +1 -1
  130. package/dist/rtdModule.js +1 -1
  131. package/dist/rubiconBidAdapter.js +1 -1
  132. package/dist/seedingAllianceBidAdapter.js +1 -1
  133. package/dist/seedtagBidAdapter.js +1 -1
  134. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  135. package/dist/sharethroughBidAdapter.js +1 -1
  136. package/dist/showheroes-bsBidAdapter.js +1 -1
  137. package/dist/smaatoBidAdapter.js +1 -1
  138. package/dist/smartadserverBidAdapter.js +1 -1
  139. package/dist/smartxBidAdapter.js +1 -1
  140. package/dist/smilewantedBidAdapter.js +1 -1
  141. package/dist/snigelBidAdapter.js +1 -1
  142. package/dist/sonobiBidAdapter.js +1 -1
  143. package/dist/sovrnBidAdapter.js +1 -1
  144. package/dist/sparteoBidAdapter.js +1 -1
  145. package/dist/sspBCBidAdapter.js +1 -1
  146. package/dist/stvBidAdapter.js +1 -1
  147. package/dist/sublimeBidAdapter.js +1 -1
  148. package/dist/taboolaBidAdapter.js +1 -1
  149. package/dist/tappxBidAdapter.js +1 -1
  150. package/dist/targetVideoBidAdapter.js +1 -1
  151. package/dist/teadsBidAdapter.js +1 -1
  152. package/dist/terceptAnalyticsAdapter.js +1 -1
  153. package/dist/themoneytizerBidAdapter.js +1 -1
  154. package/dist/trionBidAdapter.js +1 -1
  155. package/dist/tripleliftBidAdapter.js +1 -1
  156. package/dist/ttdBidAdapter.js +1 -1
  157. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  158. package/dist/uid2IdSystem.js +1 -1
  159. package/dist/underdogmediaBidAdapter.js +1 -1
  160. package/dist/undertoneBidAdapter.js +1 -1
  161. package/dist/unrulyBidAdapter.js +1 -1
  162. package/dist/userId.js +1 -1
  163. package/dist/vidazooUtils.js +1 -1
  164. package/dist/videobyteBidAdapter.js +1 -1
  165. package/dist/visxBidAdapter.js +1 -1
  166. package/dist/vuukleBidAdapter.js +1 -1
  167. package/dist/widespaceBidAdapter.js +1 -1
  168. package/dist/winrBidAdapter.js +1 -1
  169. package/dist/yahooAdsBidAdapter.js +1 -1
  170. package/dist/yandexBidAdapter.js +1 -1
  171. package/dist/yieldmoBidAdapter.js +1 -1
  172. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  173. package/libraries/objectGuard/objectGuard.js +149 -48
  174. package/libraries/objectGuard/ortbGuard.js +33 -43
  175. package/modules/adagioAnalyticsAdapter.js +6 -1
  176. package/modules/adagioBidAdapter.js +12 -5
  177. package/modules/adagioRtdProvider.js +41 -35
  178. package/modules/pubmaticAnalyticsAdapter.js +311 -587
  179. package/modules/pubmaticBidAdapter.js +71 -8
  180. package/modules/pubmaticIdSystem.js +4 -4
  181. package/modules/pubmaticRtdProvider.js +12 -60
  182. package/modules/rtdModule/index.js +1 -5
  183. package/modules/ttdBidAdapter.js +0 -5
  184. package/modules/userId/eids.js +1 -1
  185. package/modules/userId/index.js +32 -1
  186. package/package.json +1 -1
  187. package/src/auction.js +3 -0
  188. package/test/spec/activities/objectGuard_spec.js +156 -32
  189. package/test/spec/activities/ortbGuard_spec.js +10 -15
  190. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +94 -24
  191. package/test/spec/modules/adagioRtdProvider_spec.js +17 -17
  192. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +634 -916
  193. package/test/spec/modules/pubmaticBidAdapter_spec.js +260 -1
  194. package/test/spec/modules/pubmaticRtdProvider_spec.js +78 -400
  195. package/test/spec/modules/ttdBidAdapter_spec.js +0 -33
  196. package/test/spec/modules/userId_spec.js +115 -1
@@ -4,11 +4,10 @@ import { EVENTS, REJECTION_REASON } from 'src/constants.js';
4
4
  import { config } from 'src/config.js';
5
5
  import { setConfig } from 'modules/currency.js';
6
6
  import { server } from '../../mocks/xhr.js';
7
+ import { getGlobal } from 'src/prebidGlobal.js';
7
8
  import 'src/prebid.js';
8
- import { getGlobal } from 'src/prebidGlobal';
9
9
 
10
10
  let events = require('src/events');
11
- let ajax = require('src/ajax');
12
11
  let utils = require('src/utils');
13
12
 
14
13
  const DEFAULT_USER_AGENT = window.navigator.userAgent;
@@ -71,15 +70,12 @@ const BID = {
71
70
  },
72
71
  'floorData': {
73
72
  'cpmAfterAdjustments': 6.3,
74
- 'enforcements': {'enforceJS': true, 'enforcePBS': false, 'floorDeals': false, 'bidAdjustment': true},
73
+ 'enforcements': { 'enforceJS': true, 'enforcePBS': false, 'floorDeals': false, 'bidAdjustment': true },
75
74
  'floorCurrency': 'USD',
76
75
  'floorRule': 'banner',
77
76
  'floorRuleValue': 1.1,
78
77
  'floorValue': 1.1
79
78
  },
80
- 'meta': {
81
- 'demandSource': 1208,
82
- },
83
79
  getStatusCode() {
84
80
  return 1;
85
81
  }
@@ -108,11 +104,9 @@ const BID2 = Object.assign({}, BID, {
108
104
  'hb_source': 'server'
109
105
  },
110
106
  meta: {
111
- advertiserDomains: ['example.com'],
112
- 'demandSource': 1208,
107
+ advertiserDomains: ['example.com']
113
108
  }
114
109
  });
115
-
116
110
  const BID3 = Object.assign({}, BID2, {
117
111
  rejectionReason: REJECTION_REASON.FLOOR_NOT_MET
118
112
  })
@@ -125,24 +119,24 @@ const MOCK = {
125
119
  'auctionId': '25c6d7f5-699a-4bfc-87c9-996f915341fa',
126
120
  'timestamp': 1519767010567,
127
121
  'auctionStatus': 'inProgress',
128
- 'adUnits': [ {
122
+ 'adUnits': [{
129
123
  'code': '/19968336/header-bid-tag-1',
130
124
  'sizes': [[640, 480]],
131
- 'bids': [ {
125
+ 'bids': [{
132
126
  'bidder': 'pubmatic',
133
127
  'params': {
134
128
  'publisherId': '1001'
135
129
  }
136
- } ],
130
+ }],
137
131
  'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
138
132
  }
139
133
  ],
140
134
  'adUnitCodes': ['/19968336/header-bid-tag-1'],
141
- 'bidderRequests': [ {
135
+ 'bidderRequests': [{
142
136
  'bidderCode': 'pubmatic',
143
137
  'auctionId': '25c6d7f5-699a-4bfc-87c9-996f915341fa',
144
138
  'bidderRequestId': '1be65d7958826a',
145
- 'bids': [ {
139
+ 'bids': [{
146
140
  'bidder': 'pubmatic',
147
141
  'params': {
148
142
  'publisherId': '1001',
@@ -279,7 +273,7 @@ const MOCK = {
279
273
  };
280
274
 
281
275
  function getLoggerJsonFromRequest(requestBody) {
282
- return JSON.parse(decodeURIComponent(requestBody.split('json=')[1]));
276
+ return JSON.parse(decodeURIComponent(requestBody));
283
277
  }
284
278
 
285
279
  describe('pubmatic analytics adapter', function () {
@@ -320,8 +314,8 @@ describe('pubmatic analytics adapter', function () {
320
314
  expect(utils.logError.called).to.equal(true);
321
315
  });
322
316
 
323
- describe('OW S2S', function() {
324
- this.beforeEach(function() {
317
+ describe('OW S2S', function () {
318
+ this.beforeEach(function () {
325
319
  pubmaticAnalyticsAdapter.enableAnalytics({
326
320
  options: {
327
321
  publisherId: 9999,
@@ -339,14 +333,14 @@ describe('pubmatic analytics adapter', function () {
339
333
  });
340
334
  });
341
335
 
342
- this.afterEach(function() {
336
+ this.afterEach(function () {
343
337
  pubmaticAnalyticsAdapter.disableAnalytics();
344
338
  });
345
339
 
346
- it('Pubmatic Won: No tracker fired', function() {
340
+ it('Pubmatic Won: No tracker fired', function () {
347
341
  this.timeout(5000)
348
342
 
349
- sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
343
+ sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake(() => {
350
344
  return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
351
345
  });
352
346
 
@@ -365,14 +359,19 @@ describe('pubmatic analytics adapter', function () {
365
359
  clock.tick(2000 + 1000);
366
360
  expect(requests.length).to.equal(1); // only logger is fired
367
361
  let request = requests[0];
368
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
362
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
369
363
  let data = getLoggerJsonFromRequest(request.requestBody);
370
- expect(data.pubid).to.equal('9999');
371
- expect(data.pid).to.equal('1111');
372
- expect(data.pdvid).to.equal('20');
364
+ // check mandatory fields
365
+ expect(data).to.have.property('sd');
366
+ expect(data).to.have.property('fd');
367
+ expect(data).to.have.property('rd');
368
+
369
+ expect(data.rd.pubid).to.equal('9999');
370
+ expect(data.rd.pid).to.equal('1111');
371
+ expect(data.rd.pdvid).to.equal('20');
373
372
  });
374
373
 
375
- it('Non-pubmatic won: logger, tracker fired', function() {
374
+ it('Non-pubmatic won: logger, tracker fired', function () {
376
375
  const APPNEXUS_BID = Object.assign({}, BID, {
377
376
  'bidder': 'appnexus',
378
377
  'adserverTargeting': {
@@ -388,24 +387,24 @@ describe('pubmatic analytics adapter', function () {
388
387
  'auctionId': '25c6d7f5-699a-4bfc-87c9-996f915341fa',
389
388
  'timestamp': 1519767010567,
390
389
  'auctionStatus': 'inProgress',
391
- 'adUnits': [ {
390
+ 'adUnits': [{
392
391
  'code': '/19968336/header-bid-tag-1',
393
392
  'sizes': [[640, 480]],
394
- 'bids': [ {
393
+ 'bids': [{
395
394
  'bidder': 'appnexus',
396
395
  'params': {
397
396
  'publisherId': '1001'
398
397
  }
399
- } ],
398
+ }],
400
399
  'transactionId': 'ca4af27a-6d02-4f90-949d-d5541fa12014'
401
400
  }
402
401
  ],
403
402
  'adUnitCodes': ['/19968336/header-bid-tag-1'],
404
- 'bidderRequests': [ {
403
+ 'bidderRequests': [{
405
404
  'bidderCode': 'appnexus',
406
405
  'auctionId': '25c6d7f5-699a-4bfc-87c9-996f915341fa',
407
406
  'bidderRequestId': '1be65d7958826a',
408
- 'bids': [ {
407
+ 'bids': [{
409
408
  'bidder': 'appnexus',
410
409
  'params': {
411
410
  'publisherId': '1001',
@@ -503,26 +502,32 @@ describe('pubmatic analytics adapter', function () {
503
502
  clock.tick(2000 + 1000);
504
503
  expect(requests.length).to.equal(2); // logger as well as tracker is fired
505
504
  let request = requests[1]; // logger is executed late, trackers execute first
506
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
505
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
507
506
  let data = getLoggerJsonFromRequest(request.requestBody);
508
- expect(data.pubid).to.equal('9999');
509
- expect(data.pid).to.equal('1111');
510
- expect(data.pdvid).to.equal('20');
507
+
508
+ // check mandatory fields
509
+ expect(data).to.have.property('sd');
510
+ expect(data).to.have.property('fd');
511
+ expect(data).to.have.property('rd');
512
+
513
+ expect(data.rd.pubid).to.equal('9999');
514
+ expect(data.rd.pid).to.equal('1111');
515
+ expect(data.rd.pdvid).to.equal('20');
516
+
517
+ expect(data.sd).to.be.an('object');
518
+ expect(Object.keys(data.sd).length).to.equal(1);
519
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].adapterCode).to.equal('appnexus');
520
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidderCode).to.equal('appnexus');
511
521
 
512
522
  let firstTracker = requests[0].url;
513
523
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
514
524
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
515
- expect(data.pubid).to.equal('9999');
516
- expect(decodeURIComponent(data.purl)).to.equal('http://www.test.com/page.html');
517
-
518
- expect(data.s).to.be.an('array');
519
- expect(data.s.length).to.equal(1);
520
- expect(data.s[0].ps[0].pn).to.equal('appnexus');
521
- expect(data.s[0].ps[0].bc).to.equal('appnexus');
525
+ expect(data.rd.pubid).to.equal('9999');
526
+ expect(decodeURIComponent(data.rd.purl)).to.equal('http://www.test.com/page.html');
522
527
  })
523
528
  });
524
529
 
525
- describe('when handling events', function() {
530
+ describe('when handling events', function () {
526
531
  beforeEach(function () {
527
532
  pubmaticAnalyticsAdapter.enableAnalytics({
528
533
  options: {
@@ -537,7 +542,7 @@ describe('pubmatic analytics adapter', function () {
537
542
  pubmaticAnalyticsAdapter.disableAnalytics();
538
543
  });
539
544
 
540
- it('Logger: best case + win tracker', function() {
545
+ it('Logger: best case + win tracker', function () {
541
546
  this.timeout(5000)
542
547
 
543
548
  const mockUserIds = {
@@ -572,12 +577,52 @@ describe('pubmatic analytics adapter', function () {
572
577
  testGroupId: 15
573
578
  });
574
579
 
580
+ var mockAuctionEnd = {
581
+ "auctionId": MOCK.BID_REQUESTED.auctionId,
582
+ "bidderRequests": [
583
+ {
584
+ "bidderCode": "pubmatic",
585
+ "auctionId": MOCK.BID_REQUESTED.auctionId,
586
+ "bidderRequestId": MOCK.BID_REQUESTED.bidderRequestId,
587
+ "bids": [
588
+ {
589
+ "bidder": "pubmatic",
590
+ "auctionId": MOCK.BID_REQUESTED.auctionId,
591
+ "adUnitCode": "div2",
592
+ "transactionId": "bac39250-1006-42c2-b48a-876203505f95",
593
+ "adUnitId": "a36be277-84ce-42aa-b840-e95dbd104a3f",
594
+ "sizes": [
595
+ [
596
+ 728,
597
+ 90
598
+ ]
599
+ ],
600
+ "bidId": "9cfd58f75514bc8",
601
+ "bidderRequestId": "857a9c3758c5cc8",
602
+ "timeout": 3000
603
+ }
604
+ ],
605
+ "auctionStart": 1753342540904,
606
+ "timeout": 3000,
607
+ "ortb2": {
608
+ "source": {},
609
+ "user": {
610
+ "ext": {
611
+ "ctr": "US"
612
+ }
613
+ }
614
+ },
615
+ "start": 1753342540938
616
+ }
617
+ ]
618
+ }
619
+
575
620
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
576
621
  events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
577
622
  events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
578
623
  events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
579
624
  events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
580
- events.emit(AUCTION_END, MOCK.AUCTION_END);
625
+ events.emit(AUCTION_END, mockAuctionEnd);
581
626
  events.emit(SET_TARGETING, MOCK.SET_TARGETING);
582
627
  events.emit(BID_WON, MOCK.BID_WON[0]);
583
628
  events.emit(BID_WON, MOCK.BID_WON[1]);
@@ -585,171 +630,61 @@ describe('pubmatic analytics adapter', function () {
585
630
  clock.tick(2000 + 1000);
586
631
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
587
632
  let request = requests[2]; // logger is executed late, trackers execute first
588
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
633
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
589
634
  let data = getLoggerJsonFromRequest(request.requestBody);
590
- expect(data.pubid).to.equal('9999');
591
- expect(data.pid).to.equal('1111');
592
- expect(data.pdvid).to.equal('20');
593
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
594
- expect(data.to).to.equal('3000');
595
- expect(data.purl).to.equal('http://www.test.com/page.html');
596
- expect(data.orig).to.equal('www.test.com');
597
- expect(data.tst).to.equal(1519767016);
598
- expect(data.tgid).to.equal(15);
599
- expect(data.fmv).to.equal('floorModelTest');
600
- expect(data.ft).to.equal(1);
601
- expect(data.dm).to.equal(DISPLAY_MANAGER);
602
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
603
- expect(data.ctr).not.to.be.null;
604
- expect(data.s).to.be.an('array');
605
- expect(data.s.length).to.equal(2);
606
- expect(data.ffs).to.equal(1);
607
- expect(data.fsrc).to.equal(2);
608
- expect(data.fp).to.equal('pubmatic');
609
- expect(data.lip).to.deep.equal(['pubmaticId']);
610
- // slot 1
611
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
612
- expect(data.s[0].fskp).to.equal(0);
613
- expect(data.s[0].sid).not.to.be.undefined;
614
- expect(data.s[0].sz).to.deep.equal(['640x480']);
615
- expect(data.s[0].ps).to.be.an('array');
616
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
617
- expect(data.s[0].ps.length).to.equal(1);
618
- expect(data.s[0].ps[0].pn).to.equal('pubmatic');
619
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
620
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
621
- expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
622
- expect(data.s[0].ps[0].db).to.equal(0);
623
- expect(data.s[0].ps[0].kgpv).to.equal('/19968336/header-bid-tag-0');
624
- expect(data.s[0].ps[0].kgpsv).to.equal('/19968336/header-bid-tag-0');
625
- expect(data.s[0].ps[0].psz).to.equal('640x480');
626
- expect(data.s[0].ps[0].eg).to.equal(1.23);
627
- expect(data.s[0].ps[0].en).to.equal(1.23);
628
- expect(data.s[0].ps[0].di).to.equal('-1');
629
- expect(data.s[0].ps[0].dc).to.equal('');
630
- expect(data.s[0].ps[0].l1).to.equal(944);
631
- expect(data.s[0].ps[0].ol1).to.equal(3214);
632
- expect(data.s[0].ps[0].l2).to.equal(0);
633
- expect(data.s[0].ps[0].ss).to.equal(1);
634
- expect(data.s[0].ps[0].t).to.equal(0);
635
- expect(data.s[0].ps[0].wb).to.equal(1);
636
- expect(data.s[0].ps[0].af).to.equal('video');
637
- expect(data.s[0].ps[0].ocpm).to.equal(1.23);
638
- expect(data.s[0].ps[0].ocry).to.equal('USD');
639
- expect(data.s[0].ps[0].frv).to.equal(1.1);
640
- expect(data.s[0].ps[0].pb).to.equal(1.2);
641
- // slot 2
642
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
643
- expect(data.s[1].fskp).to.equal(0);
644
- expect(data.s[1].sid).not.to.be.undefined;
645
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
646
- expect(data.s[1].ps).to.be.an('array');
647
- expect(data.s[1].ps.length).to.equal(1);
648
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
649
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
650
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
651
- expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
652
- expect(data.s[1].ps[0].db).to.equal(0);
653
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
654
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
655
- expect(data.s[1].ps[0].psz).to.equal('728x90');
656
- expect(data.s[1].ps[0].eg).to.equal(1.52);
657
- expect(data.s[1].ps[0].en).to.equal(1.52);
658
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
659
- expect(data.s[1].ps[0].dc).to.equal('PMP');
660
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
661
- expect(data.s[1].ps[0].adv).to.equal('example.com');
662
- expect(data.s[0].ps[0].l1).to.equal(944);
663
- expect(data.s[0].ps[0].ol1).to.equal(3214);
664
- expect(data.s[1].ps[0].l2).to.equal(0);
665
- expect(data.s[1].ps[0].ss).to.equal(1);
666
- expect(data.s[1].ps[0].t).to.equal(0);
667
- expect(data.s[1].ps[0].wb).to.equal(1);
668
- expect(data.s[1].ps[0].af).to.equal('banner');
669
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
670
- expect(data.s[1].ps[0].ocry).to.equal('USD');
671
- expect(data.s[1].ps[0].frv).to.equal(1.1);
672
- expect(data.s[1].ps[0].pb).to.equal(1.50);
673
-
674
- // tracker slot1
675
- let firstTracker = requests[0].url;
676
- expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
677
- data = {};
678
- firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
679
- expect(data.pubid).to.equal('9999');
680
- expect(decodeURIComponent(data.purl)).to.equal('http://www.test.com/page.html');
681
- expect(data.tst).to.equal('1519767014');
682
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
683
- expect(data.bidid).to.equal('2ecff0db240757');
684
- expect(data.pid).to.equal('1111');
685
- expect(data.pdvid).to.equal('20');
686
- expect(decodeURIComponent(data.slot)).to.equal('/19968336/header-bid-tag-0');
687
- expect(decodeURIComponent(data.kgpv)).to.equal('/19968336/header-bid-tag-0');
688
- expect(data.pn).to.equal('pubmatic');
689
- expect(data.bc).to.equal('pubmatic');
690
- expect(data.eg).to.equal('1.23');
691
- expect(data.en).to.equal('1.23');
692
- expect(data.origbidid).to.equal('partnerImpressionID-1');
693
- expect(data.plt).to.equal('1');
694
- expect(data.psz).to.equal('640x480');
695
- expect(data.tgid).to.equal('15');
696
- expect(data.orig).to.equal('www.test.com');
697
- expect(data.ss).to.equal('1');
698
- expect(data.fskp).to.equal('0');
699
- expect(data.af).to.equal('video');
700
- expect(data.ffs).to.equal('1');
701
- expect(data.ds).to.equal('1208');
702
- expect(data.dm).to.equal(DISPLAY_MANAGER);
703
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
704
- });
705
-
706
- it('Logger : do not log floor fields when prebids floor shows noData in location property', function() {
707
- const BID_REQUESTED_COPY = utils.deepClone(MOCK.BID_REQUESTED);
708
- BID_REQUESTED_COPY['bids'][1]['floorData']['location'] = 'noData';
709
-
710
- this.timeout(5000)
711
635
 
712
- sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
713
- return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
714
- });
715
-
716
- config.setConfig({
717
- testGroupId: 15
636
+ // check mandatory fields
637
+ expect(data).to.have.property('sd');
638
+ expect(data).to.have.property('fd');
639
+ expect(data).to.have.property('rd');
640
+
641
+ expect(data.rd.pubid).to.equal('9999');
642
+ expect(data.rd.pid).to.equal('1111');
643
+ expect(data.rd.pdvid).to.equal('20');
644
+ expect(data.rd.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
645
+ expect(data.rd.to).to.equal(3000);
646
+ expect(data.rd.purl).to.equal('http://www.test.com/page.html');
647
+ expect(data.rd.tst).to.equal(1519767016);
648
+ expect(data.rd.tgid).to.equal(15);
649
+ expect(data.fd.bdv.lip).to.deep.equal(['pubmaticId']);
650
+ expect(data.rd.s2sls).to.deep.equal(['pubmatic']);
651
+ expect(data.rd.ctr).to.equal('US');
652
+
653
+ // floor data in featureList
654
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
655
+ expect(data.fd.flr).to.have.property('enforcements');
656
+ expect(data.fd.flr.enforcements).to.deep.equal({
657
+ enforceJS: true,
658
+ enforcePBS: false,
659
+ floorDeals: false,
660
+ bidAdjustment: true
718
661
  });
662
+ expect(data.fd.flr.fetchStatus).to.equal('success');
663
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
664
+ expect(data.fd.flr.location).to.equal('fetch');
665
+ expect(data.fd.flr.skipRate).to.equal(0);
666
+ expect(data.fd.flr.skipped).to.equal(false); ;
719
667
 
720
- events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
721
- events.emit(BID_REQUESTED, BID_REQUESTED_COPY);
722
- events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
723
- events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
724
- events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
725
- events.emit(AUCTION_END, MOCK.AUCTION_END);
726
- events.emit(SET_TARGETING, MOCK.SET_TARGETING);
727
- events.emit(BID_WON, MOCK.BID_WON[0]);
728
- events.emit(BID_WON, MOCK.BID_WON[1]);
668
+ expect(data.sd).to.be.an('object');
669
+ expect(Object.keys(data.sd).length).to.equal(2);
729
670
 
730
- clock.tick(2000 + 1000);
731
- expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
732
- let request = requests[2]; // logger is executed late, trackers execute first
733
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
734
-
735
- let data = getLoggerJsonFromRequest(request.requestBody);
736
-
737
- expect(data.pubid).to.equal('9999');
738
- expect(data.fmv).to.equal(undefined);
739
-
740
- // slot 1
741
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
742
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
743
-
744
- // slot 2
745
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
746
- expect(data.s[1].au).to.equal('/19968336/header-bid-tag-1');
747
- expect(data.s[1].fskp).to.equal(undefined);
671
+ // tracker slot1
672
+ let firstTracker = requests[0];
673
+ expect(firstTracker.url).to.equal('https://t.pubmatic.com/wt?v=1&psrc=web');
674
+ let trackerData = getLoggerJsonFromRequest(firstTracker.requestBody);
675
+ expect(trackerData).to.have.property('sd');
676
+ expect(trackerData).to.have.property('fd');
677
+ expect(trackerData).to.have.property('rd');
678
+ expect(trackerData.rd.pubid).to.equal('9999');
679
+ expect(trackerData.rd.pid).to.equal('1111');
680
+ expect(trackerData.rd.pdvid).to.equal('20');
681
+ expect(trackerData.rd.purl).to.equal('http://www.test.com/page.html');
682
+ expect(trackerData.rd.ctr).to.equal('US');
748
683
  });
749
684
 
750
- it('Logger: log floor fields when prebids floor shows setConfig in location property', function() {
685
+ it('Logger: log floor fields when prebids floor shows setConfig in location property', function () {
751
686
  const BID_REQUESTED_COPY = utils.deepClone(MOCK.BID_REQUESTED);
752
- BID_REQUESTED_COPY['bids'][1]['floorData']['location'] = 'setConfig';
687
+ BID_REQUESTED_COPY['bids'][1]['floorData']['location'] = 'fetch';
753
688
 
754
689
  this.timeout(5000)
755
690
 
@@ -774,24 +709,33 @@ describe('pubmatic analytics adapter', function () {
774
709
  clock.tick(2000 + 1000);
775
710
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
776
711
  let request = requests[2]; // logger is executed late, trackers execute first
777
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
712
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
778
713
 
779
714
  let data = getLoggerJsonFromRequest(request.requestBody);
780
-
781
- expect(data.pubid).to.equal('9999');
782
- expect(data.fmv).to.equal('floorModelTest');
783
-
784
- // slot 1
785
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
786
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
787
-
788
- // slot 2
789
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
790
- expect(data.s[1].au).to.equal('/19968336/header-bid-tag-1');
791
- expect(data.s[1].fskp).to.equal(0);
715
+ // check mandatory fields
716
+ expect(data).to.have.property('sd');
717
+ expect(data).to.have.property('fd');
718
+ expect(data).to.have.property('rd');
719
+
720
+ expect(data.rd.pubid).to.equal('9999');
721
+ // floor data in featureList
722
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
723
+ expect(data.fd.flr).to.have.property('enforcements');
724
+ expect(data.fd.flr.enforcements).to.deep.equal({
725
+ enforceJS: true,
726
+ enforcePBS: false,
727
+ floorDeals: false,
728
+ bidAdjustment: true
729
+ });
730
+ expect(data.fd.flr.fetchStatus).to.equal('success');
731
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
732
+ expect(data.fd.flr.location).to.equal('fetch');
733
+ expect(data.fd.flr.skipRate).to.equal(0);
734
+ expect(data.fd.flr.skipped).to.equal(false); ;
792
735
  });
793
736
 
794
- it('bidCpmAdjustment: USD: Logger: best case + win tracker', function() {
737
+ // done
738
+ it('bidCpmAdjustment: USD: Logger: best case + win tracker', function () {
795
739
  const bidCopy = utils.deepClone(BID);
796
740
  bidCopy.cpm = bidCopy.originalCpm * 2; // bidCpmAdjustment => bidCpm * 2
797
741
  this.timeout(5000)
@@ -811,57 +755,50 @@ describe('pubmatic analytics adapter', function () {
811
755
  events.emit(BID_WON, MOCK.BID_WON[0]);
812
756
  events.emit(BID_WON, MOCK.BID_WON[1]);
813
757
 
814
- clock.tick(2000 + 1000);
758
+ clock.tick(3000 + 2000);
815
759
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
816
760
  let request = requests[2]; // logger is executed late, trackers execute first
817
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
761
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
818
762
  let data = getLoggerJsonFromRequest(request.requestBody);
819
- expect(data.pubid).to.equal('9999');
820
- expect(data.pid).to.equal('1111');
821
- expect(data.fmv).to.equal('floorModelTest');
822
- expect(data.ft).to.equal(1);
823
- expect(data.dm).to.equal(DISPLAY_MANAGER);
824
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
825
- expect(data.ctr).not.to.be.null;
826
- expect(data.s).to.be.an('array');
827
- expect(data.s.length).to.equal(2);
828
- expect(data.ffs).to.equal(1);
829
- expect(data.fsrc).to.equal(2);
830
- expect(data.fp).to.equal('pubmatic');
831
- expect(data.tgid).to.equal(0);
832
- // slot 1
833
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
834
- expect(data.s[0].fskp).to.equal(0);
835
- expect(data.s[0].sid).not.to.be.undefined;
836
- expect(data.s[0].sz).to.deep.equal(['640x480']);
837
- expect(data.s[0].ps).to.be.an('array');
838
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
839
- expect(data.s[0].ps.length).to.equal(1);
840
- expect(data.s[0].ps[0].pn).to.equal('pubmatic');
841
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
842
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
843
- expect(data.s[0].ps[0].kgpv).to.equal('/19968336/header-bid-tag-0');
844
- expect(data.s[0].ps[0].eg).to.equal(1.23);
845
- expect(data.s[0].ps[0].en).to.equal(2.46);
846
- expect(data.s[0].ps[0].wb).to.equal(1);
847
- expect(data.s[0].ps[0].af).to.equal('video');
848
- expect(data.s[0].ps[0].ocpm).to.equal(1.23);
849
- expect(data.s[0].ps[0].ocry).to.equal('USD');
850
- expect(data.s[1].ps[0].frv).to.equal(1.1);
851
- expect(data.s[1].ps[0].pb).to.equal(1.50);
763
+
764
+ // check mandatory fields
765
+ expect(data).to.have.property('sd');
766
+ expect(data).to.have.property('fd');
767
+ expect(data).to.have.property('rd');
768
+
769
+ expect(data.rd.pubid).to.equal('9999');
770
+ expect(data.rd.pid).to.equal('1111');
771
+ expect(data.rd.tgid).to.equal(0);
772
+ // floor data in featureList
773
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
774
+ expect(data.fd.flr).to.have.property('enforcements');
775
+ expect(data.fd.flr.enforcements).to.deep.equal({
776
+ enforceJS: true,
777
+ enforcePBS: false,
778
+ floorDeals: false,
779
+ bidAdjustment: true
780
+ });
781
+ expect(data.fd.flr.fetchStatus).to.equal('success');
782
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
783
+ expect(data.fd.flr.location).to.equal('fetch');
784
+ expect(data.fd.flr.skipRate).to.equal(0);
785
+ expect(data.fd.flr.skipped).to.equal(false);
786
+
787
+ expect(data.sd).to.be.an('object');
788
+ expect(Object.keys(data.sd).length).to.equal(2);
789
+
790
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidGrossCpmUSD).to.equal(1.23);
791
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidPriceUSD).to.equal(2.46);
852
792
  // tracker slot1
853
793
  let firstTracker = requests[0].url;
854
794
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
855
795
  data = {};
856
796
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
857
- expect(data.pubid).to.equal('9999');
858
- expect(data.tst).to.equal('1519767014');
859
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
860
- expect(data.eg).to.equal('1.23');
861
- expect(data.en).to.equal('2.46');
797
+ expect(data.v).to.equal('1');
798
+ expect(data.psrc).to.equal('web');
862
799
  });
863
800
 
864
- it('bidCpmAdjustment: JPY: Logger: best case + win tracker', function() {
801
+ it('bidCpmAdjustment: JPY: Logger: best case + win tracker', function () {
865
802
  config.setConfig({
866
803
  testGroupId: 25
867
804
  });
@@ -882,7 +819,6 @@ describe('pubmatic analytics adapter', function () {
882
819
 
883
820
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
884
821
  events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
885
- // events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
886
822
  events.emit(BID_RESPONSE, bidCopy);
887
823
  events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
888
824
  events.emit(BID_RESPONSE, bidCopy);
@@ -895,47 +831,45 @@ describe('pubmatic analytics adapter', function () {
895
831
  clock.tick(2000 + 1000);
896
832
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
897
833
  let request = requests[2]; // logger is executed late, trackers execute first
898
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
834
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
899
835
  let data = getLoggerJsonFromRequest(request.requestBody);
900
- expect(data.pubid).to.equal('9999');
901
- expect(data.pid).to.equal('1111');
902
- expect(data.tgid).to.equal(0);// test group id should be between 0-15 else set to 0
903
- expect(data.fmv).to.equal('floorModelTest');
904
- expect(data.ft).to.equal(1);
905
- expect(data.dm).to.equal(DISPLAY_MANAGER);
906
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
907
- expect(data.ctr).not.to.be.null;
908
- expect(data.s).to.be.an('array');
909
- expect(data.s.length).to.equal(2);
910
- // slot 1
911
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
912
- expect(data.s[0].sz).to.deep.equal(['640x480']);
913
- expect(data.s[0].ps).to.be.an('array');
914
- expect(data.s[0].ps.length).to.equal(1);
915
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
916
- expect(data.s[0].ps[0].pn).to.equal('pubmatic');
917
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
918
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
919
- expect(data.s[0].ps[0].kgpv).to.equal('/19968336/header-bid-tag-0');
920
- expect(data.s[0].ps[0].eg).to.equal(1);
921
- expect(data.s[0].ps[0].en).to.equal(200);
922
- expect(data.s[0].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
923
- expect(data.s[0].ps[0].af).to.equal('video');
924
- expect(data.s[0].ps[0].ocpm).to.equal(100);
925
- expect(data.s[0].ps[0].ocry).to.equal('JPY');
836
+ // check mandatory fields
837
+ expect(data).to.have.property('sd');
838
+ expect(data).to.have.property('fd');
839
+ expect(data).to.have.property('rd');
840
+
841
+ expect(data.rd.pubid).to.equal('9999');
842
+ expect(data.rd.pid).to.equal('1111');
843
+ expect(data.rd.tgid).to.equal(0);// test group id should be between 0-15 else set to 0
844
+ // floor data in featureList
845
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
846
+ expect(data.fd.flr).to.have.property('enforcements');
847
+ expect(data.fd.flr.enforcements).to.deep.equal({
848
+ enforceJS: true,
849
+ enforcePBS: false,
850
+ floorDeals: false,
851
+ bidAdjustment: true
852
+ });
853
+ expect(data.fd.flr.fetchStatus).to.equal('success');
854
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
855
+ expect(data.fd.flr.location).to.equal('fetch');
856
+ expect(data.fd.flr.skipRate).to.equal(0);
857
+ expect(data.fd.flr.skipped).to.equal(false); ;
858
+ expect(data.sd).to.be.an('object');
859
+ expect(Object.keys(data.sd).length).to.equal(2);
860
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidGrossCpmUSD).to.equal(1);
861
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidPriceUSD).to.equal(200); // bidPriceUSD is not getting set as currency module is not added
862
+
926
863
  // tracker slot1
927
864
  let firstTracker = requests[0].url;
928
865
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
929
866
  data = {};
930
867
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
931
- expect(data.pubid).to.equal('9999');
932
- expect(data.tst).to.equal('1519767014');
933
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
934
- expect(data.eg).to.equal('1');
935
- expect(data.en).to.equal('200'); // bidPriceUSD is not getting set as currency module is not added
868
+ expect(data.v).to.equal('1');
869
+ expect(data.psrc).to.equal('web');
936
870
  });
937
871
 
938
- it('Logger: when bid is not submitted, default bid status 1 check: pubmatic set as s2s', function() {
872
+ it('Logger: when bid is not submitted, default bid status 1 check: pubmatic set as s2s', function () {
939
873
  config.setConfig({
940
874
  testGroupId: '25'
941
875
  });
@@ -952,42 +886,26 @@ describe('pubmatic analytics adapter', function () {
952
886
  expect(requests.length).to.equal(2); // 1 logger and 1 win-tracker
953
887
  let request = requests[1]; // logger is executed late, trackers execute first
954
888
  let data = getLoggerJsonFromRequest(request.requestBody);
955
- expect(data.ctr).not.to.be.null;
956
- expect(data.tgid).to.equal(0);// test group id should be an INT between 0-15 else set to 0
957
- expect(data.ffs).to.equal(1);
958
- expect(data.fsrc).to.equal(2);
959
- expect(data.fp).to.equal('pubmatic');
960
-
961
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
962
- expect(data.s[1].fskp).to.equal(0);
963
- expect(data.s[1].sid).not.to.be.undefined;
964
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
965
- expect(data.s[1].ps).to.be.an('array');
966
- expect(data.s[1].ps.length).to.equal(1);
967
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
968
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
969
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
970
- expect(data.s[1].ps[0].db).to.equal(1);
971
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
972
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
973
- expect(data.s[1].ps[0].psz).to.equal('0x0');
974
- expect(data.s[1].ps[0].eg).to.equal(0);
975
- expect(data.s[1].ps[0].en).to.equal(0);
976
- expect(data.s[1].ps[0].di).to.equal('-1');
977
- expect(data.s[1].ps[0].dc).to.equal('');
978
- expect(data.s[1].ps[0].mi).to.equal(undefined);
979
- expect(data.s[1].ps[0].l1).to.equal(0);
980
- expect(data.s[1].ps[0].l2).to.equal(0);
981
- expect(data.s[1].ps[0].ss).to.equal(1);
982
- expect(data.s[1].ps[0].t).to.equal(0);
983
- expect(data.s[1].ps[0].wb).to.equal(0);
984
- expect(data.s[1].ps[0].af).to.equal(undefined);
985
- expect(data.s[1].ps[0].ocpm).to.equal(0);
986
- expect(data.s[1].ps[0].ocry).to.equal('USD');
987
- expect(data.s[1].ps[0].frv).to.equal(undefined);
889
+
890
+ // check mandatory fields
891
+ expect(data).to.have.property('sd');
892
+ expect(data).to.have.property('fd');
893
+ expect(data).to.have.property('rd');
894
+
895
+ expect(data.rd.tgid).to.equal(0);// test group id should be an INT between 0-15 else set to 0
896
+
897
+ expect(data.sd).to.be.an('object');
898
+ expect(Object.keys(data.sd).length).to.equal(2);
899
+
900
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-0');
901
+ expect(data.sd['/19968336/header-bid-tag-0'].dimensions).to.deep.equal([[640, 480]])
902
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].adapterCode).to.equal('pubmatic');
903
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidderCode).to.equal('pubmatic');
904
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCpm).to.equal(1.23);
905
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCurrency).to.equal('USD');
988
906
  });
989
907
 
990
- it('Logger: post-timeout check without bid response', function() {
908
+ it('Logger: post-timeout check without bid response', function () {
991
909
  // db = 1 and t = 1 means bidder did NOT respond with a bid but we got a timeout notification
992
910
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
993
911
  events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
@@ -998,33 +916,22 @@ describe('pubmatic analytics adapter', function () {
998
916
  expect(requests.length).to.equal(1); // 1 logger and 0 win-tracker
999
917
  let request = requests[0];
1000
918
  let data = getLoggerJsonFromRequest(request.requestBody);
1001
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1002
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1003
- expect(data.s[1].ps).to.be.an('array');
1004
- expect(data.s[1].ps.length).to.equal(1);
1005
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1006
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
1007
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1008
- expect(data.s[1].ps[0].db).to.equal(1);
1009
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1010
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1011
- expect(data.s[1].ps[0].psz).to.equal('0x0');
1012
- expect(data.s[1].ps[0].eg).to.equal(0);
1013
- expect(data.s[1].ps[0].en).to.equal(0);
1014
- expect(data.s[1].ps[0].di).to.equal('-1');
1015
- expect(data.s[1].ps[0].dc).to.equal('');
1016
- expect(data.s[1].ps[0].mi).to.equal(undefined);
1017
- expect(data.s[1].ps[0].l1).to.equal(0);
1018
- expect(data.s[1].ps[0].l2).to.equal(0);
1019
- expect(data.s[1].ps[0].ss).to.equal(1);
1020
- expect(data.s[1].ps[0].t).to.equal(1);
1021
- expect(data.s[1].ps[0].wb).to.equal(0);
1022
- expect(data.s[1].ps[0].af).to.equal(undefined);
1023
- expect(data.s[1].ps[0].ocpm).to.equal(0);
1024
- expect(data.s[1].ps[0].ocry).to.equal('USD');
919
+ // check mandatory fields
920
+ expect(data).to.have.property('sd');
921
+ expect(data).to.have.property('fd');
922
+ expect(data).to.have.property('rd');
923
+
924
+ expect(data.sd).to.be.an('object');
925
+ expect(Object.keys(data.sd).length).to.equal(2);
926
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
927
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
928
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
929
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
930
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.kgpv).to.equal('this-is-a-kgpv');
931
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.not.have.property('bidResponse')
1025
932
  });
1026
933
 
1027
- it('Logger: post-timeout check with bid response', function() {
934
+ it('Logger: post-timeout check with bid response', function () {
1028
935
  // db = 1 and t = 1 means bidder did NOT respond with a bid but we got a timeout notification
1029
936
 
1030
937
  sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
@@ -1041,43 +948,31 @@ describe('pubmatic analytics adapter', function () {
1041
948
  expect(requests.length).to.equal(1); // 1 logger and 0 win-tracker
1042
949
  let request = requests[0];
1043
950
  let data = getLoggerJsonFromRequest(request.requestBody);
1044
- expect(data.ffs).to.equal(1);
1045
- expect(data.fsrc).to.equal(2);
1046
- expect(data.fp).to.equal('pubmatic');
1047
-
1048
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1049
- expect(data.s[1].fskp).to.equal(0);
1050
- expect(data.s[1].sid).not.to.be.undefined;
1051
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1052
- expect(data.s[1].ps).to.be.an('array');
1053
- expect(data.s[1].ps.length).to.equal(1);
1054
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1055
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1056
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1057
- expect(data.s[1].ps[0].db).to.equal(0);
1058
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1059
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1060
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1061
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1062
- expect(data.s[1].ps[0].en).to.equal(1.52);
1063
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1064
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1065
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1066
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1067
- expect(data.s[0].ps[0].l1).to.equal(0);
1068
- expect(data.s[0].ps[0].ol1).to.equal(0);
1069
- expect(data.s[1].ps[0].l2).to.equal(0);
1070
- expect(data.s[1].ps[0].ss).to.equal(1);
1071
- expect(data.s[1].ps[0].t).to.equal(1);
1072
- expect(data.s[1].ps[0].wb).to.equal(1); // todo
1073
- expect(data.s[1].ps[0].af).to.equal('banner');
1074
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1075
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1076
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1077
- expect(data.s[1].ps[0].pb).to.equal(1.50);
951
+ // check mandatory fields
952
+ expect(data).to.have.property('sd');
953
+ expect(data).to.have.property('fd');
954
+ expect(data).to.have.property('rd');
955
+
956
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
957
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
958
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
959
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
960
+
961
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.kgpv).to.equal('this-is-a-kgpv');
962
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
963
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
964
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
965
+
966
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
967
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
968
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
969
+ expect(data.rd.s2sls).to.deep.equal(['pubmatic']);
970
+
971
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].status).to.equal('error');
972
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1078
973
  });
1079
974
 
1080
- it('Logger: currency conversion check', function() {
975
+ it('Logger: currency conversion check', function () {
1081
976
  setUANull();
1082
977
  setConfig({
1083
978
  adServerCurrency: 'JPY',
@@ -1106,39 +1001,27 @@ describe('pubmatic analytics adapter', function () {
1106
1001
  clock.tick(2000 + 1000);
1107
1002
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1108
1003
  let request = requests[2]; // logger is executed late, trackers execute first
1109
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1004
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1110
1005
  let data = getLoggerJsonFromRequest(request.requestBody);
1111
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1112
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1113
- expect(data.s[1].ps).to.be.an('array');
1114
- expect(data.s[1].sid).not.to.be.undefined;
1115
- expect(data.s[1].ps.length).to.equal(1);
1116
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1117
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1118
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1119
- expect(data.s[1].ps[0].db).to.equal(0);
1120
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1121
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1122
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1123
- expect(data.s[1].ps[0].eg).to.equal(1);
1124
- expect(data.s[1].ps[0].en).to.equal(100);
1125
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1126
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1127
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1128
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1129
- expect(data.s[0].ps[0].l1).to.equal(944);
1130
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1131
- expect(data.s[1].ps[0].l2).to.equal(0);
1132
- expect(data.s[1].ps[0].ss).to.equal(1);
1133
- expect(data.s[1].ps[0].t).to.equal(0);
1134
- expect(data.s[1].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
1135
- expect(data.s[1].ps[0].af).to.equal('banner');
1136
- expect(data.s[1].ps[0].ocpm).to.equal(100);
1137
- expect(data.s[1].ps[0].ocry).to.equal('JPY');
1138
- expect(data.dvc).to.deep.equal({'plt': 3});
1006
+ // check mandatory fields
1007
+ expect(data).to.have.property('sd');
1008
+ expect(data).to.have.property('fd');
1009
+ expect(data).to.have.property('rd');
1010
+
1011
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1012
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1013
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1014
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1015
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1016
+
1017
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1018
+
1019
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(100);
1020
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('JPY');
1021
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1139
1022
  });
1140
1023
 
1141
- it('Logger: regexPattern in bid.params', function() {
1024
+ it('Logger: regexPattern in bid.params', function () {
1142
1025
  setUAMobile();
1143
1026
  const BID_REQUESTED_COPY = utils.deepClone(MOCK.BID_REQUESTED);
1144
1027
  BID_REQUESTED_COPY.bids[1].params.regexPattern = '*';
@@ -1155,51 +1038,50 @@ describe('pubmatic analytics adapter', function () {
1155
1038
  clock.tick(2000 + 1000);
1156
1039
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1157
1040
  let request = requests[2]; // logger is executed late, trackers execute first
1158
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1041
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1159
1042
  let data = getLoggerJsonFromRequest(request.requestBody);
1160
- expect(data.ffs).to.equal(1);
1161
- expect(data.fsrc).to.equal(2);
1162
- expect(data.fp).to.equal('pubmatic');
1163
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1164
- expect(data.s[1].fskp).to.equal(0);
1165
- expect(data.s[1].sid).not.to.be.undefined;
1166
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1167
- expect(data.s[1].ps).to.be.an('array');
1168
- expect(data.s[1].ps.length).to.equal(1);
1169
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1170
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1171
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1172
- expect(data.s[1].ps[0].db).to.equal(0);
1173
- expect(data.s[1].ps[0].kgpv).to.equal('*');
1174
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1175
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1176
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1177
- expect(data.s[1].ps[0].en).to.equal(1.52);
1178
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1179
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1180
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1181
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1182
- expect(data.s[0].ps[0].l1).to.equal(944);
1183
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1184
- expect(data.s[1].ps[0].l2).to.equal(0);
1185
- expect(data.s[1].ps[0].ss).to.equal(1);
1186
- expect(data.s[1].ps[0].t).to.equal(0);
1187
- expect(data.s[1].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
1188
- expect(data.s[1].ps[0].af).to.equal('banner');
1189
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1190
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1191
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1192
- expect(data.s[1].ps[0].pb).to.equal(1.50);
1193
- expect(data.dvc).to.deep.equal({'plt': 2});
1194
- // respective tracker slot
1043
+
1044
+ // check mandatory fields
1045
+ expect(data).to.have.property('sd');
1046
+ expect(data).to.have.property('fd');
1047
+ expect(data).to.have.property('rd');
1048
+
1049
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1050
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1051
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1052
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1053
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1054
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1055
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1056
+ expect(data.fd.flr.skipped).to.equal(false);
1057
+
1058
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1059
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(1.52);
1060
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.regexPattern).to.equal("*");
1061
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1062
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1063
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1064
+
1065
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1066
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1067
+
1068
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1069
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1070
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1071
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1072
+
1073
+ expect(data.sd['/19968336/header-bid-tag-1'].bidWonAdId).to.equal('fake_ad_id_2');
1074
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1075
+
1195
1076
  let firstTracker = requests[1].url;
1196
1077
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1197
1078
  data = {};
1198
1079
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1199
- expect(data.kgpv).to.equal('*');
1080
+ expect(data.v).to.equal('1');
1081
+ expect(data.psrc).to.equal('web');
1200
1082
  });
1201
1083
 
1202
- it('Logger: regexPattern in bid.bidResponse and url in adomain', function() {
1084
+ it('Logger: regexPattern in bid.bidResponse and url in adomain', function () {
1203
1085
  const BID2_COPY = utils.deepClone(BID2);
1204
1086
  BID2_COPY.regexPattern = '*';
1205
1087
  BID2_COPY.meta.advertiserDomains = ['https://www.example.com/abc/223']
@@ -1219,47 +1101,31 @@ describe('pubmatic analytics adapter', function () {
1219
1101
  clock.tick(2000 + 1000);
1220
1102
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1221
1103
  let request = requests[2]; // logger is executed late, trackers execute first
1222
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1104
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1223
1105
  let data = getLoggerJsonFromRequest(request.requestBody);
1224
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1225
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1226
- expect(data.s[1].sid).not.to.be.undefined;
1227
- expect(data.s[1].ps).to.be.an('array');
1228
- expect(data.s[1].ps.length).to.equal(1);
1229
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1230
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1231
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1232
- expect(data.s[1].ps[0].db).to.equal(0);
1233
- expect(data.s[1].ps[0].kgpv).to.equal('*');
1234
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1235
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1236
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1237
- expect(data.s[1].ps[0].en).to.equal(1.52);
1238
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1239
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1240
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1241
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1242
- expect(data.s[0].ps[0].l1).to.equal(944);
1243
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1244
- expect(data.s[1].ps[0].l2).to.equal(0);
1245
- expect(data.s[1].ps[0].ss).to.equal(1);
1246
- expect(data.s[1].ps[0].t).to.equal(0);
1247
- expect(data.s[1].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
1248
- expect(data.s[1].ps[0].af).to.equal('banner');
1249
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1250
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1251
- expect(data.dvc).to.deep.equal({'plt': 1});
1252
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1253
- expect(data.s[1].ps[0].pb).to.equal(1.50);
1106
+ // check mandatory fields
1107
+ expect(data).to.have.property('sd');
1108
+ expect(data).to.have.property('fd');
1109
+ expect(data).to.have.property('rd');
1110
+
1111
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1112
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1113
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1114
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1115
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1116
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1117
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorValue).to.equal(1.1);
1118
+
1254
1119
  // respective tracker slot
1255
1120
  let firstTracker = requests[1].url;
1256
1121
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1257
1122
  data = {};
1258
1123
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1259
- expect(data.kgpv).to.equal('*');
1124
+ expect(data.v).to.equal('1');
1125
+ expect(data.psrc).to.equal('web');
1260
1126
  });
1261
1127
 
1262
- it('Logger: regexPattern in bid.params', function() {
1128
+ it('Logger: regexPattern in bid.params', function () {
1263
1129
  const BID_REQUESTED_COPY = utils.deepClone(MOCK.BID_REQUESTED);
1264
1130
  BID_REQUESTED_COPY.bids[1].params.regexPattern = '*';
1265
1131
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
@@ -1275,50 +1141,49 @@ describe('pubmatic analytics adapter', function () {
1275
1141
  clock.tick(2000 + 1000);
1276
1142
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1277
1143
  let request = requests[2]; // logger is executed late, trackers execute first
1278
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1144
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1279
1145
  let data = getLoggerJsonFromRequest(request.requestBody);
1280
- expect(data.ffs).to.equal(1);
1281
- expect(data.fsrc).to.equal(2);
1282
- expect(data.fp).to.equal('pubmatic');
1283
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1284
- expect(data.s[1].fskp).to.equal(0);
1285
- expect(data.s[1].sid).not.to.be.undefined;
1286
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1287
- expect(data.s[1].ps).to.be.an('array');
1288
- expect(data.s[1].ps.length).to.equal(1);
1289
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1290
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1291
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1292
- expect(data.s[1].ps[0].db).to.equal(0);
1293
- expect(data.s[1].ps[0].kgpv).to.equal('*');
1294
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1295
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1296
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1297
- expect(data.s[1].ps[0].en).to.equal(1.52);
1298
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1299
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1300
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1301
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1302
- expect(data.s[0].ps[0].l1).to.equal(944);
1303
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1304
- expect(data.s[1].ps[0].l2).to.equal(0);
1305
- expect(data.s[1].ps[0].ss).to.equal(1);
1306
- expect(data.s[1].ps[0].t).to.equal(0);
1307
- expect(data.s[1].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
1308
- expect(data.s[1].ps[0].af).to.equal('banner');
1309
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1310
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1311
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1312
- expect(data.s[1].ps[0].pb).to.equal(1.50);
1313
- // respective tracker slot
1146
+ // check mandatory fields
1147
+ expect(data).to.have.property('sd');
1148
+ expect(data).to.have.property('fd');
1149
+ expect(data).to.have.property('rd');
1150
+
1151
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1152
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1153
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1154
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1155
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1156
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1157
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1158
+ expect(data.fd.flr.skipped).to.equal(false);
1159
+
1160
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1161
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(1.52);
1162
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.regexPattern).to.equal("*");
1163
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1164
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1165
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1166
+
1167
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1168
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1169
+
1170
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1171
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1172
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1173
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1174
+
1175
+ expect(data.sd['/19968336/header-bid-tag-1'].bidWonAdId).to.equal('fake_ad_id_2');
1176
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1177
+
1314
1178
  let firstTracker = requests[1].url;
1315
1179
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1316
1180
  data = {};
1317
1181
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1318
- expect(data.kgpv).to.equal('*');
1182
+ expect(data.v).to.equal('1');
1183
+ expect(data.psrc).to.equal('web');
1319
1184
  });
1320
1185
 
1321
- it('Logger: regexPattern in bid.bidResponse', function() {
1186
+ it('Logger: regexPattern in bid.bidResponse', function () {
1322
1187
  const BID2_COPY = utils.deepClone(BID2);
1323
1188
  BID2_COPY.regexPattern = '*';
1324
1189
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
@@ -1337,44 +1202,44 @@ describe('pubmatic analytics adapter', function () {
1337
1202
  clock.tick(2000 + 1000);
1338
1203
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1339
1204
  let request = requests[2]; // logger is executed late, trackers execute first
1340
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1205
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1341
1206
  let data = getLoggerJsonFromRequest(request.requestBody);
1342
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1343
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1344
- expect(data.s[1].sid).not.to.be.undefined;
1345
- expect(data.s[1].ps).to.be.an('array');
1346
- expect(data.s[1].ps.length).to.equal(1);
1347
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1348
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1349
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1350
- expect(data.s[1].ps[0].db).to.equal(0);
1351
- expect(data.s[1].ps[0].kgpv).to.equal('*');
1352
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1353
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1354
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1355
- expect(data.s[1].ps[0].en).to.equal(1.52);
1356
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1357
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1358
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1359
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1360
- expect(data.s[0].ps[0].l1).to.equal(944);
1361
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1362
- expect(data.s[1].ps[0].l2).to.equal(0);
1363
- expect(data.s[1].ps[0].ss).to.equal(1);
1364
- expect(data.s[1].ps[0].t).to.equal(0);
1365
- expect(data.s[1].ps[0].wb).to.equal(0); // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
1366
- expect(data.s[1].ps[0].af).to.equal('banner');
1367
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1368
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1369
- // respective tracker slot
1370
- let firstTracker = requests[1].url;
1371
- expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1372
- data = {};
1373
- firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1374
- expect(data.kgpv).to.equal('*');
1207
+ // check mandatory fields
1208
+ expect(data).to.have.property('sd');
1209
+ expect(data).to.have.property('fd');
1210
+ expect(data).to.have.property('rd');
1211
+
1212
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1213
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1214
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1215
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1216
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1217
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1218
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1219
+ expect(data.fd.flr.skipped).to.equal(false);
1220
+
1221
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1222
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(1.52);
1223
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1224
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1225
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1226
+
1227
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1228
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1229
+
1230
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.regexPattern).to.equal('*');
1231
+
1232
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1233
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1234
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1235
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1236
+
1237
+ expect(data.sd['/19968336/header-bid-tag-1'].bidWonAdId).to.equal('fake_ad_id_2');
1238
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1239
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealChannel).to.equal('PMP');
1375
1240
  });
1376
1241
 
1377
- it('Logger: to handle floor rejected bids', function() {
1242
+ it('Logger: to handle floor rejected bids', function () {
1378
1243
  this.timeout(5000)
1379
1244
 
1380
1245
  sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
@@ -1393,48 +1258,47 @@ describe('pubmatic analytics adapter', function () {
1393
1258
  clock.tick(2000 + 1000);
1394
1259
  expect(requests.length).to.equal(2); // 1 logger and 1 win-tracker
1395
1260
  let request = requests[1]; // logger is executed late, trackers execute first
1396
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1261
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1397
1262
  let data = getLoggerJsonFromRequest(request.requestBody);
1398
- expect(data.ffs).to.equal(1);
1399
- expect(data.fsrc).to.equal(2);
1400
- expect(data.fp).to.equal('pubmatic');
1401
-
1402
- // slot 2
1403
- // Testing only for rejected bid as other scenarios will be covered under other TCs
1404
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1405
- expect(data.s[1].fskp).to.equal(0);
1406
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1407
- expect(data.s[1].sid).not.to.be.undefined;
1408
- expect(data.s[1].ps).to.be.an('array');
1409
- expect(data.s[1].ps.length).to.equal(1);
1410
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1411
- expect(data.s[0].ps[0].bc).to.equal('pubmatic');
1412
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1413
- expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
1414
- expect(data.s[1].ps[0].db).to.equal(0);
1415
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1416
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1417
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1418
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1419
- expect(data.s[1].ps[0].en).to.equal(0); // Net CPM is market as 0 due to bid rejection
1420
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1421
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1422
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1423
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1424
- expect(data.s[0].ps[0].l1).to.equal(944);
1425
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1426
- expect(data.s[1].ps[0].l2).to.equal(0);
1427
- expect(data.s[1].ps[0].ss).to.equal(1);
1428
- expect(data.s[1].ps[0].t).to.equal(0);
1429
- expect(data.s[1].ps[0].wb).to.equal(1);
1430
- expect(data.s[1].ps[0].af).to.equal('banner');
1431
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1432
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1433
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1434
- expect(data.s[1].ps[0].pb).to.equal(1.50);
1263
+ // check mandatory fields
1264
+ expect(data).to.have.property('sd');
1265
+ expect(data).to.have.property('fd');
1266
+ expect(data).to.have.property('rd');
1267
+
1268
+ expect(data.fd.flr.fetchStatus).to.equal('success');
1269
+ expect(data.fd.flr).to.have.property('enforcements');
1270
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
1271
+
1272
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1273
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1274
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1275
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1276
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1277
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1278
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1279
+ expect(data.fd.flr.skipped).to.equal(false);
1280
+
1281
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1282
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(0);
1283
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1284
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1285
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1286
+
1287
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1288
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1289
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1290
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1291
+
1292
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1293
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1294
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1295
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1296
+
1297
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1298
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealChannel).to.equal('PMP');
1435
1299
  });
1436
1300
 
1437
- it('Logger: best case + win tracker in case of Bidder Aliases', function() {
1301
+ it('Logger: best case + win tracker in case of Bidder Aliases', function () {
1438
1302
  MOCK.BID_REQUESTED['bids'][0]['bidder'] = 'pubmatic_alias';
1439
1303
  MOCK.BID_REQUESTED['bids'][0]['bidderCode'] = 'pubmatic_alias';
1440
1304
  adapterManager.aliasRegistry['pubmatic_alias'] = 'pubmatic';
@@ -1460,115 +1324,107 @@ describe('pubmatic analytics adapter', function () {
1460
1324
  clock.tick(2000 + 1000);
1461
1325
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1462
1326
  let request = requests[2]; // logger is executed late, trackers execute first
1463
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1327
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1464
1328
  let data = getLoggerJsonFromRequest(request.requestBody);
1465
- expect(data.pubid).to.equal('9999');
1466
- expect(data.pid).to.equal('1111');
1467
- expect(data.pdvid).to.equal('20');
1468
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1469
- expect(data.to).to.equal('3000');
1470
- expect(data.purl).to.equal('http://www.test.com/page.html');
1471
- expect(data.orig).to.equal('www.test.com');
1472
- expect(data.tst).to.equal(1519767016);
1473
- expect(data.tgid).to.equal(15);
1474
- expect(data.fmv).to.equal('floorModelTest');
1475
- expect(data.dm).to.equal(DISPLAY_MANAGER);
1476
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
1477
- expect(data.ctr).not.to.be.null;
1478
- expect(data.ft).to.equal(1);
1479
- expect(data.s).to.be.an('array');
1480
- expect(data.s.length).to.equal(2);
1481
- expect(data.ffs).to.equal(1);
1482
- expect(data.fsrc).to.equal(2);
1483
- expect(data.fp).to.equal('pubmatic');
1329
+ // check mandatory fields
1330
+ expect(data).to.have.property('sd');
1331
+ expect(data).to.have.property('fd');
1332
+ expect(data).to.have.property('rd');
1333
+
1334
+ expect(data.rd.pubid).to.equal('9999');
1335
+ expect(data.rd.pid).to.equal('1111');
1336
+ expect(data.rd.pdvid).to.equal('20');
1337
+ expect(data.rd.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1338
+ expect(data.rd.to).to.equal(3000);
1339
+ expect(data.rd.purl).to.equal('http://www.test.com/page.html');
1340
+ expect(data.rd.tst).to.equal(1519767016);
1341
+ expect(data.rd.tgid).to.equal(15);
1342
+
1343
+ // floor data in featureList
1344
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
1345
+ expect(data.fd.flr).to.have.property('enforcements');
1346
+ expect(data.fd.flr.enforcements).to.deep.equal({
1347
+ enforceJS: true,
1348
+ enforcePBS: false,
1349
+ floorDeals: false,
1350
+ bidAdjustment: true
1351
+ });
1352
+ expect(data.fd.flr.fetchStatus).to.equal('success');
1353
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
1354
+ expect(data.fd.flr.location).to.equal('fetch');
1355
+ expect(data.fd.flr.skipRate).to.equal(0);
1356
+ expect(data.fd.flr.skipped).to.equal(false);
1357
+
1358
+ expect(data.sd).to.be.an('object');
1359
+ expect(Object.keys(data.sd).length).to.equal(2);
1484
1360
 
1485
1361
  // slot 1
1486
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
1487
- expect(data.s[0].fskp).to.equal(0);
1488
- expect(data.s[0].sz).to.deep.equal(['640x480']);
1489
- expect(data.s[0].sid).not.to.be.undefined;
1490
- expect(data.s[0].ps).to.be.an('array');
1491
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
1492
- expect(data.s[0].ps.length).to.equal(1);
1493
- expect(data.s[0].ps[0].pn).to.equal('pubmatic');
1494
- expect(data.s[0].ps[0].bc).to.equal('pubmatic_alias');
1495
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
1496
- expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
1497
- expect(data.s[0].ps[0].db).to.equal(0);
1498
- expect(data.s[0].ps[0].kgpv).to.equal('/19968336/header-bid-tag-0');
1499
- expect(data.s[0].ps[0].kgpsv).to.equal('/19968336/header-bid-tag-0');
1500
- expect(data.s[0].ps[0].psz).to.equal('640x480');
1501
- expect(data.s[0].ps[0].eg).to.equal(1.23);
1502
- expect(data.s[0].ps[0].en).to.equal(1.23);
1503
- expect(data.s[0].ps[0].di).to.equal('-1');
1504
- expect(data.s[0].ps[0].dc).to.equal('');
1505
- expect(data.s[0].ps[0].l1).to.equal(944);
1506
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1507
- expect(data.s[0].ps[0].l2).to.equal(0);
1508
- expect(data.s[0].ps[0].ss).to.equal(0);
1509
- expect(data.s[0].ps[0].t).to.equal(0);
1510
- expect(data.s[0].ps[0].wb).to.equal(1);
1511
- expect(data.s[0].ps[0].af).to.equal('video');
1512
- expect(data.s[0].ps[0].ocpm).to.equal(1.23);
1513
- expect(data.s[0].ps[0].ocry).to.equal('USD');
1514
- expect(data.s[0].ps[0].frv).to.equal(1.1);
1515
- expect(data.s[0].ps[0].pb).to.equal(1.2);
1362
+
1363
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-0');
1364
+
1365
+ expect(data.sd['/19968336/header-bid-tag-0'].bids).to.have.property('2ecff0db240757');
1366
+ expect(data.sd['/19968336/header-bid-tag-0'].dimensions).to.deep.equal([[640, 480]])
1367
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].adapterCode).to.equal('pubmatic');
1368
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidderCode).to.equal('pubmatic_alias');
1369
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCpm).to.equal(1.23);
1370
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCurrency).to.equal('USD');
1371
+
1372
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0]).to.have.property('bidResponse');
1373
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidId).to.equal('2ecff0db240757');
1374
+ expect(data.fd.flr.skipped).to.equal(false);
1375
+
1376
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidGrossCpmUSD).to.equal(1.23);
1377
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidPriceUSD).to.equal(1.23);
1378
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].partnerTimeToRespond).to.equal(944);
1379
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].clientLatencyTimeMs).to.equal(3214);
1380
+
1381
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCpm).to.equal(1.23);
1382
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCurrency).to.equal('USD');
1383
+
1384
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.mediaType).to.equal('video');
1385
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1386
+
1387
+ expect(data.sd['/19968336/header-bid-tag-0'].bidWonAdId).to.equal('fake_ad_id');
1388
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.2);
1516
1389
 
1517
1390
  // slot 2
1518
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1519
- expect(data.s[1].fskp).to.equal(0);
1520
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1521
- expect(data.s[1].sid).not.to.be.undefined;
1522
- expect(data.s[1].ps).to.be.an('array');
1523
- expect(data.s[1].ps.length).to.equal(1);
1524
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1525
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1526
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1527
- expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
1528
- expect(data.s[1].ps[0].db).to.equal(0);
1529
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1530
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1531
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1532
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1533
- expect(data.s[1].ps[0].en).to.equal(1.52);
1534
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1535
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1536
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1537
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1538
- expect(data.s[0].ps[0].l1).to.equal(944);
1539
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1540
- expect(data.s[1].ps[0].l2).to.equal(0);
1541
- expect(data.s[1].ps[0].ss).to.equal(1);
1542
- expect(data.s[1].ps[0].t).to.equal(0);
1543
- expect(data.s[1].ps[0].wb).to.equal(1);
1544
- expect(data.s[1].ps[0].af).to.equal('banner');
1545
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1546
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1547
- expect(data.s[1].ps[0].frv).to.equal(1.1);
1548
- expect(data.s[1].ps[0].pb).to.equal(1.50);
1391
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1392
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1393
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1394
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1395
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1396
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1397
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1398
+ expect(data.fd.flr.skipped).to.equal(false);
1399
+
1400
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1401
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(1.52);
1402
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.kgpv).to.equal("this-is-a-kgpv");
1403
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1404
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1405
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1406
+
1407
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1408
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1409
+
1410
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1411
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1412
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1413
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1414
+
1415
+ expect(data.sd['/19968336/header-bid-tag-1'].bidWonAdId).to.equal('fake_ad_id_2');
1416
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1549
1417
 
1550
1418
  // tracker slot1
1551
1419
  let firstTracker = requests[0].url;
1552
1420
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1553
1421
  data = {};
1554
1422
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1555
- expect(data.pubid).to.equal('9999');
1556
- expect(decodeURIComponent(data.purl)).to.equal('http://www.test.com/page.html');
1557
- expect(data.tst).to.equal('1519767014');
1558
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1559
- expect(data.bidid).to.equal('2ecff0db240757');
1560
- expect(data.pid).to.equal('1111');
1561
- expect(data.pdvid).to.equal('20');
1562
- expect(decodeURIComponent(data.slot)).to.equal('/19968336/header-bid-tag-0');
1563
- expect(decodeURIComponent(data.kgpv)).to.equal('/19968336/header-bid-tag-0');
1564
- expect(data.pn).to.equal('pubmatic');
1565
- expect(data.bc).to.equal('pubmatic_alias');
1566
- expect(data.eg).to.equal('1.23');
1567
- expect(data.en).to.equal('1.23');
1568
- expect(data.origbidid).to.equal('partnerImpressionID-1');
1423
+ expect(data.v).to.equal('1');
1424
+ expect(data.psrc).to.equal('web');
1569
1425
  });
1570
1426
 
1571
- it('Logger: best case + win tracker in case of GroupM as alternate bidder', function() {
1427
+ it('Logger: best case + win tracker in case of GroupM as alternate bidder', function () {
1572
1428
  MOCK.BID_REQUESTED['bids'][0]['bidderCode'] = 'groupm';
1573
1429
  sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
1574
1430
  return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
@@ -1591,257 +1447,119 @@ describe('pubmatic analytics adapter', function () {
1591
1447
  clock.tick(2000 + 1000);
1592
1448
  expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1593
1449
  let request = requests[2]; // logger is executed late, trackers execute first
1594
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1450
+ expect(request.url).to.equal('https://t.pubmatic.com/wl?v=1&psrc=web');
1595
1451
  let data = getLoggerJsonFromRequest(request.requestBody);
1596
- expect(data.pubid).to.equal('9999');
1597
- expect(data.pid).to.equal('1111');
1598
- expect(data.pdvid).to.equal('20');
1599
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1600
- expect(data.to).to.equal('3000');
1601
- expect(data.purl).to.equal('http://www.test.com/page.html');
1602
- expect(data.orig).to.equal('www.test.com');
1603
- expect(data.tst).to.equal(1519767016);
1604
- expect(data.tgid).to.equal(15);
1605
- expect(data.fmv).to.equal('floorModelTest');
1606
- expect(data.dm).to.equal(DISPLAY_MANAGER);
1607
- expect(data.dmv).to.equal('$prebid.version$' || '-1');
1608
- expect(data.ctr).not.to.be.null;
1609
- expect(data.ft).to.equal(1);
1610
- expect(data.s).to.be.an('array');
1611
- expect(data.s.length).to.equal(2);
1612
- expect(data.ffs).to.equal(1);
1613
- expect(data.fsrc).to.equal(2);
1614
- expect(data.fp).to.equal('pubmatic');
1452
+ // check mandatory fields
1453
+ expect(data).to.have.property('sd');
1454
+ expect(data).to.have.property('fd');
1455
+ expect(data).to.have.property('rd');
1456
+
1457
+ expect(data.rd.pubid).to.equal('9999');
1458
+ expect(data.rd.pid).to.equal('1111');
1459
+ expect(data.rd.pdvid).to.equal('20');
1460
+ expect(data.rd.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1461
+ expect(data.rd.to).to.equal(3000);
1462
+ expect(data.rd.purl).to.equal('http://www.test.com/page.html');
1463
+ expect(data.rd.tst).to.equal(1519767016);
1464
+ expect(data.rd.tgid).to.equal(15);
1465
+
1466
+ // floor data in feature list data
1467
+ expect(data.fd.flr.modelVersion).to.equal('floorModelTest');
1468
+ expect(data.fd.flr).to.have.property('enforcements');
1469
+ expect(data.fd.flr.enforcements).to.deep.equal({
1470
+ enforceJS: true,
1471
+ enforcePBS: false,
1472
+ floorDeals: false,
1473
+ bidAdjustment: true
1474
+ });
1475
+ expect(data.fd.flr.fetchStatus).to.equal('success');
1476
+ expect(data.fd.flr.floorProvider).to.equal('pubmatic');
1477
+ expect(data.fd.flr.location).to.equal('fetch');
1478
+ expect(data.fd.flr.skipRate).to.equal(0);
1479
+ expect(data.fd.flr.skipped).to.equal(false);
1615
1480
 
1616
- // slot 1
1617
- expect(data.s[0].sn).to.equal('/19968336/header-bid-tag-0');
1618
- expect(data.s[0].fskp).to.equal(0);
1619
- expect(data.s[0].sz).to.deep.equal(['640x480']);
1620
- expect(data.s[0].sid).not.to.be.undefined;
1621
- expect(data.s[0].ps).to.be.an('array');
1622
- expect(data.s[0].au).to.equal('/19968336/header-bid-tag-0');
1623
- expect(data.s[0].ps.length).to.equal(1);
1624
- expect(data.s[0].ps[0].pn).to.equal('pubmatic');
1625
- expect(data.s[0].ps[0].bc).to.equal('groupm');
1626
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
1627
- expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
1628
- expect(data.s[0].ps[0].db).to.equal(0);
1629
- expect(data.s[0].ps[0].kgpv).to.equal('/19968336/header-bid-tag-0');
1630
- expect(data.s[0].ps[0].kgpsv).to.equal('/19968336/header-bid-tag-0');
1631
- expect(data.s[0].ps[0].psz).to.equal('640x480');
1632
- expect(data.s[0].ps[0].eg).to.equal(1.23);
1633
- expect(data.s[0].ps[0].en).to.equal(1.23);
1634
- expect(data.s[0].ps[0].di).to.equal('-1');
1635
- expect(data.s[0].ps[0].dc).to.equal('');
1636
- expect(data.s[0].ps[0].l1).to.equal(944);
1637
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1638
- expect(data.s[0].ps[0].l2).to.equal(0);
1639
- expect(data.s[0].ps[0].ss).to.equal(0);
1640
- expect(data.s[0].ps[0].t).to.equal(0);
1641
- expect(data.s[0].ps[0].wb).to.equal(1);
1642
- expect(data.s[0].ps[0].af).to.equal('video');
1643
- expect(data.s[0].ps[0].ocpm).to.equal(1.23);
1644
- expect(data.s[0].ps[0].ocry).to.equal('USD');
1645
- expect(data.s[0].ps[0].frv).to.equal(1.1);
1646
- expect(data.s[0].ps[0].pb).to.equal(1.2);
1481
+ expect(data.sd).to.be.an('object');
1482
+ expect(Object.keys(data.sd).length).to.equal(2);
1647
1483
 
1648
- // slot 2
1649
- expect(data.s[1].sn).to.equal('/19968336/header-bid-tag-1');
1650
- expect(data.s[1].sz).to.deep.equal(['1000x300', '970x250', '728x90']);
1651
- expect(data.s[1].sid).not.to.be.undefined;
1652
- expect(data.s[1].ps).to.be.an('array');
1653
- expect(data.s[1].ps.length).to.equal(1);
1654
- expect(data.s[1].ps[0].pn).to.equal('pubmatic');
1655
- expect(data.s[1].ps[0].bc).to.equal('pubmatic');
1656
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1657
- expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
1658
- expect(data.s[1].ps[0].db).to.equal(0);
1659
- expect(data.s[1].ps[0].kgpv).to.equal('this-is-a-kgpv');
1660
- expect(data.s[1].ps[0].kgpsv).to.equal('this-is-a-kgpv');
1661
- expect(data.s[1].ps[0].psz).to.equal('728x90');
1662
- expect(data.s[1].ps[0].eg).to.equal(1.52);
1663
- expect(data.s[1].ps[0].en).to.equal(1.52);
1664
- expect(data.s[1].ps[0].di).to.equal('the-deal-id');
1665
- expect(data.s[1].ps[0].dc).to.equal('PMP');
1666
- expect(data.s[1].ps[0].mi).to.equal('matched-impression');
1667
- expect(data.s[1].ps[0].adv).to.equal('example.com');
1668
- expect(data.s[0].ps[0].l1).to.equal(944);
1669
- expect(data.s[0].ps[0].ol1).to.equal(3214);
1670
- expect(data.s[1].ps[0].l2).to.equal(0);
1671
- expect(data.s[1].ps[0].ss).to.equal(1);
1672
- expect(data.s[1].ps[0].t).to.equal(0);
1673
- expect(data.s[1].ps[0].wb).to.equal(1);
1674
- expect(data.s[1].ps[0].af).to.equal('banner');
1675
- expect(data.s[1].ps[0].ocpm).to.equal(1.52);
1676
- expect(data.s[1].ps[0].ocry).to.equal('USD');
1484
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-0');
1677
1485
 
1678
- // tracker slot1
1679
- let firstTracker = requests[0].url;
1680
- expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1681
- data = {};
1682
- firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1683
- expect(data.pubid).to.equal('9999');
1684
- expect(decodeURIComponent(data.purl)).to.equal('http://www.test.com/page.html');
1685
- expect(data.tst).to.equal('1519767014');
1686
- expect(data.iid).to.equal('25c6d7f5-699a-4bfc-87c9-996f915341fa');
1687
- expect(data.bidid).to.equal('2ecff0db240757');
1688
- expect(data.pid).to.equal('1111');
1689
- expect(data.pdvid).to.equal('20');
1690
- expect(decodeURIComponent(data.slot)).to.equal('/19968336/header-bid-tag-0');
1691
- expect(decodeURIComponent(data.kgpv)).to.equal('/19968336/header-bid-tag-0');
1692
- expect(data.pn).to.equal('pubmatic');
1693
- expect(data.bc).to.equal('groupm');
1694
- expect(data.eg).to.equal('1.23');
1695
- expect(data.en).to.equal('1.23');
1696
- expect(data.origbidid).to.equal('partnerImpressionID-1');
1697
- });
1486
+ expect(data.sd['/19968336/header-bid-tag-0'].bids).to.have.property('2ecff0db240757');
1487
+ expect(data.sd['/19968336/header-bid-tag-0'].dimensions).to.deep.equal([[640, 480]])
1488
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].adapterCode).to.equal('pubmatic');
1489
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidderCode).to.equal('groupm');
1490
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCpm).to.equal(1.23);
1491
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCurrency).to.equal('USD');
1698
1492
 
1699
- it('Logger: should use originalRequestId to find the bid', function() {
1700
- MOCK.BID_RESPONSE[1]['originalRequestId'] = '3bd4ebb1c900e2';
1701
- MOCK.BID_RESPONSE[1]['requestId'] = '54d4ebb1c9003e';
1702
- sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
1703
- return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
1704
- });
1493
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0]).to.have.property('bidResponse');
1494
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidId).to.equal('2ecff0db240757');
1495
+ expect(data.fd.flr.skipped).to.equal(false);
1705
1496
 
1706
- config.setConfig({
1707
- testGroupId: 15
1708
- });
1497
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidGrossCpmUSD).to.equal(1.23);
1498
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.bidPriceUSD).to.equal(1.23);
1499
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].partnerTimeToRespond).to.equal(944);
1500
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].clientLatencyTimeMs).to.equal(3214);
1709
1501
 
1710
- events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
1711
- events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
1712
- events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
1713
- events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
1714
- events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
1715
- events.emit(AUCTION_END, MOCK.AUCTION_END);
1716
- events.emit(SET_TARGETING, MOCK.SET_TARGETING);
1717
- events.emit(BID_WON, MOCK.BID_WON[0]);
1718
- events.emit(BID_WON, MOCK.BID_WON[1]);
1502
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCpm).to.equal(1.23);
1503
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.originalCurrency).to.equal('USD');
1719
1504
 
1720
- clock.tick(2000 + 1000);
1721
- expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1722
- let request = requests[2]; // logger is executed late, trackers execute first
1723
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1724
- let data = getLoggerJsonFromRequest(request.requestBody);
1725
- expect(data.s).to.be.an('array');
1726
- expect(data.s.length).to.equal(2);
1505
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.mediaType).to.equal('video');
1506
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1727
1507
 
1728
- // slot 1
1729
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
1730
- expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
1508
+ expect(data.sd['/19968336/header-bid-tag-0'].bidWonAdId).to.equal('fake_ad_id');
1509
+ expect(data.sd['/19968336/header-bid-tag-0'].bids['2ecff0db240757'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.2);
1731
1510
 
1732
1511
  // slot 2
1733
- expect(data.s[1].ps[0].bidid).to.equal('54d4ebb1c9003e');
1734
- expect(data.s[1].ps[0].origbidid).to.equal('partnerImpressionID-2');
1512
+ expect(data.sd).to.have.property('/19968336/header-bid-tag-1');
1513
+ expect(data.sd['/19968336/header-bid-tag-1'].dimensions).to.deep.equal([[1000, 300], [970, 250], [728, 90]]);
1514
+ expect(data.sd['/19968336/header-bid-tag-1'].bids).to.have.property('3bd4ebb1c900e2');
1515
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].adapterCode).to.equal('pubmatic');
1516
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidderCode).to.equal('pubmatic');
1517
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0]).to.have.property('bidResponse');
1518
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidId).to.equal('3bd4ebb1c900e2');
1519
+ expect(data.fd.flr.skipped).to.equal(false);
1520
+
1521
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidGrossCpmUSD).to.equal(1.52);
1522
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.bidPriceUSD).to.equal(1.52);
1523
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].params.kgpv).to.equal("this-is-a-kgpv");
1524
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.dealId).to.equal('the-deal-id');
1525
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].partnerTimeToRespond).to.equal(944);
1526
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].clientLatencyTimeMs).to.equal(3214);
1527
+
1528
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCpm).to.equal(1.52);
1529
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.originalCurrency).to.equal('USD');
1530
+
1531
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mi).to.equal('matched-impression');
1532
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.meta.advertiserDomains).to.deep.equal(['example.com']);
1533
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.mediaType).to.equal('banner');
1534
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.floorData.floorRuleValue).to.equal(1.1);
1535
+
1536
+ expect(data.sd['/19968336/header-bid-tag-1'].bidWonAdId).to.equal('fake_ad_id_2');
1537
+ expect(data.sd['/19968336/header-bid-tag-1'].bids['3bd4ebb1c900e2'][0].bidResponse.adserverTargeting.hb_pb).to.equal(1.5);
1735
1538
 
1736
1539
  // tracker slot1
1737
1540
  let firstTracker = requests[0].url;
1738
1541
  expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1739
1542
  data = {};
1740
1543
  firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1741
- expect(data.bidid).to.equal('2ecff0db240757');
1742
- expect(data.origbidid).to.equal('partnerImpressionID-1');
1544
+ expect(data.v).to.equal('1');
1545
+ expect(data.psrc).to.equal('web');
1743
1546
  });
1744
1547
 
1745
- it('Logger: best case + win tracker. Log bidId when partnerimpressionid is missing', function() {
1746
- delete MOCK.BID_RESPONSE[1]['partnerImpId'];
1747
- MOCK.BID_RESPONSE[1]['requestId'] = '3bd4ebb1c900e2';
1748
- MOCK.BID_RESPONSE[1]['prebidBidId'] = 'Prebid-bid-id-1';
1749
- sandbox.stub($$PREBID_GLOBAL$$, 'getHighestCpmBids').callsFake((key) => {
1750
- return [MOCK.BID_RESPONSE[0], MOCK.BID_RESPONSE[1]]
1751
- });
1752
-
1753
- config.setConfig({
1754
- testGroupId: 15
1755
- });
1756
-
1548
+ it('Logger: should verify display manager and version in analytics data', function () {
1757
1549
  events.emit(AUCTION_INIT, MOCK.AUCTION_INIT);
1758
1550
  events.emit(BID_REQUESTED, MOCK.BID_REQUESTED);
1759
1551
  events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[0]);
1760
- events.emit(BID_RESPONSE, MOCK.BID_RESPONSE[1]);
1761
1552
  events.emit(BIDDER_DONE, MOCK.BIDDER_DONE);
1762
1553
  events.emit(AUCTION_END, MOCK.AUCTION_END);
1763
- events.emit(SET_TARGETING, MOCK.SET_TARGETING);
1764
- events.emit(BID_WON, MOCK.BID_WON[0]);
1765
- events.emit(BID_WON, MOCK.BID_WON[1]);
1766
1554
 
1767
1555
  clock.tick(2000 + 1000);
1768
- expect(requests.length).to.equal(3); // 1 logger and 2 win-tracker
1769
- let request = requests[2]; // logger is executed late, trackers execute first
1770
- expect(request.url).to.equal('https://t.pubmatic.com/wl?pubid=9999');
1556
+ expect(requests.length).to.equal(1);
1557
+ let request = requests[0];
1771
1558
  let data = getLoggerJsonFromRequest(request.requestBody);
1772
- expect(data.s).to.be.an('array');
1773
- expect(data.s.length).to.equal(2);
1774
-
1775
- // slot 1
1776
- expect(data.s[0].ps[0].bidid).to.equal('2ecff0db240757');
1777
- expect(data.s[0].ps[0].origbidid).to.equal('partnerImpressionID-1');
1778
-
1779
- // slot 2
1780
- expect(data.s[1].ps[0].bidid).to.equal('3bd4ebb1c900e2');
1781
- expect(data.s[1].ps[0].origbidid).to.equal('3bd4ebb1c900e2');
1782
-
1783
- // tracker slot1
1784
- let firstTracker = requests[0].url;
1785
- expect(firstTracker.split('?')[0]).to.equal('https://t.pubmatic.com/wt');
1786
- data = {};
1787
- firstTracker.split('?')[1].split('&').map(e => e.split('=')).forEach(e => data[e[0]] = e[1]);
1788
- expect(data.bidid).to.equal('2ecff0db240757');
1789
- expect(data.origbidid).to.equal('partnerImpressionID-1');
1790
- });
1791
- });
1792
-
1793
- describe('Get Metadata function', function () {
1794
- it('should get the metadata object', function () {
1795
- const meta = {
1796
- networkId: 'nwid',
1797
- advertiserId: 'adid',
1798
- networkName: 'nwnm',
1799
- primaryCatId: 'pcid',
1800
- advertiserName: 'adnm',
1801
- agencyId: 'agid',
1802
- agencyName: 'agnm',
1803
- brandId: 'brid',
1804
- brandName: 'brnm',
1805
- dchain: 'dc',
1806
- demandSource: 'ds',
1807
- secondaryCatIds: ['secondaryCatIds']
1808
- };
1809
- const metadataObj = getMetadata(meta);
1810
-
1811
- expect(metadataObj.nwid).to.equal('nwid');
1812
- expect(metadataObj.adid).to.equal('adid');
1813
- expect(metadataObj.nwnm).to.equal('nwnm');
1814
- expect(metadataObj.pcid).to.equal('pcid');
1815
- expect(metadataObj.adnm).to.equal('adnm');
1816
- expect(metadataObj.agid).to.equal('agid');
1817
- expect(metadataObj.agnm).to.equal('agnm');
1818
- expect(metadataObj.brid).to.equal('brid');
1819
- expect(metadataObj.brnm).to.equal('brnm');
1820
- expect(metadataObj.dc).to.equal('dc');
1821
- expect(metadataObj.ds).to.equal('ds');
1822
- expect(metadataObj.scids).to.be.an('array').with.length.above(0);
1823
- expect(metadataObj.scids[0]).to.equal('secondaryCatIds');
1824
- });
1825
-
1826
- it('should return undefined if meta is null', function () {
1827
- const meta = null;
1828
- const metadataObj = getMetadata(meta);
1829
- expect(metadataObj).to.equal(undefined);
1830
- });
1831
-
1832
- it('should return undefined if meta is a empty object', function () {
1833
- const meta = {};
1834
- const metadataObj = getMetadata(meta);
1835
- expect(metadataObj).to.equal(undefined);
1836
- });
1837
-
1838
- it('should return undefined if meta object has different properties', function () {
1839
- const meta = {
1840
- a: 123,
1841
- b: 456
1842
- };
1843
- const metadataObj = getMetadata(meta);
1844
- expect(metadataObj).to.equal(undefined);
1559
+ // Verify display manager
1560
+ expect(data.rd.dm).to.equal('Prebid.js');
1561
+ // Verify display manager version using global Prebid version
1562
+ expect(data.rd.dmv).to.equal('$prebid.version$' || '-1');
1845
1563
  });
1846
1564
  });
1847
1565
  });