prebid.js 8.3.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 (354) 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/admanBidAdapter.js +1 -1
  11. package/dist/admixerIdSystem.js +1 -1
  12. package/dist/adnuntiusBidAdapter.js +1 -1
  13. package/dist/adqueryBidAdapter.js +1 -1
  14. package/dist/adqueryIdSystem.js +1 -1
  15. package/dist/adrelevantisBidAdapter.js +1 -1
  16. package/dist/adtelligentIdSystem.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.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/appierAnalyticsAdapter.js +1 -1
  24. package/dist/appnexusBidAdapter.js +1 -1
  25. package/dist/asoBidAdapter.js +1 -1
  26. package/dist/axonixBidAdapter.js +1 -1
  27. package/dist/beachfrontBidAdapter.js +1 -1
  28. package/dist/bidglassBidAdapter.js +1 -1
  29. package/dist/big-richmediaBidAdapter.js +1 -1
  30. package/dist/brandmetricsRtdProvider.js +1 -1
  31. package/dist/bridBidAdapter.js +1 -1
  32. package/dist/bridgewellBidAdapter.js +1 -1
  33. package/dist/brightMountainMediaBidAdapter.js +1 -1
  34. package/dist/britepoolIdSystem.js +1 -1
  35. package/dist/carodaBidAdapter.js +1 -1
  36. package/dist/chtnwBidAdapter.js +1 -1
  37. package/dist/concertBidAdapter.js +1 -1
  38. package/dist/connectIdSystem.js +1 -1
  39. package/dist/connectadBidAdapter.js +1 -1
  40. package/dist/consentManagementGpp.js +1 -1
  41. package/dist/consumableBidAdapter.js +1 -1
  42. package/dist/conversantAnalyticsAdapter.js +1 -1
  43. package/dist/conversantBidAdapter.js +1 -1
  44. package/dist/craftBidAdapter.js +1 -1
  45. package/dist/criteoBidAdapter.js +1 -1
  46. package/dist/criteoIdSystem.js +1 -1
  47. package/dist/cwireBidAdapter.js +1 -1
  48. package/dist/czechAdIdSystem.js +1 -1
  49. package/dist/dacIdSystem.js +1 -1
  50. package/dist/deepintentDpesIdSystem.js +1 -1
  51. package/dist/dependencies.json +6 -0
  52. package/dist/dmdIdSystem.js +1 -1
  53. package/dist/dspxBidAdapter.js +1 -1
  54. package/dist/eplanningBidAdapter.js +1 -1
  55. package/dist/euidIdSystem.js +1 -1
  56. package/dist/fabrickIdSystem.js +1 -1
  57. package/dist/feedadBidAdapter.js +1 -1
  58. package/dist/finativeBidAdapter.js +1 -1
  59. package/dist/freewheel-sspBidAdapter.js +1 -1
  60. package/dist/ftrackIdSystem.js +1 -1
  61. package/dist/gdprEnforcement.js +1 -1
  62. package/dist/geolocationRtdProvider.js +1 -0
  63. package/dist/gmosspBidAdapter.js +1 -1
  64. package/dist/goldbachBidAdapter.js +1 -1
  65. package/dist/gravitoIdSystem.js +1 -1
  66. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  67. package/dist/greenbidsRtdProvider.js +1 -1
  68. package/dist/gridBidAdapter.js +1 -1
  69. package/dist/growthCodeIdSystem.js +1 -1
  70. package/dist/gumgumBidAdapter.js +1 -1
  71. package/dist/h12mediaBidAdapter.js +1 -1
  72. package/dist/hadronIdSystem.js +1 -1
  73. package/dist/hypelabBidAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/identityLinkIdSystem.js +1 -1
  76. package/dist/idxIdSystem.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/imuIdSystem.js +1 -1
  80. package/dist/insticatorBidAdapter.js +1 -1
  81. package/dist/intentIqIdSystem.js +1 -1
  82. package/dist/invibesBidAdapter.js +1 -1
  83. package/dist/ixBidAdapter.js +1 -1
  84. package/dist/justIdSystem.js +1 -1
  85. package/dist/justpremiumBidAdapter.js +1 -1
  86. package/dist/kargoBidAdapter.js +1 -1
  87. package/dist/kinessoIdSystem.js +1 -1
  88. package/dist/konduitAnalyticsAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/kulturemediaBidAdapter.js +1 -1
  92. package/dist/lassoBidAdapter.js +1 -1
  93. package/dist/lifestreetBidAdapter.js +1 -1
  94. package/dist/liveIntentIdSystem.js +1 -1
  95. package/dist/logicadBidAdapter.js +1 -1
  96. package/dist/loglyliftBidAdapter.js +1 -1
  97. package/dist/lotamePanoramaIdSystem.js +1 -1
  98. package/dist/magniteAnalyticsAdapter.js +1 -1
  99. package/dist/malltvAnalyticsAdapter.js +1 -1
  100. package/dist/marsmediaBidAdapter.js +1 -1
  101. package/dist/mediafuseBidAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/merkleIdSystem.js +1 -1
  104. package/dist/mgidBidAdapter.js +1 -1
  105. package/dist/minutemediaBidAdapter.js +1 -1
  106. package/dist/minutemediaplusBidAdapter.js +1 -1
  107. package/dist/mwOpenLinkIdSystem.js +1 -1
  108. package/dist/naveggIdSystem.js +1 -1
  109. package/dist/netIdSystem.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/not-for-prod/prebid.js +185 -182
  112. package/dist/novatiqIdSystem.js +1 -1
  113. package/dist/oguryBidAdapter.js +1 -1
  114. package/dist/oneKeyIdSystem.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/optidigitalBidAdapter.js +1 -1
  118. package/dist/outbrainBidAdapter.js +1 -1
  119. package/dist/ozoneBidAdapter.js +1 -1
  120. package/dist/pairIdSystem.js +1 -1
  121. package/dist/parrableIdSystem.js +1 -1
  122. package/dist/pixfutureBidAdapter.js +1 -1
  123. package/dist/prebid-core.js +2 -2
  124. package/dist/publinkIdSystem.js +1 -1
  125. package/dist/pubmaticBidAdapter.js +1 -1
  126. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  127. package/dist/pulsepointBidAdapter.js +1 -1
  128. package/dist/pxyzBidAdapter.js +1 -1
  129. package/dist/quantcastBidAdapter.js +1 -1
  130. package/dist/quantcastIdSystem.js +1 -1
  131. package/dist/readpeakBidAdapter.js +1 -1
  132. package/dist/relaidoBidAdapter.js +1 -1
  133. package/dist/retailspotBidAdapter.js +1 -1
  134. package/dist/rhythmoneBidAdapter.js +1 -1
  135. package/dist/riseBidAdapter.js +1 -1
  136. package/dist/rubiconBidAdapter.js +1 -1
  137. package/dist/seedingAllianceBidAdapter.js +1 -1
  138. package/dist/seedtagBidAdapter.js +1 -1
  139. package/dist/sharedIdSystem.js +1 -1
  140. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  141. package/dist/sharethroughBidAdapter.js +1 -1
  142. package/dist/shinezBidAdapter.js +1 -1
  143. package/dist/silverpushBidAdapter.js +1 -1
  144. package/dist/smaatoBidAdapter.js +1 -1
  145. package/dist/smartadserverBidAdapter.js +1 -1
  146. package/dist/smartxBidAdapter.js +1 -1
  147. package/dist/smilewantedBidAdapter.js +1 -1
  148. package/dist/sonobiBidAdapter.js +1 -1
  149. package/dist/sovrnAnalyticsAdapter.js +1 -1
  150. package/dist/sovrnBidAdapter.js +1 -1
  151. package/dist/ssmasBidAdapter.js +1 -0
  152. package/dist/sspBCBidAdapter.js +1 -1
  153. package/dist/stroeerCoreBidAdapter.js +1 -1
  154. package/dist/stvBidAdapter.js +1 -1
  155. package/dist/sublimeBidAdapter.js +1 -1
  156. package/dist/tapadIdSystem.js +1 -1
  157. package/dist/targetVideoBidAdapter.js +1 -1
  158. package/dist/teadsBidAdapter.js +1 -1
  159. package/dist/tncIdSystem.js +1 -1
  160. package/dist/topicsFpdModule.js +1 -1
  161. package/dist/trionBidAdapter.js +1 -1
  162. package/dist/tripleliftBidAdapter.js +1 -1
  163. package/dist/ttdBidAdapter.js +1 -1
  164. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  165. package/dist/uid2IdSystem.js +1 -1
  166. package/dist/underdogmediaBidAdapter.js +1 -1
  167. package/dist/undertoneBidAdapter.js +1 -1
  168. package/dist/unifiedIdSystem.js +1 -1
  169. package/dist/userId.js +1 -1
  170. package/dist/utiqSystem.js +1 -1
  171. package/dist/verizonMediaIdSystem.js +1 -1
  172. package/dist/vidazooBidAdapter.js +1 -1
  173. package/dist/videobyteBidAdapter.js +1 -1
  174. package/dist/visxBidAdapter.js +1 -1
  175. package/dist/voxBidAdapter.js +1 -1
  176. package/dist/vrtcalBidAdapter.js +1 -1
  177. package/dist/vuukleBidAdapter.js +1 -1
  178. package/dist/widespaceBidAdapter.js +1 -1
  179. package/dist/winrBidAdapter.js +1 -1
  180. package/dist/yahoosspBidAdapter.js +1 -1
  181. package/dist/yandexBidAdapter.js +1 -1
  182. package/dist/yieldmoBidAdapter.js +1 -1
  183. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  184. package/dist/zeotapIdPlusIdSystem.js +1 -1
  185. package/integrationExamples/gpt/adUnitFloors.html +0 -1
  186. package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
  187. package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -2
  188. package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
  189. package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
  190. package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
  191. package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
  192. package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +1 -1
  193. package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +1 -1
  194. package/integrationExamples/videoModule/videojs/eventListeners.html +1 -1
  195. package/integrationExamples/videoModule/videojs/eventsUI.html +1 -1
  196. package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +1 -1
  197. package/integrationExamples/videoModule/videojs/mediaMetadata.html +1 -1
  198. package/integrationExamples/videoModule/videojs/playlist.html +1 -1
  199. package/modules/.submodules.json +1 -0
  200. package/modules/33acrossBidAdapter.js +24 -14
  201. package/modules/33acrossIdSystem.js +24 -4
  202. package/modules/a1MediaRtdProvider.js +92 -0
  203. package/modules/a1MediaRtdProvider.md +46 -0
  204. package/modules/adagioBidAdapter.js +0 -1
  205. package/modules/adfBidAdapter.js +4 -1
  206. package/modules/adkernelAdnBidAdapter.js +1 -1
  207. package/modules/adkernelBidAdapter.js +10 -3
  208. package/modules/admanBidAdapter.js +4 -0
  209. package/modules/admixerIdSystem.js +6 -0
  210. package/modules/adnuntiusBidAdapter.js +5 -13
  211. package/modules/adqueryIdSystem.js +6 -0
  212. package/modules/adtelligentIdSystem.js +6 -0
  213. package/modules/adyoulikeBidAdapter.js +6 -3
  214. package/modules/amxIdSystem.js +6 -0
  215. package/modules/beachfrontBidAdapter.js +32 -6
  216. package/modules/brandmetricsRtdProvider.js +36 -2
  217. package/modules/brandmetricsRtdProvider.md +17 -2
  218. package/modules/britepoolIdSystem.js +6 -0
  219. package/modules/connectIdSystem.js +6 -0
  220. package/modules/consentManagementGpp.js +10 -1
  221. package/modules/consumableBidAdapter.js +9 -1
  222. package/modules/criteoIdSystem.js +6 -0
  223. package/modules/czechAdIdSystem.js +6 -0
  224. package/modules/dacIdSystem.js +6 -0
  225. package/modules/deepintentDpesIdSystem.js +7 -2
  226. package/modules/dmdIdSystem.js +6 -0
  227. package/modules/euidIdSystem.js +9 -0
  228. package/modules/fabrickIdSystem.js +6 -0
  229. package/modules/ftrackIdSystem.js +16 -0
  230. package/modules/gdprEnforcement.js +27 -22
  231. package/modules/geolocationRtdProvider.js +65 -0
  232. package/modules/gravitoIdSystem.js +6 -0
  233. package/modules/greenbidsRtdProvider.js +1 -1
  234. package/modules/gridBidAdapter.js +19 -0
  235. package/modules/growthCodeIdSystem.js +20 -1
  236. package/modules/hadronIdSystem.js +6 -0
  237. package/modules/id5IdSystem.js +34 -8
  238. package/modules/identityLinkIdSystem.js +6 -0
  239. package/modules/idxIdSystem.js +6 -0
  240. package/modules/imdsBidAdapter.js +38 -14
  241. package/modules/imuIdSystem.js +10 -0
  242. package/modules/intentIqIdSystem.js +6 -0
  243. package/modules/invibesBidAdapter.js +5 -5
  244. package/modules/ixBidAdapter.js +56 -2
  245. package/modules/justIdSystem.js +6 -0
  246. package/modules/kargoBidAdapter.js +4 -0
  247. package/modules/kinessoIdSystem.js +7 -2
  248. package/modules/liveIntentIdSystem.js +53 -0
  249. package/modules/lotamePanoramaIdSystem.js +6 -0
  250. package/modules/merkleIdSystem.js +24 -0
  251. package/modules/minutemediaBidAdapter.js +17 -2
  252. package/modules/mwOpenLinkIdSystem.js +6 -0
  253. package/modules/naveggIdSystem.js +6 -0
  254. package/modules/netIdSystem.js +6 -0
  255. package/modules/novatiqIdSystem.js +12 -0
  256. package/modules/oguryBidAdapter.js +29 -16
  257. package/modules/oneKeyIdSystem.js +26 -0
  258. package/modules/ozoneBidAdapter.js +65 -18
  259. package/modules/ozoneBidAdapter.md +3 -1
  260. package/modules/pairIdSystem.js +6 -0
  261. package/modules/parrableIdSystem.js +38 -2
  262. package/modules/publinkIdSystem.js +7 -1
  263. package/modules/pubmaticBidAdapter.js +16 -1
  264. package/modules/pulsepointBidAdapter.js +63 -424
  265. package/modules/pulsepointBidAdapter.md +39 -45
  266. package/modules/quantcastIdSystem.js +6 -0
  267. package/modules/rubiconBidAdapter.js +9 -0
  268. package/modules/sharedIdSystem.js +7 -1
  269. package/modules/silverpushBidAdapter.js +2 -2
  270. package/modules/sovrnBidAdapter.js +5 -1
  271. package/modules/ssmasBidAdapter.js +126 -0
  272. package/modules/ssmasBidAdapter.md +35 -0
  273. package/modules/sspBCBidAdapter.js +36 -13
  274. package/modules/stroeerCoreBidAdapter.js +2 -3
  275. package/modules/tapadIdSystem.js +6 -0
  276. package/modules/teadsBidAdapter.js +2 -0
  277. package/modules/tncIdSystem.js +6 -0
  278. package/modules/topicsFpdModule.js +4 -1
  279. package/modules/topicsFpdModule.md +4 -0
  280. package/modules/tripleliftBidAdapter.js +5 -0
  281. package/modules/uid2IdSystem.js +14 -0
  282. package/modules/unifiedIdSystem.js +11 -0
  283. package/modules/userId/eids.js +6 -445
  284. package/modules/userId/index.js +38 -26
  285. package/modules/utiqSystem.js +9 -0
  286. package/modules/verizonMediaIdSystem.js +6 -0
  287. package/modules/vidazooBidAdapter.js +5 -7
  288. package/modules/voxBidAdapter.js +16 -5
  289. package/modules/vrtcalBidAdapter.js +10 -6
  290. package/modules/yahoosspBidAdapter.js +38 -33
  291. package/modules/yahoosspBidAdapter.md +96 -95
  292. package/modules/yandexBidAdapter.js +12 -15
  293. package/modules/zeotapIdPlusIdSystem.js +6 -0
  294. package/package.json +1 -1
  295. package/src/activities/redactor.js +1 -1
  296. package/src/adapters/bidderFactory.js +15 -6
  297. package/src/adloader.js +2 -1
  298. package/src/auction.js +24 -2
  299. package/src/constants.json +3 -1
  300. package/src/fpd/sua.js +8 -2
  301. package/test/spec/auctionmanager_spec.js +29 -1
  302. package/test/spec/fpd/enrichment_spec.js +7 -1
  303. package/test/spec/fpd/sua_spec.js +12 -0
  304. package/test/spec/modules/33acrossBidAdapter_spec.js +188 -35
  305. package/test/spec/modules/33acrossIdSystem_spec.js +122 -27
  306. package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
  307. package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
  308. package/test/spec/modules/adfBidAdapter_spec.js +47 -0
  309. package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
  310. package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
  311. package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
  312. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
  313. package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
  314. package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
  315. package/test/spec/modules/consentManagementGpp_spec.js +16 -0
  316. package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
  317. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
  318. package/test/spec/modules/gdprEnforcement_spec.js +43 -2
  319. package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
  320. package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
  321. package/test/spec/modules/gridBidAdapter_spec.js +42 -0
  322. package/test/spec/modules/id5IdSystem_spec.js +18 -0
  323. package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
  324. package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
  325. package/test/spec/modules/ixBidAdapter_spec.js +95 -5
  326. package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
  327. package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
  328. package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
  329. package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
  330. package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
  331. package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
  332. package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
  333. package/test/spec/modules/priceFloors_spec.js +14 -0
  334. package/test/spec/modules/pubmaticBidAdapter_spec.js +125 -373
  335. package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
  336. package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
  337. package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
  338. package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
  339. package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
  340. package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
  341. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +8 -5
  342. package/test/spec/modules/teadsBidAdapter_spec.js +70 -21
  343. package/test/spec/modules/topicsFpdModule_spec.js +10 -4
  344. package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
  345. package/test/spec/modules/userId_spec.js +116 -7
  346. package/test/spec/modules/vidazooBidAdapter_spec.js +0 -5
  347. package/test/spec/modules/voxBidAdapter_spec.js +93 -0
  348. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
  349. package/test/spec/modules/xeBidAdapter_spec.js +366 -368
  350. package/test/spec/modules/yahoosspBidAdapter_spec.js +405 -330
  351. package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
  352. package/test/spec/unit/core/bidderFactory_spec.js +61 -14
  353. package/integrationExamples/gpt/inskin_example.html +0 -100
  354. package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
@@ -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, {
@@ -3057,6 +2690,76 @@ describe('PubMatic adapter', function () {
3057
2690
  });
3058
2691
  }
3059
2692
 
2693
+ describe('GPP', function() {
2694
+ it('Request params check with GPP Consent', function () {
2695
+ let bidRequest = {
2696
+ gppConsent: {
2697
+ 'gppString': 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN',
2698
+ 'fullGppData': {
2699
+ 'sectionId': 3,
2700
+ 'gppVersion': 1,
2701
+ 'sectionList': [
2702
+ 5,
2703
+ 7
2704
+ ],
2705
+ 'applicableSections': [
2706
+ 5
2707
+ ],
2708
+ 'gppString': 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN',
2709
+ 'pingData': {
2710
+ 'cmpStatus': 'loaded',
2711
+ 'gppVersion': '1.0',
2712
+ 'cmpDisplayStatus': 'visible',
2713
+ 'supportedAPIs': [
2714
+ 'tcfca',
2715
+ 'usnat',
2716
+ 'usca',
2717
+ 'usva',
2718
+ 'usco',
2719
+ 'usut',
2720
+ 'usct'
2721
+ ],
2722
+ 'cmpId': 31
2723
+ },
2724
+ 'eventName': 'sectionChange'
2725
+ },
2726
+ 'applicableSections': [
2727
+ 5
2728
+ ],
2729
+ 'apiVersion': 1
2730
+ }
2731
+ };
2732
+ let request = spec.buildRequests(bidRequests, bidRequest);
2733
+ let data = JSON.parse(request.data);
2734
+ expect(data.regs.gpp).to.equal('DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN');
2735
+ expect(data.regs.gpp_sid[0]).to.equal(5);
2736
+ });
2737
+
2738
+ it('Request params check without GPP Consent', function () {
2739
+ let bidRequest = {};
2740
+ let request = spec.buildRequests(bidRequests, bidRequest);
2741
+ let data = JSON.parse(request.data);
2742
+ expect(data.regs).to.equal(undefined);
2743
+ });
2744
+
2745
+ it('Request params check with GPP Consent read from ortb2', function () {
2746
+ let bidRequest = {
2747
+ ortb2: {
2748
+ regs: {
2749
+ 'gpp': 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN',
2750
+ 'gpp_sid': [
2751
+ 5
2752
+ ]
2753
+ }
2754
+ }
2755
+ };
2756
+ let request = spec.buildRequests(bidRequests, bidRequest);
2757
+ let data = JSON.parse(request.data);
2758
+ expect(data.regs.gpp).to.equal('DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN');
2759
+ expect(data.regs.gpp_sid[0]).to.equal(5);
2760
+ });
2761
+ });
2762
+
3060
2763
  describe('Fledge', function() {
3061
2764
  it('should not send imp.ext.ae when FLEDGE is disabled, ', function () {
3062
2765
  let bidRequest = Object.assign([], bidRequests);
@@ -3991,6 +3694,55 @@ describe('PubMatic adapter', function () {
3991
3694
  type: 'image', url: `${syncurl_image}&gdpr=1&gdpr_consent=foo&us_privacy=1NYN&coppa=1`
3992
3695
  }]);
3993
3696
  });
3697
+
3698
+ describe('GPP', function() {
3699
+ it('should return userSync url without Gpp consent if gppConsent is undefined', () => {
3700
+ const result = spec.getUserSyncs({iframeEnabled: true}, undefined, undefined, undefined, undefined);
3701
+ expect(result).to.deep.equal([{
3702
+ type: 'iframe', url: `${syncurl_iframe}`
3703
+ }]);
3704
+ });
3705
+
3706
+ it('should return userSync url without Gpp consent if gppConsent.gppString is undefined', () => {
3707
+ const gppConsent = { applicableSections: ['5'] };
3708
+ const result = spec.getUserSyncs({iframeEnabled: true}, undefined, undefined, undefined, gppConsent);
3709
+ expect(result).to.deep.equal([{
3710
+ type: 'iframe', url: `${syncurl_iframe}`
3711
+ }]);
3712
+ });
3713
+
3714
+ it('should return userSync url without Gpp consent if gppConsent.applicableSections is undefined', () => {
3715
+ const gppConsent = { gppString: 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN' };
3716
+ const result = spec.getUserSyncs({iframeEnabled: true}, undefined, undefined, undefined, gppConsent);
3717
+ expect(result).to.deep.equal([{
3718
+ type: 'iframe', url: `${syncurl_iframe}`
3719
+ }]);
3720
+ });
3721
+
3722
+ it('should return userSync url without Gpp consent if gppConsent.applicableSections is an empty array', () => {
3723
+ const gppConsent = { gppString: 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN', applicableSections: [] };
3724
+ const result = spec.getUserSyncs({iframeEnabled: true}, undefined, undefined, undefined, gppConsent);
3725
+ expect(result).to.deep.equal([{
3726
+ type: 'iframe', url: `${syncurl_iframe}`
3727
+ }]);
3728
+ });
3729
+
3730
+ it('should concatenate gppString and applicableSections values in the returned userSync iframe url', () => {
3731
+ const gppConsent = { gppString: 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN', applicableSections: [5] };
3732
+ const result = spec.getUserSyncs({iframeEnabled: true}, undefined, undefined, undefined, gppConsent);
3733
+ expect(result).to.deep.equal([{
3734
+ type: 'iframe', url: `${syncurl_iframe}&gpp=${encodeURIComponent(gppConsent.gppString)}&gpp_sid=${encodeURIComponent(gppConsent.applicableSections)}`
3735
+ }]);
3736
+ });
3737
+
3738
+ it('should concatenate gppString and applicableSections values in the returned userSync image url', () => {
3739
+ const gppConsent = { gppString: 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN', applicableSections: [5] };
3740
+ const result = spec.getUserSyncs({iframeEnabled: false}, undefined, undefined, undefined, gppConsent);
3741
+ expect(result).to.deep.equal([{
3742
+ type: 'image', url: `${syncurl_image}&gpp=${encodeURIComponent(gppConsent.gppString)}&gpp_sid=${encodeURIComponent(gppConsent.applicableSections)}`
3743
+ }]);
3744
+ });
3745
+ });
3994
3746
  });
3995
3747
 
3996
3748
  if (FEATURES.VIDEO) {