prebid.js 8.4.0 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/a1MediaRtdProvider.js +1 -0
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adfBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnBidAdapter.js +1 -1
  9. package/dist/adkernelBidAdapter.js +1 -1
  10. package/dist/admixerIdSystem.js +1 -1
  11. package/dist/adnuntiusBidAdapter.js +1 -1
  12. package/dist/adqueryBidAdapter.js +1 -1
  13. package/dist/adqueryIdSystem.js +1 -1
  14. package/dist/adrelevantisBidAdapter.js +1 -1
  15. package/dist/adtelligentIdSystem.js +1 -1
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgBidAdapter.js +1 -1
  18. package/dist/adyoulikeBidAdapter.js +1 -1
  19. package/dist/ajaBidAdapter.js +1 -1
  20. package/dist/amxBidAdapter.js +1 -1
  21. package/dist/amxIdSystem.js +1 -1
  22. package/dist/appierAnalyticsAdapter.js +1 -1
  23. package/dist/appnexusBidAdapter.js +1 -1
  24. package/dist/asoBidAdapter.js +1 -1
  25. package/dist/axonixBidAdapter.js +1 -1
  26. package/dist/beachfrontBidAdapter.js +1 -1
  27. package/dist/bidglassBidAdapter.js +1 -1
  28. package/dist/big-richmediaBidAdapter.js +1 -1
  29. package/dist/bridBidAdapter.js +1 -1
  30. package/dist/bridgewellBidAdapter.js +1 -1
  31. package/dist/brightMountainMediaBidAdapter.js +1 -1
  32. package/dist/britepoolIdSystem.js +1 -1
  33. package/dist/carodaBidAdapter.js +1 -1
  34. package/dist/chtnwBidAdapter.js +1 -1
  35. package/dist/concertBidAdapter.js +1 -1
  36. package/dist/connectIdSystem.js +1 -1
  37. package/dist/connectadBidAdapter.js +1 -1
  38. package/dist/consentManagementGpp.js +1 -1
  39. package/dist/consumableBidAdapter.js +1 -1
  40. package/dist/conversantAnalyticsAdapter.js +1 -1
  41. package/dist/conversantBidAdapter.js +1 -1
  42. package/dist/craftBidAdapter.js +1 -1
  43. package/dist/criteoBidAdapter.js +1 -1
  44. package/dist/criteoIdSystem.js +1 -1
  45. package/dist/cwireBidAdapter.js +1 -1
  46. package/dist/czechAdIdSystem.js +1 -1
  47. package/dist/dacIdSystem.js +1 -1
  48. package/dist/deepintentDpesIdSystem.js +1 -1
  49. package/dist/dependencies.json +3 -0
  50. package/dist/dmdIdSystem.js +1 -1
  51. package/dist/dspxBidAdapter.js +1 -1
  52. package/dist/eplanningBidAdapter.js +1 -1
  53. package/dist/euidIdSystem.js +1 -1
  54. package/dist/fabrickIdSystem.js +1 -1
  55. package/dist/feedadBidAdapter.js +1 -1
  56. package/dist/finativeBidAdapter.js +1 -1
  57. package/dist/freewheel-sspBidAdapter.js +1 -1
  58. package/dist/ftrackIdSystem.js +1 -1
  59. package/dist/geolocationRtdProvider.js +1 -0
  60. package/dist/gmosspBidAdapter.js +1 -1
  61. package/dist/goldbachBidAdapter.js +1 -1
  62. package/dist/gravitoIdSystem.js +1 -1
  63. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  64. package/dist/greenbidsRtdProvider.js +1 -1
  65. package/dist/gridBidAdapter.js +1 -1
  66. package/dist/growthCodeIdSystem.js +1 -1
  67. package/dist/gumgumBidAdapter.js +1 -1
  68. package/dist/h12mediaBidAdapter.js +1 -1
  69. package/dist/hadronIdSystem.js +1 -1
  70. package/dist/hypelabBidAdapter.js +1 -1
  71. package/dist/id5IdSystem.js +1 -1
  72. package/dist/identityLinkIdSystem.js +1 -1
  73. package/dist/idxIdSystem.js +1 -1
  74. package/dist/imdsBidAdapter.js +1 -1
  75. package/dist/improvedigitalBidAdapter.js +1 -1
  76. package/dist/imuIdSystem.js +1 -1
  77. package/dist/insticatorBidAdapter.js +1 -1
  78. package/dist/intentIqIdSystem.js +1 -1
  79. package/dist/invibesBidAdapter.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/justIdSystem.js +1 -1
  82. package/dist/justpremiumBidAdapter.js +1 -1
  83. package/dist/kargoBidAdapter.js +1 -1
  84. package/dist/kinessoIdSystem.js +1 -1
  85. package/dist/konduitAnalyticsAdapter.js +1 -1
  86. package/dist/kueezBidAdapter.js +1 -1
  87. package/dist/kueezRtbBidAdapter.js +1 -1
  88. package/dist/kulturemediaBidAdapter.js +1 -1
  89. package/dist/lassoBidAdapter.js +1 -1
  90. package/dist/lifestreetBidAdapter.js +1 -1
  91. package/dist/liveIntentIdSystem.js +1 -1
  92. package/dist/logicadBidAdapter.js +1 -1
  93. package/dist/loglyliftBidAdapter.js +1 -1
  94. package/dist/lotamePanoramaIdSystem.js +1 -1
  95. package/dist/magniteAnalyticsAdapter.js +1 -1
  96. package/dist/malltvAnalyticsAdapter.js +1 -1
  97. package/dist/marsmediaBidAdapter.js +1 -1
  98. package/dist/mediafuseBidAdapter.js +1 -1
  99. package/dist/mediasquareBidAdapter.js +1 -1
  100. package/dist/merkleIdSystem.js +1 -1
  101. package/dist/mgidBidAdapter.js +1 -1
  102. package/dist/minutemediaBidAdapter.js +1 -1
  103. package/dist/minutemediaplusBidAdapter.js +1 -1
  104. package/dist/mwOpenLinkIdSystem.js +1 -1
  105. package/dist/naveggIdSystem.js +1 -1
  106. package/dist/netIdSystem.js +1 -1
  107. package/dist/nexx360BidAdapter.js +1 -1
  108. package/dist/not-for-prod/prebid.js +176 -173
  109. package/dist/novatiqIdSystem.js +1 -1
  110. package/dist/oguryBidAdapter.js +1 -1
  111. package/dist/oneKeyIdSystem.js +1 -1
  112. package/dist/onetagBidAdapter.js +1 -1
  113. package/dist/ooloAnalyticsAdapter.js +1 -1
  114. package/dist/optidigitalBidAdapter.js +1 -1
  115. package/dist/outbrainBidAdapter.js +1 -1
  116. package/dist/ozoneBidAdapter.js +1 -1
  117. package/dist/pairIdSystem.js +1 -1
  118. package/dist/parrableIdSystem.js +1 -1
  119. package/dist/pixfutureBidAdapter.js +1 -1
  120. package/dist/prebid-core.js +1 -1
  121. package/dist/publinkIdSystem.js +1 -1
  122. package/dist/pubmaticBidAdapter.js +1 -1
  123. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  124. package/dist/pxyzBidAdapter.js +1 -1
  125. package/dist/quantcastBidAdapter.js +1 -1
  126. package/dist/quantcastIdSystem.js +1 -1
  127. package/dist/readpeakBidAdapter.js +1 -1
  128. package/dist/relaidoBidAdapter.js +1 -1
  129. package/dist/retailspotBidAdapter.js +1 -1
  130. package/dist/rhythmoneBidAdapter.js +1 -1
  131. package/dist/riseBidAdapter.js +1 -1
  132. package/dist/rubiconBidAdapter.js +1 -1
  133. package/dist/seedingAllianceBidAdapter.js +1 -1
  134. package/dist/seedtagBidAdapter.js +1 -1
  135. package/dist/sharedIdSystem.js +1 -1
  136. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  137. package/dist/sharethroughBidAdapter.js +1 -1
  138. package/dist/shinezBidAdapter.js +1 -1
  139. package/dist/silverpushBidAdapter.js +1 -1
  140. package/dist/smaatoBidAdapter.js +1 -1
  141. package/dist/smartadserverBidAdapter.js +1 -1
  142. package/dist/smartxBidAdapter.js +1 -1
  143. package/dist/smilewantedBidAdapter.js +1 -1
  144. package/dist/sonobiBidAdapter.js +1 -1
  145. package/dist/sovrnAnalyticsAdapter.js +1 -1
  146. package/dist/sovrnBidAdapter.js +1 -1
  147. package/dist/ssmasBidAdapter.js +1 -0
  148. package/dist/sspBCBidAdapter.js +1 -1
  149. package/dist/stvBidAdapter.js +1 -1
  150. package/dist/sublimeBidAdapter.js +1 -1
  151. package/dist/tapadIdSystem.js +1 -1
  152. package/dist/targetVideoBidAdapter.js +1 -1
  153. package/dist/teadsBidAdapter.js +1 -1
  154. package/dist/tncIdSystem.js +1 -1
  155. package/dist/trionBidAdapter.js +1 -1
  156. package/dist/tripleliftBidAdapter.js +1 -1
  157. package/dist/ttdBidAdapter.js +1 -1
  158. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  159. package/dist/uid2IdSystem.js +1 -1
  160. package/dist/underdogmediaBidAdapter.js +1 -1
  161. package/dist/undertoneBidAdapter.js +1 -1
  162. package/dist/unifiedIdSystem.js +1 -1
  163. package/dist/userId.js +1 -1
  164. package/dist/utiqSystem.js +1 -1
  165. package/dist/verizonMediaIdSystem.js +1 -1
  166. package/dist/vidazooBidAdapter.js +1 -1
  167. package/dist/videobyteBidAdapter.js +1 -1
  168. package/dist/visxBidAdapter.js +1 -1
  169. package/dist/vrtcalBidAdapter.js +1 -1
  170. package/dist/vuukleBidAdapter.js +1 -1
  171. package/dist/widespaceBidAdapter.js +1 -1
  172. package/dist/winrBidAdapter.js +1 -1
  173. package/dist/yahoosspBidAdapter.js +1 -1
  174. package/dist/yieldmoBidAdapter.js +1 -1
  175. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  176. package/dist/zeotapIdPlusIdSystem.js +1 -1
  177. package/integrationExamples/gpt/adUnitFloors.html +0 -1
  178. package/modules/.submodules.json +1 -0
  179. package/modules/33acrossIdSystem.js +9 -0
  180. package/modules/a1MediaRtdProvider.js +92 -0
  181. package/modules/a1MediaRtdProvider.md +46 -0
  182. package/modules/adfBidAdapter.js +4 -1
  183. package/modules/adkernelAdnBidAdapter.js +1 -1
  184. package/modules/adkernelBidAdapter.js +10 -3
  185. package/modules/admixerIdSystem.js +6 -0
  186. package/modules/adnuntiusBidAdapter.js +5 -13
  187. package/modules/adqueryIdSystem.js +6 -0
  188. package/modules/adtelligentIdSystem.js +6 -0
  189. package/modules/adyoulikeBidAdapter.js +6 -3
  190. package/modules/amxIdSystem.js +6 -0
  191. package/modules/beachfrontBidAdapter.js +32 -6
  192. package/modules/britepoolIdSystem.js +6 -0
  193. package/modules/connectIdSystem.js +6 -0
  194. package/modules/consentManagementGpp.js +10 -1
  195. package/modules/consumableBidAdapter.js +9 -1
  196. package/modules/criteoIdSystem.js +6 -0
  197. package/modules/czechAdIdSystem.js +6 -0
  198. package/modules/dacIdSystem.js +6 -0
  199. package/modules/deepintentDpesIdSystem.js +7 -2
  200. package/modules/dmdIdSystem.js +6 -0
  201. package/modules/euidIdSystem.js +9 -0
  202. package/modules/fabrickIdSystem.js +6 -0
  203. package/modules/ftrackIdSystem.js +16 -0
  204. package/modules/geolocationRtdProvider.js +65 -0
  205. package/modules/gravitoIdSystem.js +6 -0
  206. package/modules/greenbidsRtdProvider.js +1 -1
  207. package/modules/growthCodeIdSystem.js +20 -1
  208. package/modules/hadronIdSystem.js +6 -0
  209. package/modules/id5IdSystem.js +34 -8
  210. package/modules/identityLinkIdSystem.js +6 -0
  211. package/modules/idxIdSystem.js +6 -0
  212. package/modules/imdsBidAdapter.js +38 -14
  213. package/modules/imuIdSystem.js +10 -0
  214. package/modules/intentIqIdSystem.js +6 -0
  215. package/modules/invibesBidAdapter.js +5 -5
  216. package/modules/ixBidAdapter.js +16 -0
  217. package/modules/justIdSystem.js +6 -0
  218. package/modules/kinessoIdSystem.js +7 -2
  219. package/modules/liveIntentIdSystem.js +53 -0
  220. package/modules/lotamePanoramaIdSystem.js +6 -0
  221. package/modules/merkleIdSystem.js +24 -0
  222. package/modules/mwOpenLinkIdSystem.js +6 -0
  223. package/modules/naveggIdSystem.js +6 -0
  224. package/modules/netIdSystem.js +6 -0
  225. package/modules/novatiqIdSystem.js +12 -0
  226. package/modules/oneKeyIdSystem.js +26 -0
  227. package/modules/ozoneBidAdapter.js +65 -18
  228. package/modules/ozoneBidAdapter.md +3 -1
  229. package/modules/pairIdSystem.js +6 -0
  230. package/modules/parrableIdSystem.js +38 -2
  231. package/modules/publinkIdSystem.js +7 -1
  232. package/modules/quantcastIdSystem.js +6 -0
  233. package/modules/rubiconBidAdapter.js +9 -0
  234. package/modules/sharedIdSystem.js +6 -0
  235. package/modules/silverpushBidAdapter.js +2 -2
  236. package/modules/ssmasBidAdapter.js +126 -0
  237. package/modules/ssmasBidAdapter.md +35 -0
  238. package/modules/sspBCBidAdapter.js +36 -13
  239. package/modules/tapadIdSystem.js +6 -0
  240. package/modules/tncIdSystem.js +6 -0
  241. package/modules/tripleliftBidAdapter.js +5 -0
  242. package/modules/uid2IdSystem.js +14 -0
  243. package/modules/unifiedIdSystem.js +11 -0
  244. package/modules/userId/eids.js +6 -445
  245. package/modules/userId/index.js +36 -24
  246. package/modules/utiqSystem.js +9 -0
  247. package/modules/verizonMediaIdSystem.js +6 -0
  248. package/modules/vrtcalBidAdapter.js +10 -6
  249. package/modules/zeotapIdPlusIdSystem.js +6 -0
  250. package/package.json +1 -1
  251. package/src/adapters/bidderFactory.js +15 -6
  252. package/src/adloader.js +2 -1
  253. package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
  254. package/test/spec/modules/adfBidAdapter_spec.js +47 -0
  255. package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
  256. package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
  257. package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
  258. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
  259. package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
  260. package/test/spec/modules/consentManagementGpp_spec.js +16 -0
  261. package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
  262. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
  263. package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
  264. package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
  265. package/test/spec/modules/id5IdSystem_spec.js +18 -0
  266. package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
  267. package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
  268. package/test/spec/modules/ixBidAdapter_spec.js +23 -5
  269. package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
  270. package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
  271. package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
  272. package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
  273. package/test/spec/modules/priceFloors_spec.js +14 -0
  274. package/test/spec/modules/pubmaticBidAdapter_spec.js +6 -373
  275. package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
  276. package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
  277. package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
  278. package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
  279. package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
  280. package/test/spec/modules/userId_spec.js +116 -7
  281. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
  282. package/test/spec/modules/xeBidAdapter_spec.js +366 -368
  283. package/test/spec/modules/yahoosspBidAdapter_spec.js +5 -18
  284. package/test/spec/unit/core/bidderFactory_spec.js +61 -14
  285. package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
@@ -2,8 +2,6 @@ import { expect } from 'chai';
2
2
  import { spec } from 'modules/outbrainBidAdapter.js';
3
3
  import { config } from 'src/config.js';
4
4
  import { server } from 'test/mocks/xhr';
5
- import { createEidsArray } from 'modules/userId/eids.js';
6
- import * as utils from 'src/utils.js';
7
5
 
8
6
  describe('Outbrain Adapter', function () {
9
7
  describe('Bid request and response', function () {
@@ -511,9 +509,9 @@ describe('Outbrain Adapter', function () {
511
509
  let bidRequest = {
512
510
  bidId: 'bidId',
513
511
  params: {},
514
- userIdAsEids: createEidsArray({
515
- idl_env: 'id-value',
516
- }),
512
+ userIdAsEids: [
513
+ { source: 'liveramp.com', uids: [{ id: 'id-value', atype: 3 }] }
514
+ ],
517
515
  ...commonBidRequest,
518
516
  };
519
517
 
@@ -6,7 +6,6 @@ import {getGranularityKeyName, getGranularityObject} from '../../../modules/ozon
6
6
  import * as utils from '../../../src/utils.js';
7
7
  const OZONEURI = 'https://elb.the-ozone-project.com/openrtb2/auction';
8
8
  const BIDDER_CODE = 'ozone';
9
-
10
9
  var validBidRequests = [
11
10
  {
12
11
  adUnitCode: 'div-gpt-ad-1460505748561-0',
@@ -2049,6 +2048,27 @@ describe('ozone Adapter', function () {
2049
2048
  expect(data.imp[0].ext.ozone.customData).to.be.an('array');
2050
2049
  expect(data.imp[0].ext.ozone.customData[0].targeting.oztestmode).to.equal('mytestvalue_123');
2051
2050
  });
2051
+ it('should pass gpid to auction if it is present (gptPreAuction adapter sets this)', function () {
2052
+ var specMock = utils.deepClone(spec);
2053
+ let br = JSON.parse(JSON.stringify(validBidRequests));
2054
+ utils.deepSetValue(br[0], 'ortb2Imp.ext.gpid', '/22037345/projectozone');
2055
+ const request = specMock.buildRequests(br, validBidderRequest);
2056
+ const data = JSON.parse(request.data);
2057
+ expect(data.imp[0].ext.gpid).to.equal('/22037345/projectozone');
2058
+ });
2059
+ it('should batch into 10s if config is set', function () {
2060
+ config.setConfig({ozone: {'batchRequests': true}});
2061
+ var specMock = utils.deepClone(spec);
2062
+ let arrReq = [];
2063
+ for (let i = 0; i < 25; i++) {
2064
+ let b = validBidRequests[0];
2065
+ b.adUnitCode += i;
2066
+ arrReq.push(b);
2067
+ }
2068
+ const request = specMock.buildRequests(arrReq, validBidderRequest);
2069
+ expect(request.length).to.equal(3);
2070
+ config.resetConfig();
2071
+ });
2052
2072
  it('should use GET values auction=dev & cookiesync=dev if set', function() {
2053
2073
  var specMock = utils.deepClone(spec);
2054
2074
  specMock.getGetParametersAsObject = function() {
@@ -2429,6 +2449,12 @@ describe('ozone Adapter', function () {
2429
2449
  const result = spec.interpretResponse(validres, request);
2430
2450
  expect(utils.deepAccess(result[0].adserverTargeting, 'oz_ozappnexus_sid')).to.equal(result[0].cid);
2431
2451
  });
2452
+ it('should add oz_auc_id (response id value)', function () {
2453
+ const request = spec.buildRequests(validBidRequestsMulti, validBidderRequest);
2454
+ let validres = JSON.parse(JSON.stringify(validBidResponse1adWith2Bidders));
2455
+ const result = spec.interpretResponse(validres, request);
2456
+ expect(utils.deepAccess(result[0].adserverTargeting, 'oz_auc_id')).to.equal(validBidResponse1adWith2Bidders.body.id);
2457
+ });
2432
2458
  it('should add unique adId values to each bid', function() {
2433
2459
  const request = spec.buildRequests(validBidRequests, validBidderRequest);
2434
2460
  let validres = JSON.parse(JSON.stringify(validResponse2BidsSameAdunit));
@@ -2082,30 +2082,12 @@ describe('S2S Adapter', function () {
2082
2082
  }
2083
2083
  }
2084
2084
  };
2085
- userIdBidRequest[0].bids[0].userIdAsEids = createEidsArray(userIdBidRequest[0].bids[0].userId);
2085
+ userIdBidRequest[0].bids[0].userIdAsEids = [{id: 1}, {id: 2}];
2086
2086
 
2087
2087
  adapter.callBids(REQUEST, userIdBidRequest, addBidResponse, done, ajax);
2088
2088
  let requestBid = JSON.parse(server.requests[0].requestBody);
2089
2089
  expect(typeof requestBid.user.ext.eids).is.equal('object');
2090
- expect(Array.isArray(requestBid.user.ext.eids)).to.be.true;
2091
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'adserver.org')).is.not.empty;
2092
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'adserver.org')[0].uids[0].id).is.equal('abc123');
2093
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'criteo.com')).is.not.empty;
2094
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'criteo.com')[0].uids[0].id).is.equal('44VmRDeUE3ZGJ5MzRkRVJHU3BIUlJ6TlFPQUFU');
2095
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'pubcid.org')).is.not.empty;
2096
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'pubcid.org')[0].uids[0].id).is.equal('1234');
2097
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'parrable.com')).is.not.empty;
2098
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'parrable.com')[0].uids[0].id).is.equal('01.1563917337.test-eid');
2099
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveintent.com')).is.not.empty;
2100
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveintent.com')[0].uids[0].id).is.equal('li-xyz');
2101
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveintent.com')[0].ext.segments.length).is.equal(2);
2102
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveintent.com')[0].ext.segments[0]).is.equal('segA');
2103
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveintent.com')[0].ext.segments[1]).is.equal('segB');
2104
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'id5-sync.com')).is.not.empty;
2105
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'id5-sync.com')[0].uids[0].id).is.equal('11111');
2106
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'id5-sync.com')[0].uids[0].ext.linkType).is.equal('some-link-type');
2107
- // LiveRamp should exist
2108
- expect(requestBid.user.ext.eids.filter(eid => eid.source === 'liveramp.com')[0].uids[0].id).is.equal('0000-1111-2222-3333');
2090
+ expect(requestBid.user.ext.eids).to.eql([{id: 1}, {id: 2}]);
2109
2091
  });
2110
2092
 
2111
2093
  it('when config \'currency.adServerCurrency\' value is a string: ORTB has property \'cur\' value set to a single item array', function () {
@@ -20,6 +20,8 @@ import 'src/prebid.js';
20
20
  import {createBid} from '../../../src/bidfactory.js';
21
21
  import {auctionManager} from '../../../src/auctionManager.js';
22
22
  import {stubAuctionIndex} from '../../helpers/indexStub.js';
23
+ import {guardTids} from '../../../src/adapters/bidderFactory.js';
24
+ import * as activities from '../../../src/activities/rules.js';
23
25
 
24
26
  describe('the price floors module', function () {
25
27
  let logErrorSpy;
@@ -1369,6 +1371,18 @@ describe('the price floors module', function () {
1369
1371
  floor: 2.5
1370
1372
  });
1371
1373
  });
1374
+
1375
+ it('works when TIDs are disabled', () => {
1376
+ sandbox.stub(activities, 'isActivityAllowed').returns(false);
1377
+ const req = utils.deepClone(bidRequest);
1378
+ _floorDataForAuction[req.auctionId] = utils.deepClone(basicFloorConfig);
1379
+
1380
+ expect(guardTids('mock-bidder').bidRequest(req).getFloor({})).to.deep.equal({
1381
+ currency: 'USD',
1382
+ floor: 1.0
1383
+ });
1384
+ });
1385
+
1372
1386
  it('picks the right rule with more complex rules', function () {
1373
1387
  _floorDataForAuction[bidRequest.auctionId] = {
1374
1388
  ...basicFloorConfig,
@@ -2160,7 +2160,7 @@ describe('PubMatic adapter', function () {
2160
2160
  sandbox.restore();
2161
2161
  });
2162
2162
 
2163
- describe('AdsrvrOrgId from userId module', function() {
2163
+ describe('userIdAsEids', function() {
2164
2164
  let sandbox;
2165
2165
  beforeEach(() => {
2166
2166
  sandbox = sinon.sandbox.create();
@@ -2170,13 +2170,10 @@ describe('PubMatic adapter', function () {
2170
2170
  sandbox.restore();
2171
2171
  });
2172
2172
 
2173
- it('Request should have AdsrvrOrgId config params', function() {
2173
+ it('Request should have EIDs', function() {
2174
2174
  bidRequests[0].userId = {};
2175
2175
  bidRequests[0].userId.tdid = 'TTD_ID_FROM_USER_ID_MODULE';
2176
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2177
- let request = spec.buildRequests(bidRequests, {});
2178
- let data = JSON.parse(request.data);
2179
- expect(data.user.eids).to.deep.equal([{
2176
+ bidRequests[0].userIdAsEids = [{
2180
2177
  'source': 'adserver.org',
2181
2178
  'uids': [{
2182
2179
  'id': 'TTD_ID_FROM_USER_ID_MODULE',
@@ -2185,383 +2182,19 @@ describe('PubMatic adapter', function () {
2185
2182
  'rtiPartner': 'TDID'
2186
2183
  }
2187
2184
  }]
2188
- }]);
2189
- });
2190
-
2191
- it('Request should have adsrvrOrgId from UserId Module if config and userId module both have TTD ID', function() {
2192
- sandbox.stub(config, 'getConfig').callsFake((key) => {
2193
- var config = {
2194
- adsrvrOrgId: {
2195
- 'TDID': 'TTD_ID_FROM_CONFIG',
2196
- 'TDID_LOOKUP': 'TRUE',
2197
- 'TDID_CREATED_AT': '2018-10-01T07:05:40'
2198
- }
2199
- };
2200
- return config[key];
2201
- });
2202
- bidRequests[0].userId = {};
2203
- bidRequests[0].userId.tdid = 'TTD_ID_FROM_USER_ID_MODULE';
2204
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2205
- let request = spec.buildRequests(bidRequests, {});
2206
- let data = JSON.parse(request.data);
2207
- expect(data.user.eids).to.deep.equal([{
2208
- 'source': 'adserver.org',
2209
- 'uids': [{
2210
- 'id': 'TTD_ID_FROM_USER_ID_MODULE',
2211
- 'atype': 1,
2212
- 'ext': {
2213
- 'rtiPartner': 'TDID'
2214
- }
2215
- }]
2216
- }]);
2217
- });
2218
-
2219
- it('Request should NOT have adsrvrOrgId params if userId is NOT object', function() {
2185
+ }];
2220
2186
  let request = spec.buildRequests(bidRequests, {});
2221
2187
  let data = JSON.parse(request.data);
2222
- expect(data.user.eids).to.deep.equal(undefined);
2188
+ expect(data.user.eids).to.deep.equal(bidRequests[0].userIdAsEids);
2223
2189
  });
2224
2190
 
2225
- it('Request should NOT have adsrvrOrgId params if userId.tdid is NOT string', function() {
2226
- bidRequests[0].userId = {
2227
- tdid: 1234
2228
- };
2191
+ it('Request should NOT have EIDs userIdAsEids is NOT object', function() {
2229
2192
  let request = spec.buildRequests(bidRequests, {});
2230
2193
  let data = JSON.parse(request.data);
2231
2194
  expect(data.user.eids).to.deep.equal(undefined);
2232
2195
  });
2233
2196
  });
2234
2197
 
2235
- describe('UserIds from request', function() {
2236
- describe('pubcommon Id', function() {
2237
- it('send the pubcommon id if it is present', function() {
2238
- bidRequests[0].userId = {};
2239
- bidRequests[0].userId.pubcid = 'pub_common_user_id';
2240
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2241
- let request = spec.buildRequests(bidRequests, {});
2242
- let data = JSON.parse(request.data);
2243
- expect(data.user.eids).to.deep.equal([{
2244
- 'source': 'pubcid.org',
2245
- 'uids': [{
2246
- 'id': 'pub_common_user_id',
2247
- 'atype': 1
2248
- }]
2249
- }]);
2250
- });
2251
-
2252
- it('do not pass if not string', function() {
2253
- bidRequests[0].userId = {};
2254
- bidRequests[0].userId.pubcid = 1;
2255
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2256
- let request = spec.buildRequests(bidRequests, {});
2257
- let data = JSON.parse(request.data);
2258
- expect(data.user.eids).to.equal(undefined);
2259
- bidRequests[0].userId.pubcid = [];
2260
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2261
- request = spec.buildRequests(bidRequests, {});
2262
- data = JSON.parse(request.data);
2263
- expect(data.user.eids).to.equal(undefined);
2264
- bidRequests[0].userId.pubcid = null;
2265
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2266
- request = spec.buildRequests(bidRequests, {});
2267
- data = JSON.parse(request.data);
2268
- expect(data.user.eids).to.equal(undefined);
2269
- bidRequests[0].userId.pubcid = {};
2270
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2271
- request = spec.buildRequests(bidRequests, {});
2272
- data = JSON.parse(request.data);
2273
- expect(data.user.eids).to.equal(undefined);
2274
- });
2275
- });
2276
-
2277
- describe('ID5 Id', function() {
2278
- it('send the id5 id if it is present', function() {
2279
- bidRequests[0].userId = {};
2280
- bidRequests[0].userId.id5id = { uid: 'id5-user-id' };
2281
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2282
- let request = spec.buildRequests(bidRequests, {});
2283
- let data = JSON.parse(request.data);
2284
- expect(data.user.eids).to.deep.equal([{
2285
- 'source': 'id5-sync.com',
2286
- 'uids': [{
2287
- 'id': 'id5-user-id',
2288
- 'atype': 1
2289
- }]
2290
- }]);
2291
- });
2292
-
2293
- it('do not pass if not string', function() {
2294
- bidRequests[0].userId = {};
2295
- bidRequests[0].userId.id5id = { uid: 1 };
2296
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2297
- let request = spec.buildRequests(bidRequests, {});
2298
- let data = JSON.parse(request.data);
2299
- expect(data.user.eids).to.equal(undefined);
2300
- bidRequests[0].userId.id5id = { uid: [] };
2301
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2302
- request = spec.buildRequests(bidRequests, {});
2303
- data = JSON.parse(request.data);
2304
- expect(data.user.eids).to.equal(undefined);
2305
- bidRequests[0].userId.id5id = { uid: null };
2306
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2307
- request = spec.buildRequests(bidRequests, {});
2308
- data = JSON.parse(request.data);
2309
- expect(data.user.eids).to.equal(undefined);
2310
- bidRequests[0].userId.id5id = { uid: {} };
2311
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2312
- request = spec.buildRequests(bidRequests, {});
2313
- data = JSON.parse(request.data);
2314
- expect(data.user.eids).to.equal(undefined);
2315
- });
2316
- });
2317
-
2318
- describe('Criteo Id', function() {
2319
- it('send the criteo id if it is present', function() {
2320
- bidRequests[0].userId = {};
2321
- bidRequests[0].userId.criteoId = 'criteo-user-id';
2322
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2323
- let request = spec.buildRequests(bidRequests, {});
2324
- let data = JSON.parse(request.data);
2325
- expect(data.user.eids).to.deep.equal([{
2326
- 'source': 'criteo.com',
2327
- 'uids': [{
2328
- 'id': 'criteo-user-id',
2329
- 'atype': 1
2330
- }]
2331
- }]);
2332
- });
2333
-
2334
- it('do not pass if not string', function() {
2335
- bidRequests[0].userId = {};
2336
- bidRequests[0].userId.criteoId = 1;
2337
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2338
- let request = spec.buildRequests(bidRequests, {});
2339
- let data = JSON.parse(request.data);
2340
- expect(data.user.eids).to.equal(undefined);
2341
- bidRequests[0].userId.criteoId = [];
2342
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2343
- request = spec.buildRequests(bidRequests, {});
2344
- data = JSON.parse(request.data);
2345
- expect(data.user.eids).to.equal(undefined);
2346
- bidRequests[0].userId.criteoId = null;
2347
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2348
- request = spec.buildRequests(bidRequests, {});
2349
- data = JSON.parse(request.data);
2350
- expect(data.user.eids).to.equal(undefined);
2351
- bidRequests[0].userId.criteoId = {};
2352
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2353
- request = spec.buildRequests(bidRequests, {});
2354
- data = JSON.parse(request.data);
2355
- expect(data.user.eids).to.equal(undefined);
2356
- });
2357
- });
2358
-
2359
- describe('IdentityLink Id', function() {
2360
- it('send the identity-link id if it is present', function() {
2361
- bidRequests[0].userId = {};
2362
- bidRequests[0].userId.idl_env = 'identity-link-user-id';
2363
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2364
- let request = spec.buildRequests(bidRequests, {});
2365
- let data = JSON.parse(request.data);
2366
- expect(data.user.eids).to.deep.equal([{
2367
- 'source': 'liveramp.com',
2368
- 'uids': [{
2369
- 'id': 'identity-link-user-id',
2370
- 'atype': 3
2371
- }]
2372
- }]);
2373
- });
2374
-
2375
- it('do not pass if not string', function() {
2376
- bidRequests[0].userId = {};
2377
- bidRequests[0].userId.idl_env = 1;
2378
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2379
- let request = spec.buildRequests(bidRequests, {});
2380
- let data = JSON.parse(request.data);
2381
- expect(data.user.eids).to.equal(undefined);
2382
- bidRequests[0].userId.idl_env = [];
2383
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2384
- request = spec.buildRequests(bidRequests, {});
2385
- data = JSON.parse(request.data);
2386
- expect(data.user.eids).to.equal(undefined);
2387
- bidRequests[0].userId.idl_env = null;
2388
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2389
- request = spec.buildRequests(bidRequests, {});
2390
- data = JSON.parse(request.data);
2391
- expect(data.user.eids).to.equal(undefined);
2392
- bidRequests[0].userId.idl_env = {};
2393
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2394
- request = spec.buildRequests(bidRequests, {});
2395
- data = JSON.parse(request.data);
2396
- expect(data.user.eids).to.equal(undefined);
2397
- });
2398
- });
2399
-
2400
- describe('LiveIntent Id', function() {
2401
- it('send the LiveIntent id if it is present', function() {
2402
- bidRequests[0].userId = {};
2403
- bidRequests[0].userId.lipb = { lipbid: 'live-intent-user-id' };
2404
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2405
- let request = spec.buildRequests(bidRequests, {});
2406
- let data = JSON.parse(request.data);
2407
- expect(data.user.eids).to.deep.equal([{
2408
- 'source': 'liveintent.com',
2409
- 'uids': [{
2410
- 'id': 'live-intent-user-id',
2411
- 'atype': 3
2412
- }]
2413
- }]);
2414
- });
2415
-
2416
- it('do not pass if not string', function() {
2417
- bidRequests[0].userId = {};
2418
- bidRequests[0].userId.lipb = { lipbid: 1 };
2419
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2420
- let request = spec.buildRequests(bidRequests, {});
2421
- let data = JSON.parse(request.data);
2422
- expect(data.user.eids).to.equal(undefined);
2423
- bidRequests[0].userId.lipb.lipbid = [];
2424
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2425
- request = spec.buildRequests(bidRequests, {});
2426
- data = JSON.parse(request.data);
2427
- expect(data.user.eids).to.equal(undefined);
2428
- bidRequests[0].userId.lipb.lipbid = null;
2429
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2430
- request = spec.buildRequests(bidRequests, {});
2431
- data = JSON.parse(request.data);
2432
- expect(data.user.eids).to.equal(undefined);
2433
- bidRequests[0].userId.lipb.lipbid = {};
2434
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2435
- request = spec.buildRequests(bidRequests, {});
2436
- data = JSON.parse(request.data);
2437
- expect(data.user.eids).to.equal(undefined);
2438
- });
2439
- });
2440
-
2441
- describe('Parrable Id', function() {
2442
- it('send the Parrable id if it is present', function() {
2443
- bidRequests[0].userId = {};
2444
- bidRequests[0].userId.parrableId = { eid: 'parrable-user-id' };
2445
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2446
- let request = spec.buildRequests(bidRequests, {});
2447
- let data = JSON.parse(request.data);
2448
- expect(data.user.eids).to.deep.equal([{
2449
- 'source': 'parrable.com',
2450
- 'uids': [{
2451
- 'id': 'parrable-user-id',
2452
- 'atype': 1
2453
- }]
2454
- }]);
2455
- });
2456
-
2457
- it('do not pass if not object with eid key', function() {
2458
- bidRequests[0].userId = {};
2459
- bidRequests[0].userId.parrableid = 1;
2460
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2461
- let request = spec.buildRequests(bidRequests, {});
2462
- let data = JSON.parse(request.data);
2463
- expect(data.user.eids).to.equal(undefined);
2464
- bidRequests[0].userId.parrableid = [];
2465
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2466
- request = spec.buildRequests(bidRequests, {});
2467
- data = JSON.parse(request.data);
2468
- expect(data.user.eids).to.equal(undefined);
2469
- bidRequests[0].userId.parrableid = null;
2470
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2471
- request = spec.buildRequests(bidRequests, {});
2472
- data = JSON.parse(request.data);
2473
- expect(data.user.eids).to.equal(undefined);
2474
- bidRequests[0].userId.parrableid = {};
2475
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2476
- request = spec.buildRequests(bidRequests, {});
2477
- data = JSON.parse(request.data);
2478
- expect(data.user.eids).to.equal(undefined);
2479
- });
2480
- });
2481
-
2482
- describe('Britepool Id', function() {
2483
- it('send the Britepool id if it is present', function() {
2484
- bidRequests[0].userId = {};
2485
- bidRequests[0].userId.britepoolid = 'britepool-user-id';
2486
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2487
- let request = spec.buildRequests(bidRequests, {});
2488
- let data = JSON.parse(request.data);
2489
- expect(data.user.eids).to.deep.equal([{
2490
- 'source': 'britepool.com',
2491
- 'uids': [{
2492
- 'id': 'britepool-user-id',
2493
- 'atype': 3
2494
- }]
2495
- }]);
2496
- });
2497
-
2498
- it('do not pass if not string', function() {
2499
- bidRequests[0].userId = {};
2500
- bidRequests[0].userId.britepoolid = 1;
2501
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2502
- let request = spec.buildRequests(bidRequests, {});
2503
- let data = JSON.parse(request.data);
2504
- expect(data.user.eids).to.equal(undefined);
2505
- bidRequests[0].userId.britepoolid = [];
2506
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2507
- request = spec.buildRequests(bidRequests, {});
2508
- data = JSON.parse(request.data);
2509
- expect(data.user.eids).to.equal(undefined);
2510
- bidRequests[0].userId.britepoolid = null;
2511
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2512
- request = spec.buildRequests(bidRequests, {});
2513
- data = JSON.parse(request.data);
2514
- expect(data.user.eids).to.equal(undefined);
2515
- bidRequests[0].userId.britepoolid = {};
2516
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2517
- request = spec.buildRequests(bidRequests, {});
2518
- data = JSON.parse(request.data);
2519
- expect(data.user.eids).to.equal(undefined);
2520
- });
2521
- });
2522
-
2523
- describe('NetId', function() {
2524
- it('send the NetId if it is present', function() {
2525
- bidRequests[0].userId = {};
2526
- bidRequests[0].userId.netId = 'netid-user-id';
2527
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2528
- let request = spec.buildRequests(bidRequests, {});
2529
- let data = JSON.parse(request.data);
2530
- expect(data.user.eids).to.deep.equal([{
2531
- 'source': 'netid.de',
2532
- 'uids': [{
2533
- 'id': 'netid-user-id',
2534
- 'atype': 1
2535
- }]
2536
- }]);
2537
- });
2538
-
2539
- it('do not pass if not string', function() {
2540
- bidRequests[0].userId = {};
2541
- bidRequests[0].userId.netId = 1;
2542
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2543
- let request = spec.buildRequests(bidRequests, {});
2544
- let data = JSON.parse(request.data);
2545
- expect(data.user.eids).to.equal(undefined);
2546
- bidRequests[0].userId.netId = [];
2547
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2548
- request = spec.buildRequests(bidRequests, {});
2549
- data = JSON.parse(request.data);
2550
- expect(data.user.eids).to.equal(undefined);
2551
- bidRequests[0].userId.netId = null;
2552
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2553
- request = spec.buildRequests(bidRequests, {});
2554
- data = JSON.parse(request.data);
2555
- expect(data.user.eids).to.equal(undefined);
2556
- bidRequests[0].userId.netId = {};
2557
- bidRequests[0].userIdAsEids = createEidsArray(bidRequests[0].userId);
2558
- request = spec.buildRequests(bidRequests, {});
2559
- data = JSON.parse(request.data);
2560
- expect(data.user.eids).to.equal(undefined);
2561
- });
2562
- });
2563
- });
2564
-
2565
2198
  it('should pass device.sua if present in bidderRequest fpd ortb2 object', function () {
2566
2199
  const suaObject = {'source': 2, 'platform': {'brand': 'macOS', 'version': ['12', '4', '0']}, 'browsers': [{'brand': 'Not_A Brand', 'version': ['99', '0', '0', '0']}, {'brand': 'Google Chrome', 'version': ['109', '0', '5414', '119']}, {'brand': 'Chromium', 'version': ['109', '0', '5414', '119']}], 'mobile': 0, 'model': '', 'bitness': '64', 'architecture': 'x86'};
2567
2200
  let request = spec.buildRequests(multipleMediaRequests, {