prebid.js 7.36.0 → 7.37.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/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.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/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- 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/incrxBidAdapter.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/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/livewrappedBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.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/mediagoBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -0
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +124 -123
- 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/proxistoreBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/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/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/uid2IdSystem.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/modules/adagioBidAdapter.js +14 -14
- package/modules/adagioBidAdapter.md +3 -1
- package/modules/criteoBidAdapter.js +4 -5
- package/modules/cwireBidAdapter.md +9 -3
- package/modules/discoveryBidAdapter.js +22 -12
- package/modules/incrxBidAdapter.js +2 -0
- package/modules/kueezRtbBidAdapter.js +54 -20
- package/modules/livewrappedBidAdapter.js +28 -16
- package/modules/mediagoBidAdapter.js +22 -17
- package/modules/minutemediaplusBidAdapter.js +291 -0
- package/modules/minutemediaplusBidAdapter.md +35 -0
- package/modules/nextMillenniumBidAdapter.js +9 -1
- package/modules/prebidServerBidAdapter/ortbConverter.js +6 -0
- package/modules/proxistoreBidAdapter.js +2 -2
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/sonobiBidAdapter.js +1 -10
- package/modules/tripleliftBidAdapter.js +4 -0
- package/modules/yieldmoBidAdapter.js +1 -0
- package/package.json +1 -1
- package/src/adapterManager.js +30 -14
- package/src/utils.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -2
- package/test/spec/modules/criteoBidAdapter_spec.js +24 -1
- package/test/spec/modules/incrxBidAdapter_spec.js +4 -0
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +63 -22
- package/test/spec/modules/livewrappedBidAdapter_spec.js +267 -2
- package/test/spec/modules/minutemediaplusBidAdapter_spec.js +519 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +11 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +56 -0
- package/test/spec/modules/proxistoreBidAdapter_spec.js +2 -2
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +3 -1
- package/test/spec/modules/sonobiBidAdapter_spec.js +3 -25
- package/test/spec/modules/tripleliftBidAdapter_spec.js +7 -0
- package/test/spec/unit/core/adapterManager_spec.js +147 -0
package/src/adapterManager.js
CHANGED
|
@@ -65,15 +65,21 @@ var _analyticsRegistry = {};
|
|
|
65
65
|
|
|
66
66
|
function getBids({bidderCode, auctionId, bidderRequestId, adUnits, src, metrics}) {
|
|
67
67
|
return adUnits.reduce((result, adUnit) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
const bids = adUnit.bids.filter(bid => bid.bidder === bidderCode);
|
|
69
|
+
if (bidderCode == null && bids.length === 0 && adUnit.s2sBid != null) {
|
|
70
|
+
bids.push({bidder: null});
|
|
71
|
+
}
|
|
72
|
+
result.push(
|
|
73
|
+
bids.reduce((bids, bid) => {
|
|
74
|
+
bid = Object.assign({}, bid,
|
|
75
|
+
{ortb2Imp: mergeDeep({}, adUnit.ortb2Imp, bid.ortb2Imp)},
|
|
76
|
+
getDefinedParams(adUnit, [
|
|
77
|
+
'nativeParams',
|
|
78
|
+
'nativeOrtbRequest',
|
|
79
|
+
'mediaType',
|
|
80
|
+
'renderer'
|
|
81
|
+
])
|
|
82
|
+
);
|
|
77
83
|
|
|
78
84
|
const mediaTypes = bid.mediaTypes == null ? adUnit.mediaTypes : bid.mediaTypes
|
|
79
85
|
|
|
@@ -128,9 +134,18 @@ export const filterBidsForAdUnit = hook('sync', _filterBidsForAdUnit, 'filterBid
|
|
|
128
134
|
|
|
129
135
|
function getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {
|
|
130
136
|
let adUnitsCopy = deepClone(adUnits);
|
|
137
|
+
let hasModuleBids = false;
|
|
131
138
|
|
|
132
139
|
adUnitsCopy.forEach((adUnit) => {
|
|
133
140
|
// filter out client side bids
|
|
141
|
+
const s2sBids = adUnit.bids.filter((b) => b.module === 'pbsBidAdapter' && b.params?.configName === s2sConfig.configName);
|
|
142
|
+
if (s2sBids.length === 1) {
|
|
143
|
+
adUnit.s2sBid = s2sBids[0];
|
|
144
|
+
hasModuleBids = true;
|
|
145
|
+
adUnit.ortb2Imp = mergeDeep({}, adUnit.s2sBid.ortb2Imp, adUnit.ortb2Imp);
|
|
146
|
+
} else if (s2sBids.length > 1) {
|
|
147
|
+
logWarn('Multiple "module" bids for the same s2s configuration; all will be ignored', s2sBids);
|
|
148
|
+
}
|
|
134
149
|
adUnit.bids = filterBidsForAdUnit(adUnit.bids, s2sConfig)
|
|
135
150
|
.map((bid) => {
|
|
136
151
|
bid.bid_id = getUniqueIdentifierStr();
|
|
@@ -140,9 +155,9 @@ function getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {
|
|
|
140
155
|
|
|
141
156
|
// don't send empty requests
|
|
142
157
|
adUnitsCopy = adUnitsCopy.filter(adUnit => {
|
|
143
|
-
return adUnit.bids.length !== 0;
|
|
158
|
+
return adUnit.bids.length !== 0 || adUnit.s2sBid != null;
|
|
144
159
|
});
|
|
145
|
-
return adUnitsCopy;
|
|
160
|
+
return {adUnits: adUnitsCopy, hasModuleBids};
|
|
146
161
|
}
|
|
147
162
|
|
|
148
163
|
function getAdUnitCopyForClientAdapters(adUnits) {
|
|
@@ -244,11 +259,12 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
244
259
|
|
|
245
260
|
_s2sConfigs.forEach(s2sConfig => {
|
|
246
261
|
if (s2sConfig && s2sConfig.enabled) {
|
|
247
|
-
let adUnitsS2SCopy = getAdUnitCopyForPrebidServer(adUnits, s2sConfig);
|
|
262
|
+
let {adUnits: adUnitsS2SCopy, hasModuleBids} = getAdUnitCopyForPrebidServer(adUnits, s2sConfig);
|
|
248
263
|
|
|
249
264
|
// uniquePbsTid is so we know which server to send which bids to during the callBids function
|
|
250
265
|
let uniquePbsTid = generateUUID();
|
|
251
|
-
|
|
266
|
+
|
|
267
|
+
(serverBidders.length === 0 && hasModuleBids ? [null] : serverBidders).forEach(bidderCode => {
|
|
252
268
|
const bidderRequestId = getUniqueIdentifierStr();
|
|
253
269
|
const metrics = auctionMetrics.fork();
|
|
254
270
|
const bidderRequest = addOrtb2({
|
|
@@ -279,7 +295,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
279
295
|
|
|
280
296
|
bidRequests.forEach(request => {
|
|
281
297
|
if (request.adUnitsS2SCopy === undefined) {
|
|
282
|
-
request.adUnitsS2SCopy = adUnitsS2SCopy.filter(
|
|
298
|
+
request.adUnitsS2SCopy = adUnitsS2SCopy.filter(au => au.bids.length > 0 || au.s2sBid != null);
|
|
283
299
|
}
|
|
284
300
|
});
|
|
285
301
|
}
|
package/src/utils.js
CHANGED
|
@@ -710,7 +710,7 @@ export function getKeyByValue(obj, value) {
|
|
|
710
710
|
export function getBidderCodes(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
711
711
|
// this could memoize adUnits
|
|
712
712
|
return adUnits.map(unit => unit.bids.map(bid => bid.bidder)
|
|
713
|
-
.reduce(flatten, [])).reduce(flatten, []).filter(uniques);
|
|
713
|
+
.reduce(flatten, [])).reduce(flatten, []).filter((bidder) => typeof bidder !== 'undefined').filter(uniques);
|
|
714
714
|
}
|
|
715
715
|
|
|
716
716
|
export function isGptPubadsDefined() {
|
|
@@ -381,8 +381,8 @@ describe('Adagio bid adapter', () => {
|
|
|
381
381
|
context: 'outstream',
|
|
382
382
|
playerSize: [[300, 250]],
|
|
383
383
|
mimes: ['video/mp4'],
|
|
384
|
-
api:
|
|
385
|
-
playbackmethod: [
|
|
384
|
+
api: 'val', // will be removed because invalid
|
|
385
|
+
playbackmethod: ['val'], // will be removed because invalid
|
|
386
386
|
}
|
|
387
387
|
},
|
|
388
388
|
}).withParams({
|
|
@@ -1156,6 +1156,18 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1156
1156
|
it('should properly build a request with first party data', function () {
|
|
1157
1157
|
const siteData = {
|
|
1158
1158
|
keywords: ['power tools'],
|
|
1159
|
+
content: {
|
|
1160
|
+
data: [{
|
|
1161
|
+
name: 'some_provider',
|
|
1162
|
+
ext: {
|
|
1163
|
+
segtax: 3
|
|
1164
|
+
},
|
|
1165
|
+
segment: [
|
|
1166
|
+
{ 'id': '1001' },
|
|
1167
|
+
{ 'id': '1002' }
|
|
1168
|
+
]
|
|
1169
|
+
}]
|
|
1170
|
+
},
|
|
1159
1171
|
ext: {
|
|
1160
1172
|
data: {
|
|
1161
1173
|
pageType: 'article'
|
|
@@ -1164,6 +1176,16 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1164
1176
|
};
|
|
1165
1177
|
const userData = {
|
|
1166
1178
|
gender: 'M',
|
|
1179
|
+
data: [{
|
|
1180
|
+
name: 'some_provider',
|
|
1181
|
+
ext: {
|
|
1182
|
+
segtax: 3
|
|
1183
|
+
},
|
|
1184
|
+
segment: [
|
|
1185
|
+
{ 'id': '1001' },
|
|
1186
|
+
{ 'id': '1002' }
|
|
1187
|
+
]
|
|
1188
|
+
}],
|
|
1167
1189
|
ext: {
|
|
1168
1190
|
data: {
|
|
1169
1191
|
registered: true
|
|
@@ -1203,7 +1225,8 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1203
1225
|
|
|
1204
1226
|
const request = spec.buildRequests(bidRequests, { ...bidderRequest, ortb2 });
|
|
1205
1227
|
expect(request.data.publisher.ext).to.deep.equal({ data: { pageType: 'article' } });
|
|
1206
|
-
expect(request.data.user
|
|
1228
|
+
expect(request.data.user).to.deep.equal(userData);
|
|
1229
|
+
expect(request.data.site).to.deep.equal(siteData);
|
|
1207
1230
|
expect(request.data.slots[0].ext).to.deep.equal({
|
|
1208
1231
|
bidfloor: 0.75,
|
|
1209
1232
|
data: {
|
|
@@ -71,6 +71,8 @@ describe('IncrementX', function () {
|
|
|
71
71
|
cpm: '0.7',
|
|
72
72
|
ad: '<html><h1>Ad from IncrementX</h1></html>',
|
|
73
73
|
slotBidId: 'bid-id-123456',
|
|
74
|
+
adType: '1',
|
|
75
|
+
settings: '1,2',
|
|
74
76
|
nurl: 'htt://nurl.com',
|
|
75
77
|
statusText: 'Success'
|
|
76
78
|
}
|
|
@@ -80,6 +82,8 @@ describe('IncrementX', function () {
|
|
|
80
82
|
requestId: 'bid-id-123456',
|
|
81
83
|
cpm: '0.7',
|
|
82
84
|
currency: 'USD',
|
|
85
|
+
adType: '1',
|
|
86
|
+
settings: '1,2',
|
|
83
87
|
netRevenue: false,
|
|
84
88
|
width: '300',
|
|
85
89
|
height: '250',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {expect} from 'chai';
|
|
2
2
|
import {
|
|
3
3
|
spec as adapter,
|
|
4
4
|
SUPPORTED_ID_SYSTEMS,
|
|
@@ -13,9 +13,10 @@ import {
|
|
|
13
13
|
getUniqueDealId,
|
|
14
14
|
} from 'modules/kueezRtbBidAdapter.js';
|
|
15
15
|
import * as utils from 'src/utils.js';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import {version} from 'package.json';
|
|
17
|
+
import {useFakeTimers} from 'sinon';
|
|
18
|
+
import {BANNER, VIDEO} from '../../../src/mediaTypes';
|
|
19
|
+
import {config} from '../../../src/config';
|
|
19
20
|
|
|
20
21
|
const SUB_DOMAIN = 'exchange';
|
|
21
22
|
|
|
@@ -36,6 +37,10 @@ const BID = {
|
|
|
36
37
|
'transactionId': 'c881914b-a3b5-4ecf-ad9c-1c2f37c6aabf',
|
|
37
38
|
'sizes': [[300, 250], [300, 600]],
|
|
38
39
|
'bidderRequestId': '1fdb5ff1b6eaa7',
|
|
40
|
+
'auctionId': 'auction_id',
|
|
41
|
+
'bidRequestsCount': 4,
|
|
42
|
+
'bidderRequestsCount': 3,
|
|
43
|
+
'bidderWinsCount': 1,
|
|
39
44
|
'requestId': 'b0777d85-d061-450e-9bc7-260dd54bbb7a',
|
|
40
45
|
'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
|
|
41
46
|
'mediaTypes': [BANNER]
|
|
@@ -46,6 +51,10 @@ const VIDEO_BID = {
|
|
|
46
51
|
'adUnitCode': '63550ad1ff6642d368cba59dh5884270560',
|
|
47
52
|
'bidderRequestId': '12a8ae9ada9c13',
|
|
48
53
|
'transactionId': '56e184c6-bde9-497b-b9b9-cf47a61381ee',
|
|
54
|
+
'auctionId': 'auction_id',
|
|
55
|
+
'bidRequestsCount': 4,
|
|
56
|
+
'bidderRequestsCount': 3,
|
|
57
|
+
'bidderWinsCount': 1,
|
|
49
58
|
'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
|
|
50
59
|
'params': {
|
|
51
60
|
'subDomain': SUB_DOMAIN,
|
|
@@ -78,10 +87,18 @@ const BIDDER_REQUEST = {
|
|
|
78
87
|
'consentString': 'consent_string',
|
|
79
88
|
'gdprApplies': true
|
|
80
89
|
},
|
|
90
|
+
'gppString': 'gpp_string',
|
|
91
|
+
'gppSid': [7],
|
|
81
92
|
'uspConsent': 'consent_string',
|
|
82
93
|
'refererInfo': {
|
|
83
94
|
'page': 'https://www.greatsite.com',
|
|
84
95
|
'ref': 'https://www.somereferrer.com'
|
|
96
|
+
},
|
|
97
|
+
'ortb2': {
|
|
98
|
+
'regs': {
|
|
99
|
+
'gpp': 'gpp_string',
|
|
100
|
+
'gpp_sid': [7]
|
|
101
|
+
}
|
|
85
102
|
}
|
|
86
103
|
};
|
|
87
104
|
|
|
@@ -134,7 +151,7 @@ const REQUEST = {
|
|
|
134
151
|
|
|
135
152
|
function getTopWindowQueryParams() {
|
|
136
153
|
try {
|
|
137
|
-
const parsedUrl = utils.parseUrl(window.top.document.URL, {
|
|
154
|
+
const parsedUrl = utils.parseUrl(window.top.document.URL, {decodeSearchAsString: true});
|
|
138
155
|
return parsedUrl.search;
|
|
139
156
|
} catch (e) {
|
|
140
157
|
return '';
|
|
@@ -213,6 +230,9 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
213
230
|
|
|
214
231
|
it('should build video request', function () {
|
|
215
232
|
const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
|
|
233
|
+
config.setConfig({
|
|
234
|
+
bidderTimeout: 3000
|
|
235
|
+
});
|
|
216
236
|
const requests = adapter.buildRequests([VIDEO_BID], BIDDER_REQUEST);
|
|
217
237
|
expect(requests).to.have.length(1);
|
|
218
238
|
expect(requests[0]).to.deep.equal({
|
|
@@ -223,11 +243,20 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
223
243
|
bidFloor: 0.1,
|
|
224
244
|
bidId: '2d52001cabd527',
|
|
225
245
|
bidderVersion: adapter.version,
|
|
246
|
+
bidderRequestId: '12a8ae9ada9c13',
|
|
226
247
|
cb: 1000,
|
|
227
248
|
gdpr: 1,
|
|
228
249
|
gdprConsent: 'consent_string',
|
|
229
250
|
usPrivacy: 'consent_string',
|
|
251
|
+
gppString: 'gpp_string',
|
|
252
|
+
gppSid: [7],
|
|
230
253
|
prebidVersion: version,
|
|
254
|
+
transactionId: '56e184c6-bde9-497b-b9b9-cf47a61381ee',
|
|
255
|
+
auctionId: 'auction_id',
|
|
256
|
+
bidRequestsCount: 4,
|
|
257
|
+
bidderRequestsCount: 3,
|
|
258
|
+
bidderWinsCount: 1,
|
|
259
|
+
bidderTimeout: 3000,
|
|
231
260
|
publisherId: '59ac17c192832d0011283fe3',
|
|
232
261
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
233
262
|
referrer: 'https://www.somereferrer.com',
|
|
@@ -259,6 +288,9 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
259
288
|
|
|
260
289
|
it('should build banner request for each size', function () {
|
|
261
290
|
const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
|
|
291
|
+
config.setConfig({
|
|
292
|
+
bidderTimeout: 3000
|
|
293
|
+
});
|
|
262
294
|
const requests = adapter.buildRequests([BID], BIDDER_REQUEST);
|
|
263
295
|
expect(requests).to.have.length(1);
|
|
264
296
|
expect(requests[0]).to.deep.equal({
|
|
@@ -267,7 +299,16 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
267
299
|
data: {
|
|
268
300
|
gdprConsent: 'consent_string',
|
|
269
301
|
gdpr: 1,
|
|
302
|
+
gppString: 'gpp_string',
|
|
303
|
+
gppSid: [7],
|
|
270
304
|
usPrivacy: 'consent_string',
|
|
305
|
+
transactionId: 'c881914b-a3b5-4ecf-ad9c-1c2f37c6aabf',
|
|
306
|
+
auctionId: 'auction_id',
|
|
307
|
+
bidRequestsCount: 4,
|
|
308
|
+
bidderRequestsCount: 3,
|
|
309
|
+
bidderWinsCount: 1,
|
|
310
|
+
bidderTimeout: 3000,
|
|
311
|
+
bidderRequestId: '1fdb5ff1b6eaa7',
|
|
271
312
|
sizes: ['300x250', '300x600'],
|
|
272
313
|
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
273
314
|
referrer: 'https://www.somereferrer.com',
|
|
@@ -296,7 +337,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
296
337
|
});
|
|
297
338
|
describe('getUserSyncs', function () {
|
|
298
339
|
it('should have valid user sync with iframeEnabled', function () {
|
|
299
|
-
const result = adapter.getUserSyncs({
|
|
340
|
+
const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
|
|
300
341
|
|
|
301
342
|
expect(result).to.deep.equal([{
|
|
302
343
|
type: 'iframe',
|
|
@@ -305,7 +346,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
305
346
|
});
|
|
306
347
|
|
|
307
348
|
it('should have valid user sync with cid on response', function () {
|
|
308
|
-
const result = adapter.getUserSyncs({
|
|
349
|
+
const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
|
|
309
350
|
expect(result).to.deep.equal([{
|
|
310
351
|
type: 'iframe',
|
|
311
352
|
url: 'https://sync.kueezrtb.com/api/sync/iframe/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy='
|
|
@@ -313,7 +354,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
313
354
|
});
|
|
314
355
|
|
|
315
356
|
it('should have valid user sync with pixelEnabled', function () {
|
|
316
|
-
const result = adapter.getUserSyncs({
|
|
357
|
+
const result = adapter.getUserSyncs({pixelEnabled: true}, [SERVER_RESPONSE]);
|
|
317
358
|
|
|
318
359
|
expect(result).to.deep.equal([{
|
|
319
360
|
'url': 'https://sync.kueezrtb.com/api/sync/image/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy=',
|
|
@@ -329,12 +370,12 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
329
370
|
});
|
|
330
371
|
|
|
331
372
|
it('should return empty array when there is no ad', function () {
|
|
332
|
-
const responses = adapter.interpretResponse({
|
|
373
|
+
const responses = adapter.interpretResponse({price: 1, ad: ''});
|
|
333
374
|
expect(responses).to.be.empty;
|
|
334
375
|
});
|
|
335
376
|
|
|
336
377
|
it('should return empty array when there is no price', function () {
|
|
337
|
-
const responses = adapter.interpretResponse({
|
|
378
|
+
const responses = adapter.interpretResponse({price: null, ad: 'great ad'});
|
|
338
379
|
expect(responses).to.be.empty;
|
|
339
380
|
});
|
|
340
381
|
|
|
@@ -394,11 +435,11 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
394
435
|
const userId = (function () {
|
|
395
436
|
switch (idSystemProvider) {
|
|
396
437
|
case 'lipb':
|
|
397
|
-
return {
|
|
438
|
+
return {lipbid: id};
|
|
398
439
|
case 'parrableId':
|
|
399
|
-
return {
|
|
440
|
+
return {eid: id};
|
|
400
441
|
case 'id5id':
|
|
401
|
-
return {
|
|
442
|
+
return {uid: id};
|
|
402
443
|
default:
|
|
403
444
|
return id;
|
|
404
445
|
}
|
|
@@ -417,18 +458,18 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
417
458
|
|
|
418
459
|
describe('alternate param names extractors', function () {
|
|
419
460
|
it('should return undefined when param not supported', function () {
|
|
420
|
-
const cid = extractCID({
|
|
421
|
-
const pid = extractPID({
|
|
422
|
-
const subDomain = extractSubDomain({
|
|
461
|
+
const cid = extractCID({'c_id': '1'});
|
|
462
|
+
const pid = extractPID({'p_id': '1'});
|
|
463
|
+
const subDomain = extractSubDomain({'sub_domain': 'prebid'});
|
|
423
464
|
expect(cid).to.be.undefined;
|
|
424
465
|
expect(pid).to.be.undefined;
|
|
425
466
|
expect(subDomain).to.be.undefined;
|
|
426
467
|
});
|
|
427
468
|
|
|
428
469
|
it('should return value when param supported', function () {
|
|
429
|
-
const cid = extractCID({
|
|
430
|
-
const pid = extractPID({
|
|
431
|
-
const subDomain = extractSubDomain({
|
|
470
|
+
const cid = extractCID({'cID': '1'});
|
|
471
|
+
const pid = extractPID({'Pid': '2'});
|
|
472
|
+
const subDomain = extractSubDomain({'subDOMAIN': 'prebid'});
|
|
432
473
|
expect(cid).to.be.equal('1');
|
|
433
474
|
expect(pid).to.be.equal('2');
|
|
434
475
|
expect(subDomain).to.be.equal('prebid');
|
|
@@ -488,7 +529,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
488
529
|
now
|
|
489
530
|
});
|
|
490
531
|
setStorageItem('myKey', 2020);
|
|
491
|
-
const {
|
|
532
|
+
const {value, created} = getStorageItem('myKey');
|
|
492
533
|
expect(created).to.be.equal(now);
|
|
493
534
|
expect(value).to.be.equal(2020);
|
|
494
535
|
expect(typeof value).to.be.equal('number');
|
|
@@ -504,8 +545,8 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
504
545
|
});
|
|
505
546
|
|
|
506
547
|
it('should parse JSON value', function () {
|
|
507
|
-
const data = JSON.stringify({
|
|
508
|
-
const {
|
|
548
|
+
const data = JSON.stringify({event: 'send'});
|
|
549
|
+
const {event} = tryParseJSON(data);
|
|
509
550
|
expect(event).to.be.equal('send');
|
|
510
551
|
});
|
|
511
552
|
|