prebid.js 9.0.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 (307) hide show
  1. package/.nvmrc +1 -1
  2. package/browsers.json +3 -3
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/acuityadsBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioRtdProvider.js +1 -1
  11. package/dist/adagioUtils.js +1 -0
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/admanBidAdapter.js +1 -1
  14. package/dist/adpod.js +1 -1
  15. package/dist/adprimeBidAdapter.js +1 -1
  16. package/dist/adqueryBidAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adstirBidAdapter.js +1 -1
  19. package/dist/adtrgtmeBidAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adyoulikeBidAdapter.js +1 -1
  22. package/dist/agmaAnalyticsAdapter.js +1 -1
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/appnexusUtils.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/autoplayDetection.js +1 -1
  31. package/dist/axisBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/beyondmediaBidAdapter.js +1 -1
  34. package/dist/bidglassBidAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bliinkBidAdapter.js +1 -1
  37. package/dist/boldwinBidAdapter.js +1 -1
  38. package/dist/bridBidAdapter.js +1 -1
  39. package/dist/bridgewellBidAdapter.js +1 -1
  40. package/dist/brightMountainMediaBidAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/chunk-core.js +1 -1
  44. package/dist/compassBidAdapter.js +1 -1
  45. package/dist/concertBidAdapter.js +1 -1
  46. package/dist/connectadBidAdapter.js +1 -1
  47. package/dist/consumableBidAdapter.js +1 -1
  48. package/dist/contentexchangeBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/cwireBidAdapter.js +1 -1
  54. package/dist/dailymotionBidAdapter.js +1 -1
  55. package/dist/dependencies.json +83 -4
  56. package/dist/dspxBidAdapter.js +1 -1
  57. package/dist/dxkultureBidAdapter.js +1 -1
  58. package/dist/e_volutionBidAdapter.js +1 -1
  59. package/dist/emtvBidAdapter.js +1 -1
  60. package/dist/eplanningBidAdapter.js +1 -1
  61. package/dist/euidIdSystem.js +1 -1
  62. package/dist/exadsBidAdapter.js +1 -1
  63. package/dist/feedadBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/freewheel-sspBidAdapter.js +1 -1
  66. package/dist/globalsunBidAdapter.js +1 -1
  67. package/dist/gmosspBidAdapter.js +1 -1
  68. package/dist/goldbachBidAdapter.js +1 -1
  69. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  70. package/dist/greenbidsRtdProvider.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gumgumBidAdapter.js +1 -1
  73. package/dist/h12mediaBidAdapter.js +1 -1
  74. package/dist/hypelabBidAdapter.js +1 -1
  75. package/dist/id5IdSystem.js +1 -1
  76. package/dist/illuminBidAdapter.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/insticatorBidAdapter.js +1 -1
  80. package/dist/iqzoneBidAdapter.js +1 -1
  81. package/dist/ixBidAdapter.js +1 -1
  82. package/dist/jixieBidAdapter.js +1 -1
  83. package/dist/justpremiumBidAdapter.js +1 -1
  84. package/dist/kargoBidAdapter.js +1 -1
  85. package/dist/kimberliteBidAdapter.js +1 -1
  86. package/dist/kiviadsBidAdapter.js +1 -1
  87. package/dist/konduitAnalyticsAdapter.js +1 -1
  88. package/dist/krushmediaBidAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/liveIntentIdSystem.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/loyalBidAdapter.js +1 -1
  97. package/dist/luceadBidAdapter.js +1 -1
  98. package/dist/lunamediahbBidAdapter.js +1 -1
  99. package/dist/magniteAnalyticsAdapter.js +1 -1
  100. package/dist/malltvAnalyticsAdapter.js +1 -1
  101. package/dist/marsmediaBidAdapter.js +1 -1
  102. package/dist/mathildeadsBidAdapter.js +1 -1
  103. package/dist/mediafuseBidAdapter.js +1 -1
  104. package/dist/mediasquareBidAdapter.js +1 -1
  105. package/dist/mgidBidAdapter.js +1 -1
  106. package/dist/mgidXBidAdapter.js +1 -1
  107. package/dist/minutemediaBidAdapter.js +1 -1
  108. package/dist/missenaBidAdapter.js +1 -1
  109. package/dist/mobfoxpbBidAdapter.js +1 -1
  110. package/dist/mobianRtdProvider.js +1 -0
  111. package/dist/nexx360BidAdapter.js +1 -1
  112. package/dist/nobidAnalyticsAdapter.js +1 -1
  113. package/dist/nobidBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +190 -186
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openwebBidAdapter.js +1 -1
  119. package/dist/openxBidAdapter.js +1 -1
  120. package/dist/optidigitalBidAdapter.js +1 -1
  121. package/dist/ortbConverter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/ozoneBidAdapter.js +1 -1
  124. package/dist/paapi.js +1 -1
  125. package/dist/pgamsspBidAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/playdigoBidAdapter.js +1 -1
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/pubCircleBidAdapter.js +1 -1
  130. package/dist/publinkIdSystem.js +1 -1
  131. package/dist/publirBidAdapter.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  135. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/qtBidAdapter.js +1 -1
  138. package/dist/quantcastBidAdapter.js +1 -1
  139. package/dist/raynRtdProvider.js +1 -1
  140. package/dist/readpeakBidAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/retailspotBidAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/richaudienceBidAdapter.js +1 -0
  145. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  146. package/dist/riseBidAdapter.js +1 -1
  147. package/dist/rubiconBidAdapter.js +1 -1
  148. package/dist/seedingAllianceBidAdapter.js +1 -1
  149. package/dist/seedtagBidAdapter.js +1 -1
  150. package/dist/setupadBidAdapter.js +1 -1
  151. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  152. package/dist/sharethroughBidAdapter.js +1 -1
  153. package/dist/shinezBidAdapter.js +1 -1
  154. package/dist/shinezRtbBidAdapter.js +1 -1
  155. package/dist/smaatoBidAdapter.js +1 -1
  156. package/dist/smartadserverBidAdapter.js +1 -1
  157. package/dist/smartxBidAdapter.js +1 -1
  158. package/dist/smartytechBidAdapter.js +1 -1
  159. package/dist/smilewantedBidAdapter.js +1 -1
  160. package/dist/sonobiBidAdapter.js +1 -1
  161. package/dist/sovrnBidAdapter.js +1 -1
  162. package/dist/sspBCBidAdapter.js +1 -1
  163. package/dist/stnBidAdapter.js +1 -1
  164. package/dist/stvBidAdapter.js +1 -1
  165. package/dist/sublimeBidAdapter.js +1 -1
  166. package/dist/taboolaBidAdapter.js +1 -1
  167. package/dist/tagorasBidAdapter.js +1 -1
  168. package/dist/targetVideoBidAdapter.js +1 -1
  169. package/dist/teadsBidAdapter.js +1 -1
  170. package/dist/teqblazeUtils.js +1 -0
  171. package/dist/themoneytizerBidAdapter.js +1 -1
  172. package/dist/topicsFpdModule.js +1 -1
  173. package/dist/trionBidAdapter.js +1 -1
  174. package/dist/tripleliftBidAdapter.js +1 -1
  175. package/dist/ttdBidAdapter.js +1 -1
  176. package/dist/twistDigitalBidAdapter.js +1 -1
  177. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  178. package/dist/uid2IdSystem.js +1 -1
  179. package/dist/underdogmediaBidAdapter.js +1 -1
  180. package/dist/undertoneBidAdapter.js +1 -1
  181. package/dist/unrulyBidAdapter.js +1 -1
  182. package/dist/vidazooBidAdapter.js +1 -1
  183. package/dist/videobyteBidAdapter.js +1 -1
  184. package/dist/visiblemeasuresBidAdapter.js +1 -1
  185. package/dist/visxBidAdapter.js +1 -1
  186. package/dist/vuukleBidAdapter.js +1 -1
  187. package/dist/widespaceBidAdapter.js +1 -1
  188. package/dist/winrBidAdapter.js +1 -1
  189. package/dist/yahooAdsBidAdapter.js +1 -1
  190. package/dist/yieldmoBidAdapter.js +1 -1
  191. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  192. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  193. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  194. package/libraries/adagioUtils/adagioUtils.js +35 -0
  195. package/libraries/appnexusUtils/anUtils.js +1 -0
  196. package/libraries/autoplayDetection/autoplay.js +8 -1
  197. package/libraries/ortbConverter/converter.js +1 -1
  198. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  199. package/modules/.submodules.json +1 -0
  200. package/modules/acuityadsBidAdapter.js +5 -203
  201. package/modules/adagioBidAdapter.js +1 -17
  202. package/modules/adagioRtdProvider.js +41 -51
  203. package/modules/adagioRtdProvider.md +1 -0
  204. package/modules/admanBidAdapter.js +31 -188
  205. package/modules/adprimeBidAdapter.js +28 -165
  206. package/modules/axisBidAdapter.js +33 -165
  207. package/modules/beyondmediaBidAdapter.js +5 -189
  208. package/modules/bliinkBidAdapter.js +3 -31
  209. package/modules/boldwinBidAdapter.js +21 -159
  210. package/modules/ceeIdSystem.js +1 -1
  211. package/modules/compassBidAdapter.js +5 -198
  212. package/modules/contentexchangeBidAdapter.js +5 -200
  213. package/modules/conversantBidAdapter.js +1 -0
  214. package/modules/dailymotionBidAdapter.js +1 -1
  215. package/modules/e_volutionBidAdapter.js +4 -186
  216. package/modules/emtvBidAdapter.js +5 -198
  217. package/modules/globalsunBidAdapter.js +5 -199
  218. package/modules/id5IdSystem.js +31 -2
  219. package/modules/id5IdSystem.md +67 -2
  220. package/modules/iqzoneBidAdapter.js +5 -224
  221. package/modules/kiviadsBidAdapter.js +5 -199
  222. package/modules/krushmediaBidAdapter.js +25 -143
  223. package/modules/loyalBidAdapter.js +4 -178
  224. package/modules/lunamediahbBidAdapter.js +5 -118
  225. package/modules/mathildeadsBidAdapter.js +5 -198
  226. package/modules/mgidXBidAdapter.js +14 -209
  227. package/modules/mobfoxpbBidAdapter.js +4 -135
  228. package/modules/mobianRtdProvider.js +52 -0
  229. package/modules/mobianRtdProvider.md +11 -0
  230. package/modules/nobidAnalyticsAdapter.js +2 -3
  231. package/modules/novatiqIdSystem.md +2 -3
  232. package/modules/ozoneBidAdapter.js +117 -58
  233. package/modules/paapi.js +2 -1
  234. package/modules/pgamsspBidAdapter.js +5 -240
  235. package/modules/playdigoBidAdapter.js +4 -186
  236. package/modules/prebidServerBidAdapter/index.js +9 -2
  237. package/modules/pubCircleBidAdapter.js +5 -218
  238. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  239. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  240. package/modules/qtBidAdapter.js +5 -224
  241. package/modules/raynRtdProvider.js +36 -3
  242. package/modules/richaudienceBidAdapter.js +375 -0
  243. package/modules/richaudienceBidAdapter.md +1 -1
  244. package/modules/seedtagBidAdapter.js +1 -0
  245. package/modules/setupadBidAdapter.js +76 -153
  246. package/modules/setupadBidAdapter.md +1 -1
  247. package/modules/smaatoBidAdapter.js +17 -6
  248. package/modules/smartytechBidAdapter.js +7 -2
  249. package/modules/topicsFpdModule.js +1 -1
  250. package/modules/uid2IdSystem.js +0 -1
  251. package/modules/uid2IdSystem_shared.js +0 -1
  252. package/modules/visiblemeasuresBidAdapter.js +5 -199
  253. package/modules/zeta_global_sspAnalyticsAdapter.js +8 -4
  254. package/package.json +1 -1
  255. package/src/auction.js +5 -63
  256. package/src/utils/focusTimeout.js +41 -0
  257. package/src/utils/ttlCollection.js +2 -1
  258. package/src/utils.js +42 -0
  259. package/src/videoCache.js +72 -0
  260. package/test/mocks/videoCacheStub.js +1 -1
  261. package/test/spec/auctionmanager_spec.js +16 -1
  262. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  263. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  264. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  265. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  266. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  267. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  268. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  269. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  270. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  271. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  272. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  273. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  274. package/test/spec/modules/dailymotionBidAdapter_spec.js +3 -3
  275. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  276. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  277. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  278. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  279. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  280. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  281. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  282. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  283. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  284. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  285. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  286. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  287. package/test/spec/modules/mobianRtdProvider_spec.js +107 -0
  288. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  289. package/test/spec/modules/paapi_spec.js +5 -5
  290. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  291. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  292. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  293. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  294. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  295. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  296. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  297. package/test/spec/modules/richaudienceBidAdapter_spec.js +1304 -0
  298. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  299. package/test/spec/modules/setupadBidAdapter_spec.js +139 -97
  300. package/test/spec/modules/smaatoBidAdapter_spec.js +27 -0
  301. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  302. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  303. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  304. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +4 -0
  305. package/test/spec/ortbConverter/converter_spec.js +7 -3
  306. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  307. package/test/spec/videoCache_spec.js +56 -53
@@ -0,0 +1,1304 @@
1
+ // import or require modules necessary for the test, e.g.:
2
+ import {expect} from 'chai'; // may prefer 'assert' in place of 'expect'
3
+ import {
4
+ spec
5
+ } from 'modules/richaudienceBidAdapter.js';
6
+ import {config} from 'src/config.js';
7
+ import * as utils from 'src/utils.js';
8
+ import sinon from 'sinon';
9
+
10
+ describe('Richaudience adapter tests', function () {
11
+ var DEFAULT_PARAMS_NEW_SIZES = [{
12
+ adUnitCode: 'test-div',
13
+ bidId: '2c7c8e9c900244',
14
+ mediaTypes: {
15
+ banner: {
16
+ sizes: [
17
+ [300, 250], [300, 600], [728, 90], [970, 250]]
18
+ }
19
+ },
20
+ bidder: 'richaudience',
21
+ params: {
22
+ bidfloor: 0.5,
23
+ pid: 'ADb1f40rmi',
24
+ supplyType: 'site',
25
+ keywords: 'key1=value1;key2=value2'
26
+ },
27
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
28
+ bidRequestsCount: 1,
29
+ bidderRequestId: '1858b7382993ca',
30
+ ortb2Imp: {
31
+ ext: {
32
+ tid: '29df2112-348b-4961-8863-1b33684d95e6',
33
+ }
34
+ },
35
+ user: {}
36
+ }];
37
+
38
+ var DEFAULT_PARAMS_NEW_SIZES_GPID = [{
39
+ adUnitCode: 'test-div',
40
+ bidId: '2c7c8e9c900244',
41
+ ortb2Imp: {
42
+ ext: {
43
+ gpid: '/19968336/header-bid-tag-1#example-2',
44
+ data: {
45
+ pbadslot: '/19968336/header-bid-tag-1#example-2'
46
+ }
47
+ }
48
+ },
49
+ mediaTypes: {
50
+ banner: {
51
+ sizes: [
52
+ [300, 250], [300, 600], [728, 90], [970, 250]]
53
+ }
54
+ },
55
+ bidder: 'richaudience',
56
+ params: {
57
+ bidfloor: 0.5,
58
+ pid: 'ADb1f40rmi',
59
+ supplyType: 'site',
60
+ keywords: 'key1=value1;key2=value2'
61
+ },
62
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
63
+ bidRequestsCount: 1,
64
+ bidderRequestId: '1858b7382993ca',
65
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
66
+ user: {}
67
+ }];
68
+
69
+ var DEFAULT_PARAMS_VIDEO_TIMEOUT = [{
70
+ adUnitCode: 'test-div',
71
+ bidId: '2c7c8e9c900244',
72
+ mediaTypes: {
73
+ video: {
74
+ context: 'instream',
75
+ playerSize: [640, 480],
76
+ mimes: ['video/mp4']
77
+ }
78
+ },
79
+ bidder: 'richaudience',
80
+ params: [{
81
+ bidfloor: 0.5,
82
+ pid: 'ADb1f40rmi',
83
+ supplyType: 'site'
84
+ }],
85
+ timeout: 3000,
86
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
87
+ bidRequestsCount: 1,
88
+ bidderRequestId: '1858b7382993ca',
89
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
90
+ user: {}
91
+ }]
92
+
93
+ var DEFAULT_PARAMS_VIDEO_IN = [{
94
+ adUnitCode: 'test-div',
95
+ bidId: '2c7c8e9c900244',
96
+ mediaTypes: {
97
+ video: {
98
+ context: 'instream',
99
+ playerSize: [640, 480],
100
+ mimes: ['video/mp4']
101
+ }
102
+ },
103
+ bidder: 'richaudience',
104
+ params: {
105
+ bidfloor: 0.5,
106
+ pid: 'ADb1f40rmi',
107
+ supplyType: 'site'
108
+ },
109
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
110
+ bidRequestsCount: 1,
111
+ bidderRequestId: '1858b7382993ca',
112
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
113
+ user: {}
114
+ }];
115
+
116
+ var DEFAULT_PARAMS_VIDEO_OUT = [{
117
+ adUnitCode: 'test-div',
118
+ bidId: '2c7c8e9c900244',
119
+ mediaTypes: {
120
+ video: {
121
+ context: 'outstream',
122
+ playerSize: [640, 480],
123
+ mimes: ['video/mp4']
124
+ }
125
+ },
126
+ bidder: 'richaudience',
127
+ params: {
128
+ bidfloor: 0.5,
129
+ pid: 'ADb1f40rmi',
130
+ supplyType: 'site'
131
+ },
132
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
133
+ bidRequestsCount: 1,
134
+ bidderRequestId: '1858b7382993ca',
135
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
136
+ user: {}
137
+ }];
138
+
139
+ var DEFAULT_PARAMS_BANNER_OUTSTREAM = [{
140
+ adUnitCode: 'test-div',
141
+ bidId: '2c7c8e9c900244',
142
+ mediaTypes: {
143
+ banner: {
144
+ sizes: [[300, 250], [600, 300]]
145
+ }
146
+ },
147
+ bidder: 'richaudience',
148
+ params: {
149
+ bidfloor: 0.5,
150
+ pid: 'ADb1f40rmi',
151
+ supplyType: 'site'
152
+ },
153
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
154
+ bidRequestsCount: 1,
155
+ bidderRequestId: '1858b7382993ca',
156
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6',
157
+ user: {}
158
+ }];
159
+
160
+ var DEFAULT_PARAMS_APP = [{
161
+ adUnitCode: 'test-div',
162
+ bidId: '2c7c8e9c900244',
163
+ sizes: [
164
+ [300, 250],
165
+ [300, 600],
166
+ [728, 90],
167
+ [970, 250]
168
+ ],
169
+ bidder: 'richaudience',
170
+ params: {
171
+ bidfloor: 0.5,
172
+ ifa: 'AAAAAAAAA-BBBB-CCCC-1111-222222220000',
173
+ pid: 'ADb1f40rmi',
174
+ supplyType: 'app',
175
+ },
176
+ auctionId: '0cb3144c-d084-4686-b0d6-f5dbe917c563',
177
+ bidRequestsCount: 1,
178
+ bidderRequestId: '1858b7382993ca',
179
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6'
180
+ }];
181
+
182
+ var DEFAULT_PARAMS_WO_OPTIONAL = [{
183
+ adUnitCode: 'test-div',
184
+ bidId: '2c7c8e9c900244',
185
+ sizes: [
186
+ [300, 250],
187
+ [300, 600],
188
+ [728, 90],
189
+ [970, 250]
190
+ ],
191
+ bidder: 'richaudience',
192
+ params: {
193
+ pid: 'ADb1f40rmi',
194
+ supplyType: 'site',
195
+ },
196
+ auctionId: '851adee7-d843-48f9-a7e9-9ff00573fcbf',
197
+ bidRequestsCount: 1,
198
+ bidderRequestId: '1858b7382993ca',
199
+ transactionId: '29df2112-348b-4961-8863-1b33684d95e6'
200
+ }];
201
+
202
+ var BID_RESPONSE = {
203
+ body: {
204
+ cpm: 1.50,
205
+ adm: '<!-- script -->',
206
+ media_type: 'js',
207
+ width: 300,
208
+ height: 250,
209
+ creative_id: '189198063',
210
+ netRevenue: true,
211
+ currency: 'USD',
212
+ ttl: 300,
213
+ dealId: 'dealId',
214
+ adomain: 'richaudience.com'
215
+ }
216
+ };
217
+
218
+ var BID_RESPONSE_VIDEO = {
219
+ body: {
220
+ cpm: 1.50,
221
+ media_type: 'video',
222
+ width: 1,
223
+ height: 1,
224
+ creative_id: '189198063',
225
+ netRevenue: true,
226
+ currency: 'USD',
227
+ ttl: 300,
228
+ vastXML: '<VAST></VAST>',
229
+ dealId: 'dealId',
230
+ adomain: 'richaudience.com'
231
+ }
232
+ };
233
+
234
+ var DEFAULT_PARAMS_GDPR = {
235
+ gdprConsent: {
236
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
237
+ gdprApplies: true
238
+ },
239
+ refererInfo: {
240
+ page: 'http://domain.com',
241
+ numIframes: 0
242
+ }
243
+ }
244
+
245
+ it('Referer undefined', function() {
246
+ config.setConfig({
247
+ 'currency': {'adServerCurrency': 'USD'}
248
+ })
249
+
250
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES, {
251
+ gdprConsent: {
252
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
253
+ gdprApplies: true
254
+ },
255
+ refererInfo: {}
256
+ })
257
+ const requestContent = JSON.parse(request[0].data);
258
+ expect(requestContent).to.have.property('referer').and.to.equal(null);
259
+ expect(requestContent).to.have.property('referer').and.to.equal(null);
260
+ })
261
+
262
+ it('Verify build request to prebid 3.0 display test', function() {
263
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES, {
264
+ gdprConsent: {
265
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
266
+ gdprApplies: true
267
+ },
268
+ refererInfo: {
269
+ page: 'https://domain.com',
270
+ numIframes: 0
271
+ }
272
+ });
273
+
274
+ expect(request[0]).to.have.property('method').and.to.equal('POST');
275
+ const requestContent = JSON.parse(request[0].data);
276
+ expect(requestContent).to.have.property('bidfloor').and.to.equal(0.5);
277
+ expect(requestContent).to.have.property('pid').and.to.equal('ADb1f40rmi');
278
+ expect(requestContent).to.have.property('supplyType').and.to.equal('site');
279
+ expect(requestContent).to.have.property('auctionId').and.to.equal('0cb3144c-d084-4686-b0d6-f5dbe917c563');
280
+ expect(requestContent).to.have.property('bidId').and.to.equal('2c7c8e9c900244');
281
+ expect(requestContent).to.have.property('BidRequestsCount').and.to.equal(1);
282
+ expect(requestContent).to.have.property('bidder').and.to.equal('richaudience');
283
+ expect(requestContent).to.have.property('bidderRequestId').and.to.equal('1858b7382993ca');
284
+ expect(requestContent).to.have.property('tagId').and.to.equal('test-div');
285
+ expect(requestContent).to.have.property('referer').and.to.equal('https%3A%2F%2Fdomain.com');
286
+ expect(requestContent).to.have.property('sizes');
287
+ expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(300);
288
+ expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(250);
289
+ expect(requestContent.sizes[1]).to.have.property('w').and.to.equal(300);
290
+ expect(requestContent.sizes[1]).to.have.property('h').and.to.equal(600);
291
+ expect(requestContent.sizes[2]).to.have.property('w').and.to.equal(728);
292
+ expect(requestContent.sizes[2]).to.have.property('h').and.to.equal(90);
293
+ expect(requestContent.sizes[3]).to.have.property('w').and.to.equal(970);
294
+ expect(requestContent.sizes[3]).to.have.property('h').and.to.equal(250);
295
+ expect(requestContent).to.have.property('transactionId').and.to.equal('29df2112-348b-4961-8863-1b33684d95e6');
296
+ expect(requestContent).to.have.property('timeout').and.to.equal(600);
297
+ expect(requestContent).to.have.property('numIframes').and.to.equal(0);
298
+ expect(typeof requestContent.scr_rsl === 'string')
299
+ expect(typeof requestContent.cpuc === 'number')
300
+ expect(typeof requestContent.gpid === 'string')
301
+ expect(requestContent).to.have.property('kws').and.to.equal('key1=value1;key2=value2');
302
+ })
303
+
304
+ it('Verify build request to prebid video inestream', function() {
305
+ const request = spec.buildRequests(DEFAULT_PARAMS_VIDEO_IN, {
306
+ gdprConsent: {
307
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
308
+ gdprApplies: true
309
+ },
310
+ refererInfo: {
311
+ page: 'https://domain.com',
312
+ numIframes: 0
313
+ }
314
+ });
315
+
316
+ expect(request[0]).to.have.property('method').and.to.equal('POST');
317
+ const requestContent = JSON.parse(request[0].data);
318
+
319
+ expect(requestContent).to.have.property('demand').and.to.equal('video');
320
+ expect(requestContent.videoData).to.have.property('format').and.to.equal('instream');
321
+ })
322
+
323
+ it('Verify build request to prebid video outstream', function() {
324
+ const request = spec.buildRequests(DEFAULT_PARAMS_VIDEO_OUT, {
325
+ gdprConsent: {
326
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
327
+ gdprApplies: true
328
+ },
329
+ refererInfo: {
330
+ page: 'https://domain.com',
331
+ numIframes: 0
332
+ }
333
+ });
334
+
335
+ expect(request[0]).to.have.property('method').and.to.equal('POST');
336
+ const requestContent = JSON.parse(request[0].data);
337
+
338
+ expect(requestContent).to.have.property('demand').and.to.equal('video');
339
+ expect(requestContent.videoData).to.have.property('format').and.to.equal('outstream');
340
+ })
341
+
342
+ describe('gdpr test', function () {
343
+ it('Verify build request with GDPR', function () {
344
+ config.setConfig({
345
+ 'currency': {
346
+ 'adServerCurrency': 'USD'
347
+ },
348
+ consentManagement: {
349
+ cmpApi: 'iab',
350
+ timeout: 8000,
351
+ allowAuctionWithoutConsent: true
352
+ }
353
+ });
354
+
355
+ const request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, {
356
+ gdprConsent: {
357
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
358
+ gdprApplies: true
359
+ },
360
+ refererInfo: {
361
+ page: 'https://domain.com',
362
+ numIframes: 0
363
+ }
364
+ });
365
+ const requestContent = JSON.parse(request[0].data);
366
+ expect(requestContent).to.have.property('gdpr_consent').and.to.equal('BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA');
367
+ });
368
+
369
+ it('Verify adding ifa when supplyType equal to app', function () {
370
+ const request = spec.buildRequests(DEFAULT_PARAMS_APP, {
371
+ gdprConsent: {
372
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
373
+ gdprApplies: true
374
+ },
375
+ refererInfo: {
376
+ page: 'https://domain.com',
377
+ numIframes: 0
378
+ }
379
+ });
380
+ });
381
+
382
+ it('Verify build request with GDPR without gdprApplies', function () {
383
+ config.setConfig({
384
+ 'currency': {
385
+ 'adServerCurrency': 'EUR'
386
+ },
387
+ consentManagement: {
388
+ cmp: 'iab',
389
+ consentRequired: true,
390
+ timeout: 8000,
391
+ allowAuctionWithoutConsent: true
392
+ }
393
+ });
394
+ const request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, {
395
+ gdprConsent: {
396
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA'
397
+ },
398
+ refererInfo: {
399
+ page: 'https://domain.com',
400
+ numIframes: 0
401
+ }
402
+ });
403
+ const requestContent = JSON.parse(request[0].data);
404
+ expect(requestContent).to.have.property('gdpr_consent').and.to.equal('BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA');
405
+ });
406
+ });
407
+
408
+ describe('UID test', function () {
409
+ config.setConfig({
410
+ consentManagement: {
411
+ cmpApi: 'iab',
412
+ timeout: 5000,
413
+ allowAuctionWithoutConsent: true
414
+ },
415
+ userSync: {
416
+ userIds: [{
417
+ name: 'id5Id',
418
+ params: {
419
+ partner: 173, // change to the Partner Number you received from ID5
420
+ pd: 'MT1iNTBjY...' // optional, see table below for a link to how to generate this
421
+ },
422
+ storage: {
423
+ type: 'html5', // "html5" is the required storage type
424
+ name: 'id5id', // "id5id" is the required storage name
425
+ expires: 90, // storage lasts for 90 days
426
+ refreshInSeconds: 8 * 3600 // refresh ID every 8 hours to ensure it's fresh
427
+ }
428
+ }],
429
+ auctionDelay: 50 // 50ms maximum auction delay, applies to all userId modules
430
+ }
431
+ });
432
+ it('Verify build id5', function () {
433
+ var request;
434
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
435
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = { uid: 1 };
436
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
437
+ var requestContent = JSON.parse(request[0].data);
438
+
439
+ expect(requestContent.user.eids).to.equal(undefined);
440
+
441
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = { uid: [] };
442
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
443
+ requestContent = JSON.parse(request[0].data);
444
+ expect(requestContent.user.eids).to.equal(undefined);
445
+
446
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = { uid: null };
447
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
448
+ requestContent = JSON.parse(request[0].data);
449
+ expect(requestContent.user.eids).to.equal(undefined);
450
+
451
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = { uid: {} };
452
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
453
+ requestContent = JSON.parse(request[0].data);
454
+ expect(requestContent.user.eids).to.equal(undefined);
455
+
456
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = null;
457
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
458
+ requestContent = JSON.parse(request[0].data);
459
+ expect(requestContent.user.eids).to.equal(undefined);
460
+
461
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.id5id = {};
462
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
463
+ requestContent = JSON.parse(request[0].data);
464
+ expect(requestContent.user.eids).to.equal(undefined);
465
+ });
466
+
467
+ it('Verify build pubCommonId', function () {
468
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
469
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.pubcid = 'pub_common_user_id';
470
+
471
+ var request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
472
+ var requestContent = JSON.parse(request[0].data);
473
+
474
+ expect(requestContent.user).to.deep.equal([{
475
+ 'userId': 'pub_common_user_id',
476
+ 'source': 'pubcommon'
477
+ }]);
478
+
479
+ var request;
480
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
481
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.pubcid = 1;
482
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
483
+ var requestContent = JSON.parse(request[0].data);
484
+ expect(requestContent.user.eids).to.equal(undefined);
485
+
486
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.pubcid = [];
487
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
488
+ requestContent = JSON.parse(request[0].data);
489
+ expect(requestContent.user.eids).to.equal(undefined);
490
+
491
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.pubcid = null;
492
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
493
+ requestContent = JSON.parse(request[0].data);
494
+ expect(requestContent.user.eids).to.equal(undefined);
495
+
496
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.pubcid = {};
497
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
498
+ requestContent = JSON.parse(request[0].data);
499
+ expect(requestContent.user.eids).to.equal(undefined);
500
+ });
501
+
502
+ it('Verify build criteoId', function () {
503
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
504
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = 'criteo-user-id';
505
+
506
+ var request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
507
+ var requestContent = JSON.parse(request[0].data);
508
+
509
+ expect(requestContent.user).to.deep.equal([{
510
+ 'userId': 'criteo-user-id',
511
+ 'source': 'criteo.com'
512
+ }]);
513
+
514
+ var request;
515
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
516
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = 1;
517
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
518
+ var requestContent = JSON.parse(request[0].data);
519
+ expect(requestContent.user.eids).to.equal(undefined);
520
+
521
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = [];
522
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
523
+ requestContent = JSON.parse(request[0].data);
524
+ expect(requestContent.user.eids).to.equal(undefined);
525
+
526
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = null;
527
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
528
+ requestContent = JSON.parse(request[0].data);
529
+ expect(requestContent.user.eids).to.equal(undefined);
530
+
531
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = {};
532
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
533
+ requestContent = JSON.parse(request[0].data);
534
+ expect(requestContent.user.eids).to.equal(undefined);
535
+ });
536
+
537
+ it('Verify build identityLink', function () {
538
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
539
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = 'identity-link-user-id';
540
+
541
+ var request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
542
+ var requestContent = JSON.parse(request[0].data);
543
+
544
+ expect(requestContent.user).to.deep.equal([{
545
+ 'userId': 'identity-link-user-id',
546
+ 'source': 'liveramp.com'
547
+ }]);
548
+
549
+ var request;
550
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
551
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = 1;
552
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
553
+ var requestContent = JSON.parse(request[0].data);
554
+ expect(requestContent.user.eids).to.equal(undefined);
555
+
556
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = [];
557
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
558
+ requestContent = JSON.parse(request[0].data);
559
+ expect(requestContent.user.eids).to.equal(undefined);
560
+
561
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = null;
562
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
563
+ requestContent = JSON.parse(request[0].data);
564
+ expect(requestContent.user.eids).to.equal(undefined);
565
+
566
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = {};
567
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
568
+ requestContent = JSON.parse(request[0].data);
569
+ expect(requestContent.user.eids).to.equal(undefined);
570
+ });
571
+ it('Verify build liveIntentId', function () {
572
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
573
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = 'identity-link-user-id';
574
+
575
+ var request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
576
+ var requestContent = JSON.parse(request[0].data)
577
+
578
+ expect(requestContent.user).to.deep.equal([{
579
+ 'userId': 'identity-link-user-id',
580
+ 'source': 'liveramp.com'
581
+ }]);
582
+
583
+ var request;
584
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
585
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = 1;
586
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
587
+ var requestContent = JSON.parse(request[0].data);
588
+ expect(requestContent.user.eids).to.equal(undefined);
589
+
590
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = [];
591
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
592
+ requestContent = JSON.parse(request[0].data);
593
+ expect(requestContent.user.eids).to.equal(undefined);
594
+
595
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = null;
596
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
597
+ requestContent = JSON.parse(request[0].data);
598
+ expect(requestContent.user.eids).to.equal(undefined);
599
+
600
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = {};
601
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
602
+ requestContent = JSON.parse(request[0].data);
603
+ expect(requestContent.user.eids).to.equal(undefined);
604
+ });
605
+ it('Verify build TradeDesk', function () {
606
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
607
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.tdid = 'tdid-user-id';
608
+
609
+ var request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
610
+ var requestContent = JSON.parse(request[0].data)
611
+
612
+ expect(requestContent.user).to.deep.equal([{
613
+ 'userId': 'tdid-user-id',
614
+ 'source': 'adserver.org'
615
+ }]);
616
+
617
+ request;
618
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId = {};
619
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = 1;
620
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
621
+ requestContent = JSON.parse(request[0].data);
622
+ expect(requestContent.user.eids).to.equal(undefined);
623
+
624
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.criteoId = [];
625
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
626
+ requestContent = JSON.parse(request[0].data);
627
+ expect(requestContent.user.eids).to.equal(undefined);
628
+
629
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = null;
630
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
631
+ requestContent = JSON.parse(request[0].data);
632
+ expect(requestContent.user.eids).to.equal(undefined);
633
+
634
+ DEFAULT_PARAMS_WO_OPTIONAL[0].userId.idl_env = {};
635
+ request = spec.buildRequests(DEFAULT_PARAMS_WO_OPTIONAL, DEFAULT_PARAMS_GDPR);
636
+ requestContent = JSON.parse(request[0].data);
637
+ expect(requestContent.user.eids).to.equal(undefined);
638
+ });
639
+ });
640
+
641
+ it('Verify interprete response', function () {
642
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES, {
643
+ gdprConsent: {
644
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
645
+ gdprApplies: true
646
+ },
647
+ refererInfo: {
648
+ page: 'https://domain.com',
649
+ numIframes: 0
650
+ }
651
+ });
652
+
653
+ const bids = spec.interpretResponse(BID_RESPONSE, request[0]);
654
+ expect(bids).to.have.lengthOf(1);
655
+ const bid = bids[0];
656
+ expect(bid.cpm).to.equal(1.50);
657
+ expect(bid.ad).to.equal('<!-- script -->');
658
+ expect(bid.mediaType).to.equal('js');
659
+ expect(bid.width).to.equal(300);
660
+ expect(bid.height).to.equal(250);
661
+ expect(bid.creativeId).to.equal('189198063');
662
+ expect(bid.netRevenue).to.equal(true);
663
+ expect(bid.currency).to.equal('USD');
664
+ expect(bid.ttl).to.equal(300);
665
+ expect(bid.dealId).to.equal('dealId');
666
+ expect(bid.meta).to.equal('richaudience.com');
667
+ });
668
+
669
+ it('no banner media response inestream', function () {
670
+ const request = spec.buildRequests(DEFAULT_PARAMS_VIDEO_IN, {
671
+ gdprConsent: {
672
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
673
+ gdprApplies: true
674
+ },
675
+ refererInfo: {
676
+ page: 'https://domain.com',
677
+ numIframes: 0
678
+ }
679
+ });
680
+
681
+ const bids = spec.interpretResponse(BID_RESPONSE_VIDEO, request[0]);
682
+ expect(bids).to.have.lengthOf(1);
683
+ const bid = bids[0];
684
+ expect(bid.cpm).to.equal(1.50);
685
+ expect(bid.mediaType).to.equal('video');
686
+ expect(bid.vastXml).to.equal('<VAST></VAST>');
687
+ expect(bid.cpm).to.equal(1.50);
688
+ expect(bid.width).to.equal(1);
689
+ expect(bid.height).to.equal(1);
690
+ expect(bid.creativeId).to.equal('189198063');
691
+ expect(bid.netRevenue).to.equal(true);
692
+ expect(bid.currency).to.equal('USD');
693
+ expect(bid.ttl).to.equal(300);
694
+ expect(bid.dealId).to.equal('dealId');
695
+ expect(bid.meta).to.equal('richaudience.com');
696
+ });
697
+
698
+ it('no banner media response outstream', function () {
699
+ const request = spec.buildRequests(DEFAULT_PARAMS_VIDEO_OUT, {
700
+ gdprConsent: {
701
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
702
+ gdprApplies: true
703
+ },
704
+ refererInfo: {
705
+ page: 'https://domain.com',
706
+ numIframes: 0
707
+ }
708
+ });
709
+
710
+ const bids = spec.interpretResponse(BID_RESPONSE_VIDEO, request[0]);
711
+ expect(bids).to.have.lengthOf(1);
712
+ const bid = bids[0];
713
+ expect(bid.cpm).to.equal(1.50);
714
+ expect(bid.mediaType).to.equal('video');
715
+ expect(bid.vastXml).to.equal('<VAST></VAST>');
716
+ expect(bid.renderer.url).to.equal('https://cdn3.richaudience.com/prebidVideo/player.js');
717
+ expect(bid.cpm).to.equal(1.50);
718
+ expect(bid.width).to.equal(1);
719
+ expect(bid.height).to.equal(1);
720
+ expect(bid.creativeId).to.equal('189198063');
721
+ expect(bid.netRevenue).to.equal(true);
722
+ expect(bid.currency).to.equal('USD');
723
+ expect(bid.ttl).to.equal(300);
724
+ expect(bid.dealId).to.equal('dealId');
725
+ });
726
+
727
+ it('banner media and response VAST', function () {
728
+ const request = spec.buildRequests(DEFAULT_PARAMS_BANNER_OUTSTREAM, {
729
+ gdprConsent: {
730
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
731
+ gdprApplies: true
732
+ },
733
+ refererInfo: {
734
+ page: 'https://domain.com',
735
+ numIframes: 0
736
+ }
737
+ });
738
+
739
+ const bids = spec.interpretResponse(BID_RESPONSE_VIDEO, request[0]);
740
+ const bid = bids[0];
741
+ expect(bid.mediaType).to.equal('video');
742
+ expect(bid.vastXml).to.equal('<VAST></VAST>');
743
+ expect(bid.renderer.url).to.equal('https://cdn3.richaudience.com/prebidVideo/player.js');
744
+ });
745
+
746
+ it('Verifies bidder_code', function () {
747
+ expect(spec.code).to.equal('richaudience');
748
+ });
749
+
750
+ it('Verifies bidder aliases', function () {
751
+ expect(spec.aliases).to.have.lengthOf(1);
752
+ expect(spec.aliases[0]).to.equal('ra');
753
+ });
754
+
755
+ it('Verifies bidder gvlid', function () {
756
+ expect(spec.gvlid).to.equal(108);
757
+ });
758
+
759
+ it('Verifies bidder supportedMediaTypes', function () {
760
+ expect(spec.supportedMediaTypes).to.have.lengthOf(2);
761
+ expect(spec.supportedMediaTypes[0]).to.equal('banner');
762
+ expect(spec.supportedMediaTypes[1]).to.equal('video');
763
+ });
764
+
765
+ it('Verifies if bid request is valid', function () {
766
+ expect(spec.isBidRequestValid(DEFAULT_PARAMS_NEW_SIZES[0])).to.equal(true);
767
+ expect(spec.isBidRequestValid(DEFAULT_PARAMS_WO_OPTIONAL[0])).to.equal(true);
768
+ expect(spec.isBidRequestValid({})).to.equal(false);
769
+ expect(spec.isBidRequestValid({
770
+ params: {}
771
+ })).to.equal(false);
772
+ expect(spec.isBidRequestValid({
773
+ params: {
774
+ pid: 'ADb1f40rmi'
775
+ }
776
+ })).to.equal(false);
777
+ expect(spec.isBidRequestValid({
778
+ params: {
779
+ supplyType: 'site'
780
+ }
781
+ })).to.equal(false);
782
+ expect(spec.isBidRequestValid({
783
+ params: {
784
+ supplyType: 'app'
785
+ }
786
+ })).to.equal(false);
787
+ expect(spec.isBidRequestValid({
788
+ params: {
789
+ pid: 'ADb1f40rmi',
790
+ supplyType: 'site'
791
+ }
792
+ })).to.equal(true);
793
+ expect(spec.isBidRequestValid({
794
+ params: {
795
+ pid: ['1gCB5ZC4XL', '1a40xk8qSV'],
796
+ supplyType: 'site'
797
+ }
798
+ })).to.equal(true);
799
+ expect(spec.isBidRequestValid({
800
+ params: {
801
+ pid: 'ADb1f40rmi',
802
+ supplyType: 'site'
803
+ }
804
+ })).to.equal(true);
805
+ expect(spec.isBidRequestValid({
806
+ params: {
807
+ pid: 'ADb1f40rmi',
808
+ supplyType: 'app',
809
+ ifa: 'AAAAAAAAA-BBBB-CCCC-1111-222222220000',
810
+ }
811
+ })).to.equal(true);
812
+ expect(spec.isBidRequestValid({
813
+ params: {
814
+ pid: 'ADb1f40rmi',
815
+ supplyType: 'site',
816
+ bidfloor: 0.50,
817
+ }
818
+ })).to.equal(true);
819
+ expect(spec.isBidRequestValid({
820
+ params: {
821
+ pid: 'ADb1f40rmi',
822
+ supplyType: 'site',
823
+ bidfloor: 0.50,
824
+ }
825
+ })).to.equal(true);
826
+ expect(spec.isBidRequestValid({
827
+ params: {
828
+ pid: ['1gCB5ZC4XL', '1a40xk8qSV'],
829
+ bidfloor: 0.50,
830
+ }
831
+ })).to.equal(false);
832
+ expect(spec.isBidRequestValid({
833
+ params: {
834
+ pid: ['1gCB5ZC4XL', '1a40xk8qSV'],
835
+ supplyType: 'site',
836
+ bidfloor: 0.50,
837
+ }
838
+ })).to.equal(true);
839
+ expect(spec.isBidRequestValid({
840
+ params: {
841
+ supplyType: 'site',
842
+ bidfloor: 0.50,
843
+ ifa: 'AAAAAAAAA-BBBB-CCCC-1111-222222220000',
844
+ }
845
+ })).to.equal(false);
846
+ expect(spec.isBidRequestValid({
847
+ params: {
848
+ pid: ['1gCB5ZC4XL', '1a40xk8qSV'],
849
+ supplyType: 'site',
850
+ bidfloor: 0.50,
851
+ ifa: 'AAAAAAAAA-BBBB-CCCC-1111-222222220000',
852
+ }
853
+ })).to.equal(true);
854
+ });
855
+
856
+ it('should pass schain', function() {
857
+ let schain = {
858
+ 'ver': '1.0',
859
+ 'complete': 1,
860
+ 'nodes': [{
861
+ 'asi': 'richaudience.com',
862
+ 'sid': '00001',
863
+ 'hp': 1
864
+ }, {
865
+ 'asi': 'richaudience-2.com',
866
+ 'sid': '00002',
867
+ 'hp': 1
868
+ }]
869
+ }
870
+
871
+ DEFAULT_PARAMS_NEW_SIZES[0].schain = {
872
+ 'ver': '1.0',
873
+ 'complete': 1,
874
+ 'nodes': [{
875
+ 'asi': 'richaudience.com',
876
+ 'sid': '00001',
877
+ 'hp': 1
878
+ }, {
879
+ 'asi': 'richaudience-2.com',
880
+ 'sid': '00002',
881
+ 'hp': 1
882
+ }]
883
+ }
884
+
885
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES, {
886
+ gdprConsent: {
887
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
888
+ gdprApplies: true
889
+ },
890
+ refererInfo: {}
891
+ })
892
+ const requestContent = JSON.parse(request[0].data);
893
+ expect(requestContent).to.have.property('schain').to.deep.equal(schain);
894
+ })
895
+
896
+ it('should pass gpid', function() {
897
+ const request = spec.buildRequests(DEFAULT_PARAMS_NEW_SIZES_GPID, {
898
+ gdprConsent: {
899
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
900
+ gdprApplies: true
901
+ },
902
+ refererInfo: {}
903
+ })
904
+ const requestContent = JSON.parse(request[0].data);
905
+ expect(requestContent).to.have.property('gpid').and.to.equal('/19968336/header-bid-tag-1#example-2');
906
+ })
907
+
908
+ describe('onTimeout', function () {
909
+ beforeEach(function() {
910
+ sinon.stub(utils, 'triggerPixel');
911
+ });
912
+
913
+ afterEach(function() {
914
+ utils.triggerPixel.restore();
915
+ });
916
+ it('onTimeout exist as a function', () => {
917
+ expect(spec.onTimeout).to.exist.and.to.be.a('function');
918
+ });
919
+ it('should send timeouts', function () {
920
+ spec.onTimeout(DEFAULT_PARAMS_VIDEO_TIMEOUT);
921
+ expect(utils.triggerPixel.called).to.equal(true);
922
+ expect(utils.triggerPixel.firstCall.args[0]).to.equal('https://s.richaudience.com/err/?ec=6&ev=3000&pla=ADb1f40rmi&int=PREBID&pltfm=&node=&dm=localhost:9876');
923
+ });
924
+ });
925
+
926
+ describe('userSync', function () {
927
+ let sandbox;
928
+ beforeEach(function () {
929
+ sandbox = sinon.sandbox.create();
930
+ });
931
+ afterEach(function() {
932
+ sandbox.restore();
933
+ });
934
+ it('Verifies user syncs iframe include', function () {
935
+ config.setConfig({
936
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'include'}}}
937
+ })
938
+
939
+ var syncs = spec.getUserSyncs({
940
+ iframeEnabled: true
941
+ }, [BID_RESPONSE], {
942
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
943
+ gdprApplies: true},
944
+ );
945
+ expect(syncs).to.have.lengthOf(1);
946
+ expect(syncs[0].type).to.equal('iframe');
947
+
948
+ syncs = spec.getUserSyncs({
949
+ iframeEnabled: false,
950
+ }, [BID_RESPONSE], {
951
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
952
+ gdprApplies: true,
953
+ });
954
+ expect(syncs).to.have.lengthOf(0);
955
+
956
+ syncs = spec.getUserSyncs({
957
+ iframeEnabled: false,
958
+ }, [BID_RESPONSE], {
959
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
960
+ gdprApplies: true
961
+ });
962
+ expect(syncs).to.have.lengthOf(0);
963
+
964
+ syncs = spec.getUserSyncs({
965
+ iframeEnabled: true,
966
+ }, [], {consentString: '', gdprApplies: false});
967
+ expect(syncs).to.have.lengthOf(1);
968
+
969
+ syncs = spec.getUserSyncs({
970
+ iframeEnabled: false,
971
+ }, [], {consentString: '', gdprApplies: true});
972
+ expect(syncs).to.have.lengthOf(0);
973
+ });
974
+ it('Verifies user syncs iframe exclude', function () {
975
+ config.setConfig({
976
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'exclude'}}}
977
+ })
978
+
979
+ var syncs = spec.getUserSyncs({
980
+ iframeEnabled: true
981
+ }, [BID_RESPONSE], {
982
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
983
+ gdprApplies: true},
984
+ );
985
+ expect(syncs).to.have.lengthOf(0);
986
+
987
+ syncs = spec.getUserSyncs({
988
+ iframeEnabled: false,
989
+ }, [BID_RESPONSE], {
990
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
991
+ gdprApplies: true,
992
+ });
993
+ expect(syncs).to.have.lengthOf(0);
994
+
995
+ syncs = spec.getUserSyncs({
996
+ iframeEnabled: false,
997
+ }, [BID_RESPONSE], {
998
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
999
+ gdprApplies: true
1000
+ });
1001
+ expect(syncs).to.have.lengthOf(0);
1002
+
1003
+ syncs = spec.getUserSyncs({
1004
+ iframeEnabled: true,
1005
+ }, [], {consentString: '', gdprApplies: false});
1006
+ expect(syncs).to.have.lengthOf(0);
1007
+
1008
+ syncs = spec.getUserSyncs({
1009
+ iframeEnabled: false,
1010
+ }, [], {consentString: '', gdprApplies: true});
1011
+ expect(syncs).to.have.lengthOf(0);
1012
+ });
1013
+
1014
+ it('Verifies user syncs image include', function () {
1015
+ config.setConfig({
1016
+ 'userSync': {filterSettings: {image: {bidders: '*', filter: 'include'}}}
1017
+ })
1018
+
1019
+ var syncs = spec.getUserSyncs({
1020
+ iframeEnabled: false,
1021
+ pixelEnabled: true
1022
+ }, [BID_RESPONSE], {
1023
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1024
+ referer: 'http://domain.com',
1025
+ gdprApplies: true
1026
+ })
1027
+ expect(syncs).to.have.lengthOf(1);
1028
+ expect(syncs[0].type).to.equal('image');
1029
+
1030
+ syncs = spec.getUserSyncs({
1031
+ iframeEnabled: false,
1032
+ pixelEnabled: true
1033
+ }, [BID_RESPONSE], {
1034
+ consentString: '',
1035
+ referer: 'http://domain.com',
1036
+ gdprApplies: true
1037
+ })
1038
+ expect(syncs).to.have.lengthOf(1);
1039
+ expect(syncs[0].type).to.equal('image');
1040
+
1041
+ syncs = spec.getUserSyncs({
1042
+ iframeEnabled: false,
1043
+ pixelEnabled: true
1044
+ }, [], {
1045
+ consentString: null,
1046
+ referer: 'http://domain.com',
1047
+ gdprApplies: false
1048
+ })
1049
+ expect(syncs).to.have.lengthOf(1);
1050
+ expect(syncs[0].type).to.equal('image');
1051
+ });
1052
+
1053
+ it('Verifies user syncs image exclude', function () {
1054
+ config.setConfig({
1055
+ 'userSync': {filterSettings: {image: {bidders: '*', filter: 'exclude'}}}
1056
+ })
1057
+
1058
+ var syncs = spec.getUserSyncs({
1059
+ iframeEnabled: false,
1060
+ pixelEnabled: true
1061
+ }, [BID_RESPONSE], {
1062
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1063
+ referer: 'http://domain.com',
1064
+ gdprApplies: true
1065
+ })
1066
+ expect(syncs).to.have.lengthOf(0);
1067
+
1068
+ syncs = spec.getUserSyncs({
1069
+ iframeEnabled: false,
1070
+ pixelEnabled: true
1071
+ }, [BID_RESPONSE], {
1072
+ consentString: '',
1073
+ referer: 'http://domain.com',
1074
+ gdprApplies: true
1075
+ })
1076
+ expect(syncs).to.have.lengthOf(0);
1077
+
1078
+ syncs = spec.getUserSyncs({
1079
+ iframeEnabled: false,
1080
+ pixelEnabled: true
1081
+ }, [], {
1082
+ consentString: null,
1083
+ referer: 'http://domain.com',
1084
+ gdprApplies: false
1085
+ })
1086
+ expect(syncs).to.have.lengthOf(0);
1087
+ });
1088
+
1089
+ it('Verifies user syncs iframe/image include', function () {
1090
+ config.setConfig({
1091
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'include'}, image: {bidders: '*', filter: 'include'}}}
1092
+ })
1093
+
1094
+ var syncs = spec.getUserSyncs({
1095
+ iframeEnabled: true,
1096
+ pixelEnabled: true
1097
+ }, [BID_RESPONSE], {
1098
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1099
+ gdprApplies: true},
1100
+ );
1101
+ expect(syncs).to.have.lengthOf(1);
1102
+ expect(syncs[0].type).to.equal('iframe');
1103
+
1104
+ syncs = spec.getUserSyncs({
1105
+ iframeEnabled: false,
1106
+ pixelEnabled: false
1107
+ }, [BID_RESPONSE], {
1108
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1109
+ gdprApplies: true,
1110
+ });
1111
+ expect(syncs).to.have.lengthOf(0);
1112
+
1113
+ syncs = spec.getUserSyncs({
1114
+ iframeEnabled: false,
1115
+ pixelEnabled: false
1116
+ }, [BID_RESPONSE], {
1117
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1118
+ gdprApplies: true
1119
+ });
1120
+ expect(syncs).to.have.lengthOf(0);
1121
+
1122
+ syncs = spec.getUserSyncs({
1123
+ iframeEnabled: true,
1124
+ pixelEnabled: true
1125
+ }, [], {consentString: '', gdprApplies: false});
1126
+ expect(syncs).to.have.lengthOf(1);
1127
+
1128
+ syncs = spec.getUserSyncs({
1129
+ iframeEnabled: false,
1130
+ pixelEnabled: false
1131
+ }, [], {consentString: '', gdprApplies: true});
1132
+ expect(syncs).to.have.lengthOf(0);
1133
+ });
1134
+
1135
+ it('Verifies user syncs iframe/image exclude', function () {
1136
+ config.setConfig({
1137
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'exclude'}, image: {bidders: '*', filter: 'exclude'}}}
1138
+ })
1139
+
1140
+ var syncs = spec.getUserSyncs({
1141
+ iframeEnabled: true,
1142
+ pixelEnabled: true
1143
+ }, [BID_RESPONSE], {
1144
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1145
+ gdprApplies: true},
1146
+ );
1147
+ expect(syncs).to.have.lengthOf(0);
1148
+
1149
+ syncs = spec.getUserSyncs({
1150
+ iframeEnabled: false,
1151
+ pixelEnabled: false
1152
+ }, [BID_RESPONSE], {
1153
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1154
+ gdprApplies: true,
1155
+ });
1156
+ expect(syncs).to.have.lengthOf(0);
1157
+
1158
+ syncs = spec.getUserSyncs({
1159
+ iframeEnabled: false,
1160
+ pixelEnabled: false
1161
+ }, [BID_RESPONSE], {
1162
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1163
+ gdprApplies: true
1164
+ });
1165
+ expect(syncs).to.have.lengthOf(0);
1166
+
1167
+ syncs = spec.getUserSyncs({
1168
+ iframeEnabled: true,
1169
+ pixelEnabled: true
1170
+ }, [], {consentString: '', gdprApplies: false});
1171
+ expect(syncs).to.have.lengthOf(0);
1172
+
1173
+ syncs = spec.getUserSyncs({
1174
+ iframeEnabled: false,
1175
+ pixelEnabled: false
1176
+ }, [], {consentString: '', gdprApplies: true});
1177
+ expect(syncs).to.have.lengthOf(0);
1178
+ });
1179
+
1180
+ it('Verifies user syncs iframe exclude / image include', function () {
1181
+ config.setConfig({
1182
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'exclude'}, image: {bidders: '*', filter: 'include'}}}
1183
+ })
1184
+
1185
+ var syncs = spec.getUserSyncs({
1186
+ iframeEnabled: true,
1187
+ pixelEnabled: true
1188
+ }, [BID_RESPONSE], {
1189
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1190
+ gdprApplies: true},
1191
+ );
1192
+ expect(syncs).to.have.lengthOf(1);
1193
+ expect(syncs[0].type).to.equal('image');
1194
+
1195
+ syncs = spec.getUserSyncs({
1196
+ iframeEnabled: false,
1197
+ pixelEnabled: false
1198
+ }, [BID_RESPONSE], {
1199
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1200
+ gdprApplies: true,
1201
+ });
1202
+ expect(syncs).to.have.lengthOf(0);
1203
+
1204
+ syncs = spec.getUserSyncs({
1205
+ iframeEnabled: false,
1206
+ pixelEnabled: false
1207
+ }, [BID_RESPONSE], {
1208
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1209
+ gdprApplies: true
1210
+ });
1211
+ expect(syncs).to.have.lengthOf(0);
1212
+
1213
+ syncs = spec.getUserSyncs({
1214
+ iframeEnabled: true,
1215
+ pixelEnabled: true
1216
+ }, [], {consentString: '', gdprApplies: false});
1217
+ expect(syncs).to.have.lengthOf(1);
1218
+
1219
+ syncs = spec.getUserSyncs({
1220
+ iframeEnabled: false,
1221
+ pixelEnabled: false
1222
+ }, [], {consentString: '', gdprApplies: true});
1223
+ expect(syncs).to.have.lengthOf(0);
1224
+ });
1225
+
1226
+ it('Verifies user syncs iframe include / image exclude', function () {
1227
+ config.setConfig({
1228
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'include'}, image: {bidders: '*', filter: 'exclude'}}}
1229
+ })
1230
+
1231
+ var syncs = spec.getUserSyncs({
1232
+ iframeEnabled: true,
1233
+ pixelEnabled: true
1234
+ }, [BID_RESPONSE], {
1235
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1236
+ gdprApplies: true},
1237
+ );
1238
+ expect(syncs).to.have.lengthOf(1);
1239
+ expect(syncs[0].type).to.equal('iframe');
1240
+
1241
+ syncs = spec.getUserSyncs({
1242
+ iframeEnabled: false,
1243
+ pixelEnabled: false
1244
+ }, [BID_RESPONSE], {
1245
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1246
+ gdprApplies: true,
1247
+ });
1248
+ expect(syncs).to.have.lengthOf(0);
1249
+
1250
+ syncs = spec.getUserSyncs({
1251
+ iframeEnabled: false,
1252
+ pixelEnabled: false
1253
+ }, [BID_RESPONSE], {
1254
+ consentString: 'BOZcQl_ObPFjWAeABAESCD-AAAAjx7_______9______9uz_Ov_v_f__33e8__9v_l_7_-___u_-33d4-_1vf99yfm1-7ftr3tp_87ues2_Xur__59__3z3_NohBgA',
1255
+ gdprApplies: true
1256
+ });
1257
+ expect(syncs).to.have.lengthOf(0);
1258
+
1259
+ syncs = spec.getUserSyncs({
1260
+ iframeEnabled: true,
1261
+ pixelEnabled: true
1262
+ }, [], {consentString: '', gdprApplies: false});
1263
+ expect(syncs).to.have.lengthOf(1);
1264
+
1265
+ syncs = spec.getUserSyncs({
1266
+ iframeEnabled: false,
1267
+ pixelEnabled: false
1268
+ }, [], {consentString: '', gdprApplies: true});
1269
+ expect(syncs).to.have.lengthOf(0);
1270
+ });
1271
+
1272
+ it('Verifies user syncs iframe/image include with GPP', function () {
1273
+ config.setConfig({
1274
+ 'userSync': {filterSettings: {iframe: {bidders: '*', filter: 'include'}}}
1275
+ })
1276
+
1277
+ var syncs = spec.getUserSyncs({iframeEnabled: true}, [BID_RESPONSE], {
1278
+ gppString: 'DBABL~BVVqAAEABgA.QA',
1279
+ applicableSections: [7]},
1280
+ );
1281
+ expect(syncs).to.have.lengthOf(1);
1282
+ expect(syncs[0].type).to.equal('iframe');
1283
+
1284
+ config.setConfig({
1285
+ 'userSync': {filterSettings: {image: {bidders: '*', filter: 'include'}}}
1286
+ })
1287
+
1288
+ var syncs = spec.getUserSyncs({pixelEnabled: true}, [BID_RESPONSE], {
1289
+ gppString: 'DBABL~BVVqAAEABgA.QA',
1290
+ applicableSections: [7, 5]},
1291
+ );
1292
+ expect(syncs).to.have.lengthOf(1);
1293
+ expect(syncs[0].type).to.equal('image');
1294
+ });
1295
+
1296
+ it('Verifies user syncs URL image include with GPP', function () {
1297
+ const gppConsent = { gppString: 'DBACMYA~CP5P4cAP5P4cAPoABAESAlEAAAAAAAAAAAAAA2QAQA2ADZABADYAAAAA.QA2QAQA2AAAA.IA2QAQA2AAAA~BP5P4cAP5P4cAPoABABGBACAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA', applicableSections: [0] };
1298
+ const result = spec.getUserSyncs({pixelEnabled: true}, undefined, undefined, undefined, gppConsent);
1299
+ expect(result).to.deep.equal([{
1300
+ type: 'image', url: `https://sync.richaudience.com/bf7c142f4339da0278e83698a02b0854/?referrer=http%3A%2F%2Fdomain.com&gpp=DBACMYA~CP5P4cAP5P4cAPoABAESAlEAAAAAAAAAAAAAA2QAQA2ADZABADYAAAAA.QA2QAQA2AAAA.IA2QAQA2AAAA~BP5P4cAP5P4cAPoABABGBACAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA&gpp_sid=0`
1301
+ }]);
1302
+ });
1303
+ })
1304
+ });