prebid.js 9.1.0 → 9.2.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 (290) hide show
  1. package/browsers.json +3 -3
  2. package/dist/33acrossAnalyticsAdapter.js +1 -1
  3. package/dist/33acrossBidAdapter.js +1 -1
  4. package/dist/33acrossIdSystem.js +1 -1
  5. package/dist/BTBidAdapter.js +1 -1
  6. package/dist/acuityadsBidAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adagioRtdProvider.js +1 -1
  10. package/dist/adagioUtils.js +1 -0
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/admanBidAdapter.js +1 -1
  13. package/dist/adpod.js +1 -1
  14. package/dist/adprimeBidAdapter.js +1 -1
  15. package/dist/adqueryBidAdapter.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adstirBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgBidAdapter.js +1 -1
  20. package/dist/adyoulikeBidAdapter.js +1 -1
  21. package/dist/agmaAnalyticsAdapter.js +1 -1
  22. package/dist/ajaBidAdapter.js +1 -1
  23. package/dist/amxBidAdapter.js +1 -1
  24. package/dist/amxIdSystem.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/appnexusUtils.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/autoplayDetection.js +1 -1
  30. package/dist/axisBidAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/beyondmediaBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bliinkBidAdapter.js +1 -1
  36. package/dist/boldwinBidAdapter.js +1 -1
  37. package/dist/bridBidAdapter.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/carodaBidAdapter.js +1 -1
  41. package/dist/chtnwBidAdapter.js +1 -1
  42. package/dist/chunk-core.js +1 -1
  43. package/dist/compassBidAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/contentexchangeBidAdapter.js +1 -1
  48. package/dist/conversantAnalyticsAdapter.js +1 -1
  49. package/dist/conversantBidAdapter.js +1 -1
  50. package/dist/craftBidAdapter.js +1 -1
  51. package/dist/criteoBidAdapter.js +1 -1
  52. package/dist/cwireBidAdapter.js +1 -1
  53. package/dist/dailymotionBidAdapter.js +1 -1
  54. package/dist/dependencies.json +78 -2
  55. package/dist/dspxBidAdapter.js +1 -1
  56. package/dist/dxkultureBidAdapter.js +1 -1
  57. package/dist/e_volutionBidAdapter.js +1 -1
  58. package/dist/emtvBidAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/euidIdSystem.js +1 -1
  61. package/dist/exadsBidAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/globalsunBidAdapter.js +1 -1
  66. package/dist/gmosspBidAdapter.js +1 -1
  67. package/dist/goldbachBidAdapter.js +1 -1
  68. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  69. package/dist/greenbidsRtdProvider.js +1 -1
  70. package/dist/gridBidAdapter.js +1 -1
  71. package/dist/gumgumBidAdapter.js +1 -1
  72. package/dist/h12mediaBidAdapter.js +1 -1
  73. package/dist/hypelabBidAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/illuminBidAdapter.js +1 -1
  76. package/dist/imdsBidAdapter.js +1 -1
  77. package/dist/improvedigitalBidAdapter.js +1 -1
  78. package/dist/insticatorBidAdapter.js +1 -1
  79. package/dist/iqzoneBidAdapter.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/jixieBidAdapter.js +1 -1
  82. package/dist/justpremiumBidAdapter.js +1 -1
  83. package/dist/kargoBidAdapter.js +1 -1
  84. package/dist/kimberliteBidAdapter.js +1 -1
  85. package/dist/kiviadsBidAdapter.js +1 -1
  86. package/dist/konduitAnalyticsAdapter.js +1 -1
  87. package/dist/krushmediaBidAdapter.js +1 -1
  88. package/dist/kueezBidAdapter.js +1 -1
  89. package/dist/kueezRtbBidAdapter.js +1 -1
  90. package/dist/lassoBidAdapter.js +1 -1
  91. package/dist/lifestreetBidAdapter.js +1 -1
  92. package/dist/liveIntentIdSystem.js +1 -1
  93. package/dist/logicadBidAdapter.js +1 -1
  94. package/dist/loglyliftBidAdapter.js +1 -1
  95. package/dist/loyalBidAdapter.js +1 -1
  96. package/dist/luceadBidAdapter.js +1 -1
  97. package/dist/lunamediahbBidAdapter.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/mathildeadsBidAdapter.js +1 -1
  102. package/dist/mediafuseBidAdapter.js +1 -1
  103. package/dist/mediasquareBidAdapter.js +1 -1
  104. package/dist/mgidBidAdapter.js +1 -1
  105. package/dist/mgidXBidAdapter.js +1 -1
  106. package/dist/minutemediaBidAdapter.js +1 -1
  107. package/dist/missenaBidAdapter.js +1 -1
  108. package/dist/mobfoxpbBidAdapter.js +1 -1
  109. package/dist/mobianRtdProvider.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/nobidAnalyticsAdapter.js +1 -1
  112. package/dist/nobidBidAdapter.js +1 -1
  113. package/dist/not-for-prod/prebid.js +187 -185
  114. package/dist/oguryBidAdapter.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/openwebBidAdapter.js +1 -1
  118. package/dist/openxBidAdapter.js +1 -1
  119. package/dist/optidigitalBidAdapter.js +1 -1
  120. package/dist/ortbConverter.js +1 -1
  121. package/dist/outbrainBidAdapter.js +1 -1
  122. package/dist/ozoneBidAdapter.js +1 -1
  123. package/dist/paapi.js +1 -1
  124. package/dist/pgamsspBidAdapter.js +1 -1
  125. package/dist/pixfutureBidAdapter.js +1 -1
  126. package/dist/playdigoBidAdapter.js +1 -1
  127. package/dist/prebidServerBidAdapter.js +1 -1
  128. package/dist/pubCircleBidAdapter.js +1 -1
  129. package/dist/publinkIdSystem.js +1 -1
  130. package/dist/publirBidAdapter.js +1 -1
  131. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  132. package/dist/pubmaticBidAdapter.js +1 -1
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pxyzBidAdapter.js +1 -1
  136. package/dist/qtBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/raynRtdProvider.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/relaidoBidAdapter.js +1 -1
  141. package/dist/retailspotBidAdapter.js +1 -1
  142. package/dist/rhythmoneBidAdapter.js +1 -1
  143. package/dist/riseBidAdapter.js +1 -1
  144. package/dist/rubiconBidAdapter.js +1 -1
  145. package/dist/seedingAllianceBidAdapter.js +1 -1
  146. package/dist/seedtagBidAdapter.js +1 -1
  147. package/dist/setupadBidAdapter.js +1 -1
  148. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  149. package/dist/sharethroughBidAdapter.js +1 -1
  150. package/dist/shinezBidAdapter.js +1 -1
  151. package/dist/shinezRtbBidAdapter.js +1 -1
  152. package/dist/smaatoBidAdapter.js +1 -1
  153. package/dist/smartadserverBidAdapter.js +1 -1
  154. package/dist/smartxBidAdapter.js +1 -1
  155. package/dist/smartytechBidAdapter.js +1 -1
  156. package/dist/smilewantedBidAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnBidAdapter.js +1 -1
  159. package/dist/sspBCBidAdapter.js +1 -1
  160. package/dist/stnBidAdapter.js +1 -1
  161. package/dist/stvBidAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/taboolaBidAdapter.js +1 -1
  164. package/dist/tagorasBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/teqblazeUtils.js +1 -0
  168. package/dist/themoneytizerBidAdapter.js +1 -1
  169. package/dist/topicsFpdModule.js +1 -1
  170. package/dist/trionBidAdapter.js +1 -1
  171. package/dist/tripleliftBidAdapter.js +1 -1
  172. package/dist/ttdBidAdapter.js +1 -1
  173. package/dist/twistDigitalBidAdapter.js +1 -1
  174. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  175. package/dist/uid2IdSystem.js +1 -1
  176. package/dist/underdogmediaBidAdapter.js +1 -1
  177. package/dist/undertoneBidAdapter.js +1 -1
  178. package/dist/unrulyBidAdapter.js +1 -1
  179. package/dist/vidazooBidAdapter.js +1 -1
  180. package/dist/videobyteBidAdapter.js +1 -1
  181. package/dist/visiblemeasuresBidAdapter.js +1 -1
  182. package/dist/visxBidAdapter.js +1 -1
  183. package/dist/vuukleBidAdapter.js +1 -1
  184. package/dist/widespaceBidAdapter.js +1 -1
  185. package/dist/winrBidAdapter.js +1 -1
  186. package/dist/yahooAdsBidAdapter.js +1 -1
  187. package/dist/yieldmoBidAdapter.js +1 -1
  188. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  189. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  190. package/libraries/adagioUtils/adagioUtils.js +35 -0
  191. package/libraries/appnexusUtils/anUtils.js +1 -0
  192. package/libraries/autoplayDetection/autoplay.js +8 -1
  193. package/libraries/ortbConverter/converter.js +1 -1
  194. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  195. package/modules/.submodules.json +1 -0
  196. package/modules/acuityadsBidAdapter.js +5 -203
  197. package/modules/adagioBidAdapter.js +1 -17
  198. package/modules/adagioRtdProvider.js +41 -51
  199. package/modules/adagioRtdProvider.md +1 -0
  200. package/modules/admanBidAdapter.js +31 -188
  201. package/modules/adprimeBidAdapter.js +28 -165
  202. package/modules/axisBidAdapter.js +33 -165
  203. package/modules/beyondmediaBidAdapter.js +5 -189
  204. package/modules/bliinkBidAdapter.js +3 -31
  205. package/modules/boldwinBidAdapter.js +21 -159
  206. package/modules/ceeIdSystem.js +1 -1
  207. package/modules/compassBidAdapter.js +5 -198
  208. package/modules/contentexchangeBidAdapter.js +5 -200
  209. package/modules/conversantBidAdapter.js +1 -0
  210. package/modules/e_volutionBidAdapter.js +4 -186
  211. package/modules/emtvBidAdapter.js +5 -198
  212. package/modules/globalsunBidAdapter.js +5 -199
  213. package/modules/id5IdSystem.js +31 -2
  214. package/modules/id5IdSystem.md +67 -2
  215. package/modules/iqzoneBidAdapter.js +5 -224
  216. package/modules/kiviadsBidAdapter.js +5 -199
  217. package/modules/krushmediaBidAdapter.js +25 -143
  218. package/modules/loyalBidAdapter.js +4 -178
  219. package/modules/lunamediahbBidAdapter.js +5 -118
  220. package/modules/mathildeadsBidAdapter.js +5 -198
  221. package/modules/mgidXBidAdapter.js +14 -207
  222. package/modules/mobfoxpbBidAdapter.js +4 -135
  223. package/modules/mobianRtdProvider.js +2 -2
  224. package/modules/nobidAnalyticsAdapter.js +2 -3
  225. package/modules/ozoneBidAdapter.js +117 -58
  226. package/modules/paapi.js +2 -1
  227. package/modules/pgamsspBidAdapter.js +5 -240
  228. package/modules/playdigoBidAdapter.js +4 -186
  229. package/modules/prebidServerBidAdapter/index.js +9 -2
  230. package/modules/pubCircleBidAdapter.js +5 -218
  231. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  232. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  233. package/modules/qtBidAdapter.js +5 -224
  234. package/modules/raynRtdProvider.js +36 -3
  235. package/modules/seedtagBidAdapter.js +1 -0
  236. package/modules/setupadBidAdapter.js +58 -140
  237. package/modules/smartytechBidAdapter.js +7 -2
  238. package/modules/topicsFpdModule.js +1 -1
  239. package/modules/uid2IdSystem.js +0 -1
  240. package/modules/uid2IdSystem_shared.js +0 -1
  241. package/modules/visiblemeasuresBidAdapter.js +5 -199
  242. package/package.json +1 -1
  243. package/src/auction.js +5 -63
  244. package/src/utils/focusTimeout.js +41 -0
  245. package/src/utils/ttlCollection.js +2 -1
  246. package/src/utils.js +42 -0
  247. package/src/videoCache.js +72 -0
  248. package/test/mocks/videoCacheStub.js +1 -1
  249. package/test/spec/auctionmanager_spec.js +16 -1
  250. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  251. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  252. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  253. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  254. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  255. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  256. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  257. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  258. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  259. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  260. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  261. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  262. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  263. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  264. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  265. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  266. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  267. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  268. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  269. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  270. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  271. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  272. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  273. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  274. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  275. package/test/spec/modules/paapi_spec.js +5 -5
  276. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  277. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  278. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  279. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  280. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  281. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  282. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  283. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  284. package/test/spec/modules/setupadBidAdapter_spec.js +124 -97
  285. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  286. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  287. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  288. package/test/spec/ortbConverter/converter_spec.js +7 -3
  289. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  290. package/test/spec/videoCache_spec.js +56 -53
@@ -1,131 +1,256 @@
1
- import {expect} from 'chai';
2
- import {spec} from '../../../modules/adprimeBidAdapter.js';
3
- import { BANNER, VIDEO } from '../../../src/mediaTypes.js';
1
+ import { expect } from 'chai';
2
+ import { spec } from '../../../modules/adprimeBidAdapter.js';
3
+ import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
+ import { getUniqueIdentifierStr } from '../../../src/utils.js';
4
5
 
5
- describe('AdprimebBidAdapter', function () {
6
- const bid = {
7
- bidId: '23fhj33i987f',
8
- bidder: 'adprime',
6
+ const bidder = 'adprime';
7
+
8
+ describe('AdprimeBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
19
+ const bids = [
20
+ {
21
+ bidId: getUniqueIdentifierStr(),
22
+ bidder: bidder,
23
+ mediaTypes: {
24
+ [BANNER]: {
25
+ sizes: [[300, 250]]
26
+ }
27
+ },
28
+ params: {
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
32
+ },
33
+ {
34
+ bidId: getUniqueIdentifierStr(),
35
+ bidder: bidder,
36
+ mediaTypes: {
37
+ [VIDEO]: {
38
+ playerSize: [[300, 300]],
39
+ minduration: 5,
40
+ maxduration: 60
41
+ }
42
+ },
43
+ params: {
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
47
+ },
48
+ {
49
+ bidId: getUniqueIdentifierStr(),
50
+ bidder: bidder,
51
+ mediaTypes: {
52
+ [NATIVE]: {
53
+ native: {
54
+ title: {
55
+ required: true
56
+ },
57
+ body: {
58
+ required: true
59
+ },
60
+ icon: {
61
+ required: true,
62
+ size: [64, 64]
63
+ }
64
+ }
65
+ }
66
+ },
67
+ params: {
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
71
+ }
72
+ ];
73
+
74
+ const invalidBid = {
75
+ bidId: getUniqueIdentifierStr(),
76
+ bidder: bidder,
9
77
  mediaTypes: {
10
- banner: {
11
- sizes: [[300, 250]],
78
+ [BANNER]: {
79
+ sizes: [[300, 250]]
12
80
  }
13
81
  },
14
82
  params: {
15
- placementId: 'testBanner'
83
+
16
84
  }
17
- };
85
+ }
18
86
 
19
87
  const bidderRequest = {
88
+ uspConsent: '1---',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
20
93
  refererInfo: {
21
- referer: 'test.com'
22
- }
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
103
+ },
104
+ timeout: 500
23
105
  };
24
106
 
25
107
  describe('isBidRequestValid', function () {
26
- it('Should return true if there are bidId, params and placementId parameters present', function () {
27
- expect(spec.isBidRequestValid(bid)).to.be.true;
108
+ it('Should return true if there are bidId, params and key parameters present', function () {
109
+ expect(spec.isBidRequestValid(bids[0])).to.be.true;
28
110
  });
29
111
  it('Should return false if at least one of parameters is not present', function () {
30
- delete bid.params.placementId;
31
- expect(spec.isBidRequestValid(bid)).to.be.false;
112
+ expect(spec.isBidRequestValid(invalidBid)).to.be.false;
32
113
  });
33
114
  });
34
115
 
35
116
  describe('buildRequests', function () {
36
- let serverRequest = spec.buildRequests([bid], bidderRequest);
117
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
118
+
37
119
  it('Creates a ServerRequest object with method, URL and data', function () {
38
120
  expect(serverRequest).to.exist;
39
121
  expect(serverRequest.method).to.exist;
40
122
  expect(serverRequest.url).to.exist;
41
123
  expect(serverRequest.data).to.exist;
42
124
  });
125
+
43
126
  it('Returns POST method', function () {
44
127
  expect(serverRequest.method).to.equal('POST');
45
128
  });
129
+
46
130
  it('Returns valid URL', function () {
47
131
  expect(serverRequest.url).to.equal('https://delta.adprime.com/pbjs');
48
132
  });
49
- it('Returns valid data if array of bids is valid', function () {
133
+
134
+ it('Returns general data valid', function () {
50
135
  let data = serverRequest.data;
51
136
  expect(data).to.be.an('object');
52
- expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements');
137
+ expect(data).to.have.all.keys('deviceWidth',
138
+ 'deviceHeight',
139
+ 'language',
140
+ 'secure',
141
+ 'host',
142
+ 'page',
143
+ 'placements',
144
+ 'coppa',
145
+ 'ccpa',
146
+ 'gdpr',
147
+ 'tmax'
148
+ );
53
149
  expect(data.deviceWidth).to.be.a('number');
54
150
  expect(data.deviceHeight).to.be.a('number');
55
151
  expect(data.language).to.be.a('string');
56
152
  expect(data.secure).to.be.within(0, 1);
57
153
  expect(data.host).to.be.a('string');
58
154
  expect(data.page).to.be.a('string');
59
- expect(data.gdpr).to.not.exist;
60
- expect(data.ccpa).to.not.exist;
61
- let placement = data['placements'][0];
62
- expect(placement).to.have.keys('placementId', 'bidId', 'identeties', 'adFormat', 'sizes', 'hPlayer', 'wPlayer', 'schain', 'keywords', 'audiences', 'bidFloor');
63
- expect(placement.placementId).to.equal('testBanner');
64
- expect(placement.bidId).to.equal('23fhj33i987f');
65
- expect(placement.adFormat).to.equal(BANNER);
66
- expect(placement.schain).to.be.an('object');
155
+ expect(data.coppa).to.be.a('number');
156
+ expect(data.gdpr).to.be.a('object');
157
+ expect(data.ccpa).to.be.a('string');
158
+ expect(data.tmax).to.be.a('number');
159
+ expect(data.placements).to.have.lengthOf(3);
67
160
  });
68
161
 
69
- it('Returns valid data for mediatype video', function () {
70
- const playerSize = [300, 300];
71
- bid.mediaTypes = {};
72
- bid.mediaTypes[VIDEO] = {
73
- playerSize
74
- };
75
- serverRequest = spec.buildRequests([bid], bidderRequest);
76
- let data = serverRequest.data;
77
- expect(data).to.be.an('object');
78
- let placement = data['placements'][0];
79
- expect(placement).to.be.an('object');
80
- expect(placement.adFormat).to.equal(VIDEO);
81
- expect(placement.wPlayer).to.equal(playerSize[0]);
82
- expect(placement.hPlayer).to.equal(playerSize[1]);
162
+ it('Returns valid placements', function () {
163
+ const { placements } = serverRequest.data;
164
+
165
+ for (let i = 0, len = placements.length; i < len; i++) {
166
+ const placement = placements[i];
167
+ expect(placement.placementId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
168
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
169
+ expect(placement.bidId).to.be.a('string');
170
+ expect(placement.schain).to.be.an('object');
171
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
172
+ expect(placement.type).to.exist.and.to.equal('publisher');
173
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
174
+
175
+ if (placement.adFormat === BANNER) {
176
+ expect(placement.sizes).to.be.an('array');
177
+ }
178
+ switch (placement.adFormat) {
179
+ case BANNER:
180
+ expect(placement.sizes).to.be.an('array');
181
+ break;
182
+ case VIDEO:
183
+ expect(placement.wPlayer).to.be.an('number');
184
+ expect(placement.hPlayer).to.be.an('number');
185
+ expect(placement.keywords).to.be.an('array');
186
+ expect(placement.audiences).to.be.an('array');
187
+ expect(placement.minduration).to.be.an('number');
188
+ expect(placement.maxduration).to.be.an('number');
189
+ break;
190
+ case NATIVE:
191
+ expect(placement.native).to.be.an('object');
192
+ break;
193
+ }
194
+ }
83
195
  });
84
196
 
85
197
  it('Returns data with gdprConsent and without uspConsent', function () {
86
- bidderRequest.gdprConsent = 'test';
87
- serverRequest = spec.buildRequests([bid], bidderRequest);
198
+ delete bidderRequest.uspConsent;
199
+ serverRequest = spec.buildRequests(bids, bidderRequest);
88
200
  let data = serverRequest.data;
89
201
  expect(data.gdpr).to.exist;
90
- expect(data.gdpr).to.be.a('string');
91
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
202
+ expect(data.gdpr).to.be.a('object');
203
+ expect(data.gdpr).to.have.property('consentString');
204
+ expect(data.gdpr).to.not.have.property('vendorData');
205
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
92
206
  expect(data.ccpa).to.not.exist;
93
207
  delete bidderRequest.gdprConsent;
94
208
  });
95
209
 
96
210
  it('Returns data with uspConsent and without gdprConsent', function () {
97
- bidderRequest.uspConsent = 'test';
98
- serverRequest = spec.buildRequests([bid], bidderRequest);
211
+ bidderRequest.uspConsent = '1---';
212
+ delete bidderRequest.gdprConsent;
213
+ serverRequest = spec.buildRequests(bids, bidderRequest);
99
214
  let data = serverRequest.data;
100
215
  expect(data.ccpa).to.exist;
101
216
  expect(data.ccpa).to.be.a('string');
102
217
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
103
218
  expect(data.gdpr).to.not.exist;
104
219
  });
220
+ });
221
+
222
+ describe('gpp consent', function () {
223
+ it('bidderRequest.gppConsent', () => {
224
+ bidderRequest.gppConsent = {
225
+ gppString: 'abc123',
226
+ applicableSections: [8]
227
+ };
105
228
 
106
- it('Returns empty data if no valid requests are passed', function () {
107
- serverRequest = spec.buildRequests([]);
229
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
108
230
  let data = serverRequest.data;
109
- expect(data.placements).to.be.an('array').that.is.empty;
110
- });
111
- });
112
- describe('buildRequests with user ids', function () {
113
- bid.userId = {}
114
- bid.userId.idl_env = 'idl_env123';
115
- let serverRequest = spec.buildRequests([bid], bidderRequest);
116
- it('Return bids with user identeties', function () {
231
+ expect(data).to.be.an('object');
232
+ expect(data).to.have.property('gpp');
233
+ expect(data).to.have.property('gpp_sid');
234
+
235
+ delete bidderRequest.gppConsent;
236
+ })
237
+
238
+ it('bidderRequest.ortb2.regs.gpp', () => {
239
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
240
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
241
+ bidderRequest.ortb2.regs.gpp = 'abc123';
242
+ bidderRequest.ortb2.regs.gpp_sid = [8];
243
+
244
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
117
245
  let data = serverRequest.data;
118
- let placements = data['placements'];
119
246
  expect(data).to.be.an('object');
120
- for (let i = 0; i < placements.length; i++) {
121
- let placement = placements[i];
122
- expect(placement).to.have.property('identeties')
123
- expect(placement.identeties).to.be.an('object')
124
- expect(placement.identeties).to.have.property('identityLink')
125
- expect(placement.identeties.identityLink).to.be.equal('idl_env123')
126
- }
127
- });
247
+ expect(data).to.have.property('gpp');
248
+ expect(data).to.have.property('gpp_sid');
249
+
250
+ bidderRequest.ortb2;
251
+ })
128
252
  });
253
+
129
254
  describe('interpretResponse', function () {
130
255
  it('Should interpret banner response', function () {
131
256
  const banner = {
@@ -141,7 +266,10 @@ describe('AdprimebBidAdapter', function () {
141
266
  netRevenue: true,
142
267
  currency: 'USD',
143
268
  dealId: '1',
144
- meta: {}
269
+ meta: {
270
+ advertiserDomains: ['google.com'],
271
+ advertiserId: 1234
272
+ }
145
273
  }]
146
274
  };
147
275
  let bannerResponses = spec.interpretResponse(banner);
@@ -149,15 +277,15 @@ describe('AdprimebBidAdapter', function () {
149
277
  let dataItem = bannerResponses[0];
150
278
  expect(dataItem).to.have.all.keys('requestId', 'cpm', 'width', 'height', 'ad', 'ttl', 'creativeId',
151
279
  'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
152
- expect(dataItem.requestId).to.equal('23fhj33i987f');
153
- expect(dataItem.cpm).to.equal(0.4);
154
- expect(dataItem.width).to.equal(300);
155
- expect(dataItem.height).to.equal(250);
156
- expect(dataItem.ad).to.equal('Test');
157
- expect(dataItem.ttl).to.equal(120);
158
- expect(dataItem.creativeId).to.equal('2');
280
+ expect(dataItem.requestId).to.equal(banner.body[0].requestId);
281
+ expect(dataItem.cpm).to.equal(banner.body[0].cpm);
282
+ expect(dataItem.width).to.equal(banner.body[0].width);
283
+ expect(dataItem.height).to.equal(banner.body[0].height);
284
+ expect(dataItem.ad).to.equal(banner.body[0].ad);
285
+ expect(dataItem.ttl).to.equal(banner.body[0].ttl);
286
+ expect(dataItem.creativeId).to.equal(banner.body[0].creativeId);
159
287
  expect(dataItem.netRevenue).to.be.true;
160
- expect(dataItem.currency).to.equal('USD');
288
+ expect(dataItem.currency).to.equal(banner.body[0].currency);
161
289
  expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
162
290
  });
163
291
  it('Should interpret video response', function () {
@@ -172,7 +300,10 @@ describe('AdprimebBidAdapter', function () {
172
300
  netRevenue: true,
173
301
  currency: 'USD',
174
302
  dealId: '1',
175
- meta: {}
303
+ meta: {
304
+ advertiserDomains: ['google.com'],
305
+ advertiserId: 1234
306
+ }
176
307
  }]
177
308
  };
178
309
  let videoResponses = spec.interpretResponse(video);
@@ -206,7 +337,10 @@ describe('AdprimebBidAdapter', function () {
206
337
  creativeId: '2',
207
338
  netRevenue: true,
208
339
  currency: 'USD',
209
- meta: {}
340
+ meta: {
341
+ advertiserDomains: ['google.com'],
342
+ advertiserId: 1234
343
+ }
210
344
  }]
211
345
  };
212
346
  let nativeResponses = spec.interpretResponse(native);
@@ -293,6 +427,7 @@ describe('AdprimebBidAdapter', function () {
293
427
  expect(serverResponses).to.be.an('array').that.is.empty;
294
428
  });
295
429
  });
430
+
296
431
  describe('getUserSyncs', function() {
297
432
  it('Should return array of objects with proper sync config , include GDPR', function() {
298
433
  const syncData = spec.getUserSyncs({}, {}, {
@@ -317,5 +452,17 @@ describe('AdprimebBidAdapter', function () {
317
452
  expect(syncData[0].url).to.be.a('string')
318
453
  expect(syncData[0].url).to.equal('https://sync.adprime.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
319
454
  });
455
+ it('Should return array of objects with proper sync config , include GPP', function() {
456
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
457
+ gppString: 'abc123',
458
+ applicableSections: [8]
459
+ });
460
+ expect(syncData).to.be.an('array').which.is.not.empty;
461
+ expect(syncData[0]).to.be.an('object')
462
+ expect(syncData[0].type).to.be.a('string')
463
+ expect(syncData[0].type).to.equal('image')
464
+ expect(syncData[0].url).to.be.a('string')
465
+ expect(syncData[0].url).to.equal('https://sync.adprime.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
466
+ });
320
467
  });
321
468
  });
@@ -3,9 +3,19 @@ import { spec } from '../../../modules/axisBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'axis'
6
+ const bidder = 'axis';
7
7
 
8
8
  describe('AxisBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
9
19
  const bids = [
10
20
  {
11
21
  bidId: getUniqueIdentifierStr(),
@@ -19,7 +29,8 @@ describe('AxisBidAdapter', function () {
19
29
  params: {
20
30
  integration: '000000',
21
31
  token: '000000'
22
- }
32
+ },
33
+ userIdAsEids
23
34
  },
24
35
  {
25
36
  bidId: getUniqueIdentifierStr(),
@@ -35,7 +46,8 @@ describe('AxisBidAdapter', function () {
35
46
  params: {
36
47
  integration: '000000',
37
48
  token: '000000'
38
- }
49
+ },
50
+ userIdAsEids
39
51
  },
40
52
  {
41
53
  bidId: getUniqueIdentifierStr(),
@@ -59,7 +71,8 @@ describe('AxisBidAdapter', function () {
59
71
  params: {
60
72
  integration: '000000',
61
73
  token: '000000'
62
- }
74
+ },
75
+ userIdAsEids
63
76
  }
64
77
  ];
65
78
 
@@ -78,15 +91,25 @@ describe('AxisBidAdapter', function () {
78
91
 
79
92
  const bidderRequest = {
80
93
  uspConsent: '1---',
81
- gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
94
+ gdprConsent: {
95
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
96
+ vendorData: {}
97
+ },
82
98
  refererInfo: {
83
- referer: 'https://test.com'
99
+ referer: 'https://test.com',
100
+ page: 'https://test.com'
84
101
  },
85
102
  ortb2: {
86
103
  site: {
87
104
  cat: ['IAB24']
105
+ },
106
+ device: {
107
+ w: 1512,
108
+ h: 982,
109
+ language: 'en-UK'
88
110
  }
89
- }
111
+ },
112
+ timeout: 500
90
113
  };
91
114
 
92
115
  describe('isBidRequestValid', function () {
@@ -139,7 +162,7 @@ describe('AxisBidAdapter', function () {
139
162
  expect(data.host).to.be.a('string');
140
163
  expect(data.page).to.be.a('string');
141
164
  expect(data.coppa).to.be.a('number');
142
- expect(data.gdpr).to.be.a('string');
165
+ expect(data.gdpr).to.be.a('object');
143
166
  expect(data.ccpa).to.be.a('string');
144
167
  expect(data.tmax).to.be.a('number');
145
168
  expect(data.iabCat).to.have.lengthOf(1);
@@ -156,6 +179,7 @@ describe('AxisBidAdapter', function () {
156
179
  expect(placement.token).to.be.a('string');
157
180
  expect(placement.schain).to.be.an('object');
158
181
  expect(placement.bidfloor).to.exist.and.to.equal(0);
182
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
159
183
 
160
184
  if (placement.adFormat === BANNER) {
161
185
  expect(placement.sizes).to.be.an('array');
@@ -183,8 +207,10 @@ describe('AxisBidAdapter', function () {
183
207
  serverRequest = spec.buildRequests(bids, bidderRequest);
184
208
  let data = serverRequest.data;
185
209
  expect(data.gdpr).to.exist;
186
- expect(data.gdpr).to.be.a('string');
187
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
210
+ expect(data.gdpr).to.be.a('object');
211
+ expect(data.gdpr).to.have.property('consentString');
212
+ expect(data.gdpr).to.not.have.property('vendorData');
213
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
188
214
  expect(data.ccpa).to.not.exist;
189
215
  delete bidderRequest.gdprConsent;
190
216
  });
@@ -199,12 +225,38 @@ describe('AxisBidAdapter', function () {
199
225
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
200
226
  expect(data.gdpr).to.not.exist;
201
227
  });
228
+ });
202
229
 
203
- it('Returns empty data if no valid requests are passed', function () {
204
- serverRequest = spec.buildRequests([], bidderRequest);
230
+ describe('gpp consent', function () {
231
+ it('bidderRequest.gppConsent', () => {
232
+ bidderRequest.gppConsent = {
233
+ gppString: 'abc123',
234
+ applicableSections: [8]
235
+ };
236
+
237
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
205
238
  let data = serverRequest.data;
206
- expect(data.placements).to.be.an('array').that.is.empty;
207
- });
239
+ expect(data).to.be.an('object');
240
+ expect(data).to.have.property('gpp');
241
+ expect(data).to.have.property('gpp_sid');
242
+
243
+ delete bidderRequest.gppConsent;
244
+ })
245
+
246
+ it('bidderRequest.ortb2.regs.gpp', () => {
247
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
248
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
249
+ bidderRequest.ortb2.regs.gpp = 'abc123';
250
+ bidderRequest.ortb2.regs.gpp_sid = [8];
251
+
252
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
253
+ let data = serverRequest.data;
254
+ expect(data).to.be.an('object');
255
+ expect(data).to.have.property('gpp');
256
+ expect(data).to.have.property('gpp_sid');
257
+
258
+ bidderRequest.ortb2;
259
+ })
208
260
  });
209
261
 
210
262
  describe('interpretResponse', function () {
@@ -410,5 +462,17 @@ describe('AxisBidAdapter', function () {
410
462
  expect(syncData[0].url).to.be.a('string')
411
463
  expect(syncData[0].url).to.equal('https://cs.axis-marketplace.com/image?pbjs=1&ccpa=1---&coppa=0')
412
464
  });
465
+ it('Should return array of objects with proper sync config , include GPP', function() {
466
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
467
+ gppString: 'abc123',
468
+ applicableSections: [8]
469
+ });
470
+ expect(syncData).to.be.an('array').which.is.not.empty;
471
+ expect(syncData[0]).to.be.an('object')
472
+ expect(syncData[0].type).to.be.a('string')
473
+ expect(syncData[0].type).to.equal('image')
474
+ expect(syncData[0].url).to.be.a('string')
475
+ expect(syncData[0].url).to.equal('https://cs.axis-marketplace.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
476
+ });
413
477
  });
414
478
  });