prebid.js 6.6.0 → 6.10.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/.eslintrc.js +8 -1
- package/allowedModules.js +4 -7
- package/integrationExamples/gpt/amp/creative.html +11 -33
- package/integrationExamples/gpt/{haloRtdProvider_example.html → hadronRtdProvider_example.html} +9 -9
- package/integrationExamples/gpt/idImportLibrary_example.html +2 -2
- package/integrationExamples/gpt/userId_example.html +2 -2
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +154 -115
- package/integrationExamples/gpt/x-domain/creative.html +63 -29
- package/modules/.submodules.json +3 -0
- package/modules/adagioBidAdapter.js +1 -9
- package/modules/adagioBidAdapter.md +1 -1
- package/modules/adbookpspBidAdapter.js +29 -12
- package/modules/adhashBidAdapter.js +4 -4
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +1 -1
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adnuntiusRtdProvider.js +96 -0
- package/modules/adnuntiusRtdProvider.md +41 -0
- package/modules/adomikAnalyticsAdapter.js +2 -2
- package/modules/adotBidAdapter.js +1 -1
- package/modules/adpod.js +14 -17
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +1 -1
- package/modules/advangelistsBidAdapter.js +2 -2
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/afpBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +16 -4
- package/modules/asealBidAdapter.js +58 -0
- package/modules/asealBidAdapter.md +52 -0
- package/modules/beachfrontBidAdapter.js +2 -2
- package/modules/betweenBidAdapter.js +1 -1
- package/modules/bidViewability.js +1 -1
- package/modules/bluebillywigBidAdapter.js +1 -1
- package/modules/brandmetricsRtdProvider.js +168 -0
- package/modules/brandmetricsRtdProvider.md +40 -0
- package/modules/bridgewellBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +2 -2
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +12 -8
- package/modules/colossussspBidAdapter.md +15 -1
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +1 -1
- package/modules/consentManagement.js +2 -3
- package/modules/consumableBidAdapter.md +1 -1
- package/modules/conversantBidAdapter.js +7 -0
- package/modules/craftBidAdapter.js +2 -2
- package/modules/criteoBidAdapter.js +10 -1
- package/modules/currency.js +27 -5
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/dailyhuntBidAdapter.js +1 -1
- package/modules/dchain.js +1 -1
- package/modules/displayioBidAdapter.js +157 -0
- package/modules/displayioBidAdapter.md +148 -0
- package/modules/dspxBidAdapter.js +69 -29
- package/modules/dspxBidAdapter.md +2 -1
- package/modules/e_volutionBidAdapter.js +158 -0
- package/modules/emx_digitalBidAdapter.js +2 -2
- package/modules/fluctBidAdapter.js +0 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/gdprEnforcement.js +2 -2
- package/modules/glomexBidAdapter.js +1 -1
- package/modules/gnetBidAdapter.js +3 -3
- package/modules/gnetBidAdapter.md +4 -4
- package/modules/goldbachBidAdapter.js +2 -2
- package/modules/gptPreAuction.js +1 -1
- package/modules/gridBidAdapter.js +15 -1
- package/modules/gumgumBidAdapter.js +57 -43
- package/modules/hadronIdSystem.js +96 -0
- package/modules/hadronIdSystem.md +35 -0
- package/modules/hadronRtdProvider.js +254 -0
- package/modules/hadronRtdProvider.md +126 -0
- package/modules/haloIdSystem.md +4 -35
- package/modules/haloRtdProvider.md +3 -126
- package/modules/hybridBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +6 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/interactiveOffersBidAdapter.js +9 -6
- package/modules/intersectionRtdProvider.js +1 -1
- package/modules/ixBidAdapter.js +2 -2
- package/modules/jwplayerRtdProvider.js +72 -7
- package/modules/jwplayerRtdProvider.md +27 -11
- package/modules/kargoBidAdapter.js +2 -2
- package/modules/livewrappedBidAdapter.js +1 -1
- package/modules/lunamediahbBidAdapter.js +32 -4
- package/modules/malltvBidAdapter.js +7 -3
- package/modules/malltvBidAdapter.md +64 -51
- package/modules/mass.js +3 -5
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +2 -2
- package/modules/medianetRtdProvider.js +1 -1
- package/modules/mediasquareBidAdapter.js +1 -0
- package/modules/nextMillenniumBidAdapter.js +1 -0
- package/modules/nextrollBidAdapter.js +1 -1
- package/modules/oguryBidAdapter.js +7 -14
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +2 -2
- package/modules/openxBidAdapter.js +1 -1
- package/modules/parrableIdSystem.js +1 -1
- package/modules/permutiveRtdProvider.js +1 -1
- package/modules/pilotxBidAdapter.js +147 -0
- package/modules/pilotxBidAdapter.md +50 -0
- package/modules/pixfutureBidAdapter.js +2 -2
- package/modules/prebidServerBidAdapter/index.js +63 -41
- package/modules/priceFloors.js +15 -14
- package/modules/pubmaticBidAdapter.js +1 -1
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/reconciliationRtdProvider.js +1 -1
- package/modules/richaudienceBidAdapter.js +7 -2
- package/modules/riseBidAdapter.js +17 -6
- package/modules/roxotAnalyticsAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +9 -11
- package/modules/rubiconAnalyticsAdapter.js +8 -2
- package/modules/rubiconBidAdapter.js +1 -1
- package/modules/saambaaBidAdapter.js +420 -420
- package/modules/seedingAllianceBidAdapter.js +3 -3
- package/modules/sharethroughBidAdapter.js +12 -17
- package/modules/sigmoidAnalyticsAdapter.js +1 -1
- package/modules/sirdataRtdProvider.js +1 -1
- package/modules/sizeMappingV2.js +2 -9
- package/modules/smarticoBidAdapter.js +1 -1
- package/modules/sortableAnalyticsAdapter.js +5 -4
- package/modules/sovrnAnalyticsAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +93 -18
- package/modules/sovrnBidAdapter.md +80 -2
- package/modules/sspBCBidAdapter.js +54 -21
- package/modules/synacormediaBidAdapter.js +32 -11
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/telariaBidAdapter.js +22 -29
- package/modules/trustpidSystem.js +197 -0
- package/modules/trustpidSystem.md +45 -0
- package/modules/undertoneBidAdapter.js +17 -1
- package/modules/userId/eids.js +16 -1
- package/modules/userId/eids.md +10 -2
- package/modules/userId/index.js +2 -2
- package/modules/userId/userId.md +17 -2
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/verizonMediaIdSystem.js +1 -1
- package/modules/vibrantmediaBidAdapter.js +220 -0
- package/modules/vibrantmediaBidAdapter.md +92 -0
- package/modules/viewability.js +177 -0
- package/modules/viewability.md +87 -0
- package/modules/viewdeosDXBidAdapter.js +1 -1
- package/modules/voxBidAdapter.js +1 -1
- package/modules/waardexBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +264 -34
- package/modules/weboramaRtdProvider.md +110 -40
- package/modules/widespaceBidAdapter.js +2 -2
- package/modules/winrBidAdapter.js +7 -7
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yieldlabBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +2 -2
- package/modules/yieldoneBidAdapter.js +6 -0
- package/modules/yuktamediaAnalyticsAdapter.js +1 -1
- package/package.json +3 -1
- package/plugins/poly/arrayFrom.js +3 -0
- package/plugins/poly/find.js +3 -0
- package/plugins/poly/findIndex.js +3 -0
- package/plugins/poly/includes.js +3 -0
- package/plugins/poly/package.json +8 -0
- package/src/Renderer.js +1 -1
- package/src/adRendering.js +38 -0
- package/src/adapterManager.js +33 -28
- package/src/adapters/bidderFactory.js +13 -11
- package/src/adloader.js +3 -2
- package/src/auction.js +140 -117
- package/src/auctionIndex.js +85 -0
- package/src/auctionManager.js +4 -1
- package/src/bidderSettings.js +69 -0
- package/src/bidfactory.js +18 -6
- package/src/config.js +3 -4
- package/src/cpmBucketManager.js +1 -1
- package/src/native.js +30 -22
- package/src/prebid.js +4 -20
- package/src/secureCreatives.js +133 -49
- package/src/sizeMapping.js +1 -1
- package/src/storageManager.js +1 -1
- package/src/targeting.js +13 -4
- package/src/userSync.js +1 -1
- package/src/utils.js +16 -19
- package/src/video.js +11 -12
- package/src/videoCache.js +10 -9
- package/test/fixtures/fixtures.js +2 -1
- package/test/helpers/indexStub.js +28 -0
- package/test/helpers/syncPromise.js +71 -0
- package/test/spec/auctionmanager_spec.js +269 -90
- package/test/spec/config_spec.js +24 -1
- package/test/spec/e2e/longform/basic_w_bidderSettings.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_custom_adserver_translation.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_priceGran.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_requireExactDuration.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_brandCategoryExclusion.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_requireExactDuration.spec.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -10
- package/test/spec/modules/adbookpspBidAdapter_spec.js +17 -3
- package/test/spec/modules/adhashBidAdapter_spec.js +2 -2
- package/test/spec/modules/adnuntiusRtdProvider_spec.js +145 -0
- package/test/spec/modules/adpod_spec.js +91 -156
- package/test/spec/modules/afpBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +27 -0
- package/test/spec/modules/asealBidAdapter_spec.js +144 -0
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +191 -0
- package/test/spec/modules/colossussspBidAdapter_spec.js +5 -2
- package/test/spec/modules/conversantBidAdapter_spec.js +54 -2
- package/test/spec/modules/criteoBidAdapter_spec.js +21 -0
- package/test/spec/modules/currency_spec.js +36 -15
- package/test/spec/modules/deepintentDpesIdsystem_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +239 -0
- package/test/spec/modules/dspxBidAdapter_spec.js +20 -15
- package/test/spec/modules/e_volutionBidAdapter_spec.js +242 -0
- package/test/spec/modules/eids_spec.js +2 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/gnetBidAdapter_spec.js +6 -6
- package/test/spec/modules/gridBidAdapter_spec.js +18 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +49 -3
- package/test/spec/modules/hadronIdSystem_spec.js +57 -0
- package/test/spec/modules/hadronRtdProvider_spec.js +762 -0
- package/test/spec/modules/idxIdSystem_spec.js +1 -1
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +19 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +195 -2
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -1
- package/test/spec/modules/lunamediahbBidAdapter_spec.js +27 -1
- package/test/spec/modules/mass_spec.js +2 -14
- package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -1
- package/test/spec/modules/multibid_spec.js +1 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +63 -5
- package/test/spec/modules/onetagBidAdapter_spec.js +1 -1
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/parrableIdSystem_spec.js +1 -1
- package/test/spec/modules/pilotxBidAdapter_spec.js +244 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -6
- package/test/spec/modules/priceFloors_spec.js +37 -24
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/realTimeDataModule_spec.js +51 -2
- package/test/spec/modules/riseBidAdapter_spec.js +30 -4
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +61 -1
- package/test/spec/modules/rubiconBidAdapter_spec.js +1 -1
- package/test/spec/modules/sharethroughBidAdapter_spec.js +91 -6
- package/test/spec/modules/sortableAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/sovrnBidAdapter_spec.js +413 -333
- package/test/spec/modules/sspBCBidAdapter_spec.js +7 -7
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +70 -0
- package/test/spec/modules/telariaBidAdapter_spec.js +1 -3
- package/test/spec/modules/trustpidSystem_spec.js +232 -0
- package/test/spec/modules/undertoneBidAdapter_spec.js +55 -2
- package/test/spec/modules/userId_spec.js +40 -40
- package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1237 -0
- package/test/spec/modules/viewability_spec.js +280 -0
- package/test/spec/modules/weboramaRtdProvider_spec.js +536 -20
- package/test/spec/modules/widespaceBidAdapter_spec.js +1 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +10 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +33 -0
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -1
- package/test/spec/native_spec.js +62 -40
- package/test/spec/sizeMapping_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +24 -2
- package/test/spec/unit/core/auctionIndex_spec.js +129 -0
- package/test/spec/unit/core/bidderFactory_spec.js +65 -12
- package/test/spec/unit/core/bidderSettings_spec.js +123 -0
- package/test/spec/unit/core/targeting_spec.js +93 -0
- package/test/spec/unit/pbjs_api_spec.js +81 -43
- package/test/spec/unit/secureCreatives_spec.js +143 -24
- package/test/spec/videoCache_spec.js +18 -19
- package/test/spec/video_spec.js +51 -61
- package/webpack.conf.js +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import find from '
|
|
2
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
3
3
|
import { config } from 'src/config.js';
|
|
4
4
|
import { init, requestBidsHook, setSubmoduleRegistry } from 'modules/userId/index.js';
|
|
5
5
|
import { storage, idxIdSubmodule } from 'modules/idxIdSystem.js';
|
|
@@ -557,6 +557,25 @@ describe('Improve Digital Adapter Tests', function () {
|
|
|
557
557
|
]
|
|
558
558
|
);
|
|
559
559
|
});
|
|
560
|
+
|
|
561
|
+
it('should set coppa', function() {
|
|
562
|
+
sinon.stub(config, 'getConfig')
|
|
563
|
+
.withArgs('coppa')
|
|
564
|
+
.returns(true);
|
|
565
|
+
const bidRequest = Object.assign({}, simpleBidRequest);
|
|
566
|
+
const request = spec.buildRequests([bidRequest], bidderRequestReferrer)[0];
|
|
567
|
+
const params = JSON.parse(decodeURIComponent(request.data.substring(PARAM_PREFIX.length)));
|
|
568
|
+
expect(params.bid_request.coppa).to.equal(1);
|
|
569
|
+
|
|
570
|
+
config.getConfig.restore();
|
|
571
|
+
});
|
|
572
|
+
|
|
573
|
+
it('should undefined coppa', function() {
|
|
574
|
+
const bidRequest = Object.assign({}, simpleBidRequest);
|
|
575
|
+
const request = spec.buildRequests([bidRequest], bidderRequestReferrer)[0];
|
|
576
|
+
const params = JSON.parse(decodeURIComponent(request.data.substring(PARAM_PREFIX.length)));
|
|
577
|
+
expect(params.bid_request.coppa).to.equal(undefined);
|
|
578
|
+
});
|
|
560
579
|
});
|
|
561
580
|
|
|
562
581
|
const serverResponse = {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { fetchTargetingForMediaId, getVatFromCache, extractPublisherParams,
|
|
2
2
|
formatTargetingResponse, getVatFromPlayer, enrichAdUnits, addTargetingToBid,
|
|
3
|
-
fetchTargetingInformation, jwplayerSubmodule } from 'modules/jwplayerRtdProvider.js';
|
|
3
|
+
fetchTargetingInformation, jwplayerSubmodule, getContentId, getContentData } from 'modules/jwplayerRtdProvider.js';
|
|
4
4
|
import { server } from 'test/mocks/xhr.js';
|
|
5
|
+
import {addOrtbSiteContent} from '../../../modules/jwplayerRtdProvider';
|
|
5
6
|
|
|
6
7
|
describe('jwplayerRtdProvider', function() {
|
|
7
8
|
const testIdForSuccess = 'test_id_for_success';
|
|
@@ -412,7 +413,7 @@ describe('jwplayerRtdProvider', function() {
|
|
|
412
413
|
});
|
|
413
414
|
});
|
|
414
415
|
|
|
415
|
-
describe('
|
|
416
|
+
describe('Extract Publisher Params', function () {
|
|
416
417
|
const config = { mediaID: 'test' };
|
|
417
418
|
|
|
418
419
|
it('should exclude adUnits that do not support instream video and do not specify jwTargeting', function () {
|
|
@@ -480,6 +481,198 @@ describe('jwplayerRtdProvider', function() {
|
|
|
480
481
|
})
|
|
481
482
|
});
|
|
482
483
|
|
|
484
|
+
describe('Get content id', function() {
|
|
485
|
+
it('prefixes jw_ to the media id', function () {
|
|
486
|
+
const mediaId = 'mediaId';
|
|
487
|
+
const contentId = getContentId(mediaId);
|
|
488
|
+
expect(contentId).to.equal('jw_mediaId');
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
it('returns undefined when media id is empty', function () {
|
|
492
|
+
let contentId = getContentId();
|
|
493
|
+
expect(contentId).to.be.undefined;
|
|
494
|
+
contentId = getContentId('');
|
|
495
|
+
expect(contentId).to.be.undefined;
|
|
496
|
+
contentId = getContentId(null);
|
|
497
|
+
expect(contentId).to.be.undefined;
|
|
498
|
+
});
|
|
499
|
+
});
|
|
500
|
+
|
|
501
|
+
describe('Get Content Data', function () {
|
|
502
|
+
it('returns undefined when segments are empty', function () {
|
|
503
|
+
let data = getContentData(null);
|
|
504
|
+
expect(data).to.be.undefined;
|
|
505
|
+
data = getContentData(undefined);
|
|
506
|
+
expect(data).to.be.undefined;
|
|
507
|
+
data = getContentData([]);
|
|
508
|
+
expect(data).to.be.undefined;
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
it('returns proper format', function () {
|
|
512
|
+
const segment1 = 'segment1';
|
|
513
|
+
const segment2 = 'segment2';
|
|
514
|
+
const segment3 = 'segment3';
|
|
515
|
+
const data = getContentData([segment1, segment2, segment3]);
|
|
516
|
+
expect(data).to.have.property('name', 'jwplayer');
|
|
517
|
+
expect(data.ext).to.have.property('segtax', 502);
|
|
518
|
+
expect(data.segment[0]).to.deep.equal({ id: segment1, value: segment1 });
|
|
519
|
+
expect(data.segment[1]).to.deep.equal({ id: segment2, value: segment2 });
|
|
520
|
+
expect(data.segment[2]).to.deep.equal({ id: segment3, value: segment3 });
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
describe(' Add Ortb Site Content', function () {
|
|
525
|
+
it('should maintain object structure when id and data params are empty', function () {
|
|
526
|
+
const bid = {
|
|
527
|
+
ortb2: {
|
|
528
|
+
site: {
|
|
529
|
+
content: {
|
|
530
|
+
id: 'randomId'
|
|
531
|
+
},
|
|
532
|
+
random: {
|
|
533
|
+
random_sub: 'randomSub'
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
app: {
|
|
537
|
+
content: {
|
|
538
|
+
id: 'appId'
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
addOrtbSiteContent(bid);
|
|
544
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', 'randomId');
|
|
545
|
+
expect(bid).to.have.nested.property('ortb2.site.random.random_sub', 'randomSub');
|
|
546
|
+
expect(bid).to.have.nested.property('ortb2.app.content.id', 'appId');
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
it('should create a structure compliant with the oRTB 2 spec', function() {
|
|
550
|
+
const bid = {};
|
|
551
|
+
const expectedId = 'expectedId';
|
|
552
|
+
const expectedData = { datum: 'datum' };
|
|
553
|
+
addOrtbSiteContent(bid, expectedId, expectedData);
|
|
554
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', expectedId);
|
|
555
|
+
expect(bid).to.have.nested.property('ortb2.site.content.data');
|
|
556
|
+
expect(bid.ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
it('should respect existing structure when adding adding fields', function () {
|
|
560
|
+
const bid = {
|
|
561
|
+
ortb2: {
|
|
562
|
+
site: {
|
|
563
|
+
content: {
|
|
564
|
+
id: 'oldId'
|
|
565
|
+
},
|
|
566
|
+
random: {
|
|
567
|
+
random_sub: 'randomSub'
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
app: {
|
|
571
|
+
content: {
|
|
572
|
+
id: 'appId'
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
const expectedId = 'expectedId';
|
|
579
|
+
const expectedData = { datum: 'datum' };
|
|
580
|
+
addOrtbSiteContent(bid, expectedId, expectedData);
|
|
581
|
+
expect(bid).to.have.nested.property('ortb2.site.random.random_sub', 'randomSub');
|
|
582
|
+
expect(bid).to.have.nested.property('ortb2.app.content.id', 'appId');
|
|
583
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', expectedId);
|
|
584
|
+
expect(bid).to.have.nested.property('ortb2.site.content.data');
|
|
585
|
+
expect(bid.ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
it('should set content id', function () {
|
|
589
|
+
const bid = {};
|
|
590
|
+
const expectedId = 'expectedId';
|
|
591
|
+
addOrtbSiteContent(bid, expectedId);
|
|
592
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', expectedId);
|
|
593
|
+
});
|
|
594
|
+
|
|
595
|
+
it('should override content id', function () {
|
|
596
|
+
const bid = {
|
|
597
|
+
ortb2: {
|
|
598
|
+
site: {
|
|
599
|
+
content: {
|
|
600
|
+
id: 'oldId'
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
const expectedId = 'expectedId';
|
|
607
|
+
addOrtbSiteContent(bid, expectedId);
|
|
608
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', expectedId);
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
it('should keep previous content id when not set', function () {
|
|
612
|
+
const previousId = 'oldId';
|
|
613
|
+
const bid = {
|
|
614
|
+
ortb2: {
|
|
615
|
+
site: {
|
|
616
|
+
content: {
|
|
617
|
+
id: previousId,
|
|
618
|
+
data: [{ datum: 'first_datum' }]
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
};
|
|
623
|
+
|
|
624
|
+
addOrtbSiteContent(bid, null, { datum: 'new_datum' });
|
|
625
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', previousId);
|
|
626
|
+
});
|
|
627
|
+
|
|
628
|
+
it('should set content data', function () {
|
|
629
|
+
const bid = {};
|
|
630
|
+
const expectedData = { datum: 'datum' };
|
|
631
|
+
addOrtbSiteContent(bid, null, expectedData);
|
|
632
|
+
expect(bid).to.have.nested.property('ortb2.site.content.data');
|
|
633
|
+
expect(bid.ortb2.site.content.data).to.have.length(1);
|
|
634
|
+
expect(bid.ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
635
|
+
});
|
|
636
|
+
|
|
637
|
+
it('should append content data', function () {
|
|
638
|
+
const bid = {
|
|
639
|
+
ortb2: {
|
|
640
|
+
site: {
|
|
641
|
+
content: {
|
|
642
|
+
data: [{ datum: 'first_datum' }]
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
};
|
|
647
|
+
|
|
648
|
+
const expectedData = { datum: 'datum' };
|
|
649
|
+
addOrtbSiteContent(bid, null, expectedData);
|
|
650
|
+
expect(bid).to.have.nested.property('ortb2.site.content.data');
|
|
651
|
+
expect(bid.ortb2.site.content.data).to.have.length(2);
|
|
652
|
+
expect(bid.ortb2.site.content.data.pop()).to.be.deep.equal(expectedData);
|
|
653
|
+
});
|
|
654
|
+
|
|
655
|
+
it('should keep previous data when not set', function () {
|
|
656
|
+
const expectedId = 'expectedId';
|
|
657
|
+
const expectedData = { datum: 'first_datum' };
|
|
658
|
+
const bid = {
|
|
659
|
+
ortb2: {
|
|
660
|
+
site: {
|
|
661
|
+
content: {
|
|
662
|
+
data: [expectedData]
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
addOrtbSiteContent(bid, expectedId);
|
|
669
|
+
expect(bid).to.have.nested.property('ortb2.site.content.data');
|
|
670
|
+
expect(bid.ortb2.site.content.data).to.have.length(1);
|
|
671
|
+
expect(bid.ortb2.site.content.data[0]).to.be.deep.equal(expectedData);
|
|
672
|
+
expect(bid).to.have.nested.property('ortb2.site.content.id', expectedId);
|
|
673
|
+
});
|
|
674
|
+
});
|
|
675
|
+
|
|
483
676
|
describe('Add Targeting to Bid', function () {
|
|
484
677
|
const targeting = {foo: 'bar'};
|
|
485
678
|
|
|
@@ -80,7 +80,7 @@ describe('LunamediaHBBidAdapter', function () {
|
|
|
80
80
|
expect(data).to.be.an('object');
|
|
81
81
|
let placement = data['placements'][0];
|
|
82
82
|
expect(placement).to.be.an('object');
|
|
83
|
-
expect(placement).to.have.keys('placementId', 'bidId', 'traffic', 'wPlayer', 'hPlayer', 'schain');
|
|
83
|
+
expect(placement).to.have.keys('placementId', 'bidId', 'traffic', 'wPlayer', 'hPlayer', 'schain', 'videoContext');
|
|
84
84
|
expect(placement.traffic).to.equal(VIDEO);
|
|
85
85
|
expect(placement.wPlayer).to.equal(playerSize[0]);
|
|
86
86
|
expect(placement.hPlayer).to.equal(playerSize[1]);
|
|
@@ -301,4 +301,30 @@ describe('LunamediaHBBidAdapter', function () {
|
|
|
301
301
|
expect(serverResponses).to.be.an('array').that.is.empty;
|
|
302
302
|
});
|
|
303
303
|
});
|
|
304
|
+
|
|
305
|
+
describe('getUserSyncs', function() {
|
|
306
|
+
it('Should return array of objects with proper sync config , include GDPR', function() {
|
|
307
|
+
const syncData = spec.getUserSyncs({}, {}, {
|
|
308
|
+
consentString: 'ALL',
|
|
309
|
+
gdprApplies: true,
|
|
310
|
+
}, {});
|
|
311
|
+
expect(syncData).to.be.an('array').which.is.not.empty;
|
|
312
|
+
expect(syncData[0]).to.be.an('object')
|
|
313
|
+
expect(syncData[0].type).to.be.a('string')
|
|
314
|
+
expect(syncData[0].type).to.equal('image')
|
|
315
|
+
expect(syncData[0].url).to.be.a('string')
|
|
316
|
+
expect(syncData[0].url).to.equal('https://cookie.lmgssp.com/image?pbjs=1&gdpr=1&gdpr_consent=ALL&coppa=0')
|
|
317
|
+
});
|
|
318
|
+
it('Should return array of objects with proper sync config , include CCPA', function() {
|
|
319
|
+
const syncData = spec.getUserSyncs({}, {}, {}, {
|
|
320
|
+
consentString: '1---'
|
|
321
|
+
});
|
|
322
|
+
expect(syncData).to.be.an('array').which.is.not.empty;
|
|
323
|
+
expect(syncData[0]).to.be.an('object')
|
|
324
|
+
expect(syncData[0].type).to.be.a('string')
|
|
325
|
+
expect(syncData[0].type).to.equal('image')
|
|
326
|
+
expect(syncData[0].url).to.be.a('string')
|
|
327
|
+
expect(syncData[0].url).to.equal('https://cookie.lmgssp.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
|
|
328
|
+
});
|
|
329
|
+
});
|
|
304
330
|
});
|
|
@@ -60,17 +60,9 @@ const mockedNonMassBids = [
|
|
|
60
60
|
},
|
|
61
61
|
];
|
|
62
62
|
|
|
63
|
-
// mock bidder request:
|
|
64
|
-
const mockedBidderRequest = {
|
|
65
|
-
bidderCode: 'ix',
|
|
66
|
-
bidderRequestId: 'bidder-request-id-1'
|
|
67
|
-
};
|
|
68
|
-
|
|
69
63
|
const noop = function() {};
|
|
70
64
|
|
|
71
65
|
describe('MASS Module', function() {
|
|
72
|
-
let bidderRequest = Object.assign({}, mockedBidderRequest);
|
|
73
|
-
|
|
74
66
|
it('should be enabled by default', function() {
|
|
75
67
|
expect(isEnabled).to.equal(true);
|
|
76
68
|
});
|
|
@@ -86,9 +78,7 @@ describe('MASS Module', function() {
|
|
|
86
78
|
const originalBid = Object.assign({}, mockedBid);
|
|
87
79
|
const bid = Object.assign({}, originalBid);
|
|
88
80
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
addBidResponseHook.call({bidderRequest}, noop, 'ad-code-id', bid);
|
|
81
|
+
addBidResponseHook(noop, 'ad-code-id', bid);
|
|
92
82
|
|
|
93
83
|
expect(bid).to.deep.equal(originalBid);
|
|
94
84
|
});
|
|
@@ -100,9 +90,7 @@ describe('MASS Module', function() {
|
|
|
100
90
|
const originalBid = Object.assign({}, mockedBid);
|
|
101
91
|
const bid = Object.assign({}, originalBid);
|
|
102
92
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
addBidResponseHook.call({bidderRequest}, noop, 'ad-code-id', bid);
|
|
93
|
+
addBidResponseHook(noop, 'ad-code-id', bid);
|
|
106
94
|
|
|
107
95
|
expect(bid.ad).to.not.equal(originalBid.ad);
|
|
108
96
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import find from '
|
|
2
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
3
3
|
import { spec } from 'modules/mediakeysBidAdapter.js';
|
|
4
4
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
5
5
|
import * as utils from 'src/utils.js';
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import {parse as parseQuery} from 'querystring';
|
|
12
12
|
import {config} from 'src/config.js';
|
|
13
13
|
import * as utils from 'src/utils.js';
|
|
14
|
-
import find from '
|
|
14
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
15
15
|
|
|
16
16
|
describe('multibid adapter', function () {
|
|
17
17
|
let bidArray = [{
|
|
@@ -229,7 +229,7 @@ describe('OguryBidAdapter', function () {
|
|
|
229
229
|
const defaultTimeout = 1000;
|
|
230
230
|
const expectedRequestObject = {
|
|
231
231
|
id: bidRequests[0].auctionId,
|
|
232
|
-
at:
|
|
232
|
+
at: 1,
|
|
233
233
|
tmax: defaultTimeout,
|
|
234
234
|
imp: [{
|
|
235
235
|
id: bidRequests[0].bidId,
|
|
@@ -271,7 +271,7 @@ describe('OguryBidAdapter', function () {
|
|
|
271
271
|
},
|
|
272
272
|
ext: {
|
|
273
273
|
prebidversion: '$prebid.version$',
|
|
274
|
-
adapterversion: '1.2.
|
|
274
|
+
adapterversion: '1.2.10'
|
|
275
275
|
}
|
|
276
276
|
};
|
|
277
277
|
|
|
@@ -300,7 +300,59 @@ describe('OguryBidAdapter', function () {
|
|
|
300
300
|
...expectedRequestObject,
|
|
301
301
|
regs: {
|
|
302
302
|
ext: {
|
|
303
|
-
gdpr:
|
|
303
|
+
gdpr: 0
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
user: {
|
|
307
|
+
ext: {
|
|
308
|
+
consent: ''
|
|
309
|
+
},
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
const validBidRequests = bidRequests
|
|
314
|
+
|
|
315
|
+
const request = spec.buildRequests(validBidRequests, bidderRequestWithoutGdpr);
|
|
316
|
+
expect(request.data).to.deep.equal(expectedRequestObjectWithoutGdpr);
|
|
317
|
+
expect(request.data.regs.ext.gdpr).to.be.a('number');
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
it('should not add gdpr infos if gdprConsent is undefined', () => {
|
|
321
|
+
const bidderRequestWithoutGdpr = {
|
|
322
|
+
...bidderRequest,
|
|
323
|
+
gdprConsent: undefined,
|
|
324
|
+
}
|
|
325
|
+
const expectedRequestObjectWithoutGdpr = {
|
|
326
|
+
...expectedRequestObject,
|
|
327
|
+
regs: {
|
|
328
|
+
ext: {
|
|
329
|
+
gdpr: 0
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
user: {
|
|
333
|
+
ext: {
|
|
334
|
+
consent: ''
|
|
335
|
+
},
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
const validBidRequests = bidRequests
|
|
340
|
+
|
|
341
|
+
const request = spec.buildRequests(validBidRequests, bidderRequestWithoutGdpr);
|
|
342
|
+
expect(request.data).to.deep.equal(expectedRequestObjectWithoutGdpr);
|
|
343
|
+
expect(request.data.regs.ext.gdpr).to.be.a('number');
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
it('should not add tcString and turn off gdpr-applies if consentString and gdprApplies are undefined', () => {
|
|
347
|
+
const bidderRequestWithoutGdpr = {
|
|
348
|
+
...bidderRequest,
|
|
349
|
+
gdprConsent: { consentString: undefined, gdprApplies: undefined },
|
|
350
|
+
}
|
|
351
|
+
const expectedRequestObjectWithoutGdpr = {
|
|
352
|
+
...expectedRequestObject,
|
|
353
|
+
regs: {
|
|
354
|
+
ext: {
|
|
355
|
+
gdpr: 0
|
|
304
356
|
},
|
|
305
357
|
},
|
|
306
358
|
user: {
|
|
@@ -430,7 +482,7 @@ describe('OguryBidAdapter', function () {
|
|
|
430
482
|
advertiserDomains: openRtbBidResponse.body.seatbid[0].bid[0].adomain
|
|
431
483
|
},
|
|
432
484
|
nurl: openRtbBidResponse.body.seatbid[0].bid[0].nurl,
|
|
433
|
-
adapterVersion: '1.2.
|
|
485
|
+
adapterVersion: '1.2.10',
|
|
434
486
|
prebidVersion: '$prebid.version$'
|
|
435
487
|
}, {
|
|
436
488
|
requestId: openRtbBidResponse.body.seatbid[0].bid[1].impid,
|
|
@@ -447,7 +499,7 @@ describe('OguryBidAdapter', function () {
|
|
|
447
499
|
advertiserDomains: openRtbBidResponse.body.seatbid[0].bid[1].adomain
|
|
448
500
|
},
|
|
449
501
|
nurl: openRtbBidResponse.body.seatbid[0].bid[1].nurl,
|
|
450
|
-
adapterVersion: '1.2.
|
|
502
|
+
adapterVersion: '1.2.10',
|
|
451
503
|
prebidVersion: '$prebid.version$'
|
|
452
504
|
}]
|
|
453
505
|
|
|
@@ -494,6 +546,11 @@ describe('OguryBidAdapter', function () {
|
|
|
494
546
|
expect(requests.length).to.equal(0);
|
|
495
547
|
})
|
|
496
548
|
|
|
549
|
+
it('Should not create nurl request if bid contains undefined nurl', function() {
|
|
550
|
+
spec.onBidWon({ nurl: undefined })
|
|
551
|
+
expect(requests.length).to.equal(0);
|
|
552
|
+
})
|
|
553
|
+
|
|
497
554
|
it('Should create nurl request if bid nurl', function() {
|
|
498
555
|
spec.onBidWon({ nurl })
|
|
499
556
|
expect(requests.length).to.equal(1);
|
|
@@ -569,6 +626,7 @@ describe('OguryBidAdapter', function () {
|
|
|
569
626
|
expect(requests.length).to.equal(1);
|
|
570
627
|
expect(requests[0].url).to.equal(TIMEOUT_URL);
|
|
571
628
|
expect(requests[0].method).to.equal('POST');
|
|
629
|
+
expect(JSON.parse(requests[0].requestBody).location).to.equal(window.location.href);
|
|
572
630
|
})
|
|
573
631
|
});
|
|
574
632
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spec, isValid, hasTypeVideo } from 'modules/onetagBidAdapter.js';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
|
-
import find from '
|
|
3
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
4
4
|
import { BANNER, VIDEO } from 'src/mediaTypes.js';
|
|
5
5
|
import {INSTREAM, OUTSTREAM} from 'src/video.js';
|
|
6
6
|
|
|
@@ -4,7 +4,7 @@ import events from 'src/events.js';
|
|
|
4
4
|
import CONSTANTS from 'src/constants.json';
|
|
5
5
|
import * as utils from 'src/utils.js';
|
|
6
6
|
import { server } from 'test/mocks/xhr.js';
|
|
7
|
-
import find from '
|
|
7
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
8
8
|
|
|
9
9
|
const {
|
|
10
10
|
EVENTS: { AUCTION_INIT, BID_REQUESTED, BID_RESPONSE, BID_TIMEOUT, BID_WON, AUCTION_END }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import find from '
|
|
2
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
3
3
|
import { config } from 'src/config.js';
|
|
4
4
|
import * as utils from 'src/utils.js';
|
|
5
5
|
import { newStorageManager } from 'src/storageManager.js';
|