prebid.js 7.3.0 → 7.6.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/.circleci/config.yml +11 -6
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adotBidAdapter.js +1 -1
- package/dist/adpod.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adrinoBidAdapter.js +1 -1
- package/dist/adtelligentBidAdapter.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/atsAnalyticsAdapter.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/byDataAnalyticsAdapter.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/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imRtdProvider.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/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.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/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/newspassidBidAdapter.js +1 -0
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +131 -127
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -0
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/priceFloors.js +1 -1
- package/dist/pubCommonId.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/rasBidAdapter.js +1 -0
- 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/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -0
- package/dist/sizeMappingV2.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/ventesBidAdapter.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/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/gulpfile.js +1 -1
- package/karma.conf.maker.js +3 -1
- package/modules/adgenerationBidAdapter.js +24 -1
- package/modules/adnuntiusBidAdapter.js +26 -8
- package/modules/adotBidAdapter.js +13 -4
- package/modules/adrinoBidAdapter.js +10 -2
- package/modules/adrinoBidAdapter.md +6 -0
- package/modules/adtelligentBidAdapter.js +2 -1
- package/modules/appnexusBidAdapter.js +3 -3
- package/modules/atsAnalyticsAdapter.js +4 -5
- package/modules/byDataAnalyticsAdapter.js +172 -74
- package/modules/byDataAnalyticsAdapter.md +5 -6
- package/modules/consumableBidAdapter.js +12 -1
- package/modules/criteoBidAdapter.js +7 -1
- package/modules/cwireBidAdapter.md +1 -1
- package/modules/debugging/bidInterceptor.js +1 -1
- package/modules/debugging/index.js +2 -1
- package/modules/eplanningBidAdapter.js +82 -97
- package/modules/gdprEnforcement.js +8 -14
- package/modules/gridNMBidAdapter.js +45 -4
- package/modules/hadronAnalyticsAdapter.md +5 -5
- package/modules/hadronIdSystem.js +18 -5
- package/modules/hadronIdSystem.md +15 -11
- package/modules/hadronRtdProvider.js +14 -1
- package/modules/hadronRtdProvider.md +17 -13
- package/modules/imRtdProvider.js +0 -8
- package/modules/insticatorBidAdapter.js +9 -0
- package/modules/ixBidAdapter.js +462 -58
- package/modules/ixBidAdapter.md +95 -5
- package/modules/kargoAnalyticsAdapter.js +88 -6
- package/modules/kargoAnalyticsAdapter.md +33 -0
- package/modules/kargoBidAdapter.js +1 -2
- package/modules/minutemediaBidAdapter.js +1 -0
- package/modules/missenaBidAdapter.js +20 -2
- package/modules/newspassidBidAdapter.js +649 -0
- package/modules/nextMillenniumBidAdapter.js +17 -1
- package/modules/oguryBidAdapter.js +2 -0
- package/modules/openxBidAdapter.md +3 -1
- package/modules/openxOrtbBidAdapter.js +349 -0
- package/modules/openxOrtbBidAdapter.md +105 -0
- package/modules/priceFloors.js +1 -1
- package/modules/pubCommonId.js +1 -2
- package/modules/pubxaiAnalyticsAdapter.js +6 -1
- package/modules/rasBidAdapter.js +149 -0
- package/modules/rasBidAdapter.md +50 -0
- package/modules/readpeakBidAdapter.js +15 -6
- package/modules/relaidoBidAdapter.js +19 -4
- package/modules/seedtagBidAdapter.js +37 -1
- package/modules/sharedIdSystem.js +11 -5
- package/modules/sharethroughBidAdapter.js +9 -24
- package/modules/shinezBidAdapter.js +435 -0
- package/modules/shinezBidAdapter.md +76 -0
- package/modules/taboolaBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.md +3 -3
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/ventesBidAdapter.md +1 -1
- package/modules/vrtcalBidAdapter.js +35 -0
- package/package.json +1 -1
- package/plugins/pbjsGlobals.js +2 -1
- package/src/storageManager.js +4 -5
- package/test/spec/modules/adgenerationBidAdapter_spec.js +52 -4
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +126 -14
- package/test/spec/modules/adotBidAdapter_spec.js +12 -9
- package/test/spec/modules/adrinoBidAdapter_spec.js +22 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +165 -156
- package/test/spec/modules/byDataAnalyticsAdapter_spec.js +74 -24
- package/test/spec/modules/consumableBidAdapter_spec.js +75 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +15 -5
- package/test/spec/modules/debugging_mod_spec.js +7 -0
- package/test/spec/modules/eplanningBidAdapter_spec.js +58 -18
- package/test/spec/modules/gdprEnforcement_spec.js +53 -100
- package/test/spec/modules/gridNMBidAdapter_spec.js +32 -0
- package/test/spec/modules/hadronIdSystem_spec.js +2 -2
- package/test/spec/modules/imRtdProvider_spec.js +0 -1
- package/test/spec/modules/insticatorBidAdapter_spec.js +22 -1
- package/test/spec/modules/ixBidAdapter_spec.js +470 -10
- package/test/spec/modules/kargoAnalyticsAdapter_spec.js +42 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +3 -0
- package/test/spec/modules/missenaBidAdapter_spec.js +36 -14
- package/test/spec/modules/newspassidBidAdapter_spec.js +1793 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +20 -0
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +1303 -0
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +5 -0
- package/test/spec/modules/rasBidAdapter_spec.js +190 -0
- package/test/spec/modules/readpeakBidAdapter_spec.js +1 -0
- package/test/spec/modules/relaidoBidAdapter_spec.js +29 -2
- package/test/spec/modules/seedtagBidAdapter_spec.js +29 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +4 -4
- package/test/spec/modules/shinezBidAdapter_spec.js +479 -0
- package/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
- package/test/spec/modules/ventesBidAdapter_spec.js +2 -2
- package/test/spec/modules/vrtcalBidAdapter_spec.js +17 -0
- package/webpack.conf.js +1 -1
|
@@ -9,18 +9,19 @@ const initOptions = {
|
|
|
9
9
|
logFrequency: 1,
|
|
10
10
|
};
|
|
11
11
|
let userData = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
'uid': '271a8-2b86-f4a4-f59bc',
|
|
13
|
+
'cid': 'asc00000',
|
|
14
|
+
'pid': 'www.letsrun.com',
|
|
15
|
+
'os': 'Macintosh',
|
|
16
|
+
'osv': 10.157,
|
|
17
|
+
'br': 'Chrome',
|
|
18
|
+
'brv': 103,
|
|
19
|
+
'ss': {
|
|
20
|
+
'width': 1792,
|
|
21
|
+
'height': 1120
|
|
21
22
|
},
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
'de': 'Desktop',
|
|
24
|
+
'tz': 'Asia/Calcutta'
|
|
24
25
|
};
|
|
25
26
|
let bidTimeoutArgs = [{
|
|
26
27
|
auctionId,
|
|
@@ -39,6 +40,18 @@ let noBidArgs = {
|
|
|
39
40
|
src: 'client',
|
|
40
41
|
transactionId: 'c8ee3914-1ee0-4ce6-9126-748d5692188c'
|
|
41
42
|
}
|
|
43
|
+
let bidWonArgs = {
|
|
44
|
+
auctionId,
|
|
45
|
+
adUnitCode: 'div-gpt-ad-mrec1',
|
|
46
|
+
size: '300x250',
|
|
47
|
+
requestId: '15c86b6c10d3746',
|
|
48
|
+
bidder: 'appnexus',
|
|
49
|
+
timeToRespond: 114,
|
|
50
|
+
currency: 'USD',
|
|
51
|
+
mediaType: 'display',
|
|
52
|
+
cpm: 0.50
|
|
53
|
+
}
|
|
54
|
+
|
|
42
55
|
let auctionEndArgs = {
|
|
43
56
|
adUnitCodes: ['div-gpt-ad-mrec1'],
|
|
44
57
|
adUnits: [{
|
|
@@ -74,21 +87,54 @@ let auctionEndArgs = {
|
|
|
74
87
|
}]
|
|
75
88
|
}
|
|
76
89
|
let expectedDataArgs = {
|
|
77
|
-
visitor_data: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
visitor_data: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIyNzFhOC0yYjg2LWY0YTQtZjU5YmMiLCJjaWQiOiJhc2MwMDAwMCIsInBpZCI6Ind3dy5sZXRzcnVuLmNvbSIsIm9zIjoiTWFjaW50b3NoIiwib3N2IjoxMC4xNTcsImJyIjoiQ2hyb21lIiwiYnJ2IjoxMDMsInNzIjp7IndpZHRoIjoxNzkyLCJoZWlnaHQiOjExMjB9LCJkZSI6IkRlc2t0b3AiLCJ0eiI6IkFzaWEvQ2FsY3V0dGEifQ.Oj3qnh--t06XO-foVmrMJCGqFfOBed09A-f7LZX5rtfBf4w1_RNRZ4F3on4TMPLonSa7GgzbcEfJS9G_amnleQ',
|
|
91
|
+
aid: auctionId,
|
|
92
|
+
as: 1627973484504,
|
|
80
93
|
auctionData: [ {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
au: 'div-gpt-ad-mrec1',
|
|
95
|
+
auc: 'div-gpt-ad-mrec1',
|
|
96
|
+
aus: '300x250',
|
|
97
|
+
bidadv: 'appnexus',
|
|
98
|
+
bid: '14480e9832f2d2b',
|
|
99
|
+
inb: 0,
|
|
100
|
+
ito: 0,
|
|
101
|
+
ipwb: 0,
|
|
102
|
+
iwb: 0,
|
|
103
|
+
mt: 'display',
|
|
86
104
|
}, {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
105
|
+
au: 'div-gpt-ad-mrec1',
|
|
106
|
+
auc: 'div-gpt-ad-mrec1',
|
|
107
|
+
aus: '250x250',
|
|
108
|
+
bidadv: 'appnexus',
|
|
109
|
+
bid: '14480e9832f2d2b',
|
|
110
|
+
inb: 0,
|
|
111
|
+
ito: 0,
|
|
112
|
+
ipwb: 0,
|
|
113
|
+
iwb: 0,
|
|
114
|
+
mt: 'display',
|
|
115
|
+
}]
|
|
116
|
+
}
|
|
117
|
+
let expectedBidWonArgs = {
|
|
118
|
+
visitor_data: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIyNzFhOC0yYjg2LWY0YTQtZjU5YmMiLCJjaWQiOiJhc2MwMDAwMCIsInBpZCI6Ind3dy5sZXRzcnVuLmNvbSIsIm9zIjoiTWFjaW50b3NoIiwib3N2IjoxMC4xNTcsImJyIjoiQ2hyb21lIiwiYnJ2IjoxMDMsInNzIjp7IndpZHRoIjoxNzkyLCJoZWlnaHQiOjExMjB9LCJkZSI6IkRlc2t0b3AiLCJ0eiI6IkFzaWEvQ2FsY3V0dGEifQ.Oj3qnh--t06XO-foVmrMJCGqFfOBed09A-f7LZX5rtfBf4w1_RNRZ4F3on4TMPLonSa7GgzbcEfJS9G_amnleQ',
|
|
119
|
+
aid: auctionId,
|
|
120
|
+
as: '',
|
|
121
|
+
auctionData: [{
|
|
122
|
+
au: 'div-gpt-ad-mrec1',
|
|
123
|
+
auc: 'div-gpt-ad-mrec1',
|
|
124
|
+
aus: '300x250',
|
|
125
|
+
bid: '15c86b6c10d3746',
|
|
126
|
+
bidadv: 'appnexus',
|
|
127
|
+
br_pb_mg: 0.50,
|
|
128
|
+
br_tr: 114,
|
|
129
|
+
bradv: 'appnexus',
|
|
130
|
+
brid: '15c86b6c10d3746',
|
|
131
|
+
brs: '300x250',
|
|
132
|
+
cur: 'USD',
|
|
133
|
+
inb: 0,
|
|
134
|
+
ito: 0,
|
|
135
|
+
ipwb: 1,
|
|
136
|
+
iwb: 1,
|
|
137
|
+
mt: 'display',
|
|
92
138
|
}]
|
|
93
139
|
}
|
|
94
140
|
|
|
@@ -130,10 +176,14 @@ describe('byData Analytics Adapter ', () => {
|
|
|
130
176
|
it('sends and formatted auction data ', function () {
|
|
131
177
|
events.emit(constants.EVENTS.BID_TIMEOUT, bidTimeoutArgs);
|
|
132
178
|
events.emit(constants.EVENTS.NO_BID, noBidArgs);
|
|
179
|
+
events.emit(constants.EVENTS.BID_WON, bidWonArgs)
|
|
133
180
|
var userToken = ascAdapter.getVisitorData(userData);
|
|
134
181
|
var newAuData = ascAdapter.dataProcess(auctionEndArgs);
|
|
182
|
+
var newBwData = ascAdapter.getBidWonData(bidWonArgs);
|
|
135
183
|
newAuData['visitor_data'] = userToken;
|
|
184
|
+
newBwData['visitor_data'] = userToken;
|
|
136
185
|
expect(newAuData).to.deep.equal(expectedDataArgs);
|
|
186
|
+
expect(newBwData).to.deep.equal(expectedBidWonArgs);
|
|
137
187
|
});
|
|
138
188
|
});
|
|
139
189
|
});
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {expect} from 'chai';
|
|
2
2
|
import {spec} from 'modules/consumableBidAdapter.js';
|
|
3
3
|
import {createBid} from 'src/bidfactory.js';
|
|
4
|
+
import {config} from 'src/config.js';
|
|
5
|
+
import {deepClone} from 'src/utils.js';
|
|
6
|
+
import { createEidsArray } from 'modules/userId/eids.js';
|
|
4
7
|
|
|
5
8
|
const ENDPOINT = 'https://e.serverbid.com/api/v2';
|
|
6
9
|
const SMARTSYNC_CALLBACK = 'serverbidCallBids';
|
|
@@ -425,4 +428,76 @@ describe('Consumable BidAdapter', function () {
|
|
|
425
428
|
expect(opts.length).to.equal(1);
|
|
426
429
|
});
|
|
427
430
|
});
|
|
431
|
+
describe('unifiedId from userId module', function() {
|
|
432
|
+
let sandbox, bidderRequest;
|
|
433
|
+
beforeEach(() => {
|
|
434
|
+
sandbox = sinon.sandbox.create();
|
|
435
|
+
bidderRequest = deepClone(BIDDER_REQUEST_1);
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
afterEach(() => {
|
|
439
|
+
sandbox.restore();
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
it('Request should have unifiedId config params', function() {
|
|
443
|
+
bidderRequest.bidRequest[0].userId = {};
|
|
444
|
+
bidderRequest.bidRequest[0].userId.tdid = 'TTD_ID';
|
|
445
|
+
bidderRequest.bidRequest[0].userIdAsEids = createEidsArray(bidderRequest.bidRequest[0].userId);
|
|
446
|
+
let request = spec.buildRequests(bidderRequest.bidRequest, BIDDER_REQUEST_1);
|
|
447
|
+
let data = JSON.parse(request.data);
|
|
448
|
+
expect(data.user.eids).to.deep.equal([{
|
|
449
|
+
'source': 'adserver.org',
|
|
450
|
+
'uids': [{
|
|
451
|
+
'id': 'TTD_ID',
|
|
452
|
+
'atype': 1,
|
|
453
|
+
'ext': {
|
|
454
|
+
'rtiPartner': 'TDID'
|
|
455
|
+
}
|
|
456
|
+
}]
|
|
457
|
+
}]);
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
it('Request should have adsrvrOrgId from UserId Module if config and userId module both have TTD ID', function() {
|
|
461
|
+
sandbox.stub(config, 'getConfig').callsFake((key) => {
|
|
462
|
+
var config = {
|
|
463
|
+
adsrvrOrgId: {
|
|
464
|
+
'TDID': 'TTD_ID_FROM_CONFIG',
|
|
465
|
+
'TDID_LOOKUP': 'TRUE',
|
|
466
|
+
'TDID_CREATED_AT': '2022-06-21T09:47:00'
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
return config[key];
|
|
470
|
+
});
|
|
471
|
+
bidderRequest.bidRequest[0].userId = {};
|
|
472
|
+
bidderRequest.bidRequest[0].userId.tdid = 'TTD_ID';
|
|
473
|
+
bidderRequest.bidRequest[0].userIdAsEids = createEidsArray(bidderRequest.bidRequest[0].userId);
|
|
474
|
+
let request = spec.buildRequests(bidderRequest.bidRequest, BIDDER_REQUEST_1);
|
|
475
|
+
let data = JSON.parse(request.data);
|
|
476
|
+
expect(data.user.eids).to.deep.equal([{
|
|
477
|
+
'source': 'adserver.org',
|
|
478
|
+
'uids': [{
|
|
479
|
+
'id': 'TTD_ID',
|
|
480
|
+
'atype': 1,
|
|
481
|
+
'ext': {
|
|
482
|
+
'rtiPartner': 'TDID'
|
|
483
|
+
}
|
|
484
|
+
}]
|
|
485
|
+
}]);
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
it('Request should NOT have adsrvrOrgId params if userId is NOT object', function() {
|
|
489
|
+
let request = spec.buildRequests(bidderRequest.bidRequest, BIDDER_REQUEST_1);
|
|
490
|
+
let data = JSON.parse(request.data);
|
|
491
|
+
expect(data.user.eids).to.deep.equal(undefined);
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
it('Request should NOT have adsrvrOrgId params if userId.tdid is NOT string', function() {
|
|
495
|
+
bidderRequest.bidRequest[0].userId = {
|
|
496
|
+
tdid: 1234
|
|
497
|
+
};
|
|
498
|
+
let request = spec.buildRequests(bidderRequest.bidRequest, BIDDER_REQUEST_1);
|
|
499
|
+
let data = JSON.parse(request.data);
|
|
500
|
+
expect(data.user.eids).to.deep.equal(undefined);
|
|
501
|
+
});
|
|
502
|
+
});
|
|
428
503
|
});
|
|
@@ -2,6 +2,7 @@ import { expect } from 'chai';
|
|
|
2
2
|
import {
|
|
3
3
|
tryGetCriteoFastBid,
|
|
4
4
|
spec,
|
|
5
|
+
storage,
|
|
5
6
|
PROFILE_ID_PUBLISHERTAG,
|
|
6
7
|
ADAPTER_VERSION,
|
|
7
8
|
canFastBid, getFastBidUrl, FAST_BID_VERSION_CURRENT
|
|
@@ -11,6 +12,7 @@ import CONSTANTS from 'src/constants.json';
|
|
|
11
12
|
import * as utils from 'src/utils.js';
|
|
12
13
|
import { config } from '../../../src/config.js';
|
|
13
14
|
import { NATIVE, VIDEO } from '../../../src/mediaTypes.js';
|
|
15
|
+
import * as storageManager from 'src/storageManager.js';
|
|
14
16
|
|
|
15
17
|
describe('The Criteo bidding adapter', function () {
|
|
16
18
|
let utilsMock, sandbox;
|
|
@@ -28,7 +30,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
28
30
|
sandbox = sinon.sandbox.create();
|
|
29
31
|
});
|
|
30
32
|
|
|
31
|
-
afterEach(function() {
|
|
33
|
+
afterEach(function () {
|
|
32
34
|
$$PREBID_GLOBAL$$.bidderSettings = {};
|
|
33
35
|
global.Criteo = undefined;
|
|
34
36
|
utilsMock.restore();
|
|
@@ -426,7 +428,15 @@ describe('The Criteo bidding adapter', function () {
|
|
|
426
428
|
},
|
|
427
429
|
};
|
|
428
430
|
|
|
431
|
+
let localStorageIsEnabledStub;
|
|
432
|
+
|
|
433
|
+
this.beforeEach(function () {
|
|
434
|
+
localStorageIsEnabledStub = sinon.stub(storage, 'localStorageIsEnabled');
|
|
435
|
+
localStorageIsEnabledStub.returns(true);
|
|
436
|
+
});
|
|
437
|
+
|
|
429
438
|
afterEach(function () {
|
|
439
|
+
localStorageIsEnabledStub.restore();
|
|
430
440
|
config.resetConfig();
|
|
431
441
|
});
|
|
432
442
|
|
|
@@ -470,7 +480,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
470
480
|
},
|
|
471
481
|
];
|
|
472
482
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|
|
473
|
-
expect(request.url).to.match(/^https:\/\/bidder\.criteo\.com\/cdb\?profileId=207&av=\d+&wv=[^&]+&cb=\d+&im=1&debug=1&nolog=1/);
|
|
483
|
+
expect(request.url).to.match(/^https:\/\/bidder\.criteo\.com\/cdb\?profileId=207&av=\d+&wv=[^&]+&cb=\d+&lsavail=1&im=1&debug=1&nolog=1/);
|
|
474
484
|
expect(request.method).to.equal('POST');
|
|
475
485
|
const ortbRequest = request.data;
|
|
476
486
|
expect(ortbRequest.publisher.url).to.equal(refererUrl);
|
|
@@ -934,7 +944,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
934
944
|
},
|
|
935
945
|
];
|
|
936
946
|
|
|
937
|
-
const request = spec.buildRequests(bidRequests, {...bidderRequest, ortb2: {}});
|
|
947
|
+
const request = spec.buildRequests(bidRequests, { ...bidderRequest, ortb2: {} });
|
|
938
948
|
expect(request.data.publisher.ext).to.equal(undefined);
|
|
939
949
|
expect(request.data.user.ext).to.equal(undefined);
|
|
940
950
|
expect(request.data.slots[0].ext).to.equal(undefined);
|
|
@@ -961,7 +971,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
961
971
|
},
|
|
962
972
|
];
|
|
963
973
|
|
|
964
|
-
const request = spec.buildRequests(bidRequests, {...bidderRequest, ortb2: {}});
|
|
974
|
+
const request = spec.buildRequests(bidRequests, { ...bidderRequest, ortb2: {} });
|
|
965
975
|
expect(request.data.slots[0].ext).to.deep.equal({
|
|
966
976
|
bidfloor: 0.75,
|
|
967
977
|
});
|
|
@@ -1015,7 +1025,7 @@ describe('The Criteo bidding adapter', function () {
|
|
|
1015
1025
|
user: userData
|
|
1016
1026
|
};
|
|
1017
1027
|
|
|
1018
|
-
const request = spec.buildRequests(bidRequests, {...bidderRequest, ortb2});
|
|
1028
|
+
const request = spec.buildRequests(bidRequests, { ...bidderRequest, ortb2 });
|
|
1019
1029
|
expect(request.data.publisher.ext).to.deep.equal({ data: { pageType: 'article' } });
|
|
1020
1030
|
expect(request.data.user.ext).to.deep.equal({ data: { registered: true } });
|
|
1021
1031
|
expect(request.data.slots[0].ext).to.deep.equal({
|
|
@@ -134,6 +134,13 @@ describe('bid interceptor', () => {
|
|
|
134
134
|
expect(result).to.include.keys(REQUIRED_KEYS);
|
|
135
135
|
expect(result.outer.inner).to.eql({key: 'value'});
|
|
136
136
|
});
|
|
137
|
+
|
|
138
|
+
it('should respect array vs object definitions', () => {
|
|
139
|
+
const result = matchingRule({replace: {item: [replDef]}}).replace({});
|
|
140
|
+
expect(result.item).to.be.an('array');
|
|
141
|
+
expect(result.item.length).to.equal(1);
|
|
142
|
+
expect(result.item[0]).to.eql({key: 'value'});
|
|
143
|
+
});
|
|
137
144
|
});
|
|
138
145
|
});
|
|
139
146
|
|
|
@@ -6,6 +6,7 @@ import {init, getIds} from 'modules/userId/index.js';
|
|
|
6
6
|
import * as utils from 'src/utils.js';
|
|
7
7
|
import {hook} from '../../../src/hook.js';
|
|
8
8
|
import {getGlobal} from '../../../src/prebidGlobal.js';
|
|
9
|
+
import { makeSlot } from '../integration/faker/googletag.js';
|
|
9
10
|
|
|
10
11
|
describe('E-Planning Adapter', function () {
|
|
11
12
|
const adapter = newBidder('spec');
|
|
@@ -649,7 +650,24 @@ describe('E-Planning Adapter', function () {
|
|
|
649
650
|
let element;
|
|
650
651
|
let getBoundingClientRectStub;
|
|
651
652
|
let sandbox = sinon.sandbox.create();
|
|
652
|
-
let
|
|
653
|
+
let intersectionObserverStub;
|
|
654
|
+
let intersectionCallback;
|
|
655
|
+
|
|
656
|
+
function setIntersectionObserverMock(params) {
|
|
657
|
+
let fakeIntersectionObserver = (stateChange, options) => {
|
|
658
|
+
intersectionCallback = stateChange;
|
|
659
|
+
return {
|
|
660
|
+
unobserve: (element) => {
|
|
661
|
+
return element;
|
|
662
|
+
},
|
|
663
|
+
observe: (element) => {
|
|
664
|
+
intersectionCallback([{'target': {'id': element.id}, 'isIntersecting': params[element.id].isIntersecting, 'intersectionRatio': params[element.id].ratio, 'boundingClientRect': {'width': params[element.id].width, 'height': params[element.id].height}}]);
|
|
665
|
+
},
|
|
666
|
+
};
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
intersectionObserverStub = sandbox.stub(window, 'IntersectionObserver').callsFake(fakeIntersectionObserver);
|
|
670
|
+
}
|
|
653
671
|
function createElement(id) {
|
|
654
672
|
element = document.createElement('div');
|
|
655
673
|
element.id = id || ADUNIT_CODE_VIEW;
|
|
@@ -741,9 +759,6 @@ describe('E-Planning Adapter', function () {
|
|
|
741
759
|
hasLocalStorageStub.returns(true);
|
|
742
760
|
|
|
743
761
|
clock = sandbox.useFakeTimers();
|
|
744
|
-
|
|
745
|
-
focusStub = sandbox.stub(window.top.document, 'hasFocus');
|
|
746
|
-
focusStub.returns(true);
|
|
747
762
|
});
|
|
748
763
|
afterEach(function () {
|
|
749
764
|
$$PREBID_GLOBAL$$.bidderSettings = {};
|
|
@@ -786,6 +801,7 @@ describe('E-Planning Adapter', function () {
|
|
|
786
801
|
let respuesta;
|
|
787
802
|
beforeEach(function () {
|
|
788
803
|
createElementVisible();
|
|
804
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 1, 'isIntersecting': true, 'width': 200, 'height': 200}});
|
|
789
805
|
});
|
|
790
806
|
it('when you have a render', function() {
|
|
791
807
|
respuesta = spec.buildRequests(bidRequests, bidderRequest);
|
|
@@ -823,6 +839,7 @@ describe('E-Planning Adapter', function () {
|
|
|
823
839
|
let respuesta;
|
|
824
840
|
beforeEach(function () {
|
|
825
841
|
createElementOutOfView();
|
|
842
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 0, 'isIntersecting': false, 'width': 200, 'height': 200}});
|
|
826
843
|
});
|
|
827
844
|
|
|
828
845
|
it('when you have a render', function() {
|
|
@@ -848,6 +865,7 @@ describe('E-Planning Adapter', function () {
|
|
|
848
865
|
let respuesta;
|
|
849
866
|
it('should register visibility with more than 50%', function() {
|
|
850
867
|
createPartiallyVisibleElement();
|
|
868
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 0.6, 'isIntersecting': true, 'width': 200, 'height': 200}});
|
|
851
869
|
respuesta = spec.buildRequests(bidRequests, bidderRequest);
|
|
852
870
|
clock.tick(1005);
|
|
853
871
|
|
|
@@ -856,6 +874,7 @@ describe('E-Planning Adapter', function () {
|
|
|
856
874
|
});
|
|
857
875
|
it('you should not register visibility with less than 50%', function() {
|
|
858
876
|
createPartiallyInvisibleElement();
|
|
877
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 0.4, 'isIntersecting': true, 'width': 200, 'height': 200}});
|
|
859
878
|
respuesta = spec.buildRequests(bidRequests, bidderRequest);
|
|
860
879
|
clock.tick(1005);
|
|
861
880
|
|
|
@@ -863,12 +882,29 @@ describe('E-Planning Adapter', function () {
|
|
|
863
882
|
expect(storage.getDataFromLocalStorage(storageIdView)).to.equal(null);
|
|
864
883
|
});
|
|
865
884
|
});
|
|
885
|
+
context('when element id is not equal to adunitcode', function() {
|
|
886
|
+
let respuesta;
|
|
887
|
+
it('should register visibility with more than 50%', function() {
|
|
888
|
+
const code = ADUNIT_CODE_VIEW;
|
|
889
|
+
const divId = 'div-gpt-ad-123';
|
|
890
|
+
createPartiallyVisibleElement(divId);
|
|
891
|
+
window.googletag.pubads().setSlots([makeSlot({ code, divId })]);
|
|
892
|
+
setIntersectionObserverMock({[divId]: {'ratio': 0.6, 'isIntersecting': true, 'width': 200, 'height': 200}});
|
|
893
|
+
|
|
894
|
+
respuesta = spec.buildRequests(bidRequests, bidderRequest);
|
|
895
|
+
clock.tick(1005);
|
|
896
|
+
|
|
897
|
+
expect(storage.getDataFromLocalStorage(storageIdRender)).to.equal('1');
|
|
898
|
+
expect(storage.getDataFromLocalStorage(storageIdView)).to.equal('1');
|
|
899
|
+
});
|
|
900
|
+
});
|
|
866
901
|
context('when width or height of the element is zero', function() {
|
|
867
902
|
beforeEach(function () {
|
|
868
903
|
createElementVisible();
|
|
869
904
|
});
|
|
870
905
|
it('if the width is zero but the height is within the range', function() {
|
|
871
906
|
element.style.width = '0px';
|
|
907
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 0.4, 'isIntersecting': true, 'width': 200, 'height': 200}});
|
|
872
908
|
spec.buildRequests(bidRequests, bidderRequest)
|
|
873
909
|
clock.tick(1005);
|
|
874
910
|
|
|
@@ -877,6 +913,7 @@ describe('E-Planning Adapter', function () {
|
|
|
877
913
|
});
|
|
878
914
|
it('if the height is zero but the width is within the range', function() {
|
|
879
915
|
element.style.height = '0px';
|
|
916
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 1, 'isIntersecting': true, 'width': 500, 'height': 0}});
|
|
880
917
|
spec.buildRequests(bidRequests, bidderRequest)
|
|
881
918
|
clock.tick(1005);
|
|
882
919
|
|
|
@@ -886,6 +923,7 @@ describe('E-Planning Adapter', function () {
|
|
|
886
923
|
it('if both are zero', function() {
|
|
887
924
|
element.style.height = '0px';
|
|
888
925
|
element.style.width = '0px';
|
|
926
|
+
setIntersectionObserverMock({[ADUNIT_CODE_VIEW]: {'ratio': 1, 'isIntersecting': true, 'width': 0, 'height': 0}});
|
|
889
927
|
spec.buildRequests(bidRequests, bidderRequest)
|
|
890
928
|
clock.tick(1005);
|
|
891
929
|
|
|
@@ -893,16 +931,6 @@ describe('E-Planning Adapter', function () {
|
|
|
893
931
|
expect(storage.getDataFromLocalStorage(storageIdView)).to.equal(null);
|
|
894
932
|
});
|
|
895
933
|
});
|
|
896
|
-
context('when tab is inactive', function() {
|
|
897
|
-
it('I should not register if it is not in focus', function() {
|
|
898
|
-
createElementVisible();
|
|
899
|
-
focusStub.returns(false);
|
|
900
|
-
spec.buildRequests(bidRequests, bidderRequest);
|
|
901
|
-
clock.tick(1005);
|
|
902
|
-
expect(storage.getDataFromLocalStorage(storageIdRender)).to.equal('1');
|
|
903
|
-
expect(storage.getDataFromLocalStorage(storageIdView)).to.equal(null);
|
|
904
|
-
});
|
|
905
|
-
});
|
|
906
934
|
context('segmentBeginsBeforeTheVisibleRange', function() {
|
|
907
935
|
it('segmentBeginsBeforeTheVisibleRange', function() {
|
|
908
936
|
createElementOutOfRange();
|
|
@@ -933,7 +961,11 @@ describe('E-Planning Adapter', function () {
|
|
|
933
961
|
createElementVisible(ADUNIT_CODE_VIEW);
|
|
934
962
|
createElementVisible(ADUNIT_CODE_VIEW2);
|
|
935
963
|
createElementVisible(ADUNIT_CODE_VIEW3);
|
|
936
|
-
|
|
964
|
+
setIntersectionObserverMock({
|
|
965
|
+
[ADUNIT_CODE_VIEW]: {'ratio': 1, 'isIntersecting': true, 'width': 200, 'height': 200},
|
|
966
|
+
[ADUNIT_CODE_VIEW2]: {'ratio': 1, 'isIntersecting': true, 'width': 200, 'height': 200},
|
|
967
|
+
[ADUNIT_CODE_VIEW3]: {'ratio': 1, 'isIntersecting': true, 'width': 200, 'height': 200}
|
|
968
|
+
});
|
|
937
969
|
respuesta = spec.buildRequests(bidRequestMultiple, bidderRequest);
|
|
938
970
|
clock.tick(1005);
|
|
939
971
|
[ADUNIT_CODE_VIEW, ADUNIT_CODE_VIEW2, ADUNIT_CODE_VIEW3].forEach(ac => {
|
|
@@ -946,7 +978,11 @@ describe('E-Planning Adapter', function () {
|
|
|
946
978
|
createElementOutOfView(ADUNIT_CODE_VIEW);
|
|
947
979
|
createElementOutOfView(ADUNIT_CODE_VIEW2);
|
|
948
980
|
createElementOutOfView(ADUNIT_CODE_VIEW3);
|
|
949
|
-
|
|
981
|
+
setIntersectionObserverMock({
|
|
982
|
+
[ADUNIT_CODE_VIEW]: {'ratio': 0, 'isIntersecting': false, 'width': 200, 'height': 200},
|
|
983
|
+
[ADUNIT_CODE_VIEW2]: {'ratio': 0, 'isIntersecting': false, 'width': 200, 'height': 200},
|
|
984
|
+
[ADUNIT_CODE_VIEW3]: {'ratio': 0, 'isIntersecting': false, 'width': 200, 'height': 200}
|
|
985
|
+
});
|
|
950
986
|
respuesta = spec.buildRequests(bidRequestMultiple, bidderRequest);
|
|
951
987
|
clock.tick(1005);
|
|
952
988
|
[ADUNIT_CODE_VIEW, ADUNIT_CODE_VIEW2, ADUNIT_CODE_VIEW3].forEach(ac => {
|
|
@@ -960,7 +996,11 @@ describe('E-Planning Adapter', function () {
|
|
|
960
996
|
createElementVisible(ADUNIT_CODE_VIEW);
|
|
961
997
|
createElementOutOfView(ADUNIT_CODE_VIEW2);
|
|
962
998
|
createElementOutOfView(ADUNIT_CODE_VIEW3);
|
|
963
|
-
|
|
999
|
+
setIntersectionObserverMock({
|
|
1000
|
+
[ADUNIT_CODE_VIEW]: {'ratio': 1, 'isIntersecting': true, 'width': 200, 'height': 200},
|
|
1001
|
+
[ADUNIT_CODE_VIEW2]: {'ratio': 0.3, 'isIntersecting': true, 'width': 200, 'height': 200},
|
|
1002
|
+
[ADUNIT_CODE_VIEW3]: {'ratio': 0, 'isIntersecting': false, 'width': 200, 'height': 200}
|
|
1003
|
+
});
|
|
964
1004
|
respuesta = spec.buildRequests(bidRequestMultiple, bidderRequest);
|
|
965
1005
|
clock.tick(1005);
|
|
966
1006
|
expect(storage.getDataFromLocalStorage('pbsr_' + ADUNIT_CODE_VIEW)).to.equal('6');
|
|
@@ -989,7 +1029,7 @@ describe('E-Planning Adapter', function () {
|
|
|
989
1029
|
sandbox.restore();
|
|
990
1030
|
})
|
|
991
1031
|
|
|
992
|
-
it('should add eids to the request', function() {
|
|
1032
|
+
it('should add eids to the request ', function() {
|
|
993
1033
|
let bidRequests = [validBidView];
|
|
994
1034
|
const expected_id5id = encodeURIComponent(JSON.stringify({ uid: 'ID5-ZHMOL_IfFSt7_lVYX8rBZc6GH3XMWyPQOBUfr4bm0g!', ext: { linkType: 1 } }));
|
|
995
1035
|
const request = spec.buildRequests(bidRequests, bidderRequest);
|