prebid.js 7.6.0 → 7.7.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 (159) hide show
  1. package/dist/1plusXRtdProvider.js +1 -0
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adoceanBidAdapter.js +1 -1
  7. package/dist/adrelevantisBidAdapter.js +1 -1
  8. package/dist/adxcgBidAdapter.js +1 -1
  9. package/dist/ajaBidAdapter.js +1 -1
  10. package/dist/amxBidAdapter.js +1 -1
  11. package/dist/amxIdSystem.js +1 -1
  12. package/dist/appierAnalyticsAdapter.js +1 -1
  13. package/dist/appnexusBidAdapter.js +1 -1
  14. package/dist/asoBidAdapter.js +1 -1
  15. package/dist/axonixBidAdapter.js +1 -1
  16. package/dist/bidglassBidAdapter.js +1 -1
  17. package/dist/big-richmediaBidAdapter.js +1 -1
  18. package/dist/bliinkBidAdapter.js +1 -1
  19. package/dist/bridgewellBidAdapter.js +1 -1
  20. package/dist/brightMountainMediaBidAdapter.js +1 -1
  21. package/dist/concertBidAdapter.js +1 -1
  22. package/dist/connectadBidAdapter.js +1 -1
  23. package/dist/consumableBidAdapter.js +1 -1
  24. package/dist/conversantBidAdapter.js +1 -1
  25. package/dist/craftBidAdapter.js +1 -1
  26. package/dist/criteoBidAdapter.js +1 -1
  27. package/dist/currency.js +1 -1
  28. package/dist/dspxBidAdapter.js +1 -1
  29. package/dist/eplanningBidAdapter.js +1 -1
  30. package/dist/finativeBidAdapter.js +1 -1
  31. package/dist/glimpseBidAdapter.js +1 -1
  32. package/dist/gmosspBidAdapter.js +1 -1
  33. package/dist/goldbachBidAdapter.js +1 -1
  34. package/dist/gridBidAdapter.js +1 -1
  35. package/dist/gridNMBidAdapter.js +1 -1
  36. package/dist/gumgumBidAdapter.js +1 -1
  37. package/dist/h12mediaBidAdapter.js +1 -1
  38. package/dist/id5IdSystem.js +1 -1
  39. package/dist/impactifyBidAdapter.js +1 -1
  40. package/dist/improvedigitalBidAdapter.js +1 -1
  41. package/dist/inmarBidAdapter.js +1 -1
  42. package/dist/insticatorBidAdapter.js +1 -1
  43. package/dist/ixBidAdapter.js +1 -1
  44. package/dist/jixieBidAdapter.js +1 -1
  45. package/dist/justpremiumBidAdapter.js +1 -1
  46. package/dist/konduitAnalyticsAdapter.js +1 -1
  47. package/dist/kueezBidAdapter.js +1 -1
  48. package/dist/lassoBidAdapter.js +1 -1
  49. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  50. package/dist/logicadBidAdapter.js +1 -1
  51. package/dist/loglyliftBidAdapter.js +1 -1
  52. package/dist/malltvAnalyticsAdapter.js +1 -1
  53. package/dist/marsmediaBidAdapter.js +1 -1
  54. package/dist/mediafuseBidAdapter.js +1 -1
  55. package/dist/mediasquareBidAdapter.js +1 -1
  56. package/dist/mgidBidAdapter.js +1 -1
  57. package/dist/minutemediaBidAdapter.js +1 -1
  58. package/dist/naveggIdSystem.js +1 -1
  59. package/dist/not-for-prod/prebid.js +112 -111
  60. package/dist/oguryBidAdapter.js +1 -1
  61. package/dist/onetagBidAdapter.js +1 -1
  62. package/dist/ooloAnalyticsAdapter.js +1 -1
  63. package/dist/outbrainBidAdapter.js +1 -1
  64. package/dist/parrableIdSystem.js +1 -1
  65. package/dist/pixfutureBidAdapter.js +1 -1
  66. package/dist/prebid-core.js +1 -1
  67. package/dist/prebidServerBidAdapter.js +1 -1
  68. package/dist/publinkIdSystem.js +1 -1
  69. package/dist/pubmaticBidAdapter.js +1 -1
  70. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  71. package/dist/pxyzBidAdapter.js +1 -1
  72. package/dist/quantcastBidAdapter.js +1 -1
  73. package/dist/readpeakBidAdapter.js +1 -1
  74. package/dist/relaidoBidAdapter.js +1 -1
  75. package/dist/rhythmoneBidAdapter.js +1 -1
  76. package/dist/riseBidAdapter.js +1 -1
  77. package/dist/rubiconAnalyticsAdapter.js +1 -1
  78. package/dist/rubiconBidAdapter.js +1 -1
  79. package/dist/seedingAllianceBidAdapter.js +1 -1
  80. package/dist/seedtagBidAdapter.js +1 -1
  81. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  82. package/dist/sharethroughBidAdapter.js +1 -1
  83. package/dist/shinezBidAdapter.js +1 -1
  84. package/dist/smaatoBidAdapter.js +1 -1
  85. package/dist/smartadserverBidAdapter.js +1 -1
  86. package/dist/smartxBidAdapter.js +1 -1
  87. package/dist/smilewantedBidAdapter.js +1 -1
  88. package/dist/sonobiBidAdapter.js +1 -1
  89. package/dist/sovrnAnalyticsAdapter.js +1 -1
  90. package/dist/sovrnBidAdapter.js +1 -1
  91. package/dist/sspBCBidAdapter.js +1 -1
  92. package/dist/sublimeBidAdapter.js +1 -1
  93. package/dist/synacormediaBidAdapter.js +1 -1
  94. package/dist/targetVideoBidAdapter.js +1 -1
  95. package/dist/teadsBidAdapter.js +1 -1
  96. package/dist/trionBidAdapter.js +1 -1
  97. package/dist/tripleliftBidAdapter.js +1 -1
  98. package/dist/ttdBidAdapter.js +1 -1
  99. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  100. package/dist/underdogmediaBidAdapter.js +1 -1
  101. package/dist/undertoneBidAdapter.js +1 -1
  102. package/dist/userId.js +1 -1
  103. package/dist/vidazooBidAdapter.js +1 -1
  104. package/dist/videobyteBidAdapter.js +1 -1
  105. package/dist/visxBidAdapter.js +1 -1
  106. package/dist/vuukleBidAdapter.js +1 -1
  107. package/dist/widespaceBidAdapter.js +1 -1
  108. package/dist/winrBidAdapter.js +1 -1
  109. package/dist/yahoosspBidAdapter.js +1 -1
  110. package/dist/yieldmoBidAdapter.js +1 -1
  111. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  112. package/integrationExamples/gpt/1plusXRtdProviderExample.html +112 -0
  113. package/modules/.submodules.json +2 -1
  114. package/modules/1plusXRtdProvider.js +251 -0
  115. package/modules/1plusXRtdProvider.md +65 -0
  116. package/modules/adoceanBidAdapter.js +10 -3
  117. package/modules/big-richmediaBidAdapter.js +3 -3
  118. package/modules/bliinkBidAdapter.js +120 -193
  119. package/modules/bliinkBidAdapter.md +2 -5
  120. package/modules/consumableBidAdapter.js +9 -0
  121. package/modules/currency.js +2 -2
  122. package/modules/impactifyBidAdapter.js +6 -2
  123. package/modules/ixBidAdapter.js +61 -14
  124. package/modules/ixBidAdapter.md +2 -5
  125. package/modules/jixieBidAdapter.js +10 -10
  126. package/modules/naveggIdSystem.js +1 -12
  127. package/modules/nextMillenniumBidAdapter.md +1 -1
  128. package/modules/onetagBidAdapter.js +44 -7
  129. package/modules/prebidServerBidAdapter/index.js +7 -0
  130. package/modules/rubiconBidAdapter.js +5 -0
  131. package/modules/seedingAllianceBidAdapter.js +3 -0
  132. package/modules/targetVideoBidAdapter.js +18 -0
  133. package/modules/userId/index.js +39 -21
  134. package/package.json +1 -1
  135. package/src/auction.js +6 -5
  136. package/src/consentHandler.js +11 -11
  137. package/src/debugging.js +5 -3
  138. package/src/hook.js +2 -2
  139. package/src/utils/promise.js +96 -21
  140. package/src/utils.js +3 -2
  141. package/test/helpers/consentData.js +2 -1
  142. package/test/spec/auctionmanager_spec.js +1 -6
  143. package/test/spec/debugging_spec.js +2 -2
  144. package/test/spec/modules/1plusXRtdProvider_spec.js +430 -0
  145. package/test/spec/modules/adoceanBidAdapter_spec.js +4 -1
  146. package/test/spec/modules/bliinkBidAdapter_spec.js +323 -136
  147. package/test/spec/modules/consumableBidAdapter_spec.js +47 -1
  148. package/test/spec/modules/idxIdSystem_spec.js +1 -1
  149. package/test/spec/modules/ixBidAdapter_spec.js +77 -2
  150. package/test/spec/modules/jixieBidAdapter_spec.js +8 -8
  151. package/test/spec/modules/onetagBidAdapter_spec.js +53 -4
  152. package/test/spec/modules/parrableIdSystem_spec.js +2 -1
  153. package/test/spec/modules/prebidServerBidAdapter_spec.js +20 -0
  154. package/test/spec/modules/rubiconBidAdapter_spec.js +27 -0
  155. package/test/spec/modules/targetVideoBidAdapter_spec.js +43 -0
  156. package/test/spec/modules/userId_spec.js +15 -2
  157. package/test/spec/unit/pbjs_api_spec.js +1 -5
  158. package/test/spec/unit/utils/promise_spec.js +283 -38
  159. package/test/helpers/syncPromise.js +0 -71
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai'
2
- import { spec, buildBid, BLIINK_ENDPOINT_ENGINE, parseXML, getMetaList } from 'modules/bliinkBidAdapter.js'
2
+ import { spec, buildBid, BLIINK_ENDPOINT_ENGINE, getMetaList, BLIINK_ENDPOINT_COOKIE_SYNC_IFRAME } from 'modules/bliinkBidAdapter.js'
3
3
 
4
4
  /**
5
5
  * @description Mockup bidRequest
@@ -33,6 +33,7 @@ const getConfigBid = (placement) => {
33
33
  crumbs: {
34
34
  pubcid: '55ffadc5-051f-428d-8ecc-dc585e0bde0d'
35
35
  },
36
+ sizes: [[300, 250]],
36
37
  mediaTypes: {
37
38
  banner: {
38
39
  sizes: [
@@ -51,13 +52,55 @@ const getConfigBid = (placement) => {
51
52
  placement: placement,
52
53
  tagId: '14f30eca-85d2-11e8-9eed-0242ac120007'
53
54
  },
54
- sizes: [
55
- [300, 250]
56
- ],
57
55
  src: 'client',
58
56
  transactionId: 'cc6678c4-9746-4082-b9e2-d8065d078ebf'
59
57
  }
60
58
  }
59
+ const getConfigBannerBid = () => {
60
+ return {
61
+ creative: {
62
+ banner: {
63
+ adm: '',
64
+ height: 250,
65
+ width: 300,
66
+ },
67
+ media_type: 'banner',
68
+ creativeId: 125,
69
+ },
70
+ price: 1,
71
+ id: '810',
72
+ token: 'token',
73
+ mode: 'rtb',
74
+ extras: {
75
+ deal_id: '34567erty',
76
+ transaction_id: '2def0c5b2a7f6e',
77
+ },
78
+ currency: 'EUR',
79
+ }
80
+ }
81
+ const getConfigVideoBid = () => {
82
+ return {
83
+ creative: {
84
+ video: {
85
+ content:
86
+ '<VAST></VAST>',
87
+ height: 250,
88
+ width: 300,
89
+ },
90
+ media_type: 'video',
91
+ creativeId: 0,
92
+ },
93
+ price: 1,
94
+ id: '8121',
95
+ token: 'token',
96
+ mode: 'rtb',
97
+ extras: {
98
+ deal_id: '34567ertyRTY',
99
+ transaction_id: '2def0c5b2a7f6e',
100
+ },
101
+ currency: 'EUR',
102
+ }
103
+ }
61
104
 
62
105
  /**
63
106
  * @description Mockup response from engine.bliink.io/xxxx
@@ -80,33 +123,30 @@ const getConfigBid = (placement) => {
80
123
  */
81
124
  const getConfigCreative = () => {
82
125
  return {
83
- ad_id: 5648,
84
- price: 1,
126
+ ad: '<iframe src="https://creative-stg.bliink.io/test-preview-jonathan/index.html?cb=54545&cb=1653984833&gdpr=1&gdpr_consent=#click=https://e-stg.api.bliink.io/c?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NTY0MTMzMzgsImlhdCI6MTY1NTgwODUzOCwiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6IjQ3ZmQyMmY1LThiM2MtNGI4Zi05MzgyLTAzNGEwNGJmNGNmZSIsIm5ldHdvcmtJZCI6MjEsInNpdGVJZCI6NDgsInRhZ0lkIjo4MSwiY29va2llSWQiOiI4NjkwZDEzMDkyNjM5YThhMDliM2MwZDgzMDFlMTBkNmM5MWRhMzBlZWY3NTA2OTRkNTQ5Y2ExYWEwN2M0OTU2IiwiZXZlbnRJZCI6MywidGFyZ2V0aW5nIjp7InBsYXRmb3JtIjoiV2Vic2l0ZSIsInJlZmVycmVyIjoiaHR0cDovL2xvY2FsaG9zdDo5OTk5L2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2dkcHJfaGVsbG9fd29ybGQuaHRtbCIsInBhZ2VVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojk5OTkvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvZ2Rwcl9oZWxsb193b3JsZC5odG1sIiwidGltZSI6MTY1NTgwODUzOCwibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4LjgzMjMsImxvbmdpdHVkZSI6Mi40MDc1LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiUGFyaXMiLCJ6aXBDb2RlIjoiNzUwMTUiLCJkZXBhcnRtZW50IjoiNzUifSwiY2l0eSI6IlBhcmlzIiwiY291bnRyeSI6IkZSIiwiZGV2aWNlT3MiOiJtYWNPUyIsImRldmljZVBsYXRmb3JtIjoiV2Vic2l0ZSIsInJhd1VzZXJBZ2VudCI6Ik1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDIuMC4wLjAgU2FmYXJpLzUzNy4zNiJ9LCJnZHByIjp7Imhhc0NvbnNlbnQiOmZhbHNlLCJjb25zZW50U3RyaW5nIjoiQlBhbzY5dVBhNHd2WkFBQUJBRlJBQkFBQUFBQUFBIn0sIm5wIjoiNGNCNHVhQW5ncFliZ0RRYXliUGFnUT09IiwiZ3AiOiI3K05UVjErK0ttWndkcDhuTVd3NGl3PT0iLCJjdXJyZW5jeSI6IkVVUiIsIndpbiI6ZmFsc2UsImZvcm1hdCI6MywiZGlzcGxheVR5cGUiOiJzdGlja3kiLCJhZElkIjoxNjgsImFkdmVydGlzZXJJZCI6MjEsImNhbXBhaWduSWQiOjUzNSwiY3JlYXRpdmVJZCI6NzEsImVycm9yIjpmYWxzZX19.8hkPblKo1y1hftESf7e0GN9EzJ1LNVposv_a0TS4h_8&redirect=" style="height: 100%; width: 100%; border: 0;"></iframe><script src="https://tag-stg.bliink.io/creative.min.js?cb=0.0.0"></script>',
127
+ mediaType: 'banner',
128
+ cpm: 4,
85
129
  currency: 'EUR',
86
- media_type: 'banner',
87
- category: 1,
88
- id: 2825,
89
- creativeId: 2825,
90
- type: 1,
91
- viewability_duration: 1,
92
- viewability_percent_in_view: 30,
93
- content: {
94
- creative: {
95
- adm: '<html lang="en"></html>',
96
- }
97
- }
130
+ creativeId: '34567erty',
131
+ width: 300,
132
+ height: 250,
133
+ ttl: 3600,
134
+ netRevenue: true,
98
135
  }
99
136
  }
100
137
 
101
- const getConfigCreativeVideo = () => {
138
+ const getConfigCreativeVideo = (isNoVast) => {
102
139
  return {
103
- ad_id: 5648,
104
- price: 1,
140
+ mediaType: 'video',
141
+ vastXml: isNoVast ? '' : '<VAST></VAST>',
142
+ cpm: 0,
105
143
  currency: 'EUR',
106
- media_type: 'video',
107
- category: 1,
108
- creativeId: 2825,
109
- content: '<VAST></VAST>'
144
+ creativeId: '34567ertyaza',
145
+ requestId: '6a204ce130280d',
146
+ width: 300,
147
+ height: 250,
148
+ ttl: 3600,
149
+ netRevenue: true,
110
150
  }
111
151
  }
112
152
 
@@ -120,14 +160,11 @@ const getConfigBuildRequest = (placement) => {
120
160
  bidderCode: 'bliink',
121
161
  bids: [getConfigBid(placement)],
122
162
  refererInfo: {
163
+ canonicalUrl: null,
164
+ isAmp: false,
165
+ numIframes: 0,
166
+ reachedTop: true,
123
167
  page: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
124
- legacy: {
125
- canonicalUrl: null,
126
- isAmp: false,
127
- numIframes: 0,
128
- reachedTop: true,
129
- referer: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
130
- }
131
168
  },
132
169
  }
133
170
 
@@ -158,8 +195,9 @@ const getConfigInterpretResponse = (noAd = false) => {
158
195
 
159
196
  return {
160
197
  body: {
161
- creative: getConfigCreative(),
198
+ ...getConfigCreative(),
162
199
  mode: 'ad',
200
+ transactionId: '2def0c5b2a7f6e',
163
201
  token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjgxNzA4MzEsImlhdCI6MTYyNzU2NjAzMSwiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6IjM1YmU1NDNjLTNkZTQtNGQ1Yy04N2NjLWIzYzEyOGZiYzU0MCIsIm5ldHdvcmtJZCI6MjEsInNpdGVJZCI6NTksInRhZ0lkIjo1OSwiY29va2llSWQiOiJjNGU4MWVhOS1jMjhmLTQwZDItODY1ZC1hNjQzZjE1OTcyZjUiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwiaXAiOiI3OC4xMjIuNzUuNzIiLCJ0aW1lIjoxNjI3NTY2MDMxLCJsb2NhdGlvbiI6eyJsYXRpdHVkZSI6NDguOTczOSwibG9uZ2l0dWRlIjozLjMxMTMsInJlZ2lvbiI6IkhERiIsImNvdW50cnkiOiJGUiIsImNpdHkiOiJTYXVsY2hlcnkiLCJ6aXBDb2RlIjoiMDIzMTAiLCJkZXBhcnRtZW50IjoiMDIifSwiY2l0eSI6IlNhdWxjaGVyeSIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTEuMC40NDcyLjEyNCBTYWZhcmkvNTM3LjM2In0sImdkcHIiOnsiaGFzQ29uc2VudCI6dHJ1ZX0sIndpbiI6ZmFsc2UsImFkSWQiOjU2NDgsImFkdmVydGlzZXJJZCI6MSwiY2FtcGFpZ25JZCI6MSwiY3JlYXRpdmVJZCI6MjgyNSwiZXJyb3IiOmZhbHNlfX0.-UefQH4G0k-RJGemBYffs-KL7EEwma2Wuwgk2xnpij8'
164
202
  },
165
203
  headers: {},
@@ -171,7 +209,7 @@ const getConfigInterpretResponse = (noAd = false) => {
171
209
  * @param noAd
172
210
  * @return {{body: string} | {mode: string, message: string}}
173
211
  */
174
- const getConfigInterpretResponseRTB = (noAd = false) => {
212
+ const getConfigInterpretResponseRTB = (noAd = false, isInvalidVast = false) => {
175
213
  if (noAd) {
176
214
  return {
177
215
  message: 'invalid tag',
@@ -179,20 +217,51 @@ const getConfigInterpretResponseRTB = (noAd = false) => {
179
217
  }
180
218
  }
181
219
 
220
+ const validVast = `
221
+ <VAST version="3">
222
+ <Ad>
223
+ <Wrapper>
224
+ <AdSystem>BLIINK</AdSystem>
225
+ <VASTAdTagURI>https://vast.bliink.io/p/508379d0-9f65-4198-8ba5-f61f2b51224f.xml</VASTAdTagURI>
226
+ <Error>https://e.api.bliink.io/e?name=vast-error&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Error>
227
+ <Impression>https://e.api.bliink.io/e?name=impression&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Impression>
228
+ <Extensions><Price>1</Price><Currency>EUR</Currency>
229
+ </Wrapper>
230
+ </Ad>
231
+ </VAST>
232
+ `
233
+ const invalidVast = `
234
+ <VASTZ version="3">
235
+ <Ad>
236
+
237
+ </Ad>
238
+ </VAST>
239
+ `
240
+
182
241
  return {
183
- body: `
184
- <VAST version="3">
185
- <Ad>
186
- <Wrapper>
187
- <AdSystem>BLIINK</AdSystem>
188
- <VASTAdTagURI>https://vast.bliink.io/p/508379d0-9f65-4198-8ba5-f61f2b51224f.xml</VASTAdTagURI>
189
- <Error>https://e.api.bliink.io/e?name=vast-error&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Error>
190
- <Impression>https://e.api.bliink.io/e?name=impression&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Impression>
191
- <Extensions><Price>1</Price><Currency>EUR</Currency>
192
- </Wrapper>
193
- </Ad>
194
- </VAST>
195
- `
242
+ body: { bids: [
243
+ {
244
+ 'creative': {
245
+ 'video': {
246
+ 'content': isInvalidVast ? invalidVast : validVast,
247
+ 'height': 250,
248
+ 'width': 300
249
+ },
250
+ 'media_type': 'video',
251
+ 'creativeId': 0,
252
+ },
253
+ 'price': 0,
254
+ 'id': '8121',
255
+ 'token': 'token',
256
+ 'mode': 'rtb',
257
+ 'extras': {
258
+ 'deal_id': '34567ertyaza',
259
+ 'transaction_id': '2def0c5b2a7f6e'
260
+ },
261
+ 'currency': 'EUR'
262
+ }
263
+ ],
264
+ userSyncs: []}
196
265
  }
197
266
  }
198
267
 
@@ -261,31 +330,6 @@ describe('BLIINK Adapter getMetaList', function() {
261
330
  * @description Array of tests used in describe function below
262
331
  * @type {[{args: {fn: (string|Document)}, want: string, title: string}, {args: {fn: (string|Document)}, want: string, title: string}]}
263
332
  */
264
- const testsParseXML = [
265
- {
266
- title: 'Should return null, if content length equal to 0',
267
- args: {
268
- fn: parseXML('')
269
- },
270
- want: null,
271
- },
272
- {
273
- title: 'Should return null, if content isnt string',
274
- args: {
275
- fn: parseXML({})
276
- },
277
- want: null,
278
- },
279
- ]
280
-
281
- describe('BLIINK Adapter parseXML', function() {
282
- for (const test of testsParseXML) {
283
- it(test.title, () => {
284
- const res = test.args.fn
285
- expect(res).to.eql(test.want)
286
- })
287
- }
288
- })
289
333
 
290
334
  /**
291
335
  *
@@ -334,29 +378,67 @@ describe('BLIINK Adapter isBidRequestValid', function() {
334
378
  }
335
379
  })
336
380
 
381
+ const vastXml = getConfigInterpretResponseRTB().body.bids[0].creative.video.content
382
+
337
383
  const testsInterpretResponse = [
338
384
  {
339
385
  title: 'Should construct bid for video instream',
340
386
  args: {
341
- fn: spec.interpretResponse(getConfigInterpretResponseRTB(false), getConfigBuildRequest('video'))
387
+ fn: spec.interpretResponse(getConfigInterpretResponseRTB(false))
342
388
  },
343
- want: {
389
+ want: [{
344
390
  cpm: 0,
345
391
  currency: 'EUR',
346
392
  height: 250,
347
393
  width: 300,
348
- creativeId: 0,
394
+ creativeId: '34567ertyaza',
349
395
  mediaType: 'video',
350
- netRevenue: false,
396
+ netRevenue: true,
351
397
  requestId: '2def0c5b2a7f6e',
352
398
  ttl: 3600,
353
- vastXml: getConfigInterpretResponseRTB().body,
354
- }
399
+ vastXml,
400
+ vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(vastXml.replace(/\\"/g, '"'))
401
+ }]
355
402
  },
356
403
  {
357
404
  title: 'ServerResponse with message: invalid tag, return empty array',
358
405
  args: {
359
- fn: spec.interpretResponse(getConfigInterpretResponse(true), getConfigBuildRequest('banner'))
406
+ fn: spec.interpretResponse(getConfigInterpretResponse(true))
407
+ },
408
+ want: []
409
+ },
410
+ {
411
+ title: 'ServerResponse with mediaType banner',
412
+ args: {
413
+ fn: spec.interpretResponse({body: {bids: [getConfigBannerBid()]}}),
414
+ },
415
+ want: [{
416
+ ad: '',
417
+ cpm: 1,
418
+ creativeId: '34567erty',
419
+ currency: 'EUR',
420
+ height: 250,
421
+ mediaType: 'banner',
422
+ netRevenue: true,
423
+ requestId: '2def0c5b2a7f6e',
424
+ ttl: 3600,
425
+ width: 300
426
+ }]
427
+ },
428
+ {
429
+ title: 'ServerResponse with unhandled mediaType, return empty array',
430
+ args: {
431
+ fn: spec.interpretResponse({body: {bids: [{...getConfigBannerBid(),
432
+ creative: {
433
+ unknown: {
434
+ adm: '',
435
+ height: 250,
436
+ width: 300,
437
+ },
438
+ media_type: 'unknown',
439
+ creativeId: 125,
440
+ requestId: '2def0c5b2a7f6e',
441
+ }}]}}),
360
442
  },
361
443
  want: []
362
444
  },
@@ -391,6 +473,7 @@ describe('BLIINK Adapter interpretResponse', function() {
391
473
  * }
392
474
  * }, want, title: string}]}
393
475
  */
476
+
394
477
  const testsBuildBid = [
395
478
  {
396
479
  title: 'Should return null if no bid passed in parameters',
@@ -409,7 +492,7 @@ const testsBuildBid = [
409
492
  {
410
493
  title: 'input data respect the output model for video',
411
494
  args: {
412
- fn: buildBid(getConfigBid('video'), getConfigCreativeVideo())
495
+ fn: buildBid(getConfigVideoBid('video'), getConfigCreativeVideo())
413
496
  },
414
497
  want: {
415
498
  requestId: getConfigBid('video').bidId,
@@ -418,16 +501,47 @@ const testsBuildBid = [
418
501
  mediaType: 'video',
419
502
  width: 300,
420
503
  height: 250,
421
- creativeId: getConfigCreativeVideo().creativeId,
422
- netRevenue: false,
423
- vastXml: getConfigCreativeVideo().content,
504
+ creativeId: getConfigVideoBid().extras.deal_id,
505
+ netRevenue: true,
506
+ vastXml: getConfigCreativeVideo().vastXml,
507
+ vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(getConfigCreativeVideo().vastXml.replace(/\\"/g, '"')),
508
+ ttl: 3600,
509
+ }
510
+ },
511
+ {
512
+ title: 'use default height width output model for video',
513
+ args: {
514
+ fn: buildBid({...getConfigVideoBid('video'),
515
+ creative: {
516
+ video: {
517
+ content:
518
+ '<VAST></VAST>',
519
+ height: null,
520
+ width: null,
521
+ },
522
+ media_type: 'video',
523
+ creativeId: getConfigVideoBid().extras.deal_id,
524
+ requestId: '2def0c5b2a7f6e',
525
+ }}, getConfigCreativeVideo())
526
+ },
527
+ want: {
528
+ requestId: getConfigBid('video').bidId,
529
+ cpm: 1,
530
+ currency: 'EUR',
531
+ mediaType: 'video',
532
+ width: 1,
533
+ height: 1,
534
+ creativeId: getConfigVideoBid().extras.deal_id,
535
+ netRevenue: true,
536
+ vastXml: getConfigCreativeVideo().vastXml,
537
+ vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(getConfigCreativeVideo().vastXml.replace(/\\"/g, '"')),
424
538
  ttl: 3600,
425
539
  }
426
540
  },
427
541
  {
428
542
  title: 'input data respect the output model for banner',
429
543
  args: {
430
- fn: buildBid(getConfigBid('banner'), getConfigCreative())
544
+ fn: buildBid(getConfigBannerBid())
431
545
  },
432
546
  want: {
433
547
  requestId: getConfigBid('banner').bidId,
@@ -436,10 +550,10 @@ const testsBuildBid = [
436
550
  mediaType: 'banner',
437
551
  width: 300,
438
552
  height: 250,
439
- creativeId: getConfigCreative().id,
440
- ad: getConfigCreative().content.creative.adm,
553
+ creativeId: getConfigCreative().creativeId,
554
+ ad: getConfigBannerBid().creative.banner.adm,
441
555
  ttl: 3600,
442
- netRevenue: false,
556
+ netRevenue: true,
443
557
  }
444
558
  }
445
559
  ]
@@ -471,23 +585,27 @@ const testsBuildRequests = [
471
585
  fn: spec.buildRequests([], getConfigBuildRequest('banner'))
472
586
  },
473
587
  want: {
474
- method: 'GET',
475
- url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest('banner').bids[0].params.tagId}`,
476
- params: {
477
- bidderRequestId: getConfigBuildRequest('banner').bidderRequestId,
478
- bidderCode: getConfigBuildRequest('banner').bidderCode,
479
- bids: getConfigBuildRequest('banner').bids,
480
- refererInfo: getConfigBuildRequest('banner').refererInfo.legacy
481
- },
588
+ method: 'POST',
589
+ url: BLIINK_ENDPOINT_ENGINE,
482
590
  data: {
483
- gdpr: false,
484
- gdpr_consent: '',
485
- height: 250,
486
- width: 300,
487
591
  keywords: '',
488
592
  pageDescription: '',
489
593
  pageTitle: '',
490
594
  pageUrl: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
595
+ tags: [
596
+ {
597
+ transactionId: '2def0c5b2a7f6e',
598
+ id: '14f30eca-85d2-11e8-9eed-0242ac120007',
599
+ imageUrl: '',
600
+ mediaTypes: ['banner'],
601
+ sizes: [
602
+ {
603
+ h: 250,
604
+ w: 300,
605
+ },
606
+ ],
607
+ },
608
+ ]
491
609
  }
492
610
  }
493
611
  },
@@ -502,23 +620,83 @@ const testsBuildRequests = [
502
620
  }))
503
621
  },
504
622
  want: {
505
- method: 'GET',
506
- url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest('banner').bids[0].params.tagId}`,
507
- params: {
508
- bidderRequestId: getConfigBuildRequest('banner').bidderRequestId,
509
- bidderCode: getConfigBuildRequest('banner').bidderCode,
510
- bids: getConfigBuildRequest('banner').bids,
511
- refererInfo: getConfigBuildRequest('banner').refererInfo.legacy
512
- },
623
+ method: 'POST',
624
+ url: BLIINK_ENDPOINT_ENGINE,
513
625
  data: {
514
626
  gdpr: true,
515
- gdpr_consent: 'XXXX',
627
+ gdprConsent: 'XXXX',
516
628
  pageDescription: '',
517
629
  pageTitle: '',
518
630
  keywords: '',
519
631
  pageUrl: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
520
- height: 250,
521
- width: 300,
632
+ tags: [
633
+ {
634
+ transactionId: '2def0c5b2a7f6e',
635
+ id: '14f30eca-85d2-11e8-9eed-0242ac120007',
636
+ imageUrl: '',
637
+ mediaTypes: ['banner'],
638
+ sizes: [
639
+ {
640
+ h: 250,
641
+ w: 300,
642
+ },
643
+ ],
644
+ },
645
+ ]
646
+ }
647
+ }
648
+ },
649
+ {
650
+ title: 'Should build request width schain if exists',
651
+ args: {
652
+ fn: spec.buildRequests([{schain: {
653
+ ver: '1.0',
654
+ complete: 1,
655
+ nodes: [{
656
+ asi: 'ssp.test',
657
+ sid: '00001',
658
+ hp: 1
659
+ }]
660
+ }}], Object.assign(getConfigBuildRequest('banner'), {
661
+ gdprConsent: {
662
+ gdprApplies: true,
663
+ consentString: 'XXXX'
664
+ },
665
+ }))
666
+ },
667
+ want: {
668
+ method: 'POST',
669
+ url: BLIINK_ENDPOINT_ENGINE,
670
+ data: {
671
+ gdpr: true,
672
+ gdprConsent: 'XXXX',
673
+ pageDescription: '',
674
+ pageTitle: '',
675
+ keywords: '',
676
+ pageUrl: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
677
+ schain: {
678
+ ver: '1.0',
679
+ complete: 1,
680
+ nodes: [{
681
+ asi: 'ssp.test',
682
+ sid: '00001',
683
+ hp: 1
684
+ }]
685
+ },
686
+ tags: [
687
+ {
688
+ transactionId: '2def0c5b2a7f6e',
689
+ id: '14f30eca-85d2-11e8-9eed-0242ac120007',
690
+ imageUrl: '',
691
+ mediaTypes: ['banner'],
692
+ sizes: [
693
+ {
694
+ h: 250,
695
+ w: 300,
696
+ },
697
+ ],
698
+ },
699
+ ]
522
700
  }
523
701
  }
524
702
  }
@@ -533,7 +711,7 @@ describe('BLIINK Adapter buildRequests', function() {
533
711
  }
534
712
  })
535
713
 
536
- const getSyncOptions = (pixelEnabled = true, iframeEnabled = 'false') => {
714
+ const getSyncOptions = (pixelEnabled = true, iframeEnabled = false) => {
537
715
  return {
538
716
  pixelEnabled,
539
717
  iframeEnabled
@@ -543,7 +721,15 @@ const getSyncOptions = (pixelEnabled = true, iframeEnabled = 'false') => {
543
721
  const getServerResponses = () => {
544
722
  return [
545
723
  {
546
- body: '<VAST></VAST>',
724
+ body: {bids: [],
725
+ userSyncs: [ {
726
+ type: 'script',
727
+ url: 'https://prg.smartadserver.com/ac?out=js&nwid=3392&siteid=305791&pgname=rg&fmtid=81127&tgt=[sas_target]&visit=m&tmstp=[timestamp]&clcturl=[countgo]'
728
+ },
729
+ {
730
+ type: 'image',
731
+ url: 'https://sync.smartadserver.com/getuid?nwid=3392&consentString=XXX&url=https%3A%2F%2Fcookiesync.api.bliink.io%2Fcookiesync%3Fpartner%3Dsmart%26uid%3D%5Bsas_uid%5D'
732
+ }]},
547
733
  }
548
734
  ]
549
735
  }
@@ -551,7 +737,8 @@ const getServerResponses = () => {
551
737
  const getGdprConsent = () => {
552
738
  return {
553
739
  gdprApplies: 1,
554
- consentString: 'XXX'
740
+ consentString: 'XXX',
741
+ apiVersion: 2
555
742
  }
556
743
  }
557
744
 
@@ -569,39 +756,39 @@ const testsGetUserSyncs = [
569
756
  {
570
757
  type: 'image',
571
758
  url: 'https://sync.smartadserver.com/getuid?nwid=3392&consentString=XXX&url=https%3A%2F%2Fcookiesync.api.bliink.io%2Fcookiesync%3Fpartner%3Dsmart%26uid%3D%5Bsas_uid%5D'
572
- },
573
- {
574
- type: 'image',
575
- url: 'https://ad.360yield.com/server_match?partner_id=1531&consentString=XXX&r=https%3A%2F%2Fcookiesync.api.bliink.io%2Fcookiesync%3Fpartner%3Dazerion%26uid%3D%7BPUB_USER_ID%7D',
576
- },
577
- {
578
- type: 'image',
579
- url: 'https://ads.stickyadstv.com/auto-user-sync?consentString=XXX',
580
- },
581
- {
582
- type: 'image',
583
- url: 'https://cookiesync.api.bliink.io/getuid?url=https%3A%2F%2Fvisitor.omnitagjs.com%2Fvisitor%2Fsync%3Fuid%3D1625272249969090bb9d544bd6d8d645%26name%3DBLIINK%26visitor%3D%24UID%26external%3Dtrue&consentString=XXX',
584
- },
585
- {
586
- type: 'image',
587
- url: 'https://cookiesync.api.bliink.io/getuid?url=https://pixel.advertising.com/ups/58444/sync?&gdpr=1&gdpr_consent=XXX&redir=true&uid=$UID',
588
- },
759
+ }
760
+ ]
761
+ },
762
+ {
763
+ title: 'Should return iframe cookie sync if iframeEnabled',
764
+ args: {
765
+ fn: spec.getUserSyncs(getSyncOptions(true, true), getServerResponses(), getGdprConsent())
766
+ },
767
+ want: [
589
768
  {
590
- type: 'image',
591
- url: 'https://ups.analytics.yahoo.com/ups/58499/occ?gdpr=1&gdpr_consent=XXX',
769
+ type: 'iframe',
770
+ url: `${BLIINK_ENDPOINT_COOKIE_SYNC_IFRAME}?gdpr=${getGdprConsent().gdprApplies}&coppa=0&gdprConsent=${getGdprConsent().consentString}&apiVersion=${getGdprConsent().apiVersion}`
592
771
  },
772
+ ]
773
+ },
774
+ {
775
+ title: 'ccpa',
776
+ args: {
777
+ fn: spec.getUserSyncs(getSyncOptions(true, true), getServerResponses(), getGdprConsent(), 'ccpa-consent')
778
+ },
779
+ want: [
593
780
  {
594
- type: 'image',
595
- url: 'https://secure.adnxs.com/getuid?https%3A%2F%2Fcookiesync.api.bliink.io%2Fcookiesync%3Fpartner%3Dazerion%26uid%3D%24UID',
781
+ type: 'iframe',
782
+ url: `${BLIINK_ENDPOINT_COOKIE_SYNC_IFRAME}?gdpr=${getGdprConsent().gdprApplies}&coppa=0&uspConsent=ccpa-consent&gdprConsent=${getGdprConsent().consentString}&apiVersion=${getGdprConsent().apiVersion}`
596
783
  },
597
784
  ]
598
785
  },
599
786
  {
600
- title: 'Should not have gdpr consent',
787
+ title: 'Should output sync if no gdprConsent',
601
788
  args: {
602
789
  fn: spec.getUserSyncs(getSyncOptions(), getServerResponses())
603
790
  },
604
- want: []
791
+ want: getServerResponses()[0].body.userSyncs
605
792
  }
606
793
  ]
607
794