prebid.js 9.46.0 → 9.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/codeql/queries/jsonRequestContentType.ql +18 -0
- package/AGENTS.md +42 -0
- package/CLAUDE.md +1 -0
- package/babelConfig.js +1 -1
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/advangUtils.js +1 -1
- package/dist/adverxoBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.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/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/blueBidAdapter.js +1 -1
- package/dist/blueUtils.js +1 -0
- package/dist/bmsBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiUtils.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/czechAdIdSystem.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +16 -2
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/dynamicAdBoostRtdProvider.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/excoBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/gptUtils.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsBidAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentId.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/luponmediaBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/madsenseBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/medianetUtils.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobilefuseBidAdapter.js +1 -1
- package/dist/nativeryBidAdapter.js +1 -0
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360Utils.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/nodalsAiRtdProvider.js +1 -1
- package/dist/not-for-prod/prebid.js +187 -184
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pinkLionBidAdapter.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.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/pubmaticRtdProvider.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pubxaiRtdProvider.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -1
- package/dist/rtbhouseBidAdapter.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/showheroes-bsBidAdapter.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/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unifiedIdSystem.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/xeUtils.js +1 -1
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/eslint.config.js +1 -3
- package/gulpHelpers.js +3 -6
- package/gulpfile.js +25 -24
- package/karma.conf.maker.js +1 -3
- package/libraries/advangUtils/index.js +3 -4
- package/libraries/blueUtils/bidderUtils.js +113 -0
- package/libraries/browsiUtils/browsiUtils.js +1 -2
- package/libraries/gptUtils/gptUtils.js +1 -2
- package/libraries/liveIntentId/shared.js +4 -0
- package/libraries/xeUtils/bidderUtils.js +3 -4
- package/modules/adagioBidAdapter.js +1 -2
- package/modules/addefendBidAdapter.md +1 -1
- package/modules/adtrgtmeBidAdapter.js +6 -8
- package/modules/aduptechBidAdapter.md +1 -1
- package/modules/adverxoBidAdapter.js +3 -3
- package/modules/blueBidAdapter.js +24 -104
- package/modules/bmsBidAdapter.js +25 -105
- package/modules/concertBidAdapter.md +1 -1
- package/modules/contxtfulBidAdapter.js +56 -10
- package/modules/conversantBidAdapter.js +0 -58
- package/modules/cwireBidAdapter.js +8 -0
- package/modules/czechAdIdSystem.js +13 -3
- package/modules/dynamicAdBoostRtdProvider.js +16 -33
- package/modules/dynamicAdBoostRtdProvider.md +1 -6
- package/modules/ixBidAdapter.js +2 -3
- package/modules/luponmediaBidAdapter.js +117 -522
- package/modules/luponmediaBidAdapter.md +2 -3
- package/modules/mediasquareBidAdapter.js +14 -20
- package/modules/microadBidAdapter.js +0 -1
- package/modules/nativeryBidAdapter.js +135 -0
- package/modules/nativeryBidAdapter.md +95 -0
- package/modules/nativoBidAdapter.js +3 -3
- package/modules/onetagBidAdapter.js +0 -1
- package/modules/pinkLionBidAdapter.js +17 -0
- package/modules/pinkLionBidAdapter.md +79 -0
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -1
- package/modules/priceFloors.js +2 -2
- package/modules/pubmaticBidAdapter.js +4 -1
- package/modules/qortexRtdProvider.md +1 -1
- package/modules/reconciliationRtdProvider.md +4 -4
- package/modules/rtbhouseBidAdapter.js +4 -83
- package/modules/rubiconBidAdapter.js +1 -1
- package/modules/sspBCBidAdapter.js +1 -1
- package/modules/stroeerCoreBidAdapter.js +3 -3
- package/modules/stvBidAdapter.js +19 -14
- package/modules/topicsFpdModule.md +1 -1
- package/modules/unifiedIdSystem.js +8 -1
- package/modules/userId/eids.js +15 -0
- package/modules/videoModule/index.js +0 -1
- package/modules/videoModule/videoImpressionVerifier.js +0 -1
- package/modules/yieldlabBidAdapter.js +1 -2
- package/modules/yieldmoBidAdapter.js +1 -2
- package/package.json +13 -20
- package/src/Renderer.js +1 -2
- package/src/adapterManager.js +14 -4
- package/src/auction.js +2 -3
- package/src/config.js +1 -2
- package/src/cpmBucketManager.js +1 -2
- package/src/secureCreatives.js +2 -3
- package/src/targeting.js +1 -2
- package/test/fake-server/README.md +3 -3
- package/test/helpers/index_adapter_utils.js +2 -2
- package/test/helpers/testing-utils.js +1 -1
- package/test/spec/auctionmanager_spec.js +2 -3
- package/test/spec/fpd/enrichment_spec.js +1 -1
- package/test/spec/libraries/greedy/greedyPromise_spec.js +2 -2
- package/test/spec/modules/adfBidAdapter_spec.js +1 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +25 -9
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +2 -4
- package/test/spec/modules/adverxoBidAdapter_spec.js +25 -1
- package/test/spec/modules/afpBidAdapter_spec.js +0 -1
- package/test/spec/modules/bliinkBidAdapter_spec.js +15 -7
- package/test/spec/modules/contxtfulBidAdapter_spec.js +606 -82
- package/test/spec/modules/conversantBidAdapter_spec.js +1 -139
- package/test/spec/modules/cwireBidAdapter_spec.js +2 -2
- package/test/spec/modules/czechAdIdSystem_spec.js +4 -4
- package/test/spec/modules/displayioBidAdapter_spec.js +1 -1
- package/test/spec/modules/dynamicAdBoostRtdProvider_spec.js +0 -42
- package/test/spec/modules/enrichmentLiftMeasurement_spec.js +8 -8
- package/test/spec/modules/hypelabBidAdapter_spec.js +17 -11
- package/test/spec/modules/iasRtdProvider_spec.js +2 -2
- package/test/spec/modules/id5IdSystem_spec.js +1 -1
- package/test/spec/modules/idxIdSystem_spec.js +1 -2
- package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +25 -25
- package/test/spec/modules/intentIqIdSystem_spec.js +32 -32
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -5
- package/test/spec/modules/liveIntentIdSystem_spec.js +14 -0
- package/test/spec/modules/lmpIdSystem_spec.js +1 -2
- package/test/spec/modules/lockrAIMIdSystem_spec.js +2 -2
- package/test/spec/modules/luceadBidAdapter_spec.js +1 -1
- package/test/spec/modules/luponmediaBidAdapter_spec.js +186 -324
- package/test/spec/modules/mediaeyesBidAdapter_spec.js +1 -1
- package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -2
- package/test/spec/modules/mediasquareBidAdapter_spec.js +13 -2
- package/test/spec/modules/missenaBidAdapter_spec.js +1 -1
- package/test/spec/modules/nativeryBidAdapter_spec.js +195 -0
- package/test/spec/modules/nexx360BidAdapter_spec.js +6 -6
- package/test/spec/modules/oguryBidAdapter_spec.js +2 -2
- package/test/spec/modules/omsBidAdapter_spec.js +1 -1
- package/test/spec/modules/onetagBidAdapter_spec.js +1 -2
- package/test/spec/modules/onomagicBidAdapter_spec.js +2 -2
- package/test/spec/modules/overtoneRtdProvider_spec.mjs +1 -1
- package/test/spec/modules/permutiveIdentityManagerIdSystem_spec.js +17 -14
- package/test/spec/modules/pinkLionBidAdapter_spec.js +480 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -2
- package/test/spec/modules/previousAuctionInfo_spec.js +2 -2
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/pubmaticBidAdapter_spec.js +19 -1
- package/test/spec/modules/pubmaticRtdProvider_spec.js +16 -17
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +0 -182
- package/test/spec/modules/rubiconBidAdapter_spec.js +3 -4
- package/test/spec/modules/sizeMappingV2_spec.js +1 -1
- package/test/spec/modules/sizeMapping_spec.js +2 -3
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +36 -26
- package/test/spec/modules/stvBidAdapter_spec.js +108 -40
- package/test/spec/modules/topLevelPaapi_spec.js +1 -1
- package/test/spec/modules/tpmnBidAdapter_spec.js +1 -1
- package/test/spec/modules/ttdBidAdapter_spec.js +1 -1
- package/test/spec/modules/unifiedIdSystem_spec.js +20 -0
- package/test/spec/modules/userId_spec.js +1 -1
- package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1 -1
- package/test/spec/modules/videoModule/submodules/videojsVideoProvider_spec.js +1 -1
- package/test/spec/modules/yieldmoBidAdapter_spec.js +2 -2
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -2
- package/test/spec/unit/core/adapterManager_spec.js +29 -17
- package/test/spec/unit/core/targeting_spec.js +1 -1
- package/test/spec/unit/pbjs_api_spec.js +4 -5
- package/test/spec/utils_spec.js +20 -12
- package/test/test_deps.js +1 -1
- package/nightwatch.browserstack.json +0 -46
- package/nightwatch.conf.js +0 -36
- package/nightwatch.json +0 -40
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec, converter } from 'modules/nativeryBidAdapter';
|
|
3
|
+
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
4
|
+
import * as utils from 'src/utils.js';
|
|
5
|
+
|
|
6
|
+
const ENDPOINT = 'https://hb.nativery.com/openrtb2/auction';
|
|
7
|
+
const MAX_IMPS_PER_REQUEST = 10;
|
|
8
|
+
|
|
9
|
+
const bid = {
|
|
10
|
+
bidder: 'nativery',
|
|
11
|
+
params: {
|
|
12
|
+
widgetId: 'abc123',
|
|
13
|
+
},
|
|
14
|
+
adUnitCode: '/adunit-code/test-path',
|
|
15
|
+
bidId: 'test-bid-id-1',
|
|
16
|
+
bidderRequestId: 'test-bid-request-1',
|
|
17
|
+
auctionId: 'test-auction-1',
|
|
18
|
+
transactionId: 'test-transactionId-1',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const bidRequests = [
|
|
22
|
+
{
|
|
23
|
+
...bid,
|
|
24
|
+
mediaTypes: {
|
|
25
|
+
banner: {
|
|
26
|
+
sizes: [
|
|
27
|
+
[300, 250],
|
|
28
|
+
[300, 600],
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
ortb2: {},
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
describe('NativeryAdapter', function () {
|
|
37
|
+
const adapter = newBidder(spec);
|
|
38
|
+
let sandBox;
|
|
39
|
+
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
sandBox = sinon.createSandbox();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
afterEach(() => sandBox.restore());
|
|
45
|
+
|
|
46
|
+
describe('inherited functions', function () {
|
|
47
|
+
it('exists and is a function', function () {
|
|
48
|
+
expect(adapter.callBids).to.exist.and.to.be.a('function');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe('isBidRequestValid', function () {
|
|
53
|
+
it('should return true when required params found', function () {
|
|
54
|
+
expect(spec.isBidRequestValid(bid)).to.equal(true);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('should return false when required params are not passed', function () {
|
|
58
|
+
const invalidBid = Object.assign({}, bid);
|
|
59
|
+
delete invalidBid.params.widgetId;
|
|
60
|
+
expect(spec.isBidRequestValid(invalidBid)).to.equal(false);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe('buildRequests', function () {
|
|
65
|
+
it('should build the request', function () {
|
|
66
|
+
const request = spec.buildRequests(bidRequests, {});
|
|
67
|
+
expect(request.method).to.equal('POST');
|
|
68
|
+
expect(request.url).to.equal(ENDPOINT);
|
|
69
|
+
expect(request.options.withCredentials).to.equal(true);
|
|
70
|
+
expect(typeof request.data.id).to.equal('string');
|
|
71
|
+
expect(request.data.imp).to.be.an('array');
|
|
72
|
+
expect(request.data.imp.length).to.equal(1);
|
|
73
|
+
request.data.imp.forEach((data) => {
|
|
74
|
+
expect(data.id).to.exist.and.to.be.a('string');
|
|
75
|
+
expect(data).to.have.nested.property('banner.format');
|
|
76
|
+
expect(data.ext.nativery.widgetId).to.equal(bid.params.widgetId);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
// build multi bid request
|
|
80
|
+
const multiBidRequest = Array(12).fill(bidRequests[0]);
|
|
81
|
+
|
|
82
|
+
it('should build the request splitting in chuncks', function () {
|
|
83
|
+
const request = spec.buildRequests(multiBidRequest, {});
|
|
84
|
+
|
|
85
|
+
const expectedNumRequests = Math.ceil(
|
|
86
|
+
multiBidRequest.length / MAX_IMPS_PER_REQUEST
|
|
87
|
+
);
|
|
88
|
+
expect(request).to.be.an('array').that.has.lengthOf(expectedNumRequests);
|
|
89
|
+
|
|
90
|
+
// Check each object of the request
|
|
91
|
+
request.forEach((req) => {
|
|
92
|
+
expect(req).to.have.property('method', 'POST');
|
|
93
|
+
expect(req).to.have.property('url', ENDPOINT);
|
|
94
|
+
expect(req).to.have.property('data').that.is.an('object');
|
|
95
|
+
expect(req.data).to.have.property('imp').that.is.an('array');
|
|
96
|
+
// Each chunk must contain at most MAX_IMPS_PER_REQUEST elements.
|
|
97
|
+
expect(req.data.imp.length).to.be.at.most(MAX_IMPS_PER_REQUEST);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe('interpretResponse', function () {
|
|
103
|
+
const bidderRequest = spec.buildRequests(bidRequests, {});
|
|
104
|
+
it('should return [] if serverResponse.body is falsy', function () {
|
|
105
|
+
// Case: serverResponse.body does not exist
|
|
106
|
+
let serverResponse = {};
|
|
107
|
+
let result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
108
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
109
|
+
|
|
110
|
+
// Case: serverResponse.body is null
|
|
111
|
+
serverResponse = { body: null };
|
|
112
|
+
result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
113
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('should return [] if serverResponse.body is not an object', function () {
|
|
117
|
+
const serverResponse = { body: 'not an object' };
|
|
118
|
+
const result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
119
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('should return [] if serverResponse.body.seatbid is not an array', function () {
|
|
123
|
+
const serverResponse = {
|
|
124
|
+
body: {
|
|
125
|
+
seatbid: {}, // Not an array
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
130
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it('should correctly process a response with a seatbid array and return bids', function () {
|
|
134
|
+
const bidsMock = [{ bid: 1 }, { bid: 2 }];
|
|
135
|
+
const serverResponse = {
|
|
136
|
+
body: {
|
|
137
|
+
seatbid: [{}],
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
sandBox.stub(converter, 'fromORTB').returns({ bids: bidsMock });
|
|
142
|
+
|
|
143
|
+
const result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
144
|
+
expect(result).to.deep.equal(bidsMock);
|
|
145
|
+
sinon.assert.calledWith(converter.fromORTB, {
|
|
146
|
+
request: bidderRequest.data,
|
|
147
|
+
response: serverResponse.body,
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should log a warning if deepAccess returns errors, but still return bids', function () {
|
|
152
|
+
const logWarnSpy = sinon.spy(utils, 'logWarn');
|
|
153
|
+
const bidsMock = [{ bid: 1 }];
|
|
154
|
+
const bidderRequest = spec.buildRequests(bidRequests, {});
|
|
155
|
+
|
|
156
|
+
const errors = ['error1', 'error2'];
|
|
157
|
+
const serverResponse = {
|
|
158
|
+
body: {
|
|
159
|
+
seatbid: [{}],
|
|
160
|
+
ext: {
|
|
161
|
+
errors: {
|
|
162
|
+
nativery: errors,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
sandBox.stub(converter, 'fromORTB').returns({ bids: bidsMock });
|
|
169
|
+
|
|
170
|
+
const result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
171
|
+
expect(result).to.deep.equal(bidsMock);
|
|
172
|
+
expect(logWarnSpy.calledOnceWithExactly(`Nativery: Error in bid response ${JSON.stringify(errors)}`)).to.be.true;
|
|
173
|
+
logWarnSpy.restore();
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('should return [] and log an error if converter.fromORTB throws an error', function () {
|
|
177
|
+
const logErrorSpy = sinon.spy(utils, 'logError');
|
|
178
|
+
const bidderRequest = spec.buildRequests(bidRequests, {});
|
|
179
|
+
|
|
180
|
+
const serverResponse = {
|
|
181
|
+
body: {
|
|
182
|
+
seatbid: [{}],
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const error = new Error('Test error');
|
|
187
|
+
sandBox.stub(converter, 'fromORTB').throws(error);
|
|
188
|
+
|
|
189
|
+
const result = spec.interpretResponse(serverResponse, bidderRequest);
|
|
190
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
191
|
+
expect(logErrorSpy.calledOnceWithExactly(`Nativery: unhandled error in bid response ${error.message}`)).to.be.true;
|
|
192
|
+
logErrorSpy.restore();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
@@ -31,7 +31,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
31
31
|
}],
|
|
32
32
|
},
|
|
33
33
|
};
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
|
|
36
36
|
describe('isBidRequestValid()', () => {
|
|
37
37
|
let bannerBid;
|
|
@@ -226,7 +226,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
226
226
|
sizes: [[728, 90], [970, 250]]
|
|
227
227
|
}
|
|
228
228
|
},
|
|
229
|
-
|
|
229
|
+
|
|
230
230
|
adUnitCode: 'div-2-abcd',
|
|
231
231
|
transactionId: '6196885d-4e76-40dc-a09c-906ed232626b',
|
|
232
232
|
sizes: [[728, 90], [970, 250]],
|
|
@@ -523,7 +523,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
523
523
|
},
|
|
524
524
|
},
|
|
525
525
|
};
|
|
526
|
-
|
|
526
|
+
|
|
527
527
|
const output = spec.interpretResponse(response);
|
|
528
528
|
const expectedOutput = [{
|
|
529
529
|
requestId: '263cba3b8bfb72',
|
|
@@ -575,7 +575,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
575
575
|
},
|
|
576
576
|
},
|
|
577
577
|
};
|
|
578
|
-
|
|
578
|
+
|
|
579
579
|
const output = spec.interpretResponse(response);
|
|
580
580
|
const expectedOutut = [{
|
|
581
581
|
requestId: '4ce809b61a3928',
|
|
@@ -631,7 +631,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
631
631
|
},
|
|
632
632
|
},
|
|
633
633
|
};
|
|
634
|
-
|
|
634
|
+
|
|
635
635
|
const output = spec.interpretResponse(response);
|
|
636
636
|
const expectOutput = [{
|
|
637
637
|
requestId: '23e11d845514bb',
|
|
@@ -692,7 +692,7 @@ describe('Nexx360 bid adapter tests', () => {
|
|
|
692
692
|
},
|
|
693
693
|
},
|
|
694
694
|
}];
|
|
695
|
-
expect(output).to.eql(expectOutput);
|
|
695
|
+
expect(output).to.eql(expectOutput);
|
|
696
696
|
});
|
|
697
697
|
});
|
|
698
698
|
|
|
@@ -941,10 +941,10 @@ describe('OguryBidAdapter', () => {
|
|
|
941
941
|
|
|
942
942
|
const bid = { nurl: 'http://url.co/win' };
|
|
943
943
|
|
|
944
|
-
expect(ortbConverterProps.bidResponse(buildBidResponseSpy, utils.deepClone(bid), {})).to.deep.equal({
|
|
944
|
+
expect(ortbConverterProps.bidResponse(buildBidResponseSpy, utils.deepClone(bid), {})).to.deep.equal({
|
|
945
945
|
...bidResponse,
|
|
946
946
|
currency: 'USD',
|
|
947
|
-
nurl: bid.nurl
|
|
947
|
+
nurl: bid.nurl
|
|
948
948
|
});
|
|
949
949
|
|
|
950
950
|
sinon.assert.calledWith(buildBidResponseSpy, {}, {});
|
|
@@ -331,7 +331,7 @@ describe('omsBidAdapter', function () {
|
|
|
331
331
|
|
|
332
332
|
context('when element is partially in view', function () {
|
|
333
333
|
it('returns percentage', function () {
|
|
334
|
-
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
334
|
+
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
335
335
|
getWinDimensionsStub.returns({ innerHeight: win.innerHeight, innerWidth: win.innerWidth });
|
|
336
336
|
Object.assign(element, {width: 800, height: 800});
|
|
337
337
|
const request = spec.buildRequests(bidRequests);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { spec, isValid, hasTypeVideo, isSchainValid } from 'modules/onetagBidAdapter.js';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
|
-
import { find } from 'src/polyfill.js';
|
|
4
3
|
import { BANNER, VIDEO, NATIVE } from 'src/mediaTypes.js';
|
|
5
4
|
import { INSTREAM, OUTSTREAM } from 'src/video.js';
|
|
6
5
|
import { toOrtbNativeRequest } from 'src/native.js';
|
|
@@ -724,7 +723,7 @@ describe('onetag', function () {
|
|
|
724
723
|
let dataItem = interpretedResponse[i];
|
|
725
724
|
expect(dataItem).to.include.all.keys('requestId', 'cpm', 'width', 'height', 'ttl', 'creativeId', 'netRevenue', 'currency', 'meta', 'dealId');
|
|
726
725
|
if (dataItem.meta.mediaType === VIDEO) {
|
|
727
|
-
const { context } =
|
|
726
|
+
const { context } = requestData.bids.find((item) => item.bidId === dataItem.requestId);
|
|
728
727
|
if (context === INSTREAM) {
|
|
729
728
|
expect(dataItem).to.include.all.keys('videoCacheKey', 'vastUrl');
|
|
730
729
|
expect(dataItem.vastUrl).to.be.a('string');
|
|
@@ -161,7 +161,7 @@ describe('onomagicBidAdapter', function() {
|
|
|
161
161
|
|
|
162
162
|
context('when element is partially in view', function() {
|
|
163
163
|
it('returns percentage', function() {
|
|
164
|
-
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
164
|
+
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
165
165
|
getWinDimensionsStub.returns({ innerHeight: win.innerHeight, innerWidth: win.innerWidth });
|
|
166
166
|
Object.assign(element, { width: 800, height: 800 });
|
|
167
167
|
const request = spec.buildRequests(bidRequests);
|
|
@@ -172,7 +172,7 @@ describe('onomagicBidAdapter', function() {
|
|
|
172
172
|
|
|
173
173
|
context('when width or height of the element is zero', function() {
|
|
174
174
|
it('try to use alternative values', function() {
|
|
175
|
-
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
175
|
+
const getWinDimensionsStub = sandbox.stub(utils, 'getWinDimensions')
|
|
176
176
|
getWinDimensionsStub.returns({ innerHeight: win.innerHeight, innerWidth: win.innerWidth });
|
|
177
177
|
Object.assign(element, { width: 0, height: 0 });
|
|
178
178
|
bidRequests[0].mediaTypes.banner.sizes = [[800, 2400]];
|
|
@@ -26,7 +26,7 @@ describe('Overtone RTD Submodule with Test URLs', function () {
|
|
|
26
26
|
}
|
|
27
27
|
throw new Error('Unexpected URL in test');
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
getBidRequestDataStub = sinon.stub(overtoneRtdProvider, 'getBidRequestData').callsFake((config, callback) => {
|
|
31
31
|
if (config.shouldFail) {
|
|
32
32
|
return;
|
|
@@ -54,24 +54,27 @@ describe('permutiveIdentityManagerIdSystem', () => {
|
|
|
54
54
|
|
|
55
55
|
it('will optionally wait for Permutive SDK if no identities are in local storage already', async () => {
|
|
56
56
|
const cleanup = setWindowPermutive()
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
'
|
|
64
|
-
|
|
65
|
-
'ext': {
|
|
66
|
-
'abTestingControlGroup': false,
|
|
57
|
+
try {
|
|
58
|
+
const result = permutiveIdentityManagerIdSubmodule.getId({params: {ajaxTimeout: 50}})
|
|
59
|
+
expect(result).not.to.be.undefined
|
|
60
|
+
expect(result.id).to.be.undefined
|
|
61
|
+
expect(result.callback).not.to.be.undefined
|
|
62
|
+
const expected = {
|
|
63
|
+
'id5id': {
|
|
64
|
+
'uid': '0',
|
|
67
65
|
'linkType': 0,
|
|
68
|
-
'
|
|
66
|
+
'ext': {
|
|
67
|
+
'abTestingControlGroup': false,
|
|
68
|
+
'linkType': 0,
|
|
69
|
+
'pba': 'EVqgf9vY0fSrsrqJZMOm+Q=='
|
|
70
|
+
}
|
|
69
71
|
}
|
|
70
72
|
}
|
|
73
|
+
const r = await new Promise(result.callback)
|
|
74
|
+
expect(r).to.deep.equal(expected)
|
|
75
|
+
} finally {
|
|
76
|
+
cleanup()
|
|
71
77
|
}
|
|
72
|
-
const r = await new Promise(result.callback)
|
|
73
|
-
expect(r).to.deep.equal(expected)
|
|
74
|
-
cleanup()
|
|
75
78
|
})
|
|
76
79
|
})
|
|
77
80
|
})
|