prebid.js 7.18.0 → 7.20.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/33acrossIdSystem.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/adkernelBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/categoryTranslation.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -0
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dchain.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +9 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/dianomiBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fpd.js +1 -0
- 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/googleAnalyticsAdapter.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/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.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/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.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/lotamePanoramaIdSystem.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mass.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/multibid.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +198 -194
- package/dist/oguryBidAdapter.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/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.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/quantcastIdSystem.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/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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/shinezBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.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/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.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 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -0
- package/dist/terceptAnalyticsAdapter.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/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/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.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/libraries/fpd/sua.js +98 -0
- package/modules/.submodules.json +1 -0
- package/modules/adfBidAdapter.js +1 -1
- package/modules/adkernelAdnBidAdapter.js +1 -0
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adqueryIdSystem.js +8 -8
- package/modules/adxcgBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/aolBidAdapter.js +25 -2
- package/modules/appnexusBidAdapter.js +19 -2
- package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
- package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
- package/modules/categoryTranslation.js +4 -4
- package/modules/cleanioRtdProvider.js +3 -4
- package/modules/colossussspBidAdapter.js +2 -1
- package/modules/connectIdSystem.js +16 -1
- package/modules/conversantAnalyticsAdapter.js +560 -0
- package/modules/conversantAnalyticsAdapter.md +47 -0
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/currency.js +11 -11
- package/modules/dchain.js +2 -2
- package/modules/debugging/bidInterceptor.js +2 -2
- package/modules/debugging/debugging.js +10 -2
- package/modules/debugging/legacy.js +2 -2
- package/modules/dgkeywordRtdProvider.js +21 -3
- package/modules/dianomiBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +33 -14
- package/modules/eplanningBidAdapter.js +48 -2
- package/modules/finativeBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +187 -117
- package/modules/improvedigitalBidAdapter.js +2 -2
- package/modules/ixBidAdapter.js +94 -23
- package/modules/liveIntentIdSystem.js +39 -5
- package/modules/lotamePanoramaIdSystem.js +10 -6
- package/modules/magniteAnalyticsAdapter.js +902 -0
- package/modules/magniteAnalyticsAdapter.md +18 -0
- package/modules/mass.js +2 -2
- package/modules/mediakeysBidAdapter.js +6 -1
- package/modules/mediakeysBidAdapter.md +50 -40
- package/modules/multibid/index.js +5 -5
- package/modules/nativoBidAdapter.js +1 -1
- package/modules/pixfutureBidAdapter.js +46 -15
- package/modules/prebidServerBidAdapter/index.js +54 -19
- package/modules/priceFloors.js +8 -22
- package/modules/readpeakBidAdapter.js +1 -1
- package/modules/rubiconAnalyticsAdapter.js +14 -9
- package/modules/rubiconBidAdapter.js +2 -3
- package/modules/seedingAllianceBidAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +5 -5
- package/modules/talkadsBidAdapter.js +1 -0
- package/modules/teadsIdSystem.js +234 -0
- package/modules/teadsIdSystem.md +22 -0
- package/modules/truereachBidAdapter.js +1 -0
- package/modules/ttdBidAdapter.js +1 -1
- package/modules/userId/index.js +21 -14
- package/modules/vrtcalBidAdapter.js +7 -1
- package/modules/vuukleBidAdapter.js +34 -3
- package/modules/yahoosspBidAdapter.js +4 -2
- package/modules/yandexBidAdapter.js +31 -8
- package/package.json +2 -2
- package/src/adapterManager.js +2 -4
- package/src/adapters/bidderFactory.js +13 -11
- package/src/auction.js +140 -69
- package/src/constants.json +8 -0
- package/src/cpmBucketManager.js +22 -3
- package/src/native.js +1 -5
- package/src/prebid.js +5 -6
- package/src/targeting.js +31 -14
- package/test/fixtures/fixtures.js +2 -1
- package/test/spec/auctionmanager_spec.js +109 -21
- package/test/spec/cpmBucketManager_spec.js +239 -177
- package/test/spec/fpd/sua_spec.js +244 -0
- package/test/spec/modules/adfBidAdapter_spec.js +2 -3
- package/test/spec/modules/adqueryIdSystem_spec.js +0 -2
- package/test/spec/modules/adxcgBidAdapter_spec.js +2 -3
- package/test/spec/modules/amxBidAdapter_spec.js +3 -2
- package/test/spec/modules/aolBidAdapter_spec.js +42 -9
- package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
- package/test/spec/modules/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
- package/test/spec/modules/connectIdSystem_spec.js +20 -0
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
- package/test/spec/modules/currency_spec.js +14 -6
- package/test/spec/modules/debugging_mod_spec.js +9 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +83 -1
- package/test/spec/modules/dianomiBidAdapter_spec.js +2 -3
- package/test/spec/modules/enrichmentFpdModule_spec.js +50 -7
- package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
- package/test/spec/modules/fpdModule_spec.js +9 -0
- package/test/spec/modules/gridBidAdapter_spec.js +87 -31
- package/test/spec/modules/ixBidAdapter_spec.js +221 -2
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +62 -8
- package/test/spec/modules/liveIntentIdSystem_spec.js +62 -8
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
- package/test/spec/modules/mediakeysBidAdapter_spec.js +20 -3
- package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
- package/test/spec/modules/prebidServerBidAdapter_spec.js +202 -15
- package/test/spec/modules/priceFloors_spec.js +5 -5
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/seedtagBidAdapter_spec.js +15 -18
- package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
- package/test/spec/modules/taboolaBidAdapter_spec.js +112 -13
- package/test/spec/modules/teadsIdSystem_spec.js +271 -0
- package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
- package/test/spec/modules/userId_spec.js +39 -4
- package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
- package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +48 -1
- package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
- package/test/spec/native_spec.js +5 -0
- package/test/spec/unit/core/bidderFactory_spec.js +66 -11
- package/test/spec/unit/core/targeting_spec.js +28 -9
- package/test/spec/unit/pbjs_api_spec.js +48 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {newBidder, registerBidder, preloadBidderMappingFile, storage, isValid} from 'src/adapters/bidderFactory.js';
|
|
2
2
|
import adapterManager from 'src/adapterManager.js';
|
|
3
3
|
import * as ajax from 'src/ajax.js';
|
|
4
4
|
import { expect } from 'chai';
|
|
@@ -62,6 +62,7 @@ describe('bidders created by newBidder', function () {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
addBidResponseStub = sinon.stub();
|
|
65
|
+
addBidResponseStub.reject = sinon.stub();
|
|
65
66
|
doneStub = sinon.stub();
|
|
66
67
|
});
|
|
67
68
|
|
|
@@ -508,7 +509,7 @@ describe('bidders created by newBidder', function () {
|
|
|
508
509
|
expect(userSyncStub.firstCall.args[2]).to.equal('usersync.com');
|
|
509
510
|
});
|
|
510
511
|
|
|
511
|
-
it('should logError when required bid response params are missing', function () {
|
|
512
|
+
it('should logError and reject bid when required bid response params are missing', function () {
|
|
512
513
|
const bidder = newBidder(spec);
|
|
513
514
|
|
|
514
515
|
const bid = {
|
|
@@ -532,9 +533,10 @@ describe('bidders created by newBidder', function () {
|
|
|
532
533
|
bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
533
534
|
|
|
534
535
|
expect(logErrorSpy.calledOnce).to.equal(true);
|
|
536
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
535
537
|
});
|
|
536
538
|
|
|
537
|
-
it('should logError when required
|
|
539
|
+
it('should logError and reject bid when required response params are undefined', function () {
|
|
538
540
|
const bidder = newBidder(spec);
|
|
539
541
|
|
|
540
542
|
const bid = {
|
|
@@ -562,6 +564,7 @@ describe('bidders created by newBidder', function () {
|
|
|
562
564
|
bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
563
565
|
|
|
564
566
|
expect(logErrorSpy.calledOnce).to.equal(true);
|
|
567
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
565
568
|
});
|
|
566
569
|
|
|
567
570
|
it('should require requestId from interpretResponse', () => {
|
|
@@ -586,6 +589,7 @@ describe('bidders created by newBidder', function () {
|
|
|
586
589
|
bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
587
590
|
|
|
588
591
|
expect(addBidResponseStub.called).to.be.false;
|
|
592
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
589
593
|
});
|
|
590
594
|
});
|
|
591
595
|
|
|
@@ -856,6 +860,7 @@ describe('validate bid response: ', function () {
|
|
|
856
860
|
});
|
|
857
861
|
|
|
858
862
|
addBidResponseStub = sinon.stub();
|
|
863
|
+
addBidResponseStub.reject = sinon.stub();
|
|
859
864
|
doneStub = sinon.stub();
|
|
860
865
|
ajaxStub = sinon.stub(ajax, 'ajax').callsFake(function(url, callbacks) {
|
|
861
866
|
const fakeResponse = sinon.stub();
|
|
@@ -954,7 +959,8 @@ describe('validate bid response: ', function () {
|
|
|
954
959
|
spec.interpretResponse.returns(bids1);
|
|
955
960
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
956
961
|
|
|
957
|
-
expect(addBidResponseStub.
|
|
962
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
963
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
958
964
|
expect(logErrorSpy.calledWithMatch('Ignoring bid: Native bid missing some required properties.')).to.equal(true);
|
|
959
965
|
});
|
|
960
966
|
}
|
|
@@ -1074,7 +1080,8 @@ describe('validate bid response: ', function () {
|
|
|
1074
1080
|
spec.interpretResponse.returns(bids1);
|
|
1075
1081
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1076
1082
|
|
|
1077
|
-
expect(addBidResponseStub.
|
|
1083
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1084
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1078
1085
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
1079
1086
|
});
|
|
1080
1087
|
|
|
@@ -1085,7 +1092,8 @@ describe('validate bid response: ', function () {
|
|
|
1085
1092
|
spec.interpretResponse.returns(bids1);
|
|
1086
1093
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1087
1094
|
|
|
1088
|
-
expect(addBidResponseStub.
|
|
1095
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1096
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1089
1097
|
});
|
|
1090
1098
|
|
|
1091
1099
|
it('should log warning when the particular bidder is not specified in allowedAlternateBidderCodes and allowAlternateBidderCodes flag is true', function () {
|
|
@@ -1096,7 +1104,8 @@ describe('validate bid response: ', function () {
|
|
|
1096
1104
|
spec.interpretResponse.returns(bids1);
|
|
1097
1105
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1098
1106
|
|
|
1099
|
-
expect(addBidResponseStub.
|
|
1107
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1108
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1100
1109
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
1101
1110
|
});
|
|
1102
1111
|
|
|
@@ -1147,7 +1156,8 @@ describe('validate bid response: ', function () {
|
|
|
1147
1156
|
spec.interpretResponse.returns(bids1);
|
|
1148
1157
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1149
1158
|
|
|
1150
|
-
expect(addBidResponseStub.
|
|
1159
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1160
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1151
1161
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
1152
1162
|
});
|
|
1153
1163
|
|
|
@@ -1159,7 +1169,7 @@ describe('validate bid response: ', function () {
|
|
|
1159
1169
|
spec.interpretResponse.returns(bids1);
|
|
1160
1170
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1161
1171
|
|
|
1162
|
-
expect(addBidResponseStub.
|
|
1172
|
+
expect(addBidResponseStub.called).to.equal(true);
|
|
1163
1173
|
expect(logWarnSpy.callCount).to.equal(0);
|
|
1164
1174
|
expect(logErrorSpy.callCount).to.equal(0);
|
|
1165
1175
|
});
|
|
@@ -1172,8 +1182,9 @@ describe('validate bid response: ', function () {
|
|
|
1172
1182
|
spec.interpretResponse.returns(bids1);
|
|
1173
1183
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1174
1184
|
|
|
1175
|
-
expect(addBidResponseStub.
|
|
1185
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1176
1186
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
1187
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1177
1188
|
});
|
|
1178
1189
|
|
|
1179
1190
|
it('should not accept the bid, when bidderSetting is missing for the bidder. It should fallback to standard setting and reject the bid', function () {
|
|
@@ -1183,7 +1194,8 @@ describe('validate bid response: ', function () {
|
|
|
1183
1194
|
spec.interpretResponse.returns(bids1);
|
|
1184
1195
|
bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
|
|
1185
1196
|
|
|
1186
|
-
expect(addBidResponseStub.
|
|
1197
|
+
expect(addBidResponseStub.called).to.equal(false);
|
|
1198
|
+
expect(addBidResponseStub.reject.calledOnce).to.be.true;
|
|
1187
1199
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
1188
1200
|
});
|
|
1189
1201
|
});
|
|
@@ -1385,3 +1397,46 @@ describe('preload mapping url hook', function() {
|
|
|
1385
1397
|
clock.restore();
|
|
1386
1398
|
});
|
|
1387
1399
|
});
|
|
1400
|
+
|
|
1401
|
+
describe('bid response isValid', () => {
|
|
1402
|
+
describe('size check', () => {
|
|
1403
|
+
let req, index;
|
|
1404
|
+
|
|
1405
|
+
beforeEach(() => {
|
|
1406
|
+
req = {
|
|
1407
|
+
...MOCK_BIDS_REQUEST.bids[0],
|
|
1408
|
+
mediaTypes: {
|
|
1409
|
+
banner: {
|
|
1410
|
+
sizes: [[1, 2], [3, 4]]
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
});
|
|
1415
|
+
|
|
1416
|
+
function mkResponse(width, height) {
|
|
1417
|
+
return {
|
|
1418
|
+
requestId: req.bidId,
|
|
1419
|
+
width,
|
|
1420
|
+
height,
|
|
1421
|
+
cpm: 1,
|
|
1422
|
+
ttl: 60,
|
|
1423
|
+
creativeId: '123',
|
|
1424
|
+
netRevenue: true,
|
|
1425
|
+
currency: 'USD',
|
|
1426
|
+
mediaType: 'banner',
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
function checkValid(bid) {
|
|
1431
|
+
return isValid('au', bid, {index: stubAuctionIndex({bidRequests: [req]})});
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
it('should succeed when response has a size that was in request', () => {
|
|
1435
|
+
expect(checkValid(mkResponse(3, 4))).to.be.true;
|
|
1436
|
+
});
|
|
1437
|
+
|
|
1438
|
+
it('should fail when response has a size that was not in request', () => {
|
|
1439
|
+
expect(checkValid(mkResponse(10, 11))).to.be.false;
|
|
1440
|
+
});
|
|
1441
|
+
})
|
|
1442
|
+
});
|
|
@@ -6,8 +6,14 @@ import CONSTANTS from 'src/constants.json';
|
|
|
6
6
|
import { auctionManager } from 'src/auctionManager.js';
|
|
7
7
|
import * as utils from 'src/utils.js';
|
|
8
8
|
import {deepClone} from 'src/utils.js';
|
|
9
|
+
import {createBid} from '../../../../src/bidfactory.js';
|
|
10
|
+
import {hook} from '../../../../src/hook.js';
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
function mkBid(bid, status = CONSTANTS.STATUS.GOOD) {
|
|
13
|
+
return Object.assign(createBid(status), bid);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const sampleBid = {
|
|
11
17
|
'bidderCode': 'rubicon',
|
|
12
18
|
'width': '300',
|
|
13
19
|
'height': '250',
|
|
@@ -39,7 +45,9 @@ const bid1 = {
|
|
|
39
45
|
'ttl': 300
|
|
40
46
|
};
|
|
41
47
|
|
|
42
|
-
const
|
|
48
|
+
const bid1 = mkBid(sampleBid);
|
|
49
|
+
|
|
50
|
+
const bid2 = mkBid({
|
|
43
51
|
'bidderCode': 'rubicon',
|
|
44
52
|
'width': '300',
|
|
45
53
|
'height': '250',
|
|
@@ -67,9 +75,9 @@ const bid2 = {
|
|
|
67
75
|
'netRevenue': true,
|
|
68
76
|
'currency': 'USD',
|
|
69
77
|
'ttl': 300
|
|
70
|
-
};
|
|
78
|
+
});
|
|
71
79
|
|
|
72
|
-
const bid3 = {
|
|
80
|
+
const bid3 = mkBid({
|
|
73
81
|
'bidderCode': 'rubicon',
|
|
74
82
|
'width': '300',
|
|
75
83
|
'height': '600',
|
|
@@ -97,9 +105,9 @@ const bid3 = {
|
|
|
97
105
|
'netRevenue': true,
|
|
98
106
|
'currency': 'USD',
|
|
99
107
|
'ttl': 300
|
|
100
|
-
};
|
|
108
|
+
});
|
|
101
109
|
|
|
102
|
-
const nativeBid1 = {
|
|
110
|
+
const nativeBid1 = mkBid({
|
|
103
111
|
'bidderCode': 'appnexus',
|
|
104
112
|
'width': 0,
|
|
105
113
|
'height': 0,
|
|
@@ -165,8 +173,9 @@ const nativeBid1 = {
|
|
|
165
173
|
[CONSTANTS.NATIVE_KEYS.image]: 'http://vcdn.adnxs.com/p/creative-image/94/22/cd/0f/9422cd0f-f400-45d3-80f5-2b92629d9257.jpg',
|
|
166
174
|
[CONSTANTS.NATIVE_KEYS.icon]: 'http://vcdn.adnxs.com/p/creative-image/bd/59/a6/c6/bd59a6c6-0851-411d-a16d-031475a51312.png'
|
|
167
175
|
}
|
|
168
|
-
};
|
|
169
|
-
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
const nativeBid2 = mkBid({
|
|
170
179
|
'bidderCode': 'dgads',
|
|
171
180
|
'width': 0,
|
|
172
181
|
'height': 0,
|
|
@@ -222,7 +231,7 @@ const nativeBid2 = {
|
|
|
222
231
|
[CONSTANTS.NATIVE_KEYS.sponsoredBy]: 'test.com',
|
|
223
232
|
[CONSTANTS.NATIVE_KEYS.clickUrl]: 'http://prebid.org/'
|
|
224
233
|
}
|
|
225
|
-
};
|
|
234
|
+
});
|
|
226
235
|
|
|
227
236
|
describe('targeting tests', function () {
|
|
228
237
|
let sandbox;
|
|
@@ -231,6 +240,10 @@ describe('targeting tests', function () {
|
|
|
231
240
|
let bidCacheFilterFunction;
|
|
232
241
|
let undef;
|
|
233
242
|
|
|
243
|
+
before(() => {
|
|
244
|
+
hook.ready();
|
|
245
|
+
});
|
|
246
|
+
|
|
234
247
|
beforeEach(function() {
|
|
235
248
|
sandbox = sinon.sandbox.create();
|
|
236
249
|
|
|
@@ -287,6 +300,12 @@ describe('targeting tests', function () {
|
|
|
287
300
|
bidExpiryStub.restore();
|
|
288
301
|
});
|
|
289
302
|
|
|
303
|
+
it('should filter out NO_BID bids', () => {
|
|
304
|
+
bidsReceived = [mkBid(sampleBid, CONSTANTS.STATUS.NO_BID)];
|
|
305
|
+
const tg = targetingInstance.getAllTargeting();
|
|
306
|
+
expect(tg[bidsReceived[0].adUnitCode]).to.eql({});
|
|
307
|
+
});
|
|
308
|
+
|
|
290
309
|
describe('when handling different adunit targeting value types', function () {
|
|
291
310
|
const adUnitCode = '/123456/header-bid-tag-0';
|
|
292
311
|
const adServerTargeting = {};
|
|
@@ -200,6 +200,7 @@ describe('Unit: Prebid Module', function () {
|
|
|
200
200
|
hook.ready();
|
|
201
201
|
$$PREBID_GLOBAL$$.requestBids.getHooks().remove();
|
|
202
202
|
resetDebugging();
|
|
203
|
+
sinon.stub(filters, 'isActualBid').returns(true); // stub this out so that we can use vanilla objects as bids
|
|
203
204
|
});
|
|
204
205
|
|
|
205
206
|
beforeEach(function () {
|
|
@@ -216,6 +217,7 @@ describe('Unit: Prebid Module', function () {
|
|
|
216
217
|
|
|
217
218
|
after(function() {
|
|
218
219
|
auctionManager.clearAllAuctions();
|
|
220
|
+
filters.isActualBid.restore();
|
|
219
221
|
});
|
|
220
222
|
|
|
221
223
|
describe('and global adUnits', () => {
|
|
@@ -504,8 +506,8 @@ describe('Unit: Prebid Module', function () {
|
|
|
504
506
|
'client_initiated_ad_counting': true,
|
|
505
507
|
'rtb': {
|
|
506
508
|
'banner': {
|
|
507
|
-
'width':
|
|
508
|
-
'height':
|
|
509
|
+
'width': 300,
|
|
510
|
+
'height': 250,
|
|
509
511
|
'content': '<!-- Creative -->'
|
|
510
512
|
},
|
|
511
513
|
'trackers': [{
|
|
@@ -1841,6 +1843,50 @@ describe('Unit: Prebid Module', function () {
|
|
|
1841
1843
|
.and.to.match(/[a-f0-9\-]{36}/i);
|
|
1842
1844
|
});
|
|
1843
1845
|
|
|
1846
|
+
describe('transactionId', () => {
|
|
1847
|
+
let adUnit;
|
|
1848
|
+
beforeEach(() => {
|
|
1849
|
+
adUnit = {
|
|
1850
|
+
code: 'adUnit',
|
|
1851
|
+
mediaTypes: {
|
|
1852
|
+
banner: {
|
|
1853
|
+
sizes: [300, 250]
|
|
1854
|
+
}
|
|
1855
|
+
},
|
|
1856
|
+
bids: [
|
|
1857
|
+
{
|
|
1858
|
+
bidder: 'mock-bidder',
|
|
1859
|
+
}
|
|
1860
|
+
]
|
|
1861
|
+
};
|
|
1862
|
+
});
|
|
1863
|
+
it('should be set to ortb2Imp.ext.tid, if specified', () => {
|
|
1864
|
+
$$PREBID_GLOBAL$$.requestBids({
|
|
1865
|
+
adUnits: [
|
|
1866
|
+
{...adUnit, ortb2Imp: {ext: {tid: 'custom-tid'}}}
|
|
1867
|
+
]
|
|
1868
|
+
});
|
|
1869
|
+
sinon.assert.match(auctionArgs.adUnits[0], {
|
|
1870
|
+
transactionId: 'custom-tid',
|
|
1871
|
+
ortb2Imp: {
|
|
1872
|
+
ext: {
|
|
1873
|
+
tid: 'custom-tid'
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
})
|
|
1877
|
+
});
|
|
1878
|
+
it('should be copied to ortb2Imp.ext.tid, if not specified', () => {
|
|
1879
|
+
$$PREBID_GLOBAL$$.requestBids({
|
|
1880
|
+
adUnits: [
|
|
1881
|
+
adUnit
|
|
1882
|
+
]
|
|
1883
|
+
});
|
|
1884
|
+
const tid = auctionArgs.adUnits[0].transactionId;
|
|
1885
|
+
expect(tid).to.exist;
|
|
1886
|
+
expect(auctionArgs.adUnits[0].ortb2Imp.ext.tid).to.eql(tid);
|
|
1887
|
+
});
|
|
1888
|
+
});
|
|
1889
|
+
|
|
1844
1890
|
it('should always set ortb2.ext.tid same as transactionId in adUnits', function () {
|
|
1845
1891
|
$$PREBID_GLOBAL$$.requestBids({
|
|
1846
1892
|
adUnits: [
|