prebid.js 7.30.0 → 7.32.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/adkernelBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/appushBidAdapter.js +1 -0
- 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/confiantRtdProvider.js +1 -0
- package/dist/connectIdSystem.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/datawrkzBidAdapter.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/holidBidAdapter.js +1 -0
- 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/jwplayerVideoProvider.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/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/medianetRtdProvider.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.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/orbitsoftBidAdapter.js +1 -0
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/permutiveRtdProvider.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/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/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/adloox.html +5 -0
- package/libraries/pbsExtensions/processors/adUnitCode.js +13 -0
- package/libraries/pbsExtensions/processors/pbs.js +5 -0
- package/modules/.submodules.json +1 -0
- package/modules/adagioBidAdapter.js +0 -4
- package/modules/adagioBidAdapter.md +4 -22
- package/modules/adkernelBidAdapter.js +2 -1
- package/modules/adlooxAnalyticsAdapter.md +5 -3
- package/modules/adlooxRtdProvider.js +82 -278
- package/modules/adlooxRtdProvider.md +6 -6
- package/modules/aidemBidAdapter.js +4 -0
- package/modules/aidemBidAdapter.md +1 -0
- package/modules/alkimiBidAdapter.js +23 -6
- package/modules/aolBidAdapter.js +12 -0
- package/modules/appnexusBidAdapter.js +2 -2
- package/modules/appushBidAdapter.js +188 -0
- package/modules/appushBidAdapter.md +79 -0
- package/modules/asoBidAdapter.js +8 -5
- package/modules/confiantRtdProvider.js +128 -0
- package/modules/confiantRtdProvider.md +45 -0
- package/modules/connectIdSystem.js +15 -1
- package/modules/datawrkzBidAdapter.js +24 -4
- package/modules/feedadBidAdapter.js +17 -7
- package/modules/holidBidAdapter.js +170 -0
- package/modules/holidBidAdapter.md +36 -0
- package/modules/jwplayerVideoProvider.js +10 -3
- package/modules/kueezRtbBidAdapter.js +21 -8
- package/modules/medianetRtdProvider.js +4 -4
- package/modules/nexx360BidAdapter.js +5 -7
- package/modules/orbitsoftBidAdapter.js +150 -0
- package/modules/permutiveRtdProvider.js +1 -1
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
- package/modules/riseBidAdapter.js +2 -1
- package/modules/riseBidAdapter.md +2 -0
- package/modules/seedtagBidAdapter.js +12 -0
- package/modules/smartxBidAdapter.js +6 -0
- package/modules/taboolaBidAdapter.js +61 -14
- package/modules/yahoosspBidAdapter.js +5 -0
- package/modules/yieldlabBidAdapter.js +150 -134
- package/modules/yieldmoBidAdapter.js +1 -12
- package/package.json +1 -1
- package/src/adloader.js +2 -1
- package/src/prebid.js +7 -8
- package/test/spec/modules/adagioBidAdapter_spec.js +1 -28
- package/test/spec/modules/adlooxRtdProvider_spec.js +28 -120
- package/test/spec/modules/aidemBidAdapter_spec.js +10 -2
- package/test/spec/modules/alkimiBidAdapter_spec.js +15 -3
- package/test/spec/modules/aolBidAdapter_spec.js +22 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +7 -3
- package/test/spec/modules/appushBidAdapter_spec.js +372 -0
- package/test/spec/modules/confiantRtdProvider_spec.js +107 -0
- package/test/spec/modules/connectIdSystem_spec.js +17 -5
- package/test/spec/modules/feedadBidAdapter_spec.js +60 -13
- package/test/spec/modules/holidBidAdapter_spec.js +165 -0
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +147 -24
- package/test/spec/modules/medianetRtdProvider_spec.js +3 -3
- package/test/spec/modules/orbitsoftBidAdapter_spec.js +255 -0
- package/test/spec/modules/riseBidAdapter_spec.js +7 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +56 -10
- package/test/spec/modules/smartxBidAdapter_spec.js +10 -0
- package/test/spec/modules/taboolaBidAdapter_spec.js +142 -5
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +45 -10
- package/test/spec/modules/yahoosspBidAdapter_spec.js +16 -1
- package/test/spec/modules/yieldlabBidAdapter_spec.js +311 -301
- package/test/spec/modules/yieldmoBidAdapter_spec.js +70 -0
- package/test/spec/ortbConverter/pbsExtensions/adUnitCode_spec.js +23 -0
- package/test/spec/unit/pbjs_api_spec.js +11 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { expect } from 'chai'
|
|
2
|
+
import { spec } from 'modules/holidBidAdapter.js'
|
|
3
|
+
|
|
4
|
+
describe('holidBidAdapterTests', () => {
|
|
5
|
+
const bidRequestData = {
|
|
6
|
+
bidder: 'holid',
|
|
7
|
+
adUnitCode: 'test-div',
|
|
8
|
+
bidId: 'bid-id',
|
|
9
|
+
auctionId: 'test-id',
|
|
10
|
+
params: { adUnitID: '12345' },
|
|
11
|
+
mediaTypes: { banner: {} },
|
|
12
|
+
sizes: [[300, 250]],
|
|
13
|
+
ortb2: {
|
|
14
|
+
site: {
|
|
15
|
+
publisher: {
|
|
16
|
+
domain: 'https://foo.bar',
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
regs: {
|
|
20
|
+
gdpr: 1,
|
|
21
|
+
},
|
|
22
|
+
user: {
|
|
23
|
+
ext: {
|
|
24
|
+
consent: 'G4ll0p1ng_Un1c0rn5',
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
device: {
|
|
28
|
+
h: 410,
|
|
29
|
+
w: 1860,
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
describe('isBidRequestValid', () => {
|
|
35
|
+
const bid = JSON.parse(JSON.stringify(bidRequestData))
|
|
36
|
+
|
|
37
|
+
it('should return true', () => {
|
|
38
|
+
expect(spec.isBidRequestValid(bid)).to.equal(true)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('should return false when required params are not passed', () => {
|
|
42
|
+
const bid = JSON.parse(JSON.stringify(bidRequestData))
|
|
43
|
+
delete bid.params.adUnitID
|
|
44
|
+
|
|
45
|
+
expect(spec.isBidRequestValid(bid)).to.equal(false)
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
describe('buildRequests', () => {
|
|
50
|
+
const bid = JSON.parse(JSON.stringify(bidRequestData))
|
|
51
|
+
const request = spec.buildRequests([bid], bid)
|
|
52
|
+
const payload = JSON.parse(request[0].data)
|
|
53
|
+
|
|
54
|
+
it('should include ext in imp', () => {
|
|
55
|
+
expect(payload.imp[0].ext).to.exist
|
|
56
|
+
expect(payload.imp[0].ext).to.deep.equal({
|
|
57
|
+
prebid: { storedrequest: { id: '12345' } },
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
it('should include banner format in imp', () => {
|
|
62
|
+
expect(payload.imp[0].banner).to.exist
|
|
63
|
+
expect(payload.imp[0].banner).to.deep.equal({
|
|
64
|
+
format: [{ w: 300, h: 250 }],
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('should include ortb2 first party data', () => {
|
|
69
|
+
expect(payload.device.w).to.equal(1860)
|
|
70
|
+
expect(payload.device.h).to.equal(410)
|
|
71
|
+
expect(payload.user.ext.consent).to.equal('G4ll0p1ng_Un1c0rn5')
|
|
72
|
+
expect(payload.regs.gdpr).to.equal(1)
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
describe('interpretResponse', () => {
|
|
77
|
+
const serverResponse = {
|
|
78
|
+
body: {
|
|
79
|
+
id: 'test-id',
|
|
80
|
+
cur: 'USD',
|
|
81
|
+
seatbid: [
|
|
82
|
+
{
|
|
83
|
+
bid: [
|
|
84
|
+
{
|
|
85
|
+
id: 'testbidid',
|
|
86
|
+
price: 0.4,
|
|
87
|
+
adm: 'test-ad',
|
|
88
|
+
adid: 789456,
|
|
89
|
+
crid: 1234,
|
|
90
|
+
w: 300,
|
|
91
|
+
h: 250,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const interpretedResponse = spec.interpretResponse(
|
|
100
|
+
serverResponse,
|
|
101
|
+
bidRequestData
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
it('should interpret response', () => {
|
|
105
|
+
expect(interpretedResponse[0].requestId).to.equal(bidRequestData.bidId)
|
|
106
|
+
expect(interpretedResponse[0].cpm).to.equal(
|
|
107
|
+
serverResponse.body.seatbid[0].bid[0].price
|
|
108
|
+
)
|
|
109
|
+
expect(interpretedResponse[0].ad).to.equal(
|
|
110
|
+
serverResponse.body.seatbid[0].bid[0].adm
|
|
111
|
+
)
|
|
112
|
+
expect(interpretedResponse[0].creativeId).to.equal(
|
|
113
|
+
serverResponse.body.seatbid[0].bid[0].crid
|
|
114
|
+
)
|
|
115
|
+
expect(interpretedResponse[0].width).to.equal(
|
|
116
|
+
serverResponse.body.seatbid[0].bid[0].w
|
|
117
|
+
)
|
|
118
|
+
expect(interpretedResponse[0].height).to.equal(
|
|
119
|
+
serverResponse.body.seatbid[0].bid[0].h
|
|
120
|
+
)
|
|
121
|
+
expect(interpretedResponse[0].currency).to.equal(serverResponse.body.cur)
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
describe('getUserSyncs', () => {
|
|
126
|
+
it('should return user sync', () => {
|
|
127
|
+
const optionsType = {
|
|
128
|
+
iframeEnabled: true,
|
|
129
|
+
pixelEnabled: true,
|
|
130
|
+
}
|
|
131
|
+
const serverResponse = [
|
|
132
|
+
{
|
|
133
|
+
body: {
|
|
134
|
+
ext: {
|
|
135
|
+
responsetimemillis: {
|
|
136
|
+
'test seat 1': 2,
|
|
137
|
+
'test seat 2': 1,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
]
|
|
143
|
+
const gdprConsent = {
|
|
144
|
+
gdprApplies: 1,
|
|
145
|
+
consentString: 'dkj49Sjmfjuj34as:12jaf90123hufabidfy9u23brfpoig',
|
|
146
|
+
}
|
|
147
|
+
const uspConsent = 'mkjvbiniwot4827obfoy8sdg8203gb'
|
|
148
|
+
const expectedUserSyncs = [
|
|
149
|
+
{
|
|
150
|
+
type: 'iframe',
|
|
151
|
+
url: 'https://null.holid.io/sync.html?bidders=%5B%22test%20seat%201%22%2C%22test%20seat%202%22%5D&gdpr=1&gdpr_consent=dkj49Sjmfjuj34as:12jaf90123hufabidfy9u23brfpoig&usp_consent=mkjvbiniwot4827obfoy8sdg8203gb&type=iframe',
|
|
152
|
+
},
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
const userSyncs = spec.getUserSyncs(
|
|
156
|
+
optionsType,
|
|
157
|
+
serverResponse,
|
|
158
|
+
gdprConsent,
|
|
159
|
+
uspConsent
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
expect(userSyncs).to.deep.equal(expectedUserSyncs)
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {expect} from 'chai';
|
|
1
|
+
import { expect } from 'chai';
|
|
2
2
|
import {
|
|
3
3
|
spec as adapter,
|
|
4
4
|
SUPPORTED_ID_SYSTEMS,
|
|
@@ -13,8 +13,9 @@ import {
|
|
|
13
13
|
getUniqueDealId,
|
|
14
14
|
} from 'modules/kueezRtbBidAdapter.js';
|
|
15
15
|
import * as utils from 'src/utils.js';
|
|
16
|
-
import {version} from 'package.json';
|
|
17
|
-
import {useFakeTimers} from 'sinon';
|
|
16
|
+
import { version } from 'package.json';
|
|
17
|
+
import { useFakeTimers } from 'sinon';
|
|
18
|
+
import { BANNER, VIDEO } from '../../../src/mediaTypes';
|
|
18
19
|
|
|
19
20
|
const SUB_DOMAIN = 'exchange';
|
|
20
21
|
|
|
@@ -36,9 +37,42 @@ const BID = {
|
|
|
36
37
|
'sizes': [[300, 250], [300, 600]],
|
|
37
38
|
'bidderRequestId': '1fdb5ff1b6eaa7',
|
|
38
39
|
'requestId': 'b0777d85-d061-450e-9bc7-260dd54bbb7a',
|
|
39
|
-
'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc'
|
|
40
|
+
'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
|
|
41
|
+
'mediaTypes': [BANNER]
|
|
40
42
|
};
|
|
41
43
|
|
|
44
|
+
const VIDEO_BID = {
|
|
45
|
+
'bidId': '2d52001cabd527',
|
|
46
|
+
'adUnitCode': '63550ad1ff6642d368cba59dh5884270560',
|
|
47
|
+
'bidderRequestId': '12a8ae9ada9c13',
|
|
48
|
+
'transactionId': '56e184c6-bde9-497b-b9b9-cf47a61381ee',
|
|
49
|
+
'schain': 'a0819c69-005b-41ed-af06-1be1e0aefefc',
|
|
50
|
+
'params': {
|
|
51
|
+
'subDomain': SUB_DOMAIN,
|
|
52
|
+
'cId': '635509f7ff6642d368cb9837',
|
|
53
|
+
'pId': '59ac17c192832d0011283fe3',
|
|
54
|
+
'bidFloor': 0.1
|
|
55
|
+
},
|
|
56
|
+
'sizes': [[545, 307]],
|
|
57
|
+
'mediaTypes': {
|
|
58
|
+
'video': {
|
|
59
|
+
'playerSize': [[545, 307]],
|
|
60
|
+
'context': 'instream',
|
|
61
|
+
'mimes': [
|
|
62
|
+
'video/mp4',
|
|
63
|
+
'application/javascript'
|
|
64
|
+
],
|
|
65
|
+
'protocols': [2, 3, 5, 6],
|
|
66
|
+
'maxduration': 60,
|
|
67
|
+
'minduration': 0,
|
|
68
|
+
'startdelay': 0,
|
|
69
|
+
'linearity': 1,
|
|
70
|
+
'api': [2],
|
|
71
|
+
'placement': 1
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
42
76
|
const BIDDER_REQUEST = {
|
|
43
77
|
'gdprConsent': {
|
|
44
78
|
'consentString': 'consent_string',
|
|
@@ -73,6 +107,23 @@ const SERVER_RESPONSE = {
|
|
|
73
107
|
}
|
|
74
108
|
};
|
|
75
109
|
|
|
110
|
+
const VIDEO_SERVER_RESPONSE = {
|
|
111
|
+
body: {
|
|
112
|
+
'cid': '635509f7ff6642d368cb9837',
|
|
113
|
+
'results': [{
|
|
114
|
+
'ad': '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
|
|
115
|
+
'advertiserDomains': ['kueezrtb.com'],
|
|
116
|
+
'exp': 60,
|
|
117
|
+
'width': 545,
|
|
118
|
+
'height': 307,
|
|
119
|
+
'mediaType': 'video',
|
|
120
|
+
'creativeId': '12610997325162499419',
|
|
121
|
+
'price': 2,
|
|
122
|
+
'cookies': []
|
|
123
|
+
}]
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
76
127
|
const REQUEST = {
|
|
77
128
|
data: {
|
|
78
129
|
width: 300,
|
|
@@ -83,7 +134,7 @@ const REQUEST = {
|
|
|
83
134
|
|
|
84
135
|
function getTopWindowQueryParams() {
|
|
85
136
|
try {
|
|
86
|
-
const parsedUrl = utils.parseUrl(window.top.document.URL, {decodeSearchAsString: true});
|
|
137
|
+
const parsedUrl = utils.parseUrl(window.top.document.URL, { decodeSearchAsString: true });
|
|
87
138
|
return parsedUrl.search;
|
|
88
139
|
} catch (e) {
|
|
89
140
|
return '';
|
|
@@ -111,6 +162,11 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
111
162
|
it('exists and is a string', function () {
|
|
112
163
|
expect(adapter.code).to.exist.and.to.be.a('string');
|
|
113
164
|
});
|
|
165
|
+
|
|
166
|
+
it('exists and contains media types', function () {
|
|
167
|
+
expect(adapter.supportedMediaTypes).to.exist.and.to.be.an('array').with.length(2);
|
|
168
|
+
expect(adapter.supportedMediaTypes).to.contain.members([BANNER, VIDEO]);
|
|
169
|
+
});
|
|
114
170
|
});
|
|
115
171
|
|
|
116
172
|
describe('validate bid requests', function () {
|
|
@@ -155,7 +211,53 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
155
211
|
sandbox.stub(Date, 'now').returns(1000);
|
|
156
212
|
});
|
|
157
213
|
|
|
158
|
-
it('should build request
|
|
214
|
+
it('should build video request', function () {
|
|
215
|
+
const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
|
|
216
|
+
const requests = adapter.buildRequests([VIDEO_BID], BIDDER_REQUEST);
|
|
217
|
+
expect(requests).to.have.length(1);
|
|
218
|
+
expect(requests[0]).to.deep.equal({
|
|
219
|
+
method: 'POST',
|
|
220
|
+
url: `${createDomain(SUB_DOMAIN)}/prebid/multi/635509f7ff6642d368cb9837`,
|
|
221
|
+
data: {
|
|
222
|
+
adUnitCode: '63550ad1ff6642d368cba59dh5884270560',
|
|
223
|
+
bidFloor: 0.1,
|
|
224
|
+
bidId: '2d52001cabd527',
|
|
225
|
+
bidderVersion: adapter.version,
|
|
226
|
+
cb: 1000,
|
|
227
|
+
gdpr: 1,
|
|
228
|
+
gdprConsent: 'consent_string',
|
|
229
|
+
usPrivacy: 'consent_string',
|
|
230
|
+
prebidVersion: version,
|
|
231
|
+
publisherId: '59ac17c192832d0011283fe3',
|
|
232
|
+
url: 'https%3A%2F%2Fwww.greatsite.com',
|
|
233
|
+
referrer: 'https://www.somereferrer.com',
|
|
234
|
+
res: `${window.top.screen.width}x${window.top.screen.height}`,
|
|
235
|
+
schain: VIDEO_BID.schain,
|
|
236
|
+
sizes: ['545x307'],
|
|
237
|
+
uniqueDealId: `${hashUrl}_${Date.now().toString()}`,
|
|
238
|
+
uqs: getTopWindowQueryParams(),
|
|
239
|
+
mediaTypes: {
|
|
240
|
+
video: {
|
|
241
|
+
api: [2],
|
|
242
|
+
context: 'instream',
|
|
243
|
+
linearity: 1,
|
|
244
|
+
maxduration: 60,
|
|
245
|
+
mimes: [
|
|
246
|
+
'video/mp4',
|
|
247
|
+
'application/javascript'
|
|
248
|
+
],
|
|
249
|
+
minduration: 0,
|
|
250
|
+
placement: 1,
|
|
251
|
+
playerSize: [[545, 307]],
|
|
252
|
+
protocols: [2, 3, 5, 6],
|
|
253
|
+
startdelay: 0
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
it('should build banner request for each size', function () {
|
|
159
261
|
const hashUrl = hashCode(BIDDER_REQUEST.refererInfo.page);
|
|
160
262
|
const requests = adapter.buildRequests([BID], BIDDER_REQUEST);
|
|
161
263
|
expect(requests).to.have.length(1);
|
|
@@ -179,6 +281,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
179
281
|
prebidVersion: version,
|
|
180
282
|
schain: BID.schain,
|
|
181
283
|
res: `${window.top.screen.width}x${window.top.screen.height}`,
|
|
284
|
+
mediaTypes: [BANNER],
|
|
182
285
|
uqs: getTopWindowQueryParams(),
|
|
183
286
|
'ext.param1': 'loremipsum',
|
|
184
287
|
'ext.param2': 'dolorsitamet',
|
|
@@ -193,7 +296,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
193
296
|
});
|
|
194
297
|
describe('getUserSyncs', function () {
|
|
195
298
|
it('should have valid user sync with iframeEnabled', function () {
|
|
196
|
-
const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
|
|
299
|
+
const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
|
|
197
300
|
|
|
198
301
|
expect(result).to.deep.equal([{
|
|
199
302
|
type: 'iframe',
|
|
@@ -202,7 +305,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
202
305
|
});
|
|
203
306
|
|
|
204
307
|
it('should have valid user sync with cid on response', function () {
|
|
205
|
-
const result = adapter.getUserSyncs({iframeEnabled: true}, [SERVER_RESPONSE]);
|
|
308
|
+
const result = adapter.getUserSyncs({ iframeEnabled: true }, [SERVER_RESPONSE]);
|
|
206
309
|
expect(result).to.deep.equal([{
|
|
207
310
|
type: 'iframe',
|
|
208
311
|
url: 'https://sync.kueezrtb.com/api/sync/iframe/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy='
|
|
@@ -210,7 +313,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
210
313
|
});
|
|
211
314
|
|
|
212
315
|
it('should have valid user sync with pixelEnabled', function () {
|
|
213
|
-
const result = adapter.getUserSyncs({pixelEnabled: true}, [SERVER_RESPONSE]);
|
|
316
|
+
const result = adapter.getUserSyncs({ pixelEnabled: true }, [SERVER_RESPONSE]);
|
|
214
317
|
|
|
215
318
|
expect(result).to.deep.equal([{
|
|
216
319
|
'url': 'https://sync.kueezrtb.com/api/sync/image/?cid=testcid123&gdpr=0&gdpr_consent=&us_privacy=',
|
|
@@ -226,16 +329,16 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
226
329
|
});
|
|
227
330
|
|
|
228
331
|
it('should return empty array when there is no ad', function () {
|
|
229
|
-
const responses = adapter.interpretResponse({price: 1, ad: ''});
|
|
332
|
+
const responses = adapter.interpretResponse({ price: 1, ad: '' });
|
|
230
333
|
expect(responses).to.be.empty;
|
|
231
334
|
});
|
|
232
335
|
|
|
233
336
|
it('should return empty array when there is no price', function () {
|
|
234
|
-
const responses = adapter.interpretResponse({price: null, ad: 'great ad'});
|
|
337
|
+
const responses = adapter.interpretResponse({ price: null, ad: 'great ad' });
|
|
235
338
|
expect(responses).to.be.empty;
|
|
236
339
|
});
|
|
237
340
|
|
|
238
|
-
it('should return an array of interpreted responses', function () {
|
|
341
|
+
it('should return an array of interpreted banner responses', function () {
|
|
239
342
|
const responses = adapter.interpretResponse(SERVER_RESPONSE, REQUEST);
|
|
240
343
|
expect(responses).to.have.length(1);
|
|
241
344
|
expect(responses[0]).to.deep.equal({
|
|
@@ -254,6 +357,26 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
254
357
|
});
|
|
255
358
|
});
|
|
256
359
|
|
|
360
|
+
it('should return an array of interpreted video responses', function () {
|
|
361
|
+
const responses = adapter.interpretResponse(VIDEO_SERVER_RESPONSE, REQUEST);
|
|
362
|
+
expect(responses).to.have.length(1);
|
|
363
|
+
expect(responses[0]).to.deep.equal({
|
|
364
|
+
requestId: '2d52001cabd527',
|
|
365
|
+
cpm: 2,
|
|
366
|
+
width: 545,
|
|
367
|
+
height: 307,
|
|
368
|
+
mediaType: 'video',
|
|
369
|
+
creativeId: '12610997325162499419',
|
|
370
|
+
currency: 'USD',
|
|
371
|
+
netRevenue: true,
|
|
372
|
+
ttl: 60,
|
|
373
|
+
vastXml: '<VAST version=\"3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"></VAST>',
|
|
374
|
+
meta: {
|
|
375
|
+
advertiserDomains: ['kueezrtb.com']
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
|
|
257
380
|
it('should take default TTL', function () {
|
|
258
381
|
const serverResponse = utils.deepClone(SERVER_RESPONSE);
|
|
259
382
|
delete serverResponse.body.results[0].exp;
|
|
@@ -271,11 +394,11 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
271
394
|
const userId = (function () {
|
|
272
395
|
switch (idSystemProvider) {
|
|
273
396
|
case 'lipb':
|
|
274
|
-
return {lipbid: id};
|
|
397
|
+
return { lipbid: id };
|
|
275
398
|
case 'parrableId':
|
|
276
|
-
return {eid: id};
|
|
399
|
+
return { eid: id };
|
|
277
400
|
case 'id5id':
|
|
278
|
-
return {uid: id};
|
|
401
|
+
return { uid: id };
|
|
279
402
|
default:
|
|
280
403
|
return id;
|
|
281
404
|
}
|
|
@@ -294,18 +417,18 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
294
417
|
|
|
295
418
|
describe('alternate param names extractors', function () {
|
|
296
419
|
it('should return undefined when param not supported', function () {
|
|
297
|
-
const cid = extractCID({'c_id': '1'});
|
|
298
|
-
const pid = extractPID({'p_id': '1'});
|
|
299
|
-
const subDomain = extractSubDomain({'sub_domain': 'prebid'});
|
|
420
|
+
const cid = extractCID({ 'c_id': '1' });
|
|
421
|
+
const pid = extractPID({ 'p_id': '1' });
|
|
422
|
+
const subDomain = extractSubDomain({ 'sub_domain': 'prebid' });
|
|
300
423
|
expect(cid).to.be.undefined;
|
|
301
424
|
expect(pid).to.be.undefined;
|
|
302
425
|
expect(subDomain).to.be.undefined;
|
|
303
426
|
});
|
|
304
427
|
|
|
305
428
|
it('should return value when param supported', function () {
|
|
306
|
-
const cid = extractCID({'cID': '1'});
|
|
307
|
-
const pid = extractPID({'Pid': '2'});
|
|
308
|
-
const subDomain = extractSubDomain({'subDOMAIN': 'prebid'});
|
|
429
|
+
const cid = extractCID({ 'cID': '1' });
|
|
430
|
+
const pid = extractPID({ 'Pid': '2' });
|
|
431
|
+
const subDomain = extractSubDomain({ 'subDOMAIN': 'prebid' });
|
|
309
432
|
expect(cid).to.be.equal('1');
|
|
310
433
|
expect(pid).to.be.equal('2');
|
|
311
434
|
expect(subDomain).to.be.equal('prebid');
|
|
@@ -365,7 +488,7 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
365
488
|
now
|
|
366
489
|
});
|
|
367
490
|
setStorageItem('myKey', 2020);
|
|
368
|
-
const {value, created} = getStorageItem('myKey');
|
|
491
|
+
const { value, created } = getStorageItem('myKey');
|
|
369
492
|
expect(created).to.be.equal(now);
|
|
370
493
|
expect(value).to.be.equal(2020);
|
|
371
494
|
expect(typeof value).to.be.equal('number');
|
|
@@ -381,8 +504,8 @@ describe('KueezRtbBidAdapter', function () {
|
|
|
381
504
|
});
|
|
382
505
|
|
|
383
506
|
it('should parse JSON value', function () {
|
|
384
|
-
const data = JSON.stringify({event: 'send'});
|
|
385
|
-
const {event} = tryParseJSON(data);
|
|
507
|
+
const data = JSON.stringify({ event: 'send' });
|
|
508
|
+
const { event } = tryParseJSON(data);
|
|
386
509
|
expect(event).to.be.equal('send');
|
|
387
510
|
});
|
|
388
511
|
|
|
@@ -66,12 +66,12 @@ describe('medianet realtime module', function () {
|
|
|
66
66
|
describe('getTargeting should work correctly', function () {
|
|
67
67
|
it('should return empty if not loaded', function () {
|
|
68
68
|
window.mnjs.loaded = false;
|
|
69
|
-
assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData([]), {});
|
|
69
|
+
assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData([], {}, {}, {}), {});
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
it('should return ad unit codes when ad units are present', function () {
|
|
73
73
|
const adUnitCodes = ['code1', 'code2'];
|
|
74
|
-
assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData(adUnitCodes), {
|
|
74
|
+
assert.deepEqual(medianetRTD.medianetRtdModule.getTargetingData(adUnitCodes, {}, {}, {}), {
|
|
75
75
|
code1: {'mnadc': 'code1'},
|
|
76
76
|
code2: {'mnadc': 'code2'},
|
|
77
77
|
});
|
|
@@ -79,7 +79,7 @@ describe('medianet realtime module', function () {
|
|
|
79
79
|
|
|
80
80
|
it('should call mnjs.getTargetingData if loaded', function () {
|
|
81
81
|
window.mnjs.loaded = true;
|
|
82
|
-
medianetRTD.medianetRtdModule.getTargetingData([]);
|
|
82
|
+
medianetRTD.medianetRtdModule.getTargetingData([], {}, {}, {});
|
|
83
83
|
assert.equal(getTargetingDataSpy.called, true);
|
|
84
84
|
});
|
|
85
85
|
});
|