prebid.js 8.0.0 → 8.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.
- package/.devcontainer/devcontainer.json +3 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bedigitechBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -0
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/categoryTranslation.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/cmp.js +1 -0
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementGpp.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +15 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freepassBidAdapter.js +1 -0
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gppControl_usnat.js +1 -0
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kiviadsBidAdapter.js +1 -0
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidXBidAdapter.js +1 -0
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mspa.js +1 -0
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +146 -139
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/oxxionAnalyticsAdapter.js +1 -1
- package/dist/oxxionRtdProvider.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/libraries/cmp/cmpClient.js +139 -0
- package/libraries/mspa/activityControls.js +91 -0
- package/modules/admanBidAdapter.js +5 -0
- package/modules/amxBidAdapter.js +11 -12
- package/modules/bedigitechBidAdapter.js +15 -12
- package/modules/bedigitechBidAdapter.md +2 -2
- package/modules/beopBidAdapter.js +0 -4
- package/modules/bidwatchAnalyticsAdapter.js +33 -5
- package/modules/bridBidAdapter.js +223 -0
- package/modules/categoryTranslation.js +3 -2
- package/modules/colossussspBidAdapter.js +9 -0
- package/modules/conceptxBidAdapter.js +6 -3
- package/modules/consentManagement.js +12 -86
- package/modules/consentManagementGpp.js +47 -126
- package/modules/consentManagementUsp.js +19 -97
- package/modules/freepassBidAdapter.js +98 -0
- package/modules/freepassBidAdapter.md +31 -0
- package/modules/freepassIdSystem.md +1 -1
- package/modules/gppControl_usnat.js +11 -0
- package/modules/greenbidsAnalyticsAdapter.js +7 -13
- package/modules/gridBidAdapter.js +3 -4
- package/modules/intentIqIdSystem.js +11 -9
- package/modules/ixBidAdapter.js +284 -55
- package/modules/kiviadsBidAdapter.js +212 -0
- package/modules/kiviadsBidAdapter.md +79 -0
- package/modules/liveIntentIdSystem.js +8 -3
- package/modules/mediasquareBidAdapter.js +19 -23
- package/modules/mgidXBidAdapter.js +263 -0
- package/modules/mgidXBidAdapter.md +79 -0
- package/modules/oxxionAnalyticsAdapter.js +33 -5
- package/modules/oxxionRtdProvider.js +124 -11
- package/modules/oxxionRtdProvider.md +19 -4
- package/modules/pubmaticBidAdapter.js +18 -2
- package/modules/rtbhouseBidAdapter.js +9 -2
- package/modules/rtbhouseBidAdapter.md +27 -8
- package/modules/rubiconBidAdapter.js +13 -1
- package/modules/sharethroughBidAdapter.js +14 -0
- package/modules/sonobiBidAdapter.js +4 -7
- package/modules/tripleliftBidAdapter.js +21 -1
- package/modules/userId/eids.js +29 -0
- package/modules/userId/eids.md +19 -2
- package/modules/userId/index.js +78 -29
- package/modules/userId/userId.md +3 -0
- package/package.json +1 -1
- package/src/activities/params.js +4 -1
- package/test/spec/libraries/cmp/cmpClient_spec.js +233 -0
- package/test/spec/libraries/mspa/activityControls_spec.js +315 -0
- package/test/spec/modules/admanBidAdapter_spec.js +8 -2
- package/test/spec/modules/adqueryBidAdapter_spec.js +5 -1
- package/test/spec/modules/amxBidAdapter_spec.js +6 -3
- package/test/spec/modules/bedigitechBidAdapter_spec.js +25 -36
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +21 -1
- package/test/spec/modules/bridBidAdapter_spec.js +129 -0
- package/test/spec/modules/byDataAnalyticsAdapter_spec.js +9 -7
- package/test/spec/modules/chtnwBidAdapter_spec.js +4 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +29 -0
- package/test/spec/modules/consentManagementGpp_spec.js +84 -7
- package/test/spec/modules/consentManagement_spec.js +8 -18
- package/test/spec/modules/datablocksBidAdapter_spec.js +7 -3
- package/test/spec/modules/eids_spec.js +87 -0
- package/test/spec/modules/freepassBidAdapter_spec.js +161 -0
- package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +0 -15
- package/test/spec/modules/gridBidAdapter_spec.js +29 -28
- package/test/spec/modules/insticatorBidAdapter_spec.js +6 -2
- package/test/spec/modules/intentIqIdSystem_spec.js +36 -2
- package/test/spec/modules/ixBidAdapter_spec.js +785 -15
- package/test/spec/modules/kiviadsBidAdapter_spec.js +404 -0
- package/test/spec/modules/lassoBidAdapter_spec.js +6 -4
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +17 -2
- package/test/spec/modules/liveIntentIdSystem_spec.js +11 -6
- package/test/spec/modules/mediasquareBidAdapter_spec.js +3 -0
- package/test/spec/modules/mgidXBidAdapter_spec.js +426 -0
- package/test/spec/modules/onetagBidAdapter_spec.js +81 -75
- package/test/spec/modules/orbidderBidAdapter_spec.js +6 -3
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +21 -2
- package/test/spec/modules/oxxionRtdProvider_spec.js +113 -1
- package/test/spec/modules/pubmaticBidAdapter_spec.js +25 -0
- package/test/spec/modules/relaidoBidAdapter_spec.js +4 -3
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +35 -0
- package/test/spec/modules/rubiconBidAdapter_spec.js +41 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +75 -0
- package/test/spec/modules/sonobiBidAdapter_spec.js +15 -15
- package/test/spec/modules/tripleliftBidAdapter_spec.js +20 -1
- package/test/spec/modules/ucfunnelBidAdapter_spec.js +37 -16
- package/test/spec/modules/userId_spec.js +393 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import oxxionAnalytics from 'modules/oxxionAnalyticsAdapter.js';
|
|
2
|
+
import {dereferenceWithoutRenderer} from 'modules/oxxionAnalyticsAdapter.js';
|
|
2
3
|
import { expect } from 'chai';
|
|
3
4
|
import { server } from 'test/mocks/xhr.js';
|
|
4
5
|
let adapterManager = require('src/adapterManager').default;
|
|
@@ -155,7 +156,7 @@ describe('Oxxion Analytics', function () {
|
|
|
155
156
|
'requestId': '34a63e5d5378a3',
|
|
156
157
|
'transactionId': 'de664ccb-e18b-4436-aeb0-362382eb1b40',
|
|
157
158
|
'auctionId': '1e8b993d-8f0a-4232-83eb-3639ddf3a44b',
|
|
158
|
-
'mediaType': '
|
|
159
|
+
'mediaType': 'video',
|
|
159
160
|
'source': 'client',
|
|
160
161
|
'cpm': 27.4276,
|
|
161
162
|
'creativeId': '158534630',
|
|
@@ -168,6 +169,7 @@ describe('Oxxion Analytics', function () {
|
|
|
168
169
|
'example.com'
|
|
169
170
|
]
|
|
170
171
|
},
|
|
172
|
+
'renderer': 'something',
|
|
171
173
|
'originalCpm': 25.02521,
|
|
172
174
|
'originalCurrency': 'EUR',
|
|
173
175
|
'responseTimestamp': 1647424261559,
|
|
@@ -221,6 +223,7 @@ describe('Oxxion Analytics', function () {
|
|
|
221
223
|
'example.com'
|
|
222
224
|
]
|
|
223
225
|
},
|
|
226
|
+
'renderer': 'something',
|
|
224
227
|
'originalCpm': 25.02521,
|
|
225
228
|
'originalCurrency': 'EUR',
|
|
226
229
|
'responseTimestamp': 1647424261558,
|
|
@@ -267,7 +270,24 @@ describe('Oxxion Analytics', function () {
|
|
|
267
270
|
oxxionAnalytics.disableAnalytics();
|
|
268
271
|
oxxionAnalytics.track.restore();
|
|
269
272
|
});
|
|
273
|
+
it('test dereferenceWithoutRenderer', function () {
|
|
274
|
+
adapterManager.registerAnalyticsAdapter({
|
|
275
|
+
code: 'oxxion',
|
|
276
|
+
adapter: oxxionAnalytics
|
|
277
|
+
});
|
|
270
278
|
|
|
279
|
+
adapterManager.enableAnalytics({
|
|
280
|
+
provider: 'oxxion',
|
|
281
|
+
options: {
|
|
282
|
+
domain: 'test'
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
let resultBidWon = JSON.parse(dereferenceWithoutRenderer(bidWon));
|
|
286
|
+
expect(resultBidWon).not.to.have.property('renderer');
|
|
287
|
+
let resultBid = JSON.parse(dereferenceWithoutRenderer(auctionEnd));
|
|
288
|
+
expect(resultBid).to.have.property('bidsReceived').and.to.have.lengthOf(1);
|
|
289
|
+
expect(resultBid.bidsReceived[0]).not.to.have.property('renderer');
|
|
290
|
+
});
|
|
271
291
|
it('test auctionEnd', function () {
|
|
272
292
|
adapterManager.registerAnalyticsAdapter({
|
|
273
293
|
code: 'oxxion',
|
|
@@ -297,7 +317,6 @@ describe('Oxxion Analytics', function () {
|
|
|
297
317
|
expect(message.auctionEnd[0]).to.have.property('bidderRequests').and.to.have.lengthOf(1);
|
|
298
318
|
expect(message.auctionEnd[0].bidderRequests[0]).to.have.property('gdprConsent');
|
|
299
319
|
expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).not.to.have.property('vendorData');
|
|
300
|
-
sinon.assert.callCount(oxxionAnalytics.track, 5);
|
|
301
320
|
});
|
|
302
321
|
|
|
303
322
|
it('test bidWon', function() {
|
|
@@ -6,7 +6,10 @@ const utils = require('src/utils.js');
|
|
|
6
6
|
const moduleConfig = {
|
|
7
7
|
params: {
|
|
8
8
|
domain: 'test.endpoint',
|
|
9
|
-
contexts: ['instream', 'outstream']
|
|
9
|
+
contexts: ['instream', 'outstream'],
|
|
10
|
+
samplingRate: 10,
|
|
11
|
+
threshold: false,
|
|
12
|
+
bidders: ['appnexus', 'mediasquare'],
|
|
10
13
|
}
|
|
11
14
|
};
|
|
12
15
|
|
|
@@ -31,6 +34,14 @@ let request = {
|
|
|
31
34
|
],
|
|
32
35
|
'transactionId': 'de664ccb-e18b-4436-aeb0-362382eb1b41'
|
|
33
36
|
},
|
|
37
|
+
{
|
|
38
|
+
'code': 'msq_tag_200125_banner',
|
|
39
|
+
'mediaTypes': { 'banner': { 'sizes': [[300, 250]] } },
|
|
40
|
+
'bids': [
|
|
41
|
+
{'bidder': 'appnexusAst', 'params': {'placementId': 345678}},
|
|
42
|
+
],
|
|
43
|
+
'transactionId': 'de664ccb-e18b-4436-aeb0-362382eb1b41'
|
|
44
|
+
}
|
|
34
45
|
]
|
|
35
46
|
};
|
|
36
47
|
|
|
@@ -102,6 +113,93 @@ let bids = [{
|
|
|
102
113
|
},
|
|
103
114
|
];
|
|
104
115
|
|
|
116
|
+
let originalBidderRequests = [{
|
|
117
|
+
'bidderCode': 'rubicon',
|
|
118
|
+
'auctionId': 'dd42b870-2072-4b71-8ab7-e7789b14c5ce',
|
|
119
|
+
'bidderRequestId': '16c2bceb2e891a',
|
|
120
|
+
'bids': [
|
|
121
|
+
{
|
|
122
|
+
'bidder': 'rubicon',
|
|
123
|
+
'params': {
|
|
124
|
+
'accountId': 1234,
|
|
125
|
+
'siteId': 2345,
|
|
126
|
+
'zoneId': 3456
|
|
127
|
+
},
|
|
128
|
+
'auctionId': 'dd42b870-2072-4b71-8ab7-e7789b14c5ce',
|
|
129
|
+
'mediaTypes': {'banner': {'sizes': [[970, 250]]}},
|
|
130
|
+
'adUnitCode': 'adunit1',
|
|
131
|
+
'transactionId': '8f20b49c-5e47-4bb5-a7d5-0b816cf527f3',
|
|
132
|
+
'bidId': '2d9920072ab028',
|
|
133
|
+
'bidderRequestId': '16c2bceb2e891a',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
'bidder': 'rubicon',
|
|
137
|
+
'params': {
|
|
138
|
+
'accountId': 1234,
|
|
139
|
+
'siteId': 2345,
|
|
140
|
+
'zoneId': 4567
|
|
141
|
+
},
|
|
142
|
+
'auctionId': 'dd42b870-2072-4b71-8ab7-e7789b14c5ce',
|
|
143
|
+
'mediaTypes': {'banner': {'sizes': [[300, 250]]}},
|
|
144
|
+
'adUnitCode': 'adunit2',
|
|
145
|
+
'transactionId': '4161f09e-7870-4486-b2a6-b4158a327bc4',
|
|
146
|
+
'bidId': '331c3d708f4864',
|
|
147
|
+
'bidderRequestId': '16c2bceb2e891a',
|
|
148
|
+
'src': 'client',
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
'auctionStart': 1683383333809,
|
|
152
|
+
'timeout': 3000,
|
|
153
|
+
'gdprConsent': {
|
|
154
|
+
'consentString': 'consent_hash',
|
|
155
|
+
'gdprApplies': true,
|
|
156
|
+
'apiVersion': 2
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
'bidderCode': 'appnexusAst',
|
|
161
|
+
'auctionId': 'dd42b870-2072-4b71-8ab7-e7789b14c5ce',
|
|
162
|
+
'bidderRequestId': '4d83b8c60d45e7',
|
|
163
|
+
'bids': [
|
|
164
|
+
{
|
|
165
|
+
'bidder': 'appnexusAst',
|
|
166
|
+
'params': {
|
|
167
|
+
'placementId': 10471298
|
|
168
|
+
},
|
|
169
|
+
'auctionId': 'dd42b870-2072-4b71-8ab7-e7789b14c5ce',
|
|
170
|
+
'mediaTypes': {'banner': {'sizes': [[300, 250]]}},
|
|
171
|
+
'adUnitCode': 'adunit2',
|
|
172
|
+
'transactionId': '4161f09e-7870-4486-b2a6-b4158a327bc4',
|
|
173
|
+
'bidId': '5b7cd5abc6aea3',
|
|
174
|
+
'bidderRequestId': '4d83b8c60d45e7',
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
'auctionStart': 1683383333809,
|
|
178
|
+
'timeout': 3000,
|
|
179
|
+
'gdprConsent': {
|
|
180
|
+
'consentString': 'consent_hash',
|
|
181
|
+
'gdprApplies': true,
|
|
182
|
+
'apiVersion': 2
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
];
|
|
186
|
+
|
|
187
|
+
let bidInterests = [
|
|
188
|
+
{'id': 0, 'rate': 50.0, 'suggestion': true},
|
|
189
|
+
{'id': 1, 'rate': 12.0, 'suggestion': false},
|
|
190
|
+
{'id': 2, 'rate': 0.0, 'suggestion': true},
|
|
191
|
+
{'id': 3, 'rate': 0.0, 'suggestion': false},
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
const userConsent = {
|
|
195
|
+
'gdpr': {
|
|
196
|
+
'consentString': 'consent_hash'
|
|
197
|
+
},
|
|
198
|
+
'usp': null,
|
|
199
|
+
'gpp': null,
|
|
200
|
+
'coppa': false
|
|
201
|
+
};
|
|
202
|
+
|
|
105
203
|
describe('oxxionRtdProvider', () => {
|
|
106
204
|
describe('Oxxion RTD sub module', () => {
|
|
107
205
|
it('should init, return true, and set the params', () => {
|
|
@@ -117,6 +215,20 @@ describe('oxxionRtdProvider', () => {
|
|
|
117
215
|
oxxionSubmodule.onBidResponseEvent(auctionEnd.bidsReceived[0], moduleConfig);
|
|
118
216
|
oxxionSubmodule.onBidResponseEvent(auctionEnd.bidsReceived[1], moduleConfig);
|
|
119
217
|
});
|
|
218
|
+
it('check bid filtering', function() {
|
|
219
|
+
let requestsList = oxxionSubmodule.getRequestsList(request);
|
|
220
|
+
expect(requestsList.length).to.equal(4);
|
|
221
|
+
expect(requestsList[0]).to.have.property('id');
|
|
222
|
+
expect(request.adUnits[0].bids[0]).to.have.property('_id');
|
|
223
|
+
expect(requestsList[0].id).to.equal(request.adUnits[0].bids[0]._id);
|
|
224
|
+
const [filteredBiddderRequests, filteredBids] = oxxionSubmodule.getFilteredAdUnitsOnBidRates(bidInterests, request.adUnits, moduleConfig.params, false);
|
|
225
|
+
expect(filteredBids.length).to.equal(1);
|
|
226
|
+
expect(filteredBiddderRequests.length).to.equal(3);
|
|
227
|
+
expect(filteredBiddderRequests[0]).to.have.property('bids');
|
|
228
|
+
expect(filteredBiddderRequests[0].bids.length).to.equal(1);
|
|
229
|
+
expect(filteredBiddderRequests[1]).to.have.property('bids');
|
|
230
|
+
expect(filteredBiddderRequests[1].bids.length).to.equal(1);
|
|
231
|
+
});
|
|
120
232
|
it('check vastImpUrl', function() {
|
|
121
233
|
expect(auctionEnd.bidsReceived[0]).to.have.property('vastImpUrl');
|
|
122
234
|
let expectVastImpUrl = 'https://' + moduleConfig.params.domain + '.oxxion.io/analytics/vast_imp?';
|
|
@@ -3056,6 +3056,31 @@ describe('PubMatic adapter', function () {
|
|
|
3056
3056
|
expect(data.imp[0]['video']['h']).to.equal(videoBidRequests[0].mediaTypes.video.playerSize[1]);
|
|
3057
3057
|
});
|
|
3058
3058
|
}
|
|
3059
|
+
|
|
3060
|
+
describe('Fledge', function() {
|
|
3061
|
+
it('should not send imp.ext.ae when FLEDGE is disabled, ', function () {
|
|
3062
|
+
let bidRequest = Object.assign([], bidRequests);
|
|
3063
|
+
bidRequest[0].ortb2Imp = {
|
|
3064
|
+
ext: { ae: 1 }
|
|
3065
|
+
};
|
|
3066
|
+
const req = spec.buildRequests(bidRequest, { ...bidRequest, fledgeEnabled: false });
|
|
3067
|
+
let data = JSON.parse(req.data);
|
|
3068
|
+
if (data.imp[0].ext) {
|
|
3069
|
+
expect(data.imp[0].ext).to.not.have.property('ae');
|
|
3070
|
+
}
|
|
3071
|
+
});
|
|
3072
|
+
|
|
3073
|
+
it('when FLEDGE is enabled, should send whatever is set in ortb2imp.ext.ae in all bid requests', function () {
|
|
3074
|
+
let bidRequest = Object.assign([], bidRequests);
|
|
3075
|
+
delete bidRequest[0].params.test;
|
|
3076
|
+
bidRequest[0].ortb2Imp = {
|
|
3077
|
+
ext: { ae: 1 }
|
|
3078
|
+
};
|
|
3079
|
+
const req = spec.buildRequests(bidRequest, { ...bidRequest, fledgeEnabled: true });
|
|
3080
|
+
let data = JSON.parse(req.data);
|
|
3081
|
+
expect(data.imp[0].ext.ae).to.equal(1);
|
|
3082
|
+
});
|
|
3083
|
+
});
|
|
3059
3084
|
});
|
|
3060
3085
|
|
|
3061
3086
|
it('Request params dctr check', function () {
|
|
@@ -7,9 +7,6 @@ import {getCoreStorageManager} from '../../../src/storageManager.js';
|
|
|
7
7
|
const UUID_KEY = 'relaido_uuid';
|
|
8
8
|
const relaido_uuid = 'hogehoge';
|
|
9
9
|
|
|
10
|
-
const storage = getCoreStorageManager();
|
|
11
|
-
storage.setCookie(UUID_KEY, relaido_uuid);
|
|
12
|
-
|
|
13
10
|
describe('RelaidoAdapter', function () {
|
|
14
11
|
let bidRequest;
|
|
15
12
|
let bidderRequest;
|
|
@@ -18,6 +15,10 @@ describe('RelaidoAdapter', function () {
|
|
|
18
15
|
let serverRequest;
|
|
19
16
|
let generateUUIDStub;
|
|
20
17
|
let triggerPixelStub;
|
|
18
|
+
before(() => {
|
|
19
|
+
const storage = getCoreStorageManager();
|
|
20
|
+
storage.setCookie(UUID_KEY, relaido_uuid);
|
|
21
|
+
});
|
|
21
22
|
|
|
22
23
|
beforeEach(function () {
|
|
23
24
|
generateUUIDStub = sinon.stub(utils, 'generateUUID').returns(relaido_uuid);
|
|
@@ -318,6 +318,41 @@ describe('RTBHouseAdapter', () => {
|
|
|
318
318
|
expect(request.method).to.equal('POST');
|
|
319
319
|
});
|
|
320
320
|
|
|
321
|
+
it('sets default fledgeConfig object values when none available from config', function () {
|
|
322
|
+
let bidRequest = Object.assign([], bidRequests);
|
|
323
|
+
delete bidRequest[0].params.test;
|
|
324
|
+
|
|
325
|
+
config.setConfig({ fledgeConfig: false });
|
|
326
|
+
const request = spec.buildRequests(bidRequest, { ...bidderRequest, fledgeEnabled: true });
|
|
327
|
+
const data = JSON.parse(request.data);
|
|
328
|
+
expect(data.ext).to.exist.and.to.be.a('object');
|
|
329
|
+
expect(data.ext.fledge_config).to.exist.and.to.be.a('object');
|
|
330
|
+
expect(data.ext.fledge_config).to.contain.keys('seller', 'decisionLogicUrl', 'sellerTimeout');
|
|
331
|
+
expect(data.ext.fledge_config.seller).to.equal('https://fledge-ssp.creativecdn.com');
|
|
332
|
+
expect(data.ext.fledge_config.decisionLogicUrl).to.equal('https://fledge-ssp.creativecdn.com/component-seller-prebid.js');
|
|
333
|
+
expect(data.ext.fledge_config.sellerTimeout).to.equal(500);
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
it('sets a fledgeConfig object values when available from config', function () {
|
|
337
|
+
let bidRequest = Object.assign([], bidRequests);
|
|
338
|
+
delete bidRequest[0].params.test;
|
|
339
|
+
|
|
340
|
+
config.setConfig({
|
|
341
|
+
fledgeConfig: {
|
|
342
|
+
seller: 'https://sellers.domain',
|
|
343
|
+
decisionLogicUrl: 'https://sellers.domain/decision.url'
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
const request = spec.buildRequests(bidRequest, { ...bidderRequest, fledgeEnabled: true });
|
|
347
|
+
const data = JSON.parse(request.data);
|
|
348
|
+
expect(data.ext).to.exist.and.to.be.a('object');
|
|
349
|
+
expect(data.ext.fledge_config).to.exist.and.to.be.a('object');
|
|
350
|
+
expect(data.ext.fledge_config).to.contain.keys('seller', 'decisionLogicUrl');
|
|
351
|
+
expect(data.ext.fledge_config.seller).to.equal('https://sellers.domain');
|
|
352
|
+
expect(data.ext.fledge_config.decisionLogicUrl).to.equal('https://sellers.domain/decision.url');
|
|
353
|
+
expect(data.ext.fledge_config.sellerTimeout).to.not.exist;
|
|
354
|
+
});
|
|
355
|
+
|
|
321
356
|
it('when FLEDGE is disabled, should not send imp.ext.ae', function () {
|
|
322
357
|
let bidRequest = Object.assign([], bidRequests);
|
|
323
358
|
delete bidRequest[0].params.test;
|
|
@@ -825,6 +825,29 @@ describe('the rubicon adapter', function () {
|
|
|
825
825
|
});
|
|
826
826
|
});
|
|
827
827
|
|
|
828
|
+
describe('GPP Consent', function () {
|
|
829
|
+
it('should send gpp information if bidderRequest has a value for gppConsent', function () {
|
|
830
|
+
bidderRequest.gppConsent = {
|
|
831
|
+
gppString: 'consent',
|
|
832
|
+
applicableSections: 2
|
|
833
|
+
};
|
|
834
|
+
let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
|
|
835
|
+
let data = parseQuery(request.data);
|
|
836
|
+
delete bidderRequest.gppConsent;
|
|
837
|
+
|
|
838
|
+
expect(data['gpp']).to.equal('consent');
|
|
839
|
+
expect(data['gpp_sid']).to.equal('2');
|
|
840
|
+
});
|
|
841
|
+
|
|
842
|
+
it('should not send gpp information if bidderRequest does not have a value for gppConsent', function () {
|
|
843
|
+
let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
|
|
844
|
+
let data = parseQuery(request.data);
|
|
845
|
+
|
|
846
|
+
expect(data['gpp']).to.equal(undefined);
|
|
847
|
+
expect(data['gpp_sid']).to.equal(undefined);
|
|
848
|
+
});
|
|
849
|
+
});
|
|
850
|
+
|
|
828
851
|
describe('first party data', function () {
|
|
829
852
|
it('should not have any tg_v or tg_i params if all are undefined', function () {
|
|
830
853
|
let params = {
|
|
@@ -3653,6 +3676,24 @@ describe('the rubicon adapter', function () {
|
|
|
3653
3676
|
type: 'iframe', url: `${emilyUrl}?gdpr=1&gdpr_consent=foo&us_privacy=1NYN`
|
|
3654
3677
|
});
|
|
3655
3678
|
});
|
|
3679
|
+
|
|
3680
|
+
it('should pass gpp params when gppConsent is present', function () {
|
|
3681
|
+
expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {
|
|
3682
|
+
gppString: 'foo',
|
|
3683
|
+
applicableSections: [2]
|
|
3684
|
+
})).to.deep.equal({
|
|
3685
|
+
type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2`
|
|
3686
|
+
});
|
|
3687
|
+
});
|
|
3688
|
+
|
|
3689
|
+
it('should pass multiple sid\'s when multiple are present', function () {
|
|
3690
|
+
expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {
|
|
3691
|
+
gppString: 'foo',
|
|
3692
|
+
applicableSections: [2, 5]
|
|
3693
|
+
})).to.deep.equal({
|
|
3694
|
+
type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2,5`
|
|
3695
|
+
});
|
|
3696
|
+
});
|
|
3656
3697
|
});
|
|
3657
3698
|
|
|
3658
3699
|
describe('get price granularity', function () {
|
|
@@ -706,6 +706,81 @@ describe('sharethrough adapter spec', function () {
|
|
|
706
706
|
expect(bannerBid.vastXml).to.equal('vastTag');
|
|
707
707
|
});
|
|
708
708
|
});
|
|
709
|
+
|
|
710
|
+
describe('meta object', () => {
|
|
711
|
+
beforeEach(() => {
|
|
712
|
+
request = spec.buildRequests(bidRequests, bidderRequest)[0];
|
|
713
|
+
response = {
|
|
714
|
+
body: {
|
|
715
|
+
seatbid: [{
|
|
716
|
+
bid: [{
|
|
717
|
+
id: '123',
|
|
718
|
+
impid: 'bidId1',
|
|
719
|
+
w: 300,
|
|
720
|
+
h: 250,
|
|
721
|
+
price: 42,
|
|
722
|
+
crid: 'creative',
|
|
723
|
+
dealid: 'deal',
|
|
724
|
+
adomain: ['domain.com'],
|
|
725
|
+
adm: 'markup',
|
|
726
|
+
}],
|
|
727
|
+
}],
|
|
728
|
+
},
|
|
729
|
+
};
|
|
730
|
+
});
|
|
731
|
+
|
|
732
|
+
it('should have null optional fields when the response\'s optional seatbid[].bid[].ext field is empty', () => {
|
|
733
|
+
const bid = spec.interpretResponse(response, request)[0];
|
|
734
|
+
|
|
735
|
+
expect(bid.meta.networkId).to.be.null;
|
|
736
|
+
expect(bid.meta.networkName).to.be.null;
|
|
737
|
+
expect(bid.meta.agencyId).to.be.null;
|
|
738
|
+
expect(bid.meta.agencyName).to.be.null;
|
|
739
|
+
expect(bid.meta.advertiserId).to.be.null;
|
|
740
|
+
expect(bid.meta.advertiserName).to.be.null;
|
|
741
|
+
expect(bid.meta.brandId).to.be.null;
|
|
742
|
+
expect(bid.meta.brandName).to.be.null;
|
|
743
|
+
expect(bid.meta.demandSource).to.be.null;
|
|
744
|
+
expect(bid.meta.dchain).to.be.null;
|
|
745
|
+
expect(bid.meta.primaryCatId).to.be.null;
|
|
746
|
+
expect(bid.meta.secondaryCatIds).to.be.null;
|
|
747
|
+
expect(bid.meta.mediaType).to.be.null;
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
it('should have populated fields when the response\'s optional seatbid[].bid[].ext fields are filled', () => {
|
|
751
|
+
response.body.seatbid[0].bid[0].ext = {
|
|
752
|
+
networkId: 'my network id',
|
|
753
|
+
networkName: 'my network name',
|
|
754
|
+
agencyId: 'my agency id',
|
|
755
|
+
agencyName: 'my agency name',
|
|
756
|
+
advertiserId: 'my advertiser id',
|
|
757
|
+
advertiserName: 'my advertiser name',
|
|
758
|
+
brandId: 'my brand id',
|
|
759
|
+
brandName: 'my brand name',
|
|
760
|
+
demandSource: 'my demand source',
|
|
761
|
+
dchain: { 'my key': 'my value' },
|
|
762
|
+
primaryCatId: 'my primary cat id',
|
|
763
|
+
secondaryCatIds: ['my', 'secondary', 'cat', 'ids'],
|
|
764
|
+
mediaType: 'my media type',
|
|
765
|
+
};
|
|
766
|
+
|
|
767
|
+
const bid = spec.interpretResponse(response, request)[0];
|
|
768
|
+
|
|
769
|
+
expect(bid.meta.networkId).to.equal('my network id');
|
|
770
|
+
expect(bid.meta.networkName).to.equal('my network name');
|
|
771
|
+
expect(bid.meta.agencyId).to.equal('my agency id');
|
|
772
|
+
expect(bid.meta.agencyName).to.equal('my agency name');
|
|
773
|
+
expect(bid.meta.advertiserId).to.equal('my advertiser id');
|
|
774
|
+
expect(bid.meta.advertiserName).to.equal('my advertiser name');
|
|
775
|
+
expect(bid.meta.brandId).to.equal('my brand id');
|
|
776
|
+
expect(bid.meta.brandName).to.equal('my brand name');
|
|
777
|
+
expect(bid.meta.demandSource).to.equal('my demand source');
|
|
778
|
+
expect(bid.meta.dchain).to.deep.equal({ 'my key': 'my value' });
|
|
779
|
+
expect(bid.meta.primaryCatId).to.equal('my primary cat id');
|
|
780
|
+
expect(bid.meta.secondaryCatIds).to.deep.equal(['my', 'secondary', 'cat', 'ids']);
|
|
781
|
+
expect(bid.meta.mediaType).to.equal('my media type');
|
|
782
|
+
});
|
|
783
|
+
});
|
|
709
784
|
});
|
|
710
785
|
|
|
711
786
|
describe('getUserSyncs', function () {
|
|
@@ -193,7 +193,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
193
193
|
});
|
|
194
194
|
|
|
195
195
|
describe('outstream', () => {
|
|
196
|
-
it('should return false if there is no
|
|
196
|
+
it('should return false if there is no playerSize', () => {
|
|
197
197
|
const bid = {
|
|
198
198
|
'bidder': 'sonobi',
|
|
199
199
|
'adUnitCode': 'adunit-code',
|
|
@@ -203,7 +203,6 @@ describe('SonobiBidAdapter', function () {
|
|
|
203
203
|
'mediaTypes': {
|
|
204
204
|
video: {
|
|
205
205
|
context: 'outstream',
|
|
206
|
-
playerSize: [300, 250]
|
|
207
206
|
}
|
|
208
207
|
},
|
|
209
208
|
'bidId': '30b31c1838de1e',
|
|
@@ -213,7 +212,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
213
212
|
expect(spec.isBidRequestValid(bid)).to.equal(false);
|
|
214
213
|
});
|
|
215
214
|
|
|
216
|
-
it('should return true if there is
|
|
215
|
+
it('should return true if there is playerSize', () => {
|
|
217
216
|
const bid = {
|
|
218
217
|
'bidder': 'sonobi',
|
|
219
218
|
'adUnitCode': 'adunit-code',
|
|
@@ -224,7 +223,8 @@ describe('SonobiBidAdapter', function () {
|
|
|
224
223
|
},
|
|
225
224
|
'mediaTypes': {
|
|
226
225
|
video: {
|
|
227
|
-
context: 'outstream'
|
|
226
|
+
context: 'outstream',
|
|
227
|
+
playerSize: [640, 480]
|
|
228
228
|
}
|
|
229
229
|
},
|
|
230
230
|
'bidId': '30b31c1838de1e',
|
|
@@ -294,7 +294,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
294
294
|
},
|
|
295
295
|
mediaTypes: {
|
|
296
296
|
video: {
|
|
297
|
-
|
|
297
|
+
playerSize: [640, 480],
|
|
298
298
|
context: 'outstream'
|
|
299
299
|
}
|
|
300
300
|
}
|
|
@@ -339,7 +339,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
339
339
|
}];
|
|
340
340
|
|
|
341
341
|
let keyMakerData = {
|
|
342
|
-
'30b31c1838de1f': '1a2b3c4d5e6f1a2b3c4d|
|
|
342
|
+
'30b31c1838de1f': '1a2b3c4d5e6f1a2b3c4d|640x480|f=1.25,gpid=/123123/gpt_publisher/adunit-code-1,c=v,',
|
|
343
343
|
'30b31c1838de1d': '1a2b3c4d5e6f1a2b3c4e|300x250,300x600|f=0.42,gpid=/123123/gpt_publisher/adunit-code-3,c=d,',
|
|
344
344
|
'/7780971/sparks_prebid_LB|30b31c1838de1e': '300x250,300x600|gpid=/7780971/sparks_prebid_LB,c=d,',
|
|
345
345
|
};
|
|
@@ -635,12 +635,12 @@ describe('SonobiBidAdapter', function () {
|
|
|
635
635
|
bidder: 'sonobi',
|
|
636
636
|
mediaTypes: {
|
|
637
637
|
video: {
|
|
638
|
-
context: 'outstream'
|
|
638
|
+
context: 'outstream',
|
|
639
|
+
playerSize: [640, 480]
|
|
639
640
|
}
|
|
640
641
|
},
|
|
641
642
|
params: {
|
|
642
|
-
placement_id: '92e95368e86639dbd86d'
|
|
643
|
-
sizes: [[640, 480]]
|
|
643
|
+
placement_id: '92e95368e86639dbd86d'
|
|
644
644
|
}
|
|
645
645
|
}
|
|
646
646
|
]
|
|
@@ -658,7 +658,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
658
658
|
'sbi_adomain': 'sonobi.com'
|
|
659
659
|
},
|
|
660
660
|
'30b31c1838de1e': {
|
|
661
|
-
'sbi_size': '
|
|
661
|
+
'sbi_size': '640x480',
|
|
662
662
|
'sbi_apoc': 'remnant',
|
|
663
663
|
'sbi_aid': '30292e432662bd5f86d90774b944b038',
|
|
664
664
|
'sbi_mouse': 1.25,
|
|
@@ -668,7 +668,7 @@ describe('SonobiBidAdapter', function () {
|
|
|
668
668
|
|
|
669
669
|
},
|
|
670
670
|
'/7780971/sparks_prebid_LB_OUTSTREAM|30b31c1838de1g': {
|
|
671
|
-
'sbi_size': '
|
|
671
|
+
'sbi_size': '640x480',
|
|
672
672
|
'sbi_apoc': 'remnant',
|
|
673
673
|
'sbi_crid': '1234abcd',
|
|
674
674
|
'sbi_aid': '30292e432662bd5f86d90774b944b038',
|
|
@@ -720,8 +720,8 @@ describe('SonobiBidAdapter', function () {
|
|
|
720
720
|
{
|
|
721
721
|
'requestId': '30b31c1838de1e',
|
|
722
722
|
'cpm': 1.25,
|
|
723
|
-
'width':
|
|
724
|
-
'height':
|
|
723
|
+
'width': 640,
|
|
724
|
+
'height': 480,
|
|
725
725
|
'vastUrl': 'https://mco-1-apex.go.sonobi.com/vast.xml?vid=30292e432662bd5f86d90774b944b038&ref=https%3A%2F%2Flocalhost%2F',
|
|
726
726
|
'ttl': 500,
|
|
727
727
|
'creativeId': '30292e432662bd5f86d90774b944b038',
|
|
@@ -737,8 +737,8 @@ describe('SonobiBidAdapter', function () {
|
|
|
737
737
|
{
|
|
738
738
|
'requestId': '30b31c1838de1g',
|
|
739
739
|
'cpm': 1.07,
|
|
740
|
-
'width':
|
|
741
|
-
'height':
|
|
740
|
+
'width': 640,
|
|
741
|
+
'height': 480,
|
|
742
742
|
'ad': `<script type="text/javascript" src="https://mco-1-apex.go.sonobi.com/sbi.js?aid=30292e432662bd5f86d90774b944b038&as=null&ref=https%3A%2F%2Flocalhost%2F"></script>`,
|
|
743
743
|
'ttl': 500,
|
|
744
744
|
'creativeId': '1234abcd',
|
|
@@ -8,6 +8,7 @@ import * as utils from 'src/utils.js';
|
|
|
8
8
|
|
|
9
9
|
const ENDPOINT = 'https://tlx.3lift.com/header/auction?';
|
|
10
10
|
const GDPR_CONSENT_STR = 'BOONm0NOONm0NABABAENAa-AAAARh7______b9_3__7_9uz_Kv_K7Vf7nnG072lPVA9LTOQ6gEaY';
|
|
11
|
+
const GPP_CONSENT_STR = 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN'
|
|
11
12
|
|
|
12
13
|
describe('triplelift adapter', function () {
|
|
13
14
|
const adapter = newBidder(tripleliftAdapterSpec);
|
|
@@ -1039,6 +1040,12 @@ describe('triplelift adapter', function () {
|
|
|
1039
1040
|
const url = request.url;
|
|
1040
1041
|
expect(url).to.match(/(\?|&)us_privacy=1YYY/);
|
|
1041
1042
|
});
|
|
1043
|
+
it('should pass fledge signal when Triplelift is eligible for fledge', function() {
|
|
1044
|
+
bidderRequest.fledgeEnabled = true;
|
|
1045
|
+
const request = tripleliftAdapterSpec.buildRequests(bidRequests, bidderRequest);
|
|
1046
|
+
const url = request.url;
|
|
1047
|
+
expect(url).to.match(/(\?|&)fledge=true/);
|
|
1048
|
+
});
|
|
1042
1049
|
it('should return coppa param when COPPA config is set to true', function() {
|
|
1043
1050
|
sinon.stub(config, 'getConfig').withArgs('coppa').returns(true);
|
|
1044
1051
|
const request = tripleliftAdapterSpec.buildRequests(bidRequests, bidderRequest);
|
|
@@ -1506,6 +1513,7 @@ describe('triplelift adapter', function () {
|
|
|
1506
1513
|
describe('getUserSyncs', function() {
|
|
1507
1514
|
let expectedIframeSyncUrl = 'https://eb2.3lift.com/sync?gdpr=true&cmp_cs=' + GDPR_CONSENT_STR + '&';
|
|
1508
1515
|
let expectedImageSyncUrl = 'https://eb2.3lift.com/sync?px=1&src=prebid&gdpr=true&cmp_cs=' + GDPR_CONSENT_STR + '&';
|
|
1516
|
+
let expectedGppSyncUrl = 'https://eb2.3lift.com/sync?gdpr=true&cmp_cs=' + GDPR_CONSENT_STR + '&gpp=' + GPP_CONSENT_STR + '&gpp_sid=2%2C8' + '&';
|
|
1509
1517
|
|
|
1510
1518
|
it('returns undefined when syncing is not enabled', function() {
|
|
1511
1519
|
expect(tripleliftAdapterSpec.getUserSyncs({})).to.equal(undefined);
|
|
@@ -1543,8 +1551,19 @@ describe('triplelift adapter', function () {
|
|
|
1543
1551
|
let syncOptions = {
|
|
1544
1552
|
iframeEnabled: true
|
|
1545
1553
|
};
|
|
1546
|
-
let result = tripleliftAdapterSpec.getUserSyncs(syncOptions, null, null, '1YYY');
|
|
1554
|
+
let result = tripleliftAdapterSpec.getUserSyncs(syncOptions, null, null, '1YYY', null);
|
|
1547
1555
|
expect(result[0].url).to.match(/(\?|&)us_privacy=1YYY/);
|
|
1548
1556
|
});
|
|
1557
|
+
it('returns a user sync pixel with GPP signals when available', function() {
|
|
1558
|
+
let syncOptions = {
|
|
1559
|
+
iframeEnabled: true
|
|
1560
|
+
};
|
|
1561
|
+
let gppConsent = {
|
|
1562
|
+
'applicableSections': [2, 8],
|
|
1563
|
+
'gppString': 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN'
|
|
1564
|
+
}
|
|
1565
|
+
let result = tripleliftAdapterSpec.getUserSyncs(syncOptions, null, null, null, gppConsent);
|
|
1566
|
+
expect(result[0].url).to.equal(expectedGppSyncUrl);
|
|
1567
|
+
});
|
|
1549
1568
|
});
|
|
1550
1569
|
});
|