prebid.js 7.18.0 → 7.19.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/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.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/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.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/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +6 -0
- 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/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fpd.js +1 -0
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.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/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +123 -121
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/libraries/fpd/sua.js +98 -0
- package/modules/adfBidAdapter.js +1 -1
- package/modules/adkernelAdnBidAdapter.js +1 -0
- package/modules/adqueryIdSystem.js +8 -8
- package/modules/adxcgBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
- package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
- package/modules/cleanioRtdProvider.js +3 -4
- package/modules/colossussspBidAdapter.js +2 -1
- package/modules/conversantAnalyticsAdapter.js +560 -0
- package/modules/conversantAnalyticsAdapter.md +47 -0
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/debugging/bidInterceptor.js +2 -2
- package/modules/debugging/debugging.js +10 -2
- package/modules/dgkeywordRtdProvider.js +21 -3
- package/modules/dianomiBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +33 -14
- 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/mediakeysBidAdapter.js +6 -1
- package/modules/mediakeysBidAdapter.md +50 -40
- package/modules/nativoBidAdapter.js +1 -1
- package/modules/prebidServerBidAdapter/index.js +44 -13
- package/modules/readpeakBidAdapter.js +1 -1
- package/modules/rubiconBidAdapter.js +2 -3
- package/modules/seedingAllianceBidAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +1 -1
- package/modules/talkadsBidAdapter.js +1 -0
- package/modules/truereachBidAdapter.js +1 -0
- package/modules/ttdBidAdapter.js +1 -1
- package/modules/vuukleBidAdapter.js +34 -3
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yandexBidAdapter.js +31 -8
- package/package.json +2 -2
- package/src/adapterManager.js +2 -4
- package/src/cpmBucketManager.js +22 -3
- package/src/native.js +1 -5
- package/src/prebid.js +3 -3
- 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/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
- 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/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/mediakeysBidAdapter_spec.js +20 -3
- package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
- package/test/spec/modules/prebidServerBidAdapter_spec.js +159 -4
- 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 +2 -2
- package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
- package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +3 -1
- package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
- package/test/spec/native_spec.js +5 -0
- package/test/spec/unit/pbjs_api_spec.js +44 -0
|
@@ -2,7 +2,7 @@ import * as utils from 'src/utils.js';
|
|
|
2
2
|
import { config } from 'src/config.js';
|
|
3
3
|
import { expect } from 'chai';
|
|
4
4
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
5
|
-
import { spec, storage, ERROR_CODES } from '../../../modules/ixBidAdapter.js';
|
|
5
|
+
import { spec, storage, ERROR_CODES, FEATURE_TOGGLES, LOCAL_STORAGE_FEATURE_TOGGLES_KEY } from '../../../modules/ixBidAdapter.js';
|
|
6
6
|
import { createEidsArray } from 'modules/userId/eids.js';
|
|
7
7
|
import { deepAccess, deepClone } from '../../../src/utils.js';
|
|
8
8
|
|
|
@@ -1739,6 +1739,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1739
1739
|
expect(payload.source.ext.schain).to.deep.equal(SAMPLE_SCHAIN);
|
|
1740
1740
|
expect(payload.imp).to.be.an('array');
|
|
1741
1741
|
expect(payload.imp).to.have.lengthOf(1);
|
|
1742
|
+
expect(payload.source.tid).to.equal(DEFAULT_BANNER_VALID_BID[0].auctionId);
|
|
1742
1743
|
});
|
|
1743
1744
|
|
|
1744
1745
|
it('payload should have correct format and value for r.id when bidderRequestId is a number ', function () {
|
|
@@ -1767,7 +1768,7 @@ describe('IndexexchangeAdapter', function () {
|
|
|
1767
1768
|
|
|
1768
1769
|
it('payload should not include schain when not provided', function () {
|
|
1769
1770
|
const payload = JSON.parse(queryWithoutSchain.r);
|
|
1770
|
-
expect(payload.source).to.not.exist; // source object currently only written for schain
|
|
1771
|
+
expect(payload.source.schain).to.not.exist; // source object currently only written for schain
|
|
1771
1772
|
});
|
|
1772
1773
|
|
|
1773
1774
|
it('impression should have correct format and value', function () {
|
|
@@ -3294,6 +3295,224 @@ describe('IndexexchangeAdapter', function () {
|
|
|
3294
3295
|
});
|
|
3295
3296
|
});
|
|
3296
3297
|
|
|
3298
|
+
describe('Features', () => {
|
|
3299
|
+
let localStorageValues = {};
|
|
3300
|
+
let sandbox = sinon.sandbox.create();
|
|
3301
|
+
let setDataInLocalStorageStub;
|
|
3302
|
+
let getDataFromLocalStorageStub;
|
|
3303
|
+
let removeDataFromLocalStorageStub;
|
|
3304
|
+
const serverResponse = {
|
|
3305
|
+
body: {
|
|
3306
|
+
ext: {
|
|
3307
|
+
features: {
|
|
3308
|
+
test: {
|
|
3309
|
+
activated: false
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
}
|
|
3313
|
+
}
|
|
3314
|
+
};
|
|
3315
|
+
|
|
3316
|
+
beforeEach(() => {
|
|
3317
|
+
localStorageValues = {};
|
|
3318
|
+
sandbox = sinon.sandbox.create();
|
|
3319
|
+
setDataInLocalStorageStub = sandbox.stub(storage, 'setDataInLocalStorage').callsFake((key, value) => localStorageValues[key] = value);
|
|
3320
|
+
getDataFromLocalStorageStub = sandbox.stub(storage, 'getDataFromLocalStorage').callsFake((key) => localStorageValues[key]);
|
|
3321
|
+
removeDataFromLocalStorageStub = sandbox.stub(storage, 'removeDataFromLocalStorage').callsFake((key) => delete localStorageValues[key]);
|
|
3322
|
+
});
|
|
3323
|
+
|
|
3324
|
+
afterEach(() => {
|
|
3325
|
+
setDataInLocalStorageStub.restore();
|
|
3326
|
+
getDataFromLocalStorageStub.restore();
|
|
3327
|
+
removeDataFromLocalStorageStub.restore();
|
|
3328
|
+
serverResponse.body.ext.features = {
|
|
3329
|
+
test: {
|
|
3330
|
+
activated: false
|
|
3331
|
+
}
|
|
3332
|
+
};
|
|
3333
|
+
localStorageValues = {};
|
|
3334
|
+
sandbox.restore();
|
|
3335
|
+
});
|
|
3336
|
+
|
|
3337
|
+
it('should store features in internal cache', () => {
|
|
3338
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3339
|
+
expect(FEATURE_TOGGLES.isFeatureEnabled('test')).to.be.false;
|
|
3340
|
+
});
|
|
3341
|
+
|
|
3342
|
+
it('should retrieve features from internal cache', () => {
|
|
3343
|
+
const feature = {
|
|
3344
|
+
ext: {
|
|
3345
|
+
features: {
|
|
3346
|
+
test: {
|
|
3347
|
+
activated: true
|
|
3348
|
+
}
|
|
3349
|
+
}
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
FEATURE_TOGGLES.setFeatureToggles(feature);
|
|
3353
|
+
feature.ext.features.test.activated = false;
|
|
3354
|
+
FEATURE_TOGGLES.featureToggles = {
|
|
3355
|
+
features: feature.ext.features
|
|
3356
|
+
};
|
|
3357
|
+
expect(FEATURE_TOGGLES.isFeatureEnabled('test')).to.be.false;
|
|
3358
|
+
});
|
|
3359
|
+
|
|
3360
|
+
it('should store features in localstorage when enabled', () => {
|
|
3361
|
+
sandbox.stub(storage, 'localStorageIsEnabled').returns(true);
|
|
3362
|
+
serverResponse.body.ext.features.test.activated = true;
|
|
3363
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3364
|
+
|
|
3365
|
+
const lsData = JSON.parse(storage.getDataFromLocalStorage(LOCAL_STORAGE_FEATURE_TOGGLES_KEY));
|
|
3366
|
+
expect(lsData.features.test.activated).to.be.true;
|
|
3367
|
+
});
|
|
3368
|
+
|
|
3369
|
+
it('should retrive features from localstorage when enabled', () => {
|
|
3370
|
+
sandbox.stub(storage, 'localStorageIsEnabled').returns(true);
|
|
3371
|
+
serverResponse.body.ext.features.test.activated = true;
|
|
3372
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3373
|
+
FEATURE_TOGGLES.featureToggles = {};
|
|
3374
|
+
FEATURE_TOGGLES.getFeatureToggles(LOCAL_STORAGE_FEATURE_TOGGLES_KEY);
|
|
3375
|
+
expect(FEATURE_TOGGLES.isFeatureEnabled('test')).to.be.true;
|
|
3376
|
+
});
|
|
3377
|
+
|
|
3378
|
+
it('should remove features from after expiry', () => {
|
|
3379
|
+
sandbox.stub(storage, 'localStorageIsEnabled').returns(true);
|
|
3380
|
+
const expiryTime = new Date();
|
|
3381
|
+
localStorageValues = {
|
|
3382
|
+
expiry: expiryTime.setHours(expiryTime.getHours() - 2),
|
|
3383
|
+
features: {
|
|
3384
|
+
test: {
|
|
3385
|
+
activated: true
|
|
3386
|
+
}
|
|
3387
|
+
}
|
|
3388
|
+
}
|
|
3389
|
+
FEATURE_TOGGLES.getFeatureToggles(LOCAL_STORAGE_FEATURE_TOGGLES_KEY);
|
|
3390
|
+
expect(FEATURE_TOGGLES.isFeatureEnabled('test')).to.be.undefined;
|
|
3391
|
+
expect(FEATURE_TOGGLES.featureToggles).to.deep.equal({});
|
|
3392
|
+
});
|
|
3393
|
+
|
|
3394
|
+
it('should create POST request when pbjs_enable_post feature is active', () => {
|
|
3395
|
+
sandbox.stub(storage, 'localStorageIsEnabled').returns(true);
|
|
3396
|
+
serverResponse.body.ext.features.pbjs_enable_post = {
|
|
3397
|
+
activated: true
|
|
3398
|
+
};
|
|
3399
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3400
|
+
const builtRequests = {
|
|
3401
|
+
banner: {
|
|
3402
|
+
request: spec.buildRequests(DEFAULT_BANNER_VALID_BID, DEFAULT_OPTION)[0],
|
|
3403
|
+
siteId: DEFAULT_BANNER_VALID_BID[0].params.siteId
|
|
3404
|
+
},
|
|
3405
|
+
video: {
|
|
3406
|
+
request: spec.buildRequests(DEFAULT_VIDEO_VALID_BID, DEFAULT_OPTION)[0],
|
|
3407
|
+
siteId: DEFAULT_VIDEO_VALID_BID[0].params.siteId
|
|
3408
|
+
},
|
|
3409
|
+
native: {
|
|
3410
|
+
request: spec.buildRequests(DEFAULT_NATIVE_VALID_BID, DEFAULT_OPTION)[0],
|
|
3411
|
+
siteId: DEFAULT_NATIVE_VALID_BID[0].params.siteId
|
|
3412
|
+
}
|
|
3413
|
+
};
|
|
3414
|
+
|
|
3415
|
+
Object.keys(builtRequests).forEach((reqType) => {
|
|
3416
|
+
const request = builtRequests[reqType].request;
|
|
3417
|
+
const siteId = builtRequests[reqType].siteId;
|
|
3418
|
+
expect(request.method).to.equal('POST');
|
|
3419
|
+
expect(request.option.contentType).to.equal('text/plain');
|
|
3420
|
+
expect(request.url).to.be.equal(`${IX_SECURE_ENDPOINT}?s=${siteId}`);
|
|
3421
|
+
expect(request.data.r).to.be.undefined;
|
|
3422
|
+
expect(request.data.ac).to.be.undefined;
|
|
3423
|
+
expect(request.data.sd).to.be.undefined;
|
|
3424
|
+
expect(request.data.v).to.be.undefined;
|
|
3425
|
+
expect(request.data.nf).to.be.undefined;
|
|
3426
|
+
});
|
|
3427
|
+
});
|
|
3428
|
+
|
|
3429
|
+
it('should create GET request when pbjs_enable_post feature is disabled', () => {
|
|
3430
|
+
sandbox.stub(storage, 'localStorageIsEnabled').returns(true);
|
|
3431
|
+
serverResponse.body.ext.features.pbjs_enable_post = {
|
|
3432
|
+
activated: false
|
|
3433
|
+
};
|
|
3434
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3435
|
+
const builtRequests = {
|
|
3436
|
+
banner: {
|
|
3437
|
+
request: spec.buildRequests(DEFAULT_BANNER_VALID_BID, DEFAULT_OPTION)[0],
|
|
3438
|
+
siteId: DEFAULT_BANNER_VALID_BID[0].params.siteId
|
|
3439
|
+
},
|
|
3440
|
+
video: {
|
|
3441
|
+
request: spec.buildRequests(DEFAULT_VIDEO_VALID_BID, DEFAULT_OPTION)[0],
|
|
3442
|
+
siteId: DEFAULT_VIDEO_VALID_BID[0].params.siteId
|
|
3443
|
+
},
|
|
3444
|
+
native: {
|
|
3445
|
+
request: spec.buildRequests(DEFAULT_NATIVE_VALID_BID, DEFAULT_OPTION)[0],
|
|
3446
|
+
siteId: DEFAULT_NATIVE_VALID_BID[0].params.siteId
|
|
3447
|
+
}
|
|
3448
|
+
};
|
|
3449
|
+
|
|
3450
|
+
Object.keys(builtRequests).forEach((reqType) => {
|
|
3451
|
+
const request = builtRequests[reqType].request;
|
|
3452
|
+
const siteId = builtRequests[reqType].siteId;
|
|
3453
|
+
expect(request.method).to.equal('GET');
|
|
3454
|
+
expect(request.url).to.equal(IX_SECURE_ENDPOINT);
|
|
3455
|
+
expect(request.data.r).to.exist;
|
|
3456
|
+
expect(request.data.ac).to.equal('j');
|
|
3457
|
+
expect(request.data.sd).to.equal(1);
|
|
3458
|
+
expect(request.data.s).to.equal(siteId);
|
|
3459
|
+
if (reqType == 'video') {
|
|
3460
|
+
expect(request.data.nf).to.equal(1);
|
|
3461
|
+
}
|
|
3462
|
+
|
|
3463
|
+
if (reqType === 'native') {
|
|
3464
|
+
expect(request.data.v).to.be.undefined;
|
|
3465
|
+
}
|
|
3466
|
+
});
|
|
3467
|
+
});
|
|
3468
|
+
|
|
3469
|
+
it('should interpertResponse correctly when pbjs_enable_post feature is active', function () {
|
|
3470
|
+
serverResponse.body.ext.features.pbjs_enable_post = {
|
|
3471
|
+
activated: true
|
|
3472
|
+
};
|
|
3473
|
+
FEATURE_TOGGLES.setFeatureToggles(serverResponse);
|
|
3474
|
+
const postBiddderRequestData = {
|
|
3475
|
+
id: '345',
|
|
3476
|
+
imp: [
|
|
3477
|
+
{
|
|
3478
|
+
id: '1a2b3c4e',
|
|
3479
|
+
banner: {
|
|
3480
|
+
w: 300,
|
|
3481
|
+
h: 250,
|
|
3482
|
+
placement: 1
|
|
3483
|
+
}
|
|
3484
|
+
}
|
|
3485
|
+
],
|
|
3486
|
+
site: {
|
|
3487
|
+
ref: 'https://ref.com/ref.html',
|
|
3488
|
+
page: 'https://page.com'
|
|
3489
|
+
},
|
|
3490
|
+
};
|
|
3491
|
+
const expectedParse = [
|
|
3492
|
+
{
|
|
3493
|
+
requestId: '1a2b3c4d',
|
|
3494
|
+
cpm: 1,
|
|
3495
|
+
creativeId: '12345',
|
|
3496
|
+
width: 300,
|
|
3497
|
+
height: 250,
|
|
3498
|
+
mediaType: 'banner',
|
|
3499
|
+
ad: '<a target="_blank" href="https://www.indexexchange.com"></a>',
|
|
3500
|
+
currency: 'USD',
|
|
3501
|
+
ttl: 300,
|
|
3502
|
+
netRevenue: true,
|
|
3503
|
+
meta: {
|
|
3504
|
+
networkId: 50,
|
|
3505
|
+
brandId: 303325,
|
|
3506
|
+
brandName: 'OECTA',
|
|
3507
|
+
advertiserDomains: ['www.abc.com']
|
|
3508
|
+
}
|
|
3509
|
+
}
|
|
3510
|
+
];
|
|
3511
|
+
const result = spec.interpretResponse({ body: DEFAULT_BANNER_BID_RESPONSE }, { data: postBiddderRequestData, validBidRequests: [] });
|
|
3512
|
+
expect(result[0]).to.deep.equal(expectedParse[0]);
|
|
3513
|
+
});
|
|
3514
|
+
});
|
|
3515
|
+
|
|
3297
3516
|
describe('LocalStorage error codes', () => {
|
|
3298
3517
|
let TODAY = new Date().toISOString().slice(0, 10);
|
|
3299
3518
|
const key = 'ixdiag';
|
|
@@ -47,7 +47,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
47
47
|
|
|
48
48
|
it('should not return a decoded identifier when the unifiedId is not present in the value', function() {
|
|
49
49
|
const result = liveIntentIdSubmodule.decode({ additionalData: 'data' });
|
|
50
|
-
expect(result).to.be.
|
|
50
|
+
expect(result).to.be.eql({});
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
it('should initialize LiveConnect and send no data', function() {
|
|
@@ -64,7 +64,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
64
64
|
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {...defaultConfigParams.params, ...{'url': 'https://dummy.liveintent.com/idex'}} }).callback;
|
|
65
65
|
submoduleCallback(callBackSpy);
|
|
66
66
|
let request = server.requests[0];
|
|
67
|
-
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/prebid/89899');
|
|
67
|
+
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/prebid/89899?resolve=nonId');
|
|
68
68
|
request.respond(
|
|
69
69
|
200,
|
|
70
70
|
responseHeader,
|
|
@@ -85,7 +85,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
85
85
|
} }).callback;
|
|
86
86
|
submoduleCallback(callBackSpy);
|
|
87
87
|
let request = server.requests[0];
|
|
88
|
-
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/rubicon/89899');
|
|
88
|
+
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/rubicon/89899?resolve=nonId');
|
|
89
89
|
request.respond(
|
|
90
90
|
200,
|
|
91
91
|
responseHeader,
|
|
@@ -100,7 +100,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
100
100
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
101
101
|
submoduleCallback(callBackSpy);
|
|
102
102
|
let request = server.requests[0];
|
|
103
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899');
|
|
103
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?resolve=nonId');
|
|
104
104
|
request.respond(
|
|
105
105
|
200,
|
|
106
106
|
responseHeader,
|
|
@@ -115,7 +115,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
115
115
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
116
116
|
submoduleCallback(callBackSpy);
|
|
117
117
|
let request = server.requests[0];
|
|
118
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899');
|
|
118
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?resolve=nonId');
|
|
119
119
|
request.respond(
|
|
120
120
|
503,
|
|
121
121
|
responseHeader,
|
|
@@ -132,7 +132,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
132
132
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
133
133
|
submoduleCallback(callBackSpy);
|
|
134
134
|
let request = server.requests[0];
|
|
135
|
-
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}`);
|
|
135
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&resolve=nonId`);
|
|
136
136
|
request.respond(
|
|
137
137
|
200,
|
|
138
138
|
responseHeader,
|
|
@@ -155,7 +155,7 @@ describe('LiveIntentMinimalId', function() {
|
|
|
155
155
|
let submoduleCallback = liveIntentIdSubmodule.getId(configParams).callback;
|
|
156
156
|
submoduleCallback(callBackSpy);
|
|
157
157
|
let request = server.requests[0];
|
|
158
|
-
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&_thirdPC=third-pc`);
|
|
158
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&_thirdPC=third-pc&resolve=nonId`);
|
|
159
159
|
request.respond(
|
|
160
160
|
200,
|
|
161
161
|
responseHeader,
|
|
@@ -177,7 +177,61 @@ describe('LiveIntentMinimalId', function() {
|
|
|
177
177
|
let submoduleCallback = liveIntentIdSubmodule.getId(configParams).callback;
|
|
178
178
|
submoduleCallback(callBackSpy);
|
|
179
179
|
let request = server.requests[0];
|
|
180
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?_thirdPC=%7B%22key%22%3A%22value%22%7D');
|
|
180
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?_thirdPC=%7B%22key%22%3A%22value%22%7D&resolve=nonId');
|
|
181
|
+
request.respond(
|
|
182
|
+
200,
|
|
183
|
+
responseHeader,
|
|
184
|
+
JSON.stringify({})
|
|
185
|
+
);
|
|
186
|
+
expect(callBackSpy.calledOnce).to.be.true;
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it('should decode a unifiedId to lipbId and remove it', function() {
|
|
190
|
+
const result = liveIntentIdSubmodule.decode({ unifiedId: 'data' });
|
|
191
|
+
expect(result).to.eql({'lipb': {'lipbid': 'data'}});
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it('should decode a nonId to lipbId', function() {
|
|
195
|
+
const result = liveIntentIdSubmodule.decode({ nonId: 'data' });
|
|
196
|
+
expect(result).to.eql({'lipb': {'lipbid': 'data', 'nonId': 'data'}});
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
it('should resolve extra attributes', function() {
|
|
200
|
+
let callBackSpy = sinon.spy();
|
|
201
|
+
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {
|
|
202
|
+
...defaultConfigParams.params,
|
|
203
|
+
...{ requestedAttributesOverrides: { 'foo': true, 'bar': false } }
|
|
204
|
+
} }).callback;
|
|
205
|
+
submoduleCallback(callBackSpy);
|
|
206
|
+
let request = server.requests[0];
|
|
207
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?resolve=nonId&resolve=foo`);
|
|
208
|
+
request.respond(
|
|
209
|
+
200,
|
|
210
|
+
responseHeader,
|
|
211
|
+
JSON.stringify({})
|
|
212
|
+
);
|
|
213
|
+
expect(callBackSpy.calledOnce).to.be.true;
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('should decode a uid2 to a seperate object when present', function() {
|
|
217
|
+
const result = liveIntentIdSubmodule.decode({ nonId: 'foo', uid2: 'bar' });
|
|
218
|
+
expect(result).to.eql({'lipb': {'lipbid': 'foo', 'nonId': 'foo', 'uid2': 'bar'}, 'uid2': {'id': 'bar'}});
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
it('should decode values with uid2 but no nonId', function() {
|
|
222
|
+
const result = liveIntentIdSubmodule.decode({ uid2: 'bar' });
|
|
223
|
+
expect(result).to.eql({'uid2': {'id': 'bar'}});
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it('should allow disabling nonId resolution', function() {
|
|
227
|
+
let callBackSpy = sinon.spy();
|
|
228
|
+
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {
|
|
229
|
+
...defaultConfigParams.params,
|
|
230
|
+
...{ requestedAttributesOverrides: { 'nonId': false, 'uid2': true } }
|
|
231
|
+
} }).callback;
|
|
232
|
+
submoduleCallback(callBackSpy);
|
|
233
|
+
let request = server.requests[0];
|
|
234
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?resolve=uid2`);
|
|
181
235
|
request.respond(
|
|
182
236
|
200,
|
|
183
237
|
responseHeader,
|
|
@@ -111,7 +111,7 @@ describe('LiveIntentId', function() {
|
|
|
111
111
|
|
|
112
112
|
it('should not return a decoded identifier when the unifiedId is not present in the value', function() {
|
|
113
113
|
const result = liveIntentIdSubmodule.decode({ additionalData: 'data' });
|
|
114
|
-
expect(result).to.be.
|
|
114
|
+
expect(result).to.be.eql({});
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
it('should fire an event when decode', function() {
|
|
@@ -133,7 +133,7 @@ describe('LiveIntentId', function() {
|
|
|
133
133
|
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {...defaultConfigParams.params, ...{'url': 'https://dummy.liveintent.com/idex'}} }).callback;
|
|
134
134
|
submoduleCallback(callBackSpy);
|
|
135
135
|
let request = server.requests[1];
|
|
136
|
-
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/prebid/89899');
|
|
136
|
+
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/prebid/89899?resolve=nonId');
|
|
137
137
|
request.respond(
|
|
138
138
|
204,
|
|
139
139
|
responseHeader
|
|
@@ -153,7 +153,7 @@ describe('LiveIntentId', function() {
|
|
|
153
153
|
} }).callback;
|
|
154
154
|
submoduleCallback(callBackSpy);
|
|
155
155
|
let request = server.requests[1];
|
|
156
|
-
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/rubicon/89899');
|
|
156
|
+
expect(request.url).to.be.eq('https://dummy.liveintent.com/idex/rubicon/89899?resolve=nonId');
|
|
157
157
|
request.respond(
|
|
158
158
|
200,
|
|
159
159
|
responseHeader,
|
|
@@ -168,7 +168,7 @@ describe('LiveIntentId', function() {
|
|
|
168
168
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
169
169
|
submoduleCallback(callBackSpy);
|
|
170
170
|
let request = server.requests[1];
|
|
171
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899');
|
|
171
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?resolve=nonId');
|
|
172
172
|
request.respond(
|
|
173
173
|
200,
|
|
174
174
|
responseHeader,
|
|
@@ -183,7 +183,7 @@ describe('LiveIntentId', function() {
|
|
|
183
183
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
184
184
|
submoduleCallback(callBackSpy);
|
|
185
185
|
let request = server.requests[1];
|
|
186
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899');
|
|
186
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?resolve=nonId');
|
|
187
187
|
request.respond(
|
|
188
188
|
503,
|
|
189
189
|
responseHeader,
|
|
@@ -200,7 +200,7 @@ describe('LiveIntentId', function() {
|
|
|
200
200
|
let submoduleCallback = liveIntentIdSubmodule.getId(defaultConfigParams).callback;
|
|
201
201
|
submoduleCallback(callBackSpy);
|
|
202
202
|
let request = server.requests[1];
|
|
203
|
-
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}`);
|
|
203
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&resolve=nonId`);
|
|
204
204
|
request.respond(
|
|
205
205
|
200,
|
|
206
206
|
responseHeader,
|
|
@@ -223,7 +223,7 @@ describe('LiveIntentId', function() {
|
|
|
223
223
|
let submoduleCallback = liveIntentIdSubmodule.getId(configParams).callback;
|
|
224
224
|
submoduleCallback(callBackSpy);
|
|
225
225
|
let request = server.requests[1];
|
|
226
|
-
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&_thirdPC=third-pc`);
|
|
226
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?duid=${oldCookie}&_thirdPC=third-pc&resolve=nonId`);
|
|
227
227
|
request.respond(
|
|
228
228
|
200,
|
|
229
229
|
responseHeader,
|
|
@@ -245,7 +245,7 @@ describe('LiveIntentId', function() {
|
|
|
245
245
|
let submoduleCallback = liveIntentIdSubmodule.getId(configParams).callback;
|
|
246
246
|
submoduleCallback(callBackSpy);
|
|
247
247
|
let request = server.requests[1];
|
|
248
|
-
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?_thirdPC=%7B%22key%22%3A%22value%22%7D');
|
|
248
|
+
expect(request.url).to.be.eq('https://idx.liadm.com/idex/prebid/89899?_thirdPC=%7B%22key%22%3A%22value%22%7D&resolve=nonId');
|
|
249
249
|
request.respond(
|
|
250
250
|
200,
|
|
251
251
|
responseHeader,
|
|
@@ -259,4 +259,58 @@ describe('LiveIntentId', function() {
|
|
|
259
259
|
liveIntentIdSubmodule.getId(defaultConfigParams);
|
|
260
260
|
expect(imgStub.getCall(0).args[0]).to.match(/.*ae=.+/);
|
|
261
261
|
});
|
|
262
|
+
|
|
263
|
+
it('should decode a unifiedId to lipbId and remove it', function() {
|
|
264
|
+
const result = liveIntentIdSubmodule.decode({ unifiedId: 'data' });
|
|
265
|
+
expect(result).to.eql({'lipb': {'lipbid': 'data'}});
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
it('should decode a nonId to lipbId', function() {
|
|
269
|
+
const result = liveIntentIdSubmodule.decode({ nonId: 'data' });
|
|
270
|
+
expect(result).to.eql({'lipb': {'lipbid': 'data', 'nonId': 'data'}});
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('should resolve extra attributes', function() {
|
|
274
|
+
let callBackSpy = sinon.spy();
|
|
275
|
+
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {
|
|
276
|
+
...defaultConfigParams.params,
|
|
277
|
+
...{ requestedAttributesOverrides: { 'foo': true, 'bar': false } }
|
|
278
|
+
} }).callback;
|
|
279
|
+
submoduleCallback(callBackSpy);
|
|
280
|
+
let request = server.requests[1];
|
|
281
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?resolve=nonId&resolve=foo`);
|
|
282
|
+
request.respond(
|
|
283
|
+
200,
|
|
284
|
+
responseHeader,
|
|
285
|
+
JSON.stringify({})
|
|
286
|
+
);
|
|
287
|
+
expect(callBackSpy.calledOnce).to.be.true;
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
it('should decode a uid2 to a seperate object when present', function() {
|
|
291
|
+
const result = liveIntentIdSubmodule.decode({ nonId: 'foo', uid2: 'bar' });
|
|
292
|
+
expect(result).to.eql({'lipb': {'lipbid': 'foo', 'nonId': 'foo', 'uid2': 'bar'}, 'uid2': {'id': 'bar'}});
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it('should decode values with uid2 but no nonId', function() {
|
|
296
|
+
const result = liveIntentIdSubmodule.decode({ uid2: 'bar' });
|
|
297
|
+
expect(result).to.eql({'uid2': {'id': 'bar'}});
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
it('should allow disabling nonId resolution', function() {
|
|
301
|
+
let callBackSpy = sinon.spy();
|
|
302
|
+
let submoduleCallback = liveIntentIdSubmodule.getId({ params: {
|
|
303
|
+
...defaultConfigParams.params,
|
|
304
|
+
...{ requestedAttributesOverrides: { 'nonId': false, 'uid2': true } }
|
|
305
|
+
} }).callback;
|
|
306
|
+
submoduleCallback(callBackSpy);
|
|
307
|
+
let request = server.requests[1];
|
|
308
|
+
expect(request.url).to.be.eq(`https://idx.liadm.com/idex/prebid/89899?resolve=uid2`);
|
|
309
|
+
request.respond(
|
|
310
|
+
200,
|
|
311
|
+
responseHeader,
|
|
312
|
+
JSON.stringify({})
|
|
313
|
+
);
|
|
314
|
+
expect(callBackSpy.calledOnce).to.be.true;
|
|
315
|
+
});
|
|
262
316
|
});
|
|
@@ -808,8 +808,8 @@ describe('mediakeysBidAdapter', function () {
|
|
|
808
808
|
]
|
|
809
809
|
},
|
|
810
810
|
eventtrackers: [
|
|
811
|
-
{ event: 1, method: 1, url: 'https://
|
|
812
|
-
{ event: 1, method: 2, url: 'https://
|
|
811
|
+
{ event: 1, method: 1, url: 'https://eventrack.me/impression' },
|
|
812
|
+
{ event: 1, method: 2, url: 'https://eventrack-js.me/impression-1' }
|
|
813
813
|
]
|
|
814
814
|
};
|
|
815
815
|
|
|
@@ -845,9 +845,11 @@ describe('mediakeysBidAdapter', function () {
|
|
|
845
845
|
expect(response[0].native.clickUrl).to.exist;
|
|
846
846
|
expect(response[0].native.clickTrackers).to.exist;
|
|
847
847
|
expect(response[0].native.clickTrackers.length).to.equal(1);
|
|
848
|
-
expect(response[0].native.javascriptTrackers).to.equal('<script src="https://click-script.me"></script>');
|
|
849
848
|
expect(response[0].native.impressionTrackers).to.exist;
|
|
850
849
|
expect(response[0].native.impressionTrackers.length).to.equal(1);
|
|
850
|
+
expect(response[0].native.impressionTrackers[0]).to.equal('https://eventrack.me/impression');
|
|
851
|
+
expect(response[0].native.javascriptTrackers).to.exist;
|
|
852
|
+
expect(response[0].native.javascriptTrackers).to.equal('<script async src="https://eventrack-js.me/impression-1"></script>');
|
|
851
853
|
});
|
|
852
854
|
|
|
853
855
|
it('should ignore eventtrackers with a unsupported type', function() {
|
|
@@ -859,6 +861,21 @@ describe('mediakeysBidAdapter', function () {
|
|
|
859
861
|
expect(response[0].native.impressionTrackers).to.exist;
|
|
860
862
|
expect(response[0].native.impressionTrackers.length).to.equal(0);
|
|
861
863
|
})
|
|
864
|
+
|
|
865
|
+
it('Should handle multiple javascriptTrackers in one single string', () => {
|
|
866
|
+
const rawServerResponseNativeCopy = utils.deepClone(rawServerResponseNative);
|
|
867
|
+
const nativeObjectCopy = utils.deepClone(nativeObject);
|
|
868
|
+
nativeObjectCopy.eventtrackers.push(
|
|
869
|
+
{
|
|
870
|
+
event: 1,
|
|
871
|
+
method: 2,
|
|
872
|
+
url: 'https://eventrack-js.me/impression-2'
|
|
873
|
+
},)
|
|
874
|
+
rawServerResponseNativeCopy.body.seatbid[0].bid[0].adm = JSON.stringify(nativeObjectCopy);
|
|
875
|
+
const response = spec.interpretResponse(rawServerResponseNativeCopy, request);
|
|
876
|
+
const expected = '<script async src=\"https://eventrack-js.me/impression-1\"></script>\n<script async src=\"https://eventrack-js.me/impression-2\"></script>';
|
|
877
|
+
expect(response[0].native.javascriptTrackers).to.equal(expected);
|
|
878
|
+
});
|
|
862
879
|
});
|
|
863
880
|
});
|
|
864
881
|
|
|
@@ -125,12 +125,23 @@ describe('nativoBidAdapterTests', function () {
|
|
|
125
125
|
expect(request.url).to.include('ntv_pas')
|
|
126
126
|
})
|
|
127
127
|
|
|
128
|
+
it('ntv_url should contain query params', function () {
|
|
129
|
+
const request = spec.buildRequests(bidRequests, {
|
|
130
|
+
bidderRequestId: 123456,
|
|
131
|
+
refererInfo: {
|
|
132
|
+
location: 'https://www.test.com?queryTest=true',
|
|
133
|
+
},
|
|
134
|
+
})
|
|
135
|
+
console.log(request.url) // eslint-disable-line no-console
|
|
136
|
+
expect(request.url).to.include(encodeURIComponent('?queryTest=true'))
|
|
137
|
+
})
|
|
138
|
+
|
|
128
139
|
it('ntv_url parameter should NOT be empty even if the utl parameter was set as an empty value', function () {
|
|
129
140
|
bidRequests[0].params.url = ''
|
|
130
141
|
const request = spec.buildRequests(bidRequests, {
|
|
131
142
|
bidderRequestId: 123456,
|
|
132
143
|
refererInfo: {
|
|
133
|
-
|
|
144
|
+
location: 'https://www.test.com',
|
|
134
145
|
},
|
|
135
146
|
})
|
|
136
147
|
|
|
@@ -144,7 +155,7 @@ describe('nativoBidAdapterTests', function () {
|
|
|
144
155
|
const request = spec.buildRequests(bidRequests, {
|
|
145
156
|
bidderRequestId: 123456,
|
|
146
157
|
refererInfo: {
|
|
147
|
-
|
|
158
|
+
location: 'https://www.test.com',
|
|
148
159
|
},
|
|
149
160
|
})
|
|
150
161
|
|