prebid.js 6.26.0 → 6.29.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/dist/33acrossBidAdapter.js +1 -1
- package/dist/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adoceanBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/automatadBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/incrxBidAdapter.js +1 -0
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/inskinBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/koblerBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/mantisBidAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/medianetRtdProvider.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/not-for-prod/prebid.js +178 -176
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneVideoBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +3 -3
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/slimcutBidAdapter.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/sonobiAnalyticsAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sortableAnalyticsAdapter.js +1 -1
- package/dist/sortableBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/spotxBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/staqAnalyticsAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -0
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/telariaBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustxBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.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/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/akamaidap_segments_example.html +5 -3
- package/modules/.submodules.json +1 -0
- package/modules/adfBidAdapter.js +0 -3
- package/modules/adlooxAnalyticsAdapter.js +9 -5
- package/modules/adlooxAnalyticsAdapter.md +3 -3
- package/modules/adlooxRtdProvider.js +3 -5
- package/modules/adlooxRtdProvider.md +2 -2
- package/modules/adoceanBidAdapter.js +29 -1
- package/modules/adyoulikeBidAdapter.js +3 -0
- package/modules/akamaiDapRtdProvider.js +469 -139
- package/modules/akamaiDapRtdProvider.md +5 -3
- package/modules/automatadBidAdapter.js +9 -5
- package/modules/colossussspBidAdapter.js +17 -17
- package/modules/conversantBidAdapter.js +2 -2
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/ftrackIdSystem.js +5 -8
- package/modules/gdprEnforcement.js +15 -9
- package/modules/gridBidAdapter.js +4 -0
- package/modules/hadronAnalyticsAdapter.js +5 -1
- package/modules/hadronRtdProvider.js +15 -13
- package/modules/incrxBidAdapter.js +87 -0
- package/modules/{vertozBidAdapter.md → incrxBidAdapter.md} +6 -6
- package/modules/inskinBidAdapter.js +4 -3
- package/modules/insticatorBidAdapter.js +109 -42
- package/modules/ixBidAdapter.js +3 -2
- package/modules/ixBidAdapter.md +1 -1
- package/modules/kargoBidAdapter.js +32 -1
- package/modules/koblerBidAdapter.js +54 -45
- package/modules/koblerBidAdapter.md +12 -17
- package/modules/mantisBidAdapter.js +4 -8
- package/modules/medianetBidAdapter.js +2 -2
- package/modules/medianetRtdProvider.js +4 -6
- package/modules/merkleIdSystem.js +43 -31
- package/modules/naveggIdSystem.js +3 -2
- package/modules/novatiqIdSystem.js +6 -1
- package/modules/pubCommonId.js +2 -1
- package/modules/pubmaticAnalyticsAdapter.js +49 -33
- package/modules/relaidoBidAdapter.js +0 -3
- package/modules/sharedIdSystem.js +5 -11
- package/modules/slimcutBidAdapter.js +2 -2
- package/modules/spotxBidAdapter.js +1 -1
- package/modules/synacormediaBidAdapter.js +11 -2
- package/modules/taboolaBidAdapter.js +265 -0
- package/modules/taboolaBidAdapter.md +49 -0
- package/modules/telariaBidAdapter.js +3 -3
- package/modules/userId/eids.js +25 -5
- package/modules/zeta_global_sspBidAdapter.js +3 -2
- package/package.json +1 -1
- package/src/AnalyticsAdapter.js +5 -1
- package/src/adloader.js +6 -1
- package/src/storageManager.js +5 -4
- package/test/mocks/analyticsStub.js +13 -0
- package/test/mocks/xhr.js +22 -0
- package/test/spec/AnalyticsAdapter_spec.js +4 -0
- package/test/spec/modules/adfBidAdapter_spec.js +1 -1
- package/test/spec/modules/adoceanBidAdapter_spec.js +25 -1
- package/test/spec/modules/adriverIdSystem_spec.js +7 -3
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +16 -1
- package/test/spec/modules/akamaiDapRtdProvider_spec.js +457 -109
- package/test/spec/modules/automatadBidAdapter_spec.js +4 -0
- package/test/spec/modules/conversantBidAdapter_spec.js +36 -5
- package/test/spec/modules/datablocksBidAdapter_spec.js +9 -8
- package/test/spec/modules/eids_spec.js +48 -3
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +4 -4
- package/test/spec/modules/ftrackIdSystem_spec.js +11 -22
- package/test/spec/modules/gdprEnforcement_spec.js +100 -53
- package/test/spec/modules/gridBidAdapter_spec.js +11 -0
- package/test/spec/modules/incrxBidAdapter_spec.js +100 -0
- package/test/spec/modules/insticatorBidAdapter_spec.js +46 -1
- package/test/spec/modules/ixBidAdapter_spec.js +1 -1
- package/test/spec/modules/kargoBidAdapter_spec.js +27 -0
- package/test/spec/modules/koblerBidAdapter_spec.js +160 -124
- package/test/spec/modules/medianetRtdProvider_spec.js +146 -0
- package/test/spec/modules/merkleIdSystem_spec.js +58 -37
- package/test/spec/modules/naveggIdSystem_spec.js +25 -1
- package/test/spec/modules/proxistoreBidAdapter_spec.js +0 -2
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +117 -0
- package/test/spec/modules/sovrnBidAdapter_spec.js +253 -264
- package/test/spec/modules/synacormediaBidAdapter_spec.js +74 -0
- package/test/spec/modules/taboolaBidAdapter_spec.js +455 -0
- package/test/spec/modules/userId_spec.js +27 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +9 -4
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +4 -2
- package/test/test_deps.js +1 -0
|
@@ -96,6 +96,10 @@ describe('automatadBidAdapter', function () {
|
|
|
96
96
|
let req = spec.buildRequests([ bidRequestRequiredParams ], { refererInfo: { } })
|
|
97
97
|
let rdata
|
|
98
98
|
|
|
99
|
+
it('should have withCredentials option as true', function() {
|
|
100
|
+
expect(req.options.withCredentials).to.equal(true)
|
|
101
|
+
})
|
|
102
|
+
|
|
99
103
|
it('should return request object', function () {
|
|
100
104
|
expect(req).to.not.be.null
|
|
101
105
|
})
|
|
@@ -72,6 +72,7 @@ describe('Conversant adapter tests', function() {
|
|
|
72
72
|
video: {
|
|
73
73
|
context: 'instream',
|
|
74
74
|
playerSize: [632, 499],
|
|
75
|
+
pos: 3
|
|
75
76
|
}
|
|
76
77
|
},
|
|
77
78
|
placementCode: 'pcode003',
|
|
@@ -108,12 +109,14 @@ describe('Conversant adapter tests', function() {
|
|
|
108
109
|
{
|
|
109
110
|
bidder: 'conversant',
|
|
110
111
|
params: {
|
|
111
|
-
site_id: siteId
|
|
112
|
+
site_id: siteId,
|
|
113
|
+
position: 2,
|
|
112
114
|
},
|
|
113
115
|
mediaTypes: {
|
|
114
116
|
video: {
|
|
115
117
|
context: 'instream',
|
|
116
|
-
mimes: ['video/mp4', 'video/x-flv']
|
|
118
|
+
mimes: ['video/mp4', 'video/x-flv'],
|
|
119
|
+
pos: 7,
|
|
117
120
|
}
|
|
118
121
|
},
|
|
119
122
|
placementCode: 'pcode005',
|
|
@@ -147,6 +150,23 @@ describe('Conversant adapter tests', function() {
|
|
|
147
150
|
bidId: 'bid006',
|
|
148
151
|
bidderRequestId: '117d765b87bed38',
|
|
149
152
|
auctionId: 'req000'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
bidder: 'conversant',
|
|
156
|
+
params: {
|
|
157
|
+
site_id: siteId
|
|
158
|
+
},
|
|
159
|
+
mediaTypes: {
|
|
160
|
+
banner: {
|
|
161
|
+
sizes: [[728, 90], [468, 60]],
|
|
162
|
+
pos: 5
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
placementCode: 'pcode001',
|
|
166
|
+
transactionId: 'tx001',
|
|
167
|
+
bidId: 'bid007',
|
|
168
|
+
bidderRequestId: '117d765b87bed38',
|
|
169
|
+
auctionId: 'req000'
|
|
150
170
|
}
|
|
151
171
|
];
|
|
152
172
|
|
|
@@ -245,7 +265,7 @@ describe('Conversant adapter tests', function() {
|
|
|
245
265
|
expect(payload).to.have.property('id', 'req000');
|
|
246
266
|
expect(payload).to.have.property('at', 1);
|
|
247
267
|
expect(payload).to.have.property('imp');
|
|
248
|
-
expect(payload.imp).to.be.an('array').with.lengthOf(
|
|
268
|
+
expect(payload.imp).to.be.an('array').with.lengthOf(8);
|
|
249
269
|
|
|
250
270
|
expect(payload.imp[0]).to.have.property('id', 'bid000');
|
|
251
271
|
expect(payload.imp[0]).to.have.property('secure', 1);
|
|
@@ -287,7 +307,7 @@ describe('Conversant adapter tests', function() {
|
|
|
287
307
|
expect(payload.imp[3]).to.have.property('displaymanagerver').that.matches(versionPattern);
|
|
288
308
|
expect(payload.imp[3]).to.not.have.property('tagid');
|
|
289
309
|
expect(payload.imp[3]).to.have.property('video');
|
|
290
|
-
expect(payload.imp[3].video).to.
|
|
310
|
+
expect(payload.imp[3].video).to.have.property('pos', 3);
|
|
291
311
|
expect(payload.imp[3].video).to.have.property('w', 632);
|
|
292
312
|
expect(payload.imp[3].video).to.have.property('h', 499);
|
|
293
313
|
expect(payload.imp[3].video).to.have.property('mimes');
|
|
@@ -325,7 +345,7 @@ describe('Conversant adapter tests', function() {
|
|
|
325
345
|
expect(payload.imp[5]).to.have.property('displaymanagerver').that.matches(versionPattern);
|
|
326
346
|
expect(payload.imp[5]).to.not.have.property('tagid');
|
|
327
347
|
expect(payload.imp[5]).to.have.property('video');
|
|
328
|
-
expect(payload.imp[5].video).to.
|
|
348
|
+
expect(payload.imp[5].video).to.have.property('pos', 2);
|
|
329
349
|
expect(payload.imp[5].video).to.not.have.property('w');
|
|
330
350
|
expect(payload.imp[5].video).to.not.have.property('h');
|
|
331
351
|
expect(payload.imp[5].video).to.have.property('mimes');
|
|
@@ -345,6 +365,17 @@ describe('Conversant adapter tests', function() {
|
|
|
345
365
|
expect(payload.imp[6].ext).to.have.property('data');
|
|
346
366
|
expect(payload.imp[6].ext.data).to.have.property('pbadslot');
|
|
347
367
|
|
|
368
|
+
expect(payload.imp[7]).to.have.property('id', 'bid007');
|
|
369
|
+
expect(payload.imp[7]).to.have.property('secure', 1);
|
|
370
|
+
expect(payload.imp[7]).to.have.property('bidfloor', 0);
|
|
371
|
+
expect(payload.imp[7]).to.have.property('displaymanager', 'Prebid.js');
|
|
372
|
+
expect(payload.imp[7]).to.have.property('displaymanagerver').that.matches(versionPattern);
|
|
373
|
+
expect(payload.imp[7]).to.not.have.property('tagid');
|
|
374
|
+
expect(payload.imp[7]).to.have.property('banner');
|
|
375
|
+
expect(payload.imp[7].banner).to.have.property('pos', 5);
|
|
376
|
+
expect(payload.imp[7].banner).to.have.property('format');
|
|
377
|
+
expect(payload.imp[7].banner.format).to.deep.equal([{w: 728, h: 90}, {w: 468, h: 60}]);
|
|
378
|
+
|
|
348
379
|
expect(payload).to.have.property('site');
|
|
349
380
|
expect(payload.site).to.have.property('id', siteId);
|
|
350
381
|
expect(payload.site).to.have.property('mobile').that.is.oneOf([0, 1]);
|
|
@@ -305,6 +305,15 @@ let bid_request = {
|
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
describe('DatablocksAdapter', function() {
|
|
308
|
+
before(() => {
|
|
309
|
+
// stub out queue metric to avoid it polluting the global xhr mock during other tests
|
|
310
|
+
sinon.stub(spec, 'queue_metric').callsFake(() => null);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
after(() => {
|
|
314
|
+
spec.queue_metric.restore();
|
|
315
|
+
});
|
|
316
|
+
|
|
308
317
|
describe('All needed functions are available', function() {
|
|
309
318
|
it(`isBidRequestValid is present and type function`, function () {
|
|
310
319
|
expect(spec.isBidRequestValid).to.exist.and.to.be.a('function')
|
|
@@ -377,14 +386,6 @@ describe('DatablocksAdapter', function() {
|
|
|
377
386
|
});
|
|
378
387
|
})
|
|
379
388
|
|
|
380
|
-
describe('queue / send metrics', function() {
|
|
381
|
-
it('Should return true', function() {
|
|
382
|
-
expect(spec.queue_metric({type: 'test'})).to.be.true;
|
|
383
|
-
expect(spec.queue_metric('string')).to.be.false;
|
|
384
|
-
expect(spec.send_metrics()).to.be.true;
|
|
385
|
-
});
|
|
386
|
-
})
|
|
387
|
-
|
|
388
389
|
describe('get_viewability', function() {
|
|
389
390
|
it('Should return undefined', function() {
|
|
390
391
|
expect(spec.get_viewability()).to.equal(undefined);
|
|
@@ -82,20 +82,65 @@ describe('eids array generation for known sub-modules', function() {
|
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
it('merkleId', function() {
|
|
85
|
+
it('merkleId (legacy) - supports single id', function() {
|
|
86
86
|
const userId = {
|
|
87
87
|
merkleId: {
|
|
88
88
|
id: 'some-random-id-value', keyID: 1
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
91
|
const newEids = createEidsArray(userId);
|
|
92
|
+
|
|
92
93
|
expect(newEids.length).to.equal(1);
|
|
93
94
|
expect(newEids[0]).to.deep.equal({
|
|
94
95
|
source: 'merkleinc.com',
|
|
96
|
+
uids: [{
|
|
97
|
+
id: 'some-random-id-value',
|
|
98
|
+
atype: 3,
|
|
99
|
+
ext: { keyID: 1 }
|
|
100
|
+
}]
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('merkleId supports multiple source providers', function() {
|
|
105
|
+
const userId = {
|
|
106
|
+
merkleId: [{
|
|
107
|
+
id: 'some-random-id-value', ext: { enc: 1, keyID: 16, idName: 'pamId', ssp: 'ssp1' }
|
|
108
|
+
}, {
|
|
109
|
+
id: 'another-random-id-value',
|
|
110
|
+
ext: {
|
|
111
|
+
enc: 1,
|
|
112
|
+
idName: 'pamId',
|
|
113
|
+
third: 4,
|
|
114
|
+
ssp: 'ssp2'
|
|
115
|
+
}
|
|
116
|
+
}]
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const newEids = createEidsArray(userId);
|
|
120
|
+
expect(newEids.length).to.equal(2);
|
|
121
|
+
expect(newEids[0]).to.deep.equal({
|
|
122
|
+
source: 'ssp1.merkleinc.com',
|
|
95
123
|
uids: [{id: 'some-random-id-value',
|
|
96
124
|
atype: 3,
|
|
97
|
-
ext: {
|
|
98
|
-
|
|
125
|
+
ext: {
|
|
126
|
+
enc: 1,
|
|
127
|
+
keyID: 16,
|
|
128
|
+
idName: 'pamId',
|
|
129
|
+
ssp: 'ssp1'
|
|
130
|
+
}
|
|
131
|
+
}]
|
|
132
|
+
});
|
|
133
|
+
expect(newEids[1]).to.deep.equal({
|
|
134
|
+
source: 'ssp2.merkleinc.com',
|
|
135
|
+
uids: [{id: 'another-random-id-value',
|
|
136
|
+
atype: 3,
|
|
137
|
+
ext: {
|
|
138
|
+
third: 4,
|
|
139
|
+
enc: 1,
|
|
140
|
+
idName: 'pamId',
|
|
141
|
+
ssp: 'ssp2'
|
|
142
|
+
}
|
|
143
|
+
}]
|
|
99
144
|
});
|
|
100
145
|
});
|
|
101
146
|
|
|
@@ -51,7 +51,7 @@ describe('finteza analytics adapter', function () {
|
|
|
51
51
|
|
|
52
52
|
describe('track', () => {
|
|
53
53
|
describe('bid request', () => {
|
|
54
|
-
it('builds and sends data', function () {
|
|
54
|
+
it('builds and sends request data', function () {
|
|
55
55
|
const bidderCode = 'Bidder789';
|
|
56
56
|
const pauctionId = '5018eb39-f900-4370-b71e-3bb5b48d324f';
|
|
57
57
|
|
|
@@ -95,7 +95,7 @@ describe('finteza analytics adapter', function () {
|
|
|
95
95
|
});
|
|
96
96
|
|
|
97
97
|
describe('bid response', () => {
|
|
98
|
-
it('builds and sends data', function () {
|
|
98
|
+
it('builds and sends response data', function () {
|
|
99
99
|
const bidderCode = 'Bidder789';
|
|
100
100
|
const pauctionId = '5018eb39-f900-4370-b71e-3bb5b48d324f';
|
|
101
101
|
|
|
@@ -154,7 +154,7 @@ describe('finteza analytics adapter', function () {
|
|
|
154
154
|
});
|
|
155
155
|
|
|
156
156
|
describe('bid won', () => {
|
|
157
|
-
it('builds and sends data', function () {
|
|
157
|
+
it('builds and sends bid won data', function () {
|
|
158
158
|
const bidderCode = 'Bidder789';
|
|
159
159
|
const pauctionId = '5018eb39-f900-4370-b71e-3bb5b48d324f';
|
|
160
160
|
|
|
@@ -194,7 +194,7 @@ describe('finteza analytics adapter', function () {
|
|
|
194
194
|
});
|
|
195
195
|
|
|
196
196
|
describe('bid timeout', () => {
|
|
197
|
-
it('builds and sends data', function () {
|
|
197
|
+
it('builds and sends timeout data', function () {
|
|
198
198
|
const bidderCode = 'biDDer789';
|
|
199
199
|
const pauctionId = '5018eb39-f900-4370-b71e-3bb5b48d324f';
|
|
200
200
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ftrackIdSubmodule } from 'modules/ftrackIdSystem.js';
|
|
2
2
|
import * as utils from 'src/utils.js';
|
|
3
3
|
import { uspDataHandler } from 'src/adapterManager.js';
|
|
4
|
+
import { loadExternalScript } from 'src/adloader.js';
|
|
4
5
|
let expect = require('chai').expect;
|
|
5
6
|
|
|
6
7
|
let server;
|
|
@@ -95,15 +96,7 @@ describe('FTRACK ID System', () => {
|
|
|
95
96
|
delete configMock1.params.url;
|
|
96
97
|
|
|
97
98
|
ftrackIdSubmodule.isConfigOk(configMock1);
|
|
98
|
-
expect(logWarnStub.args[0][0]).to.equal(`FTRACK - config.params.url is required for ftrack to run
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it(`should be rejected if 'storage.param.url' does not exist or is not 'https://d9.flashtalking.com/d9core'`, () => {
|
|
102
|
-
let configMock1 = JSON.parse(JSON.stringify(configMock));
|
|
103
|
-
configMock1.params.url = 'https://d9.NOT.flashtalking.com/d9core';
|
|
104
|
-
|
|
105
|
-
ftrackIdSubmodule.isConfigOk(configMock1);
|
|
106
|
-
expect(logWarnStub.args[0][0]).to.equal(`FTRACK - config.params.url is required for ftrack to run. Url should be "https://d9.flashtalking.com/d9core".`);
|
|
99
|
+
expect(logWarnStub.args[0][0]).to.equal(`FTRACK - config.params.url is required for ftrack to run.`);
|
|
107
100
|
});
|
|
108
101
|
});
|
|
109
102
|
|
|
@@ -154,25 +147,21 @@ describe('FTRACK ID System', () => {
|
|
|
154
147
|
});
|
|
155
148
|
|
|
156
149
|
it(`should be the only method that gets a new ID aka hits the D9 endpoint`, () => {
|
|
157
|
-
let appendChildStub = sinon.stub(window.document.body, 'appendChild');
|
|
158
|
-
|
|
159
150
|
ftrackIdSubmodule.getId(configMock, null, null).callback();
|
|
160
|
-
expect(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
expect(actualScriptTag.getAttribute('src')).to.equal('https://d9.flashtalking.com/d9core');
|
|
164
|
-
appendChildStub.resetHistory();
|
|
151
|
+
expect(loadExternalScript.called).to.be.ok;
|
|
152
|
+
expect(loadExternalScript.args[0][0]).to.deep.equal('https://d9.flashtalking.com/d9core');
|
|
153
|
+
loadExternalScript.resetHistory();
|
|
165
154
|
|
|
166
155
|
ftrackIdSubmodule.decode('value', configMock);
|
|
167
|
-
expect(
|
|
168
|
-
expect(
|
|
169
|
-
|
|
156
|
+
expect(loadExternalScript.called).to.not.be.ok;
|
|
157
|
+
expect(loadExternalScript.args).to.deep.equal([]);
|
|
158
|
+
loadExternalScript.resetHistory();
|
|
170
159
|
|
|
171
160
|
ftrackIdSubmodule.extendId(configMock, null, {cache: {id: ''}});
|
|
172
|
-
expect(
|
|
173
|
-
expect(
|
|
161
|
+
expect(loadExternalScript.called).to.not.be.ok;
|
|
162
|
+
expect(loadExternalScript.args).to.deep.equal([]);
|
|
174
163
|
|
|
175
|
-
|
|
164
|
+
loadExternalScript.restore();
|
|
176
165
|
});
|
|
177
166
|
|
|
178
167
|
describe(`should use the "ids" setting in the config:`, () => {
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deviceAccessHook,
|
|
3
|
-
|
|
4
|
-
userSyncHook,
|
|
5
|
-
userIdHook,
|
|
6
|
-
makeBidRequestsHook,
|
|
7
|
-
validateRules,
|
|
3
|
+
enableAnalyticsHook,
|
|
8
4
|
enforcementRules,
|
|
5
|
+
getGvlid,
|
|
6
|
+
internal,
|
|
7
|
+
makeBidRequestsHook,
|
|
9
8
|
purpose1Rule,
|
|
10
9
|
purpose2Rule,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
setEnforcementConfig,
|
|
11
|
+
userIdHook,
|
|
12
|
+
userSyncHook,
|
|
13
|
+
validateRules
|
|
14
14
|
} from 'modules/gdprEnforcement.js';
|
|
15
|
-
import {
|
|
16
|
-
import adapterManager, {
|
|
15
|
+
import {config} from 'src/config.js';
|
|
16
|
+
import adapterManager, {gdprDataHandler} from 'src/adapterManager.js';
|
|
17
17
|
import * as utils from 'src/utils.js';
|
|
18
|
-
import {
|
|
18
|
+
import {validateStorageEnforcement} from 'src/storageManager.js';
|
|
19
19
|
import * as events from 'src/events.js';
|
|
20
20
|
|
|
21
21
|
describe('gdpr enforcement', function () {
|
|
@@ -98,9 +98,9 @@ describe('gdpr enforcement', function () {
|
|
|
98
98
|
};
|
|
99
99
|
|
|
100
100
|
after(function () {
|
|
101
|
-
validateStorageEnforcement.getHooks({
|
|
101
|
+
validateStorageEnforcement.getHooks({hook: deviceAccessHook}).remove();
|
|
102
102
|
$$PREBID_GLOBAL$$.requestBids.getHooks().remove();
|
|
103
|
-
adapterManager.makeBidRequests.getHooks({
|
|
103
|
+
adapterManager.makeBidRequests.getHooks({hook: makeBidRequestsHook}).remove();
|
|
104
104
|
})
|
|
105
105
|
|
|
106
106
|
describe('deviceAccessHook', function () {
|
|
@@ -149,7 +149,7 @@ describe('gdpr enforcement', function () {
|
|
|
149
149
|
hasEnforcementHook: true,
|
|
150
150
|
valid: false
|
|
151
151
|
}
|
|
152
|
-
sinon.assert.calledWith(nextFnSpy, undefined, undefined, result);
|
|
152
|
+
sinon.assert.calledWith(nextFnSpy, undefined, undefined, undefined, result);
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
it('should only check for consent for vendor exceptions when enforcePurpose and enforceVendor are false', function () {
|
|
@@ -199,6 +199,53 @@ describe('gdpr enforcement', function () {
|
|
|
199
199
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
200
200
|
});
|
|
201
201
|
|
|
202
|
+
it('should allow device access when enforce vendor but module is vendorless ', function () {
|
|
203
|
+
adapterManagerStub.withArgs('pubCommonId').returns(getBidderSpec(1));
|
|
204
|
+
setEnforcementConfig({
|
|
205
|
+
gdpr: {
|
|
206
|
+
rules: [{
|
|
207
|
+
purpose: 'storage',
|
|
208
|
+
enforcePurpose: true,
|
|
209
|
+
enforceVendor: true,
|
|
210
|
+
}]
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
let consentData = {}
|
|
214
|
+
consentData.vendorData = staticConfig.consentData.getTCData;
|
|
215
|
+
consentData.gdprApplies = true;
|
|
216
|
+
consentData.apiVersion = 2;
|
|
217
|
+
gdprDataHandlerStub.returns(consentData);
|
|
218
|
+
|
|
219
|
+
deviceAccessHook(nextFnSpy, 1, 'pubCommonId', 'fpid-module');
|
|
220
|
+
expect(logWarnSpy.callCount).to.equal(0);
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
it('should not allow device access if enforce vendor, module is vendorless, but there is no consent for purpose 1', function () {
|
|
224
|
+
adapterManagerStub.withArgs('pubCommonId').returns(getBidderSpec(1));
|
|
225
|
+
setEnforcementConfig({
|
|
226
|
+
gdpr: {
|
|
227
|
+
rules: [{
|
|
228
|
+
purpose: 'storage',
|
|
229
|
+
enforcePurpose: true,
|
|
230
|
+
enforceVendor: true,
|
|
231
|
+
}]
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
let consentData = {}
|
|
236
|
+
// set consent for purpose 1 to false
|
|
237
|
+
const newConsentData = utils.deepClone(staticConfig);
|
|
238
|
+
newConsentData.consentData.getTCData.purpose.consents['1'] = false;
|
|
239
|
+
consentData.vendorData = newConsentData.consentData.getTCData;
|
|
240
|
+
consentData.apiVersion = 2;
|
|
241
|
+
consentData.gdprApplies = true;
|
|
242
|
+
|
|
243
|
+
gdprDataHandlerStub.returns(consentData);
|
|
244
|
+
|
|
245
|
+
deviceAccessHook(nextFnSpy, 1, 'pubCommonId', 'fpid-module');
|
|
246
|
+
expect(logWarnSpy.callCount).to.equal(1);
|
|
247
|
+
});
|
|
248
|
+
|
|
202
249
|
it('should allow device access when gdprApplies is false and hasDeviceAccess flag is true', function () {
|
|
203
250
|
adapterManagerStub.withArgs('appnexus').returns(getBidderSpec(1));
|
|
204
251
|
setEnforcementConfig({
|
|
@@ -223,10 +270,10 @@ describe('gdpr enforcement', function () {
|
|
|
223
270
|
hasEnforcementHook: true,
|
|
224
271
|
valid: true
|
|
225
272
|
}
|
|
226
|
-
sinon.assert.calledWith(nextFnSpy, 1, 'appnexus', result);
|
|
273
|
+
sinon.assert.calledWith(nextFnSpy, 1, 'appnexus', undefined, result);
|
|
227
274
|
});
|
|
228
275
|
|
|
229
|
-
it('should use gvlMapping set by publisher', function() {
|
|
276
|
+
it('should use gvlMapping set by publisher', function () {
|
|
230
277
|
config.setConfig({
|
|
231
278
|
'gvlMapping': {
|
|
232
279
|
'appnexus': 4
|
|
@@ -254,11 +301,11 @@ describe('gdpr enforcement', function () {
|
|
|
254
301
|
hasEnforcementHook: true,
|
|
255
302
|
valid: true
|
|
256
303
|
}
|
|
257
|
-
sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', result);
|
|
304
|
+
sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', undefined, result);
|
|
258
305
|
config.resetConfig();
|
|
259
306
|
});
|
|
260
307
|
|
|
261
|
-
it('should use gvl id of alias and not of parent', function() {
|
|
308
|
+
it('should use gvl id of alias and not of parent', function () {
|
|
262
309
|
let curBidderStub = sinon.stub(config, 'getCurrentBidder');
|
|
263
310
|
curBidderStub.returns('appnexus-alias');
|
|
264
311
|
adapterManager.aliasBidAdapter('appnexus', 'appnexus-alias');
|
|
@@ -289,7 +336,7 @@ describe('gdpr enforcement', function () {
|
|
|
289
336
|
hasEnforcementHook: true,
|
|
290
337
|
valid: true
|
|
291
338
|
}
|
|
292
|
-
sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', result);
|
|
339
|
+
sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', undefined, result);
|
|
293
340
|
config.resetConfig();
|
|
294
341
|
curBidderStub.restore();
|
|
295
342
|
});
|
|
@@ -470,7 +517,7 @@ describe('gdpr enforcement', function () {
|
|
|
470
517
|
const args = nextFnSpy.getCalls()[0].args;
|
|
471
518
|
expect(args[1].hasValidated).to.be.true;
|
|
472
519
|
expect(nextFnSpy.calledOnce).to.equal(true);
|
|
473
|
-
sinon.assert.calledWith(nextFnSpy, submodules, {
|
|
520
|
+
sinon.assert.calledWith(nextFnSpy, submodules, {...consentData, hasValidated: true});
|
|
474
521
|
});
|
|
475
522
|
|
|
476
523
|
it('should allow userId module if gdpr not in scope', function () {
|
|
@@ -524,7 +571,7 @@ describe('gdpr enforcement', function () {
|
|
|
524
571
|
name: 'sampleUserId'
|
|
525
572
|
}
|
|
526
573
|
}]
|
|
527
|
-
sinon.assert.calledWith(nextFnSpy, expectedSubmodules, {
|
|
574
|
+
sinon.assert.calledWith(nextFnSpy, expectedSubmodules, {...consentData, hasValidated: true});
|
|
528
575
|
});
|
|
529
576
|
});
|
|
530
577
|
|
|
@@ -583,17 +630,17 @@ describe('gdpr enforcement', function () {
|
|
|
583
630
|
gdprDataHandlerStub.returns(consentData);
|
|
584
631
|
adapterManagerStub.withArgs('bidder_1').returns({
|
|
585
632
|
getSpec: function () {
|
|
586
|
-
return {
|
|
633
|
+
return {'gvlid': 4}
|
|
587
634
|
}
|
|
588
635
|
});
|
|
589
636
|
adapterManagerStub.withArgs('bidder_2').returns({
|
|
590
637
|
getSpec: function () {
|
|
591
|
-
return {
|
|
638
|
+
return {'gvlid': 5}
|
|
592
639
|
}
|
|
593
640
|
});
|
|
594
641
|
adapterManagerStub.withArgs('bidder_3').returns({
|
|
595
642
|
getSpec: function () {
|
|
596
|
-
return {
|
|
643
|
+
return {'gvlid': undefined}
|
|
597
644
|
}
|
|
598
645
|
});
|
|
599
646
|
makeBidRequestsHook(nextFnSpy, MOCK_AD_UNITS, []);
|
|
@@ -604,20 +651,20 @@ describe('gdpr enforcement', function () {
|
|
|
604
651
|
code: 'ad-unit-1',
|
|
605
652
|
mediaTypes: {},
|
|
606
653
|
bids: [
|
|
607
|
-
sinon.match({
|
|
608
|
-
sinon.match({
|
|
654
|
+
sinon.match({bidder: 'bidder_1'}),
|
|
655
|
+
sinon.match({bidder: 'bidder_2'})
|
|
609
656
|
]
|
|
610
657
|
}, {
|
|
611
658
|
code: 'ad-unit-2',
|
|
612
659
|
mediaTypes: {},
|
|
613
660
|
bids: [
|
|
614
|
-
sinon.match({
|
|
615
|
-
sinon.match({
|
|
661
|
+
sinon.match({bidder: 'bidder_2'}),
|
|
662
|
+
sinon.match({bidder: 'bidder_3'}) // should be allowed even though it's doesn't have a gvlId because liTransparency is established.
|
|
616
663
|
]
|
|
617
664
|
}], []);
|
|
618
665
|
});
|
|
619
666
|
|
|
620
|
-
it('should block bidder which does not have consent and allow bidder which has consent (liTransparency is NOT established)', function() {
|
|
667
|
+
it('should block bidder which does not have consent and allow bidder which has consent (liTransparency is NOT established)', function () {
|
|
621
668
|
setEnforcementConfig({
|
|
622
669
|
gdpr: {
|
|
623
670
|
rules: [{
|
|
@@ -641,17 +688,17 @@ describe('gdpr enforcement', function () {
|
|
|
641
688
|
gdprDataHandlerStub.returns(consentData);
|
|
642
689
|
adapterManagerStub.withArgs('bidder_1').returns({
|
|
643
690
|
getSpec: function () {
|
|
644
|
-
return {
|
|
691
|
+
return {'gvlid': 4}
|
|
645
692
|
}
|
|
646
693
|
});
|
|
647
694
|
adapterManagerStub.withArgs('bidder_2').returns({
|
|
648
695
|
getSpec: function () {
|
|
649
|
-
return {
|
|
696
|
+
return {'gvlid': 5}
|
|
650
697
|
}
|
|
651
698
|
});
|
|
652
699
|
adapterManagerStub.withArgs('bidder_3').returns({
|
|
653
700
|
getSpec: function () {
|
|
654
|
-
return {
|
|
701
|
+
return {'gvlid': undefined}
|
|
655
702
|
}
|
|
656
703
|
});
|
|
657
704
|
|
|
@@ -663,13 +710,13 @@ describe('gdpr enforcement', function () {
|
|
|
663
710
|
code: 'ad-unit-1',
|
|
664
711
|
mediaTypes: {},
|
|
665
712
|
bids: [
|
|
666
|
-
sinon.match({
|
|
713
|
+
sinon.match({bidder: 'bidder_1'}), // 'bidder_2' is not present because it doesn't have vendorConsent
|
|
667
714
|
]
|
|
668
715
|
}, {
|
|
669
716
|
code: 'ad-unit-2',
|
|
670
717
|
mediaTypes: {},
|
|
671
718
|
bids: [
|
|
672
|
-
sinon.match({
|
|
719
|
+
sinon.match({bidder: 'bidder_3'}), // 'bidder_3' is allowed despite gvlId being undefined because it's part of vendorExceptions
|
|
673
720
|
]
|
|
674
721
|
}], []);
|
|
675
722
|
|
|
@@ -727,12 +774,12 @@ describe('gdpr enforcement', function () {
|
|
|
727
774
|
nextFnSpy = sandbox.spy();
|
|
728
775
|
});
|
|
729
776
|
|
|
730
|
-
afterEach(function() {
|
|
777
|
+
afterEach(function () {
|
|
731
778
|
config.resetConfig();
|
|
732
779
|
sandbox.restore();
|
|
733
780
|
});
|
|
734
781
|
|
|
735
|
-
it('should block analytics adapter which does not have consent and allow the one(s) which have consent', function() {
|
|
782
|
+
it('should block analytics adapter which does not have consent and allow the one(s) which have consent', function () {
|
|
736
783
|
setEnforcementConfig({
|
|
737
784
|
gdpr: {
|
|
738
785
|
rules: [{
|
|
@@ -750,9 +797,9 @@ describe('gdpr enforcement', function () {
|
|
|
750
797
|
consentData.gdprApplies = true;
|
|
751
798
|
|
|
752
799
|
gdprDataHandlerStub.returns(consentData);
|
|
753
|
-
adapterManagerStub.withArgs('analyticsAdapter_A').returns({
|
|
754
|
-
adapterManagerStub.withArgs('analyticsAdapter_B').returns({
|
|
755
|
-
adapterManagerStub.withArgs('analyticsAdapter_C').returns({
|
|
800
|
+
adapterManagerStub.withArgs('analyticsAdapter_A').returns({gvlid: 3});
|
|
801
|
+
adapterManagerStub.withArgs('analyticsAdapter_B').returns({gvlid: 5});
|
|
802
|
+
adapterManagerStub.withArgs('analyticsAdapter_C').returns({gvlid: 1});
|
|
756
803
|
|
|
757
804
|
enableAnalyticsHook(nextFnSpy, MOCK_ANALYTICS_ADAPTER_CONFIG);
|
|
758
805
|
|
|
@@ -1025,7 +1072,7 @@ describe('gdpr enforcement', function () {
|
|
|
1025
1072
|
expect(purpose2Rule).to.deep.equal(purpose2RuleDefinedInConfig);
|
|
1026
1073
|
});
|
|
1027
1074
|
|
|
1028
|
-
it('should use the "rules" defined in config if a definition found', function() {
|
|
1075
|
+
it('should use the "rules" defined in config if a definition found', function () {
|
|
1029
1076
|
const rules = [{
|
|
1030
1077
|
purpose: 'storage',
|
|
1031
1078
|
enforcePurpose: false,
|
|
@@ -1035,23 +1082,23 @@ describe('gdpr enforcement', function () {
|
|
|
1035
1082
|
enforcePurpose: false,
|
|
1036
1083
|
enforceVendor: false
|
|
1037
1084
|
}]
|
|
1038
|
-
setEnforcementConfig({gdpr: {
|
|
1085
|
+
setEnforcementConfig({gdpr: {rules}});
|
|
1039
1086
|
|
|
1040
1087
|
expect(enforcementRules).to.deep.equal(rules);
|
|
1041
1088
|
});
|
|
1042
1089
|
});
|
|
1043
1090
|
|
|
1044
|
-
describe('TCF2FinalResults', function() {
|
|
1091
|
+
describe('TCF2FinalResults', function () {
|
|
1045
1092
|
let sandbox;
|
|
1046
|
-
beforeEach(function() {
|
|
1093
|
+
beforeEach(function () {
|
|
1047
1094
|
sandbox = sinon.createSandbox();
|
|
1048
1095
|
sandbox.spy(events, 'emit');
|
|
1049
1096
|
});
|
|
1050
|
-
afterEach(function() {
|
|
1097
|
+
afterEach(function () {
|
|
1051
1098
|
config.resetConfig();
|
|
1052
1099
|
sandbox.restore();
|
|
1053
1100
|
});
|
|
1054
|
-
it('should emit TCF2 enforcement data on auction end', function() {
|
|
1101
|
+
it('should emit TCF2 enforcement data on auction end', function () {
|
|
1055
1102
|
const rules = [{
|
|
1056
1103
|
purpose: 'storage',
|
|
1057
1104
|
enforcePurpose: false,
|
|
@@ -1061,7 +1108,7 @@ describe('gdpr enforcement', function () {
|
|
|
1061
1108
|
enforcePurpose: false,
|
|
1062
1109
|
enforceVendor: false
|
|
1063
1110
|
}]
|
|
1064
|
-
setEnforcementConfig({gdpr: {
|
|
1111
|
+
setEnforcementConfig({gdpr: {rules}});
|
|
1065
1112
|
|
|
1066
1113
|
events.emit('auctionEnd', {})
|
|
1067
1114
|
|
|
@@ -1070,28 +1117,28 @@ describe('gdpr enforcement', function () {
|
|
|
1070
1117
|
})
|
|
1071
1118
|
});
|
|
1072
1119
|
|
|
1073
|
-
describe('getGvlid', function() {
|
|
1120
|
+
describe('getGvlid', function () {
|
|
1074
1121
|
let sandbox;
|
|
1075
1122
|
let getGvlidForBidAdapterStub;
|
|
1076
1123
|
let getGvlidForUserIdModuleStub;
|
|
1077
1124
|
let getGvlidForAnalyticsAdapterStub;
|
|
1078
|
-
beforeEach(function() {
|
|
1125
|
+
beforeEach(function () {
|
|
1079
1126
|
sandbox = sinon.createSandbox();
|
|
1080
1127
|
getGvlidForBidAdapterStub = sandbox.stub(internal, 'getGvlidForBidAdapter');
|
|
1081
1128
|
getGvlidForUserIdModuleStub = sandbox.stub(internal, 'getGvlidForUserIdModule');
|
|
1082
1129
|
getGvlidForAnalyticsAdapterStub = sandbox.stub(internal, 'getGvlidForAnalyticsAdapter');
|
|
1083
1130
|
});
|
|
1084
|
-
afterEach(function() {
|
|
1131
|
+
afterEach(function () {
|
|
1085
1132
|
sandbox.restore();
|
|
1086
1133
|
config.resetConfig();
|
|
1087
1134
|
});
|
|
1088
1135
|
|
|
1089
|
-
it('should return "null" if called without passing any argument', function() {
|
|
1136
|
+
it('should return "null" if called without passing any argument', function () {
|
|
1090
1137
|
const gvlid = getGvlid();
|
|
1091
1138
|
expect(gvlid).to.equal(null);
|
|
1092
1139
|
});
|
|
1093
1140
|
|
|
1094
|
-
it('should return "null" if GVL ID is not defined for any of these modules: Bid adapter, UserId submodule and Analytics adapter', function() {
|
|
1141
|
+
it('should return "null" if GVL ID is not defined for any of these modules: Bid adapter, UserId submodule and Analytics adapter', function () {
|
|
1095
1142
|
getGvlidForBidAdapterStub.withArgs('moduleA').returns(null);
|
|
1096
1143
|
getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
|
|
1097
1144
|
getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(null);
|
|
@@ -1100,7 +1147,7 @@ describe('gdpr enforcement', function () {
|
|
|
1100
1147
|
expect(gvlid).to.equal(null);
|
|
1101
1148
|
});
|
|
1102
1149
|
|
|
1103
|
-
it('should return the GVL ID from gvlMapping if it is defined in setConfig', function() {
|
|
1150
|
+
it('should return the GVL ID from gvlMapping if it is defined in setConfig', function () {
|
|
1104
1151
|
config.setConfig({
|
|
1105
1152
|
gvlMapping: {
|
|
1106
1153
|
moduleA: 1
|
|
@@ -1114,7 +1161,7 @@ describe('gdpr enforcement', function () {
|
|
|
1114
1161
|
expect(gvlid).to.equal(1);
|
|
1115
1162
|
});
|
|
1116
1163
|
|
|
1117
|
-
it('should return the GVL ID by calling getGvlidForBidAdapter -> getGvlidForUserIdModule -> getGvlidForAnalyticsAdapter in sequence', function() {
|
|
1164
|
+
it('should return the GVL ID by calling getGvlidForBidAdapter -> getGvlidForUserIdModule -> getGvlidForAnalyticsAdapter in sequence', function () {
|
|
1118
1165
|
getGvlidForBidAdapterStub.withArgs('moduleA').returns(null);
|
|
1119
1166
|
getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
|
|
1120
1167
|
getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(7);
|