prebid.js 9.5.0 → 9.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.
- package/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- package/.github/release-drafter.yml +4 -0
- package/README.md +4 -4
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/aidemBidAdapter.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/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/cleanmedianetBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/connectionInfo.js +1 -0
- 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/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +31 -2
- package/dist/docereeAdManagerBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gamoshiBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- 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/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idImportLibrary.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.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/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.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/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +174 -170
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ownadxBidAdapter.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prismaBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.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/riseUtils.js +1 -0
- 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/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/telariaBidAdapter.js +1 -1
- package/dist/teqblazeUtils.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.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/uid2IdSystem_shared.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/viantOrtbBidAdapter.js +1 -1
- package/dist/vidazooUtils.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/wurflRtdProvider.js +1 -0
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
- package/libraries/connectionInfo/connectionUtils.js +33 -0
- package/libraries/ortbConverter/processors/video.js +2 -24
- package/libraries/riseUtils/index.js +331 -0
- package/libraries/teqblazeUtils/bidderUtils.js +15 -11
- package/libraries/vidazooUtils/bidderUtils.js +16 -0
- package/modules/.submodules.json +3 -1
- package/modules/51DegreesRtdProvider.md +11 -7
- package/modules/adagioAnalyticsAdapter.js +101 -84
- package/modules/adagioAnalyticsAdapter.md +4 -0
- package/modules/adagioBidAdapter.js +14 -66
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/aidemBidAdapter.js +2 -0
- package/modules/appnexusBidAdapter.js +1 -1
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +5 -3
- package/modules/dailymotionBidAdapter.js +19 -0
- package/modules/docereeAdManagerBidAdapter.js +9 -12
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/greenbidsAnalyticsAdapter.js +7 -4
- package/modules/greenbidsRtdProvider.js +15 -5
- package/modules/id5IdSystem.js +14 -93
- package/modules/idImportLibrary.js +14 -6
- package/modules/insticatorBidAdapter.js +35 -31
- package/modules/kargoBidAdapter.js +11 -14
- package/modules/kimberliteBidAdapter.js +24 -7
- package/modules/kimberliteBidAdapter.md +30 -1
- package/modules/minutemediaBidAdapter.js +21 -398
- package/modules/mobianRtdProvider.js +28 -14
- package/modules/nexx360BidAdapter.js +3 -2
- package/modules/openwebBidAdapter.js +18 -396
- package/modules/ownadxBidAdapter.js +99 -0
- package/modules/prismaBidAdapter.js +1 -27
- package/modules/publirBidAdapter.js +20 -273
- package/modules/pubmaticBidAdapter.js +2 -1
- package/modules/resetdigitalBidAdapter.md +54 -45
- package/modules/riseBidAdapter.js +19 -400
- package/modules/sharethroughBidAdapter.js +5 -0
- package/modules/shinezBidAdapter.js +17 -361
- package/modules/smarthubBidAdapter.js +45 -177
- package/modules/stnBidAdapter.js +22 -398
- package/modules/telariaBidAdapter.js +2 -32
- package/modules/ttdBidAdapter.js +14 -32
- package/modules/uid2IdSystem_shared.js +51 -39
- package/modules/viantOrtbBidAdapter.js +1 -1
- package/modules/wurflRtdProvider.js +213 -0
- package/modules/wurflRtdProvider.md +67 -0
- package/package.json +1 -1
- package/src/adloader.js +1 -0
- package/src/prebid.js +6 -1
- package/src/video.js +78 -1
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
- package/test/spec/modules/adagioBidAdapter_spec.js +32 -67
- package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
- package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
- package/test/spec/modules/connectIdSystem_spec.js +27 -28
- package/test/spec/modules/dailymotionBidAdapter_spec.js +50 -0
- package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
- package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
- package/test/spec/modules/id5IdSystem_spec.js +25 -98
- package/test/spec/modules/idImportLibrary_spec.js +14 -0
- package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
- package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
- package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
- package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
- package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
- package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
- package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
- package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
- package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
- package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
- package/test/spec/unit/pbjs_api_spec.js +11 -0
- package/test/spec/video_spec.js +103 -1
|
@@ -277,8 +277,6 @@ describe('Adagio bid adapter', () => {
|
|
|
277
277
|
it('should send bid request to ENDPOINT_PB via POST', function() {
|
|
278
278
|
sandbox.stub(_internal, 'getDevice').returns({ a: 'a' });
|
|
279
279
|
sandbox.stub(_internal, 'getSite').returns({ domain: 'adagio.io', 'page': 'https://adagio.io/hb' });
|
|
280
|
-
// sandbox.stub(_internal, 'getPageviewId').returns('1234-567');
|
|
281
|
-
// sandbox.stub(utils, 'generateUUID').returns('blabla');
|
|
282
280
|
|
|
283
281
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
284
282
|
const bidderRequest = new BidderRequestBuilder().build();
|
|
@@ -292,7 +290,31 @@ describe('Adagio bid adapter', () => {
|
|
|
292
290
|
expect(requests[0].data).to.have.all.keys(expectedDataKeys);
|
|
293
291
|
});
|
|
294
292
|
|
|
295
|
-
it('should use a custom generated auctionId
|
|
293
|
+
it('should use a custom generated auctionId from ortb2.site.ext.data.adg_rtd.uid when available', function() {
|
|
294
|
+
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
295
|
+
|
|
296
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
297
|
+
let ortb = {
|
|
298
|
+
ortb2: {
|
|
299
|
+
site: {
|
|
300
|
+
ext: {
|
|
301
|
+
data: {
|
|
302
|
+
adg_rtd: {
|
|
303
|
+
uid: expectedAuctionId
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const bidderRequest = new BidderRequestBuilder(ortb).build();
|
|
311
|
+
|
|
312
|
+
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
313
|
+
expect(requests[0].data.adUnits[0].auctionId).eq(expectedAuctionId);
|
|
314
|
+
expect(requests[0].data.adUnits[0].transactionId).to.not.exist;
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
it('should use a custom generated auctionId when ortb2.site.ext.data.adg_rtd.uid is absent and remove transactionId', function() {
|
|
296
318
|
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
297
319
|
sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
|
|
298
320
|
|
|
@@ -305,9 +327,7 @@ describe('Adagio bid adapter', () => {
|
|
|
305
327
|
});
|
|
306
328
|
|
|
307
329
|
it('should enrich prebid bid requests params', function() {
|
|
308
|
-
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
309
330
|
const expectedPageviewId = '56befc26-8cf0-472d-b105-73896df8eb89';
|
|
310
|
-
sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
|
|
311
331
|
sandbox.stub(_internal, 'getAdagioNs').returns({ pageviewId: expectedPageviewId });
|
|
312
332
|
|
|
313
333
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
@@ -315,7 +335,6 @@ describe('Adagio bid adapter', () => {
|
|
|
315
335
|
|
|
316
336
|
spec.buildRequests([bid01], bidderRequest);
|
|
317
337
|
|
|
318
|
-
expect(bid01.params.adagioAuctionId).eq(expectedAuctionId);
|
|
319
338
|
expect(bid01.params.pageviewId).eq(expectedPageviewId);
|
|
320
339
|
});
|
|
321
340
|
|
|
@@ -584,7 +603,6 @@ describe('Adagio bid adapter', () => {
|
|
|
584
603
|
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
585
604
|
expect(requests).to.have.lengthOf(1);
|
|
586
605
|
expect(requests[0].data.adUnits[0].mediaTypes.video).to.deep.equal(expected);
|
|
587
|
-
sinon.assert.calledTwice(utils.logWarn.withArgs(sinon.match(new RegExp(/^Adagio: The OpenRTB/))));
|
|
588
606
|
});
|
|
589
607
|
});
|
|
590
608
|
|
|
@@ -782,77 +800,24 @@ describe('Adagio bid adapter', () => {
|
|
|
782
800
|
describe('with GPP', function() {
|
|
783
801
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
784
802
|
|
|
785
|
-
const
|
|
786
|
-
const
|
|
787
|
-
|
|
788
|
-
const ortb2Gpp = 'ortb2_gpp_consent_string';
|
|
789
|
-
const ortb2GppSid = [1];
|
|
790
|
-
|
|
791
|
-
context('When GPP in regs module', function() {
|
|
792
|
-
it('send gpp and gppSid to the server', function() {
|
|
793
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
794
|
-
gppConsent: {
|
|
795
|
-
gppString: regsGpp,
|
|
796
|
-
applicableSections: regsApplicableSections,
|
|
797
|
-
}
|
|
798
|
-
}).build();
|
|
799
|
-
|
|
800
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
801
|
-
|
|
802
|
-
expect(requests[0].data.regs.gpp).to.equal(regsGpp);
|
|
803
|
-
expect(requests[0].data.regs.gppSid).to.equal(regsApplicableSections);
|
|
804
|
-
});
|
|
805
|
-
});
|
|
806
|
-
|
|
807
|
-
context('When GPP partially defined in regs module', function() {
|
|
808
|
-
it('send gpp and gppSid coming from ortb2 to the server', function() {
|
|
809
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
810
|
-
gppConsent: {
|
|
811
|
-
gppString: regsGpp,
|
|
812
|
-
},
|
|
813
|
-
ortb2: {
|
|
814
|
-
regs: {
|
|
815
|
-
gpp: ortb2Gpp,
|
|
816
|
-
gpp_sid: ortb2GppSid,
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
}).build();
|
|
820
|
-
|
|
821
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
822
|
-
|
|
823
|
-
expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
|
|
824
|
-
expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
|
|
825
|
-
});
|
|
826
|
-
|
|
827
|
-
it('send empty gpp and gppSid if no ortb2 fields to the server', function() {
|
|
828
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
829
|
-
gppConsent: {
|
|
830
|
-
gppString: regsGpp,
|
|
831
|
-
}
|
|
832
|
-
}).build();
|
|
833
|
-
|
|
834
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
835
|
-
|
|
836
|
-
expect(requests[0].data.regs.gpp).to.equal('');
|
|
837
|
-
expect(requests[0].data.regs.gppSid).to.be.empty;
|
|
838
|
-
});
|
|
839
|
-
});
|
|
803
|
+
const gpp = 'gpp_consent_string';
|
|
804
|
+
const gppSid = [1];
|
|
840
805
|
|
|
841
|
-
context('When GPP defined
|
|
806
|
+
context('When GPP is defined', function() {
|
|
842
807
|
it('send gpp and gppSid coming from ortb2 to the server', function() {
|
|
843
808
|
const bidderRequest = new BidderRequestBuilder({
|
|
844
809
|
ortb2: {
|
|
845
810
|
regs: {
|
|
846
|
-
gpp
|
|
847
|
-
gpp_sid:
|
|
811
|
+
gpp,
|
|
812
|
+
gpp_sid: gppSid,
|
|
848
813
|
}
|
|
849
814
|
}
|
|
850
815
|
}).build();
|
|
851
816
|
|
|
852
817
|
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
853
818
|
|
|
854
|
-
expect(requests[0].data.regs.gpp).to.equal(
|
|
855
|
-
expect(requests[0].data.regs.gppSid).to.equal(
|
|
819
|
+
expect(requests[0].data.regs.gpp).to.equal(gpp);
|
|
820
|
+
expect(requests[0].data.regs.gppSid).to.equal(gppSid);
|
|
856
821
|
});
|
|
857
822
|
});
|
|
858
823
|
|
|
@@ -1783,7 +1783,6 @@ describe('AppNexusAdapter', function () {
|
|
|
1783
1783
|
'cpm': 0.5,
|
|
1784
1784
|
'cpm_publisher_currency': 0.5,
|
|
1785
1785
|
'publisher_currency_code': '$',
|
|
1786
|
-
'publisher_currency_codename': 'USD',
|
|
1787
1786
|
'client_initiated_ad_counting': true,
|
|
1788
1787
|
'viewability': {
|
|
1789
1788
|
'config': '<script type=\'text/javascript\' async=\'true\' src=\'https://cdn.adnxs.com/v/s/152/trk.js#v;vk=appnexus.com-omid;tv=native1-18h;dom_id=%native_dom_id%;st=0;d=1x1;vc=iab;vid_ccr=1;tag_id=13232354;cb=https%3A%2F%2Fams1-ib.adnxs.com%2Fvevent%3Freferrer%3Dhttps253A%252F%252Ftestpages-pmahe.tp.adnxs.net%252F01_basic_single%26e%3DwqT_3QLNB6DNAwAAAwDWAAUBCLfl_-MFEMStk8u3lPTjRxih88aF0fq_2QsqNgkAAAECCCRAEQEHEAAAJEAZEQkAIREJACkRCQAxEQmoMOLRpwY47UhA7UhIAlCDy74uWJzxW2AAaM26dXjzjwWAAQGKAQNVU0SSAQEG8FCYAQGgAQGoAQGwAQC4AQHAAQTIAQLQAQDYAQDgAQDwAQCKAjt1ZignYScsIDI1Mjk4ODUsIDE1NTE4ODkwNzkpO3VmKCdyJywgOTc0OTQ0MDM2HgDwjZIC8QEha0RXaXBnajgtTHdLRUlQTHZpNFlBQ0NjOFZzd0FEZ0FRQVJJN1VoUTR0R25CbGdBWU1rR2FBQndMSGlrTDRBQlVvZ0JwQy1RQVFHWUFRR2dBUUdvQVFPd0FRQzVBZk90YXFRQUFDUkF3UUh6cldxa0FBQWtRTWtCbWo4dDA1ZU84VF9aQVFBQUEBAyRQQV80QUVBOVFFAQ4sQW1BSUFvQUlBdFFJBRAAdg0IeHdBSUF5QUlBNEFJQTZBSUEtQUlBZ0FNQm1BTUJxQVAFzIh1Z01KUVUxVE1UbzBNekl3NEFPVENBLi6aAmEhUXcxdGNRagUoEfQkblBGYklBUW9BRAl8AEEBqAREbzJEABRRSk1JU1EBGwRBQQGsAFURDAxBQUFXHQzwWNgCAOACrZhI6gIzaHR0cDovL3Rlc3RwYWdlcy1wbWFoZS50cC5hZG54cy5uZXQvMDFfYmFzaWNfc2luZ2xl8gITCg9DVVNUT01fTU9ERUxfSUQSAPICGgoWMhYAPExFQUZfTkFNRRIA8gIeCho2HQAIQVNUAT7wnElGSUVEEgCAAwCIAwGQAwCYAxegAwGqAwDAA-CoAcgDANgD8ao-4AMA6AMA-AMBgAQAkgQNL3V0L3YzL3ByZWJpZJgEAKIECjEwLjIuMTIuMzioBIqpB7IEDggAEAEYACAAKAAwADgCuAQAwAQAyAQA0gQOOTMyNSNBTVMxOjQzMjDaBAIIAeAEAfAEg8u-LogFAZgFAKAF______8BAxgBwAUAyQUABQEU8D_SBQkJBQt8AAAA2AUB4AUB8AWZ9CH6BQQIABAAkAYBmAYAuAYAwQYBITAAAPA_yAYA2gYWChAAOgEAGBAAGADgBgw.%26s%3D971dce9d49b6bee447c8a58774fb30b40fe98171;ts=1551889079;cet=0;cecb=\'></script>'
|
|
@@ -1868,38 +1867,6 @@ describe('AppNexusAdapter', function () {
|
|
|
1868
1867
|
expect(Object.keys(result[0])).to.have.members(Object.keys(expectedResponse[0]));
|
|
1869
1868
|
});
|
|
1870
1869
|
|
|
1871
|
-
it('should parse non-default currency', function () {
|
|
1872
|
-
let eurCpmResponse = deepClone(response);
|
|
1873
|
-
eurCpmResponse.tags[0].ads[0].publisher_currency_codename = 'EUR';
|
|
1874
|
-
|
|
1875
|
-
let bidderRequest = {
|
|
1876
|
-
bidderCode: 'appnexus',
|
|
1877
|
-
bids: [{
|
|
1878
|
-
bidId: '3db3773286ee59',
|
|
1879
|
-
adUnitCode: 'code'
|
|
1880
|
-
}]
|
|
1881
|
-
};
|
|
1882
|
-
|
|
1883
|
-
let result = spec.interpretResponse({ body: eurCpmResponse }, { bidderRequest });
|
|
1884
|
-
expect(result[0].currency).to.equal('EUR');
|
|
1885
|
-
});
|
|
1886
|
-
|
|
1887
|
-
it('should parse default currency', function () {
|
|
1888
|
-
let defaultCpmResponse = deepClone(response);
|
|
1889
|
-
delete defaultCpmResponse.tags[0].ads[0].publisher_currency_codename;
|
|
1890
|
-
|
|
1891
|
-
let bidderRequest = {
|
|
1892
|
-
bidderCode: 'appnexus',
|
|
1893
|
-
bids: [{
|
|
1894
|
-
bidId: '3db3773286ee59',
|
|
1895
|
-
adUnitCode: 'code'
|
|
1896
|
-
}]
|
|
1897
|
-
};
|
|
1898
|
-
|
|
1899
|
-
let result = spec.interpretResponse({ body: defaultCpmResponse }, { bidderRequest });
|
|
1900
|
-
expect(result[0].currency).to.equal('USD');
|
|
1901
|
-
});
|
|
1902
|
-
|
|
1903
1870
|
it('should reject 0 cpm bids', function () {
|
|
1904
1871
|
let zeroCpmResponse = deepClone(response);
|
|
1905
1872
|
zeroCpmResponse.tags[0].ads[0].cpm = 0;
|
|
@@ -395,7 +395,7 @@ describe('CleanmedianetAdapter', () => {
|
|
|
395
395
|
|
|
396
396
|
expect(response.data.imp[0].video.mimes).to.equal(bidRequestWithVideo.mediaTypes.video.mimes);
|
|
397
397
|
expect(response.data.imp[0].video.skip).to.not.exist;
|
|
398
|
-
expect(response.data.imp[0].video.
|
|
398
|
+
expect(response.data.imp[0].video.plcmt).to.equal(1);
|
|
399
399
|
expect(response.data.imp[0].video.minduration).to.equal(1);
|
|
400
400
|
expect(response.data.imp[0].video.playbackmethod).to.equal(1);
|
|
401
401
|
expect(response.data.imp[0].video.startdelay).to.equal(1);
|
|
@@ -549,24 +549,28 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
549
549
|
expect(result.callback).to.be.a('function');
|
|
550
550
|
});
|
|
551
551
|
|
|
552
|
+
function mockOptout(value) {
|
|
553
|
+
getLocalStorageStub.callsFake((key) => {
|
|
554
|
+
if (key === 'connectIdOptOut') return value;
|
|
555
|
+
})
|
|
556
|
+
}
|
|
557
|
+
|
|
552
558
|
it('returns an undefined if the Yahoo specific opt-out key is present in local storage', () => {
|
|
553
|
-
|
|
559
|
+
mockOptout('1');
|
|
554
560
|
expect(invokeGetIdAPI({
|
|
555
561
|
he: HASHED_EMAIL,
|
|
556
562
|
pixelId: PIXEL_ID
|
|
557
563
|
}, consentData)).to.be.undefined;
|
|
558
|
-
localStorage.removeItem('connectIdOptOut');
|
|
559
564
|
});
|
|
560
565
|
|
|
561
566
|
it('returns an object with the callback function if the correct params are passed and Yahoo opt-out value is not "1"', () => {
|
|
562
|
-
|
|
567
|
+
mockOptout('true');
|
|
563
568
|
let result = invokeGetIdAPI({
|
|
564
569
|
he: HASHED_EMAIL,
|
|
565
570
|
pixelId: PIXEL_ID
|
|
566
571
|
}, consentData);
|
|
567
572
|
expect(result).to.be.an('object').that.has.all.keys('callback');
|
|
568
573
|
expect(result.callback).to.be.a('function');
|
|
569
|
-
localStorage.removeItem('connectIdOptOut');
|
|
570
574
|
});
|
|
571
575
|
|
|
572
576
|
it('Makes an ajax GET request to the production API endpoint with pixelId and he query params', () => {
|
|
@@ -804,6 +808,25 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
804
808
|
});
|
|
805
809
|
});
|
|
806
810
|
});
|
|
811
|
+
describe('userHasOptedOut()', () => {
|
|
812
|
+
it('should return a function', () => {
|
|
813
|
+
expect(connectIdSubmodule.userHasOptedOut).to.be.a('function');
|
|
814
|
+
});
|
|
815
|
+
|
|
816
|
+
it('should return false when local storage key has not been set function', () => {
|
|
817
|
+
expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
|
|
818
|
+
});
|
|
819
|
+
|
|
820
|
+
it('should return true when local storage key has been set to "1"', () => {
|
|
821
|
+
getLocalStorageStub.returns('1');
|
|
822
|
+
expect(connectIdSubmodule.userHasOptedOut()).to.be.true;
|
|
823
|
+
});
|
|
824
|
+
|
|
825
|
+
it('should return false when local storage key has not been set to "1"', () => {
|
|
826
|
+
getLocalStorageStub.returns('hello');
|
|
827
|
+
expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
|
|
828
|
+
});
|
|
829
|
+
});
|
|
807
830
|
});
|
|
808
831
|
|
|
809
832
|
describe('decode()', () => {
|
|
@@ -884,28 +907,4 @@ describe('Yahoo ConnectID Submodule', () => {
|
|
|
884
907
|
})).to.be.true;
|
|
885
908
|
});
|
|
886
909
|
});
|
|
887
|
-
|
|
888
|
-
describe('userHasOptedOut()', () => {
|
|
889
|
-
afterEach(() => {
|
|
890
|
-
localStorage.removeItem('connectIdOptOut');
|
|
891
|
-
});
|
|
892
|
-
|
|
893
|
-
it('should return a function', () => {
|
|
894
|
-
expect(connectIdSubmodule.userHasOptedOut).to.be.a('function');
|
|
895
|
-
});
|
|
896
|
-
|
|
897
|
-
it('should return false when local storage key has not been set function', () => {
|
|
898
|
-
expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
|
|
899
|
-
});
|
|
900
|
-
|
|
901
|
-
it('should return true when local storage key has been set to "1"', () => {
|
|
902
|
-
localStorage.setItem('connectIdOptOut', '1');
|
|
903
|
-
expect(connectIdSubmodule.userHasOptedOut()).to.be.true;
|
|
904
|
-
});
|
|
905
|
-
|
|
906
|
-
it('should return false when local storage key has not been set to "1"', () => {
|
|
907
|
-
localStorage.setItem('connectIdOptOut', 'hello');
|
|
908
|
-
expect(connectIdSubmodule.userHasOptedOut()).to.be.false;
|
|
909
|
-
});
|
|
910
|
-
});
|
|
911
910
|
});
|
|
@@ -158,6 +158,18 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
158
158
|
},
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
+
config.setConfig({
|
|
162
|
+
userSync: {
|
|
163
|
+
syncEnabled: true,
|
|
164
|
+
filterSettings: {
|
|
165
|
+
all: {
|
|
166
|
+
bidders: '*',
|
|
167
|
+
filter: 'include'
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
161
173
|
const [request] = config.runWithBidder(
|
|
162
174
|
'dailymotion',
|
|
163
175
|
() => spec.buildRequests(bidRequestData, bidderRequestData),
|
|
@@ -169,6 +181,7 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
169
181
|
expect(request.url).to.equal('https://pb.dmxleo.com');
|
|
170
182
|
|
|
171
183
|
expect(reqData.pbv).to.eql('$prebid.version$');
|
|
184
|
+
expect(reqData.userSyncEnabled).to.be.true;
|
|
172
185
|
expect(reqData.bidder_request).to.eql({
|
|
173
186
|
refererInfo: bidderRequestData.refererInfo,
|
|
174
187
|
uspConsent: bidderRequestData.uspConsent,
|
|
@@ -790,6 +803,18 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
790
803
|
},
|
|
791
804
|
};
|
|
792
805
|
|
|
806
|
+
config.setConfig({
|
|
807
|
+
userSync: {
|
|
808
|
+
syncEnabled: true,
|
|
809
|
+
filterSettings: {
|
|
810
|
+
iframe: {
|
|
811
|
+
bidders: ['dailymotion'],
|
|
812
|
+
filter: 'include'
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
});
|
|
817
|
+
|
|
793
818
|
const [request] = config.runWithBidder(
|
|
794
819
|
'dailymotion',
|
|
795
820
|
() => spec.buildRequests(bidRequestData, bidderRequestData),
|
|
@@ -800,6 +825,7 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
800
825
|
expect(request.url).to.equal('https://pb.dmxleo.com');
|
|
801
826
|
|
|
802
827
|
expect(reqData.pbv).to.eql('$prebid.version$');
|
|
828
|
+
expect(reqData.userSyncEnabled).to.be.true;
|
|
803
829
|
expect(reqData.bidder_request).to.eql({
|
|
804
830
|
refererInfo: bidderRequestData.refererInfo,
|
|
805
831
|
uspConsent: bidderRequestData.uspConsent,
|
|
@@ -942,6 +968,22 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
942
968
|
},
|
|
943
969
|
};
|
|
944
970
|
|
|
971
|
+
config.setConfig({
|
|
972
|
+
userSync: {
|
|
973
|
+
syncEnabled: true,
|
|
974
|
+
filterSettings: {
|
|
975
|
+
image: {
|
|
976
|
+
bidders: ['dailymotion'],
|
|
977
|
+
filter: 'include'
|
|
978
|
+
},
|
|
979
|
+
iframe: {
|
|
980
|
+
bidders: ['dailymotion'],
|
|
981
|
+
filter: 'exclude',
|
|
982
|
+
},
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
});
|
|
986
|
+
|
|
945
987
|
const [request] = config.runWithBidder(
|
|
946
988
|
'dailymotion',
|
|
947
989
|
() => spec.buildRequests(bidRequestData, bidderRequestData),
|
|
@@ -952,6 +994,7 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
952
994
|
expect(request.url).to.equal('https://pb.dmxleo.com');
|
|
953
995
|
|
|
954
996
|
expect(reqData.pbv).to.eql('$prebid.version$');
|
|
997
|
+
expect(reqData.userSyncEnabled).to.be.true;
|
|
955
998
|
expect(reqData.bidder_request).to.eql({
|
|
956
999
|
refererInfo: bidderRequestData.refererInfo,
|
|
957
1000
|
uspConsent: bidderRequestData.uspConsent,
|
|
@@ -1012,6 +1055,12 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
1012
1055
|
},
|
|
1013
1056
|
}];
|
|
1014
1057
|
|
|
1058
|
+
config.setConfig({
|
|
1059
|
+
userSync: {
|
|
1060
|
+
syncEnabled: false,
|
|
1061
|
+
}
|
|
1062
|
+
});
|
|
1063
|
+
|
|
1015
1064
|
const [request] = config.runWithBidder(
|
|
1016
1065
|
'dailymotion',
|
|
1017
1066
|
() => spec.buildRequests(bidRequestDataWithApi, {}),
|
|
@@ -1025,6 +1074,7 @@ describe('dailymotionBidAdapterTests', () => {
|
|
|
1025
1074
|
expect(reqData.coppa).to.be.false;
|
|
1026
1075
|
|
|
1027
1076
|
expect(reqData.pbv).to.eql('$prebid.version$');
|
|
1077
|
+
expect(reqData.userSyncEnabled).to.be.false;
|
|
1028
1078
|
expect(reqData.bidder_request).to.eql({
|
|
1029
1079
|
gdprConsent: {
|
|
1030
1080
|
apiVersion: 1,
|
|
@@ -398,7 +398,7 @@ describe('GamoshiAdapter', () => {
|
|
|
398
398
|
|
|
399
399
|
expect(response.data.imp[0].video.mimes).to.equal(bidRequestWithVideo.mediaTypes.video.mimes);
|
|
400
400
|
expect(response.data.imp[0].video.skip).to.not.exist;
|
|
401
|
-
expect(response.data.imp[0].video.
|
|
401
|
+
expect(response.data.imp[0].video.plcmt).to.equal(1);
|
|
402
402
|
expect(response.data.imp[0].video.minduration).to.equal(1);
|
|
403
403
|
expect(response.data.imp[0].video.playbackmethod).to.equal(1);
|
|
404
404
|
expect(response.data.imp[0].video.startdelay).to.equal(1);
|
|
@@ -93,6 +93,15 @@ describe('ID5 ID System', function () {
|
|
|
93
93
|
'Content-Type': 'application/json'
|
|
94
94
|
};
|
|
95
95
|
|
|
96
|
+
function expDaysStr(expDays) {
|
|
97
|
+
return (new Date(Date.now() + (1000 * 60 * 60 * 24 * expDays))).toUTCString();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function storeInStorage(key, value, expDays) {
|
|
101
|
+
id5System.storage.setDataInLocalStorage(`${key}_exp`, expDaysStr(expDays));
|
|
102
|
+
id5System.storage.setDataInLocalStorage(`${key}`, value);
|
|
103
|
+
}
|
|
104
|
+
|
|
96
105
|
function getId5FetchConfig(partner = ID5_TEST_PARTNER_ID, storageName = id5System.ID5_STORAGE_NAME, storageType = 'html5') {
|
|
97
106
|
return {
|
|
98
107
|
name: ID5_MODULE_NAME,
|
|
@@ -637,8 +646,6 @@ describe('ID5 ID System', function () {
|
|
|
637
646
|
|
|
638
647
|
it('should call the ID5 server with nb=1 when no stored value exists and reset after', async function () {
|
|
639
648
|
const xhrServerMock = new XhrServerMock(server);
|
|
640
|
-
const TEST_PARTNER_ID = 189;
|
|
641
|
-
coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(TEST_PARTNER_ID));
|
|
642
649
|
|
|
643
650
|
// Trigger the fetch but we await on it later
|
|
644
651
|
const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
|
|
@@ -648,28 +655,28 @@ describe('ID5 ID System', function () {
|
|
|
648
655
|
expect(requestBody.nbPage).is.eq(1);
|
|
649
656
|
|
|
650
657
|
fetchRequest.respond(200, responseHeader, JSON.stringify(ID5_JSON_RESPONSE));
|
|
651
|
-
await submoduleResponsePromise;
|
|
658
|
+
const response = await submoduleResponsePromise;
|
|
652
659
|
|
|
653
|
-
expect(
|
|
660
|
+
expect(response.nbPage).is.undefined;
|
|
654
661
|
});
|
|
655
662
|
|
|
656
663
|
it('should call the ID5 server with incremented nb when stored value exists and reset after', async function () {
|
|
657
664
|
const xhrServerMock = new XhrServerMock(server);
|
|
658
665
|
const TEST_PARTNER_ID = 189;
|
|
659
666
|
const config = getId5FetchConfig(TEST_PARTNER_ID);
|
|
660
|
-
|
|
667
|
+
const storedObj = {...ID5_STORED_OBJ, nbPage: 1};
|
|
661
668
|
|
|
662
669
|
// Trigger the fetch but we await on it later
|
|
663
|
-
const submoduleResponsePromise = callSubmoduleGetId(config, undefined,
|
|
670
|
+
const submoduleResponsePromise = callSubmoduleGetId(config, undefined, storedObj);
|
|
664
671
|
|
|
665
672
|
const fetchRequest = await xhrServerMock.expectFetchRequest();
|
|
666
673
|
const requestBody = JSON.parse(fetchRequest.requestBody);
|
|
667
674
|
expect(requestBody.nbPage).is.eq(2);
|
|
668
675
|
|
|
669
676
|
fetchRequest.respond(200, responseHeader, JSON.stringify(ID5_JSON_RESPONSE));
|
|
670
|
-
await submoduleResponsePromise;
|
|
677
|
+
const response = await submoduleResponsePromise;
|
|
671
678
|
|
|
672
|
-
expect(
|
|
679
|
+
expect(response.nbPage).is.undefined;
|
|
673
680
|
});
|
|
674
681
|
|
|
675
682
|
it('should call the ID5 server with ab_testing object when abTesting is turned on', async function () {
|
|
@@ -720,45 +727,6 @@ describe('ID5 ID System', function () {
|
|
|
720
727
|
await submoduleResponsePromise;
|
|
721
728
|
});
|
|
722
729
|
|
|
723
|
-
it('should store the privacy object from the ID5 server response', async function () {
|
|
724
|
-
const xhrServerMock = new XhrServerMock(server);
|
|
725
|
-
|
|
726
|
-
// Trigger the fetch but we await on it later
|
|
727
|
-
const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
|
|
728
|
-
|
|
729
|
-
const privacy = {
|
|
730
|
-
jurisdiction: 'gdpr',
|
|
731
|
-
id5_consent: true
|
|
732
|
-
};
|
|
733
|
-
|
|
734
|
-
const fetchRequest = await xhrServerMock.expectFetchRequest();
|
|
735
|
-
const responseObject = utils.deepClone(ID5_JSON_RESPONSE);
|
|
736
|
-
responseObject.privacy = privacy;
|
|
737
|
-
|
|
738
|
-
fetchRequest.respond(200, responseHeader, JSON.stringify(responseObject));
|
|
739
|
-
await submoduleResponsePromise;
|
|
740
|
-
|
|
741
|
-
expect(id5System.getFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME)).is.eq(JSON.stringify(privacy));
|
|
742
|
-
coreStorage.removeDataFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME);
|
|
743
|
-
});
|
|
744
|
-
|
|
745
|
-
it('should not store a privacy object if not part of ID5 server response', async function () {
|
|
746
|
-
const xhrServerMock = new XhrServerMock(server);
|
|
747
|
-
coreStorage.removeDataFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME);
|
|
748
|
-
|
|
749
|
-
// Trigger the fetch but we await on it later
|
|
750
|
-
const submoduleResponsePromise = callSubmoduleGetId(getId5FetchConfig(), undefined, ID5_STORED_OBJ);
|
|
751
|
-
|
|
752
|
-
const fetchRequest = await xhrServerMock.expectFetchRequest();
|
|
753
|
-
const responseObject = utils.deepClone(ID5_JSON_RESPONSE);
|
|
754
|
-
responseObject.privacy = undefined;
|
|
755
|
-
|
|
756
|
-
fetchRequest.respond(200, responseHeader, JSON.stringify(responseObject));
|
|
757
|
-
await submoduleResponsePromise;
|
|
758
|
-
|
|
759
|
-
expect(id5System.getFromLocalStorage(id5System.ID5_PRIVACY_STORAGE_NAME)).is.null;
|
|
760
|
-
});
|
|
761
|
-
|
|
762
730
|
describe('with successful external module call', function () {
|
|
763
731
|
const MOCK_RESPONSE = {
|
|
764
732
|
...ID5_JSON_RESPONSE,
|
|
@@ -926,7 +894,6 @@ describe('ID5 ID System', function () {
|
|
|
926
894
|
sinon.stub(events, 'getEvents').returns([]);
|
|
927
895
|
coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME);
|
|
928
896
|
coreStorage.removeDataFromLocalStorage(`${id5System.ID5_STORAGE_NAME}_last`);
|
|
929
|
-
coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
|
|
930
897
|
coreStorage.setDataInLocalStorage(id5System.ID5_STORAGE_NAME + '_cst', getConsentHash());
|
|
931
898
|
adUnits = [getAdUnitMock()];
|
|
932
899
|
});
|
|
@@ -934,19 +901,18 @@ describe('ID5 ID System', function () {
|
|
|
934
901
|
events.getEvents.restore();
|
|
935
902
|
coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME);
|
|
936
903
|
coreStorage.removeDataFromLocalStorage(`${id5System.ID5_STORAGE_NAME}_last`);
|
|
937
|
-
coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
|
|
938
904
|
coreStorage.removeDataFromLocalStorage(id5System.ID5_STORAGE_NAME + '_cst');
|
|
939
905
|
sandbox.restore();
|
|
940
906
|
});
|
|
941
907
|
|
|
942
908
|
it('should add stored ID from cache to bids', function (done) {
|
|
943
|
-
|
|
909
|
+
storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
|
|
944
910
|
|
|
945
911
|
init(config);
|
|
946
912
|
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
947
913
|
config.setConfig(getFetchLocalStorageConfig());
|
|
948
914
|
|
|
949
|
-
requestBidsHook(
|
|
915
|
+
requestBidsHook(wrapAsyncExpects(done, () => {
|
|
950
916
|
adUnits.forEach(unit => {
|
|
951
917
|
unit.bids.forEach(bid => {
|
|
952
918
|
expect(bid).to.have.deep.nested.property(`userId.${ID5_EIDS_NAME}`);
|
|
@@ -964,11 +930,11 @@ describe('ID5 ID System', function () {
|
|
|
964
930
|
});
|
|
965
931
|
});
|
|
966
932
|
done();
|
|
967
|
-
}, {adUnits});
|
|
933
|
+
}), {adUnits});
|
|
968
934
|
});
|
|
969
935
|
|
|
970
936
|
it('should add stored EUID from cache to bids', function (done) {
|
|
971
|
-
|
|
937
|
+
storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_EUID), 1);
|
|
972
938
|
|
|
973
939
|
init(config);
|
|
974
940
|
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
@@ -997,7 +963,7 @@ describe('ID5 ID System', function () {
|
|
|
997
963
|
});
|
|
998
964
|
|
|
999
965
|
it('should add stored TRUE_LINK_ID from cache to bids', function (done) {
|
|
1000
|
-
|
|
966
|
+
storeInStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ_WITH_TRUE_LINK), 1);
|
|
1001
967
|
|
|
1002
968
|
init(config);
|
|
1003
969
|
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
@@ -1041,48 +1007,20 @@ describe('ID5 ID System', function () {
|
|
|
1041
1007
|
}, {adUnits});
|
|
1042
1008
|
});
|
|
1043
1009
|
|
|
1044
|
-
it('should set nb=1 in cache when no stored nb value exists and cached ID', function (done) {
|
|
1045
|
-
id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
|
|
1046
|
-
coreStorage.removeDataFromLocalStorage(id5System.nbCacheName(ID5_TEST_PARTNER_ID));
|
|
1047
|
-
|
|
1048
|
-
init(config);
|
|
1049
|
-
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
1050
|
-
config.setConfig(getFetchLocalStorageConfig());
|
|
1051
|
-
|
|
1052
|
-
requestBidsHook((adUnitConfig) => {
|
|
1053
|
-
expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(1);
|
|
1054
|
-
done();
|
|
1055
|
-
}, {adUnits});
|
|
1056
|
-
});
|
|
1057
|
-
|
|
1058
|
-
it('should increment nb in cache when stored nb value exists and cached ID', function (done) {
|
|
1059
|
-
id5System.storeInLocalStorage(id5System.ID5_STORAGE_NAME, JSON.stringify(ID5_STORED_OBJ), 1);
|
|
1060
|
-
id5System.storeNbInCache(ID5_TEST_PARTNER_ID, 1);
|
|
1061
|
-
|
|
1062
|
-
init(config);
|
|
1063
|
-
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
1064
|
-
config.setConfig(getFetchLocalStorageConfig());
|
|
1065
|
-
|
|
1066
|
-
requestBidsHook(() => {
|
|
1067
|
-
expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(2);
|
|
1068
|
-
done();
|
|
1069
|
-
}, {adUnits});
|
|
1070
|
-
});
|
|
1071
|
-
|
|
1072
1010
|
it('should call ID5 servers with signature and incremented nb post auction if refresh needed', function () {
|
|
1073
1011
|
const xhrServerMock = new XhrServerMock(server);
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1012
|
+
let storedObject = ID5_STORED_OBJ;
|
|
1013
|
+
storedObject.nbPage = 1;
|
|
1014
|
+
const initialLocalStorageValue = JSON.stringify(storedObject);
|
|
1015
|
+
storeInStorage(id5System.ID5_STORAGE_NAME, initialLocalStorageValue, 1);
|
|
1016
|
+
storeInStorage(`${id5System.ID5_STORAGE_NAME}_last`, expDaysStr(-1), 1);
|
|
1077
1017
|
|
|
1078
|
-
id5System.storeNbInCache(ID5_TEST_PARTNER_ID, 1);
|
|
1079
1018
|
let id5Config = getFetchLocalStorageConfig();
|
|
1080
1019
|
id5Config.userSync.userIds[0].storage.refreshInSeconds = 2;
|
|
1081
1020
|
id5Config.userSync.auctionDelay = 0; // do not trigger callback before auction
|
|
1082
1021
|
init(config);
|
|
1083
1022
|
setSubmoduleRegistry([id5System.id5IdSubmodule]);
|
|
1084
1023
|
config.setConfig(id5Config);
|
|
1085
|
-
|
|
1086
1024
|
return new Promise((resolve) => {
|
|
1087
1025
|
requestBidsHook(() => {
|
|
1088
1026
|
resolve();
|
|
@@ -1095,18 +1033,7 @@ describe('ID5 ID System', function () {
|
|
|
1095
1033
|
const requestBody = JSON.parse(request.requestBody);
|
|
1096
1034
|
expect(requestBody.s).is.eq(ID5_STORED_SIGNATURE);
|
|
1097
1035
|
expect(requestBody.nbPage).is.eq(2);
|
|
1098
|
-
expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(0);
|
|
1099
1036
|
request.respond(200, HEADERS_CONTENT_TYPE_JSON, JSON.stringify(ID5_JSON_RESPONSE));
|
|
1100
|
-
|
|
1101
|
-
return new Promise(function (resolve) {
|
|
1102
|
-
(function waitForCondition() {
|
|
1103
|
-
if (id5System.getFromLocalStorage(id5System.ID5_STORAGE_NAME) !== initialLocalStorageValue) return resolve();
|
|
1104
|
-
setTimeout(waitForCondition, 30);
|
|
1105
|
-
})();
|
|
1106
|
-
});
|
|
1107
|
-
}).then(() => {
|
|
1108
|
-
expect(decodeURIComponent(id5System.getFromLocalStorage(id5System.ID5_STORAGE_NAME))).is.eq(JSON.stringify(ID5_JSON_RESPONSE));
|
|
1109
|
-
expect(id5System.getNbFromCache(ID5_TEST_PARTNER_ID)).is.eq(0);
|
|
1110
1037
|
});
|
|
1111
1038
|
});
|
|
1112
1039
|
});
|
|
@@ -4,6 +4,10 @@ import * as idImportlibrary from 'modules/idImportLibrary.js';
|
|
|
4
4
|
import {getGlobal} from '../../../src/prebidGlobal.js';
|
|
5
5
|
import {config} from 'src/config.js';
|
|
6
6
|
import {hook} from '../../../src/hook.js';
|
|
7
|
+
import * as activities from '../../../src/activities/rules.js';
|
|
8
|
+
import { ACTIVITY_ENRICH_UFPD } from '../../../src/activities/activities.js';
|
|
9
|
+
import { CONF_DEFAULT_FULL_BODY_SCAN, CONF_DEFAULT_INPUT_SCAN } from '../../../modules/idImportLibrary.js';
|
|
10
|
+
|
|
7
11
|
var expect = require('chai').expect;
|
|
8
12
|
|
|
9
13
|
const mockMutationObserver = {
|
|
@@ -86,6 +90,16 @@ describe('IdImportLibrary Tests', function () {
|
|
|
86
90
|
idImportlibrary.setConfig(config);
|
|
87
91
|
expect(config.inputscan).to.be.equal(true);
|
|
88
92
|
});
|
|
93
|
+
it('results when activity is not allowed', function () {
|
|
94
|
+
sandbox.stub(activities, 'isActivityAllowed').callsFake((activity) => {
|
|
95
|
+
return !(activity === ACTIVITY_ENRICH_UFPD);
|
|
96
|
+
});
|
|
97
|
+
let config = { 'url': 'URL', 'debounce': 0 };
|
|
98
|
+
idImportlibrary.setConfig(config);
|
|
99
|
+
sinon.assert.called(utils.logError);
|
|
100
|
+
expect(config.inputscan).to.be.not.equal(CONF_DEFAULT_INPUT_SCAN);
|
|
101
|
+
expect(config.fullscan).to.be.not.equal(CONF_DEFAULT_FULL_BODY_SCAN);
|
|
102
|
+
});
|
|
89
103
|
});
|
|
90
104
|
describe('Test with email is found', function () {
|
|
91
105
|
let mutationObserverStub;
|