prebid.js 7.33.0 → 7.35.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/.devcontainer/devcontainer.json +2 -1
- package/.github/workflows/issue_tracker.yml +27 -16
- 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/admaticBidAdapter.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.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/arcspanRtdProvider.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/bliinkBidAdapter.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/consentManagement.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/dspxBidAdapter.js +1 -1
- package/dist/emx_digitalBidAdapter.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/hadronIdSystem.js +1 -1
- package/dist/holidBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.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/lotamePanoramaIdSystem.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/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +140 -149
- 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/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.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/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pulsepointBidAdapter.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/smartytechBidAdapter.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/dist/zeusPrimeRtdProvider.js +4 -14
- package/integrationExamples/gpt/hello_world.html +0 -0
- package/libraries/ortbConverter/processors/default.js +19 -1
- package/modules/.submodules.json +1 -0
- package/modules/admaticBidAdapter.js +2 -1
- package/modules/admixerBidAdapter.js +26 -4
- package/modules/adnuntiusBidAdapter.js +36 -38
- package/modules/adyoulikeBidAdapter.js +2 -0
- package/modules/arcspanRtdProvider.js +73 -0
- package/modules/arcspanRtdProvider.md +11 -0
- package/modules/bliinkBidAdapter.js +1 -1
- package/modules/consentManagement.js +33 -5
- package/modules/consumableBidAdapter.js +20 -2
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/cwireBidAdapter.js +169 -242
- package/modules/cwireBidAdapter.md +15 -14
- package/modules/emx_digitalBidAdapter.js +9 -2
- package/modules/hadronIdSystem.js +37 -32
- package/modules/holidBidAdapter.js +9 -4
- package/modules/kargoBidAdapter.js +5 -1
- package/modules/lotamePanoramaIdSystem.js +9 -1
- package/modules/nextMillenniumBidAdapter.js +19 -9
- package/modules/nexx360BidAdapter.js +1 -2
- package/modules/onetagBidAdapter.js +12 -1
- package/modules/openxBidAdapter.js +5 -0
- package/modules/outbrainBidAdapter.js +103 -6
- package/modules/permutiveRtdProvider.js +17 -12
- package/modules/prebidServerBidAdapter/index.js +14 -1
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -1
- package/modules/priceFloors.js +7 -8
- package/modules/pulsepointBidAdapter.js +2 -0
- package/modules/seedingAllianceBidAdapter.js +129 -116
- package/modules/smartadserverBidAdapter.js +39 -28
- package/modules/smartyadsBidAdapter.md +9 -0
- package/modules/smartytechBidAdapter.js +67 -10
- package/modules/smartytechBidAdapter.md +44 -33
- package/modules/sonobiBidAdapter.js +17 -10
- package/modules/taboolaBidAdapter.js +2 -1
- package/modules/tripleliftBidAdapter.js +4 -0
- package/modules/vidazooBidAdapter.js +56 -22
- package/modules/zeta_global_sspBidAdapter.js +15 -0
- package/modules/zeusPrimeRtdProvider.js +3 -323
- package/modules/zeusPrimeRtdProvider.md +3 -0
- package/package.json +1 -1
- package/src/adloader.js +2 -1
- package/src/auction.js +2 -11
- package/src/prebid.js +8 -0
- package/src/utils/cpm.js +17 -0
- package/test/spec/modules/admixerBidAdapter_spec.js +140 -60
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +120 -120
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +3 -0
- package/test/spec/modules/arcspanRtdProvider_spec.js +187 -0
- package/test/spec/modules/bliinkBidAdapter_spec.js +7 -7
- package/test/spec/modules/consentManagement_spec.js +49 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +46 -0
- package/test/spec/modules/cwireBidAdapter_spec.js +249 -335
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +30 -1
- package/test/spec/modules/hadronIdSystem_spec.js +4 -6
- package/test/spec/modules/holidBidAdapter_spec.js +29 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +32 -0
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +16 -10
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +14 -2
- package/test/spec/modules/nexx360BidAdapter_spec.js +0 -4
- package/test/spec/modules/onetagBidAdapter_spec.js +43 -0
- package/test/spec/modules/openxBidAdapter_spec.js +41 -0
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +41 -0
- package/test/spec/modules/outbrainBidAdapter_spec.js +182 -18
- package/test/spec/modules/prebidServerBidAdapter_spec.js +138 -0
- package/test/spec/modules/pulsepointBidAdapter_spec.js +11 -1
- package/test/spec/modules/seedingAllianceAdapter_spec.js +66 -23
- package/test/spec/modules/smartadserverBidAdapter_spec.js +116 -5
- package/test/spec/modules/smartytechBidAdapter_spec.js +172 -14
- package/test/spec/modules/sonobiBidAdapter_spec.js +2 -1
- package/test/spec/modules/taboolaBidAdapter_spec.js +12 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +13 -0
- package/test/spec/modules/userId_spec.js +19 -14
- package/test/spec/modules/vidazooBidAdapter_spec.js +61 -22
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
- package/test/spec/ortbConverter/default_processors_spec.js +23 -0
- package/test/spec/unit/pbjs_api_spec.js +14 -0
- package/test/spec/unit/utils/cpm_spec.js +64 -0
- package/test/spec/modules/zeusPrimeRtdProvider_spec.js +0 -410
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { arcspanSubmodule } from 'modules/arcspanRtdProvider.js';
|
|
2
|
+
import { expect } from 'chai';
|
|
3
|
+
import { loadExternalScript } from 'src/adloader.js';
|
|
4
|
+
|
|
5
|
+
describe('arcspanRtdProvider', function () {
|
|
6
|
+
describe('init', function () {
|
|
7
|
+
afterEach(function () {
|
|
8
|
+
window.arcobj1 = undefined;
|
|
9
|
+
window.arcobj2 = undefined;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('successfully initializes with a valid silo ID', function () {
|
|
13
|
+
expect(arcspanSubmodule.init(getGoodConfig())).to.equal(true);
|
|
14
|
+
expect(loadExternalScript.called).to.be.ok;
|
|
15
|
+
expect(loadExternalScript.args[0][0]).to.deep.equal('https://silo13.p7cloud.net/as.js');
|
|
16
|
+
loadExternalScript.resetHistory();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('fails to initialize with a missing silo ID', function () {
|
|
20
|
+
expect(arcspanSubmodule.init(getBadConfig())).to.equal(false);
|
|
21
|
+
expect(loadExternalScript.called).to.be.not.ok;
|
|
22
|
+
loadExternalScript.resetHistory();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('drops localhost script for test silo', function () {
|
|
26
|
+
expect(arcspanSubmodule.init(getTestConfig())).to.equal(true);
|
|
27
|
+
expect(loadExternalScript.called).to.be.ok;
|
|
28
|
+
expect(loadExternalScript.args[0][0]).to.deep.equal('https://localhost:8080/as.js');
|
|
29
|
+
loadExternalScript.resetHistory();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe('alterBidRequests', function () {
|
|
34
|
+
afterEach(function () {
|
|
35
|
+
window.arcobj1 = undefined;
|
|
36
|
+
window.arcobj2 = undefined;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('alters the bid request 1', function () {
|
|
40
|
+
setIAB({
|
|
41
|
+
raw: {
|
|
42
|
+
images: [
|
|
43
|
+
'Religion & Spirituality',
|
|
44
|
+
'Medical Health>Substance Abuse',
|
|
45
|
+
'Religion & Spirituality>Astrology',
|
|
46
|
+
'Medical Health',
|
|
47
|
+
'Events & Attractions',
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
codes: {
|
|
51
|
+
images: ['IAB23-10', 'IAB7', 'IAB7-42', 'IAB15-1'],
|
|
52
|
+
},
|
|
53
|
+
newcodes: {
|
|
54
|
+
images: ['150', '453', '311', '456', '286'],
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
var reqBidsConfigObj = {};
|
|
59
|
+
reqBidsConfigObj.ortb2Fragments = {};
|
|
60
|
+
reqBidsConfigObj.ortb2Fragments.global = {};
|
|
61
|
+
arcspanSubmodule.getBidRequestData(reqBidsConfigObj, function () {
|
|
62
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.name).to.equal(
|
|
63
|
+
'arcspan'
|
|
64
|
+
);
|
|
65
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.keywords).to.equal(
|
|
66
|
+
'Religion & Spirituality,Medical Health>Substance Abuse,Religion & Spirituality>Astrology,Medical Health,Events & Attractions'
|
|
67
|
+
);
|
|
68
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.content.data[0].ext.segtax).to.equal(6);
|
|
69
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.cat).to.eql([
|
|
70
|
+
'IAB23_10',
|
|
71
|
+
'IAB7',
|
|
72
|
+
'IAB7_42',
|
|
73
|
+
'IAB15_1',
|
|
74
|
+
]);
|
|
75
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.sectioncat).to.eql([
|
|
76
|
+
'IAB23_10',
|
|
77
|
+
'IAB7',
|
|
78
|
+
'IAB7_42',
|
|
79
|
+
'IAB15_1'
|
|
80
|
+
]);
|
|
81
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.pagecat).to.eql([
|
|
82
|
+
'IAB23_10',
|
|
83
|
+
'IAB7',
|
|
84
|
+
'IAB7_42',
|
|
85
|
+
'IAB15_1',
|
|
86
|
+
]);
|
|
87
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.content.data[0].segment).to.eql([
|
|
88
|
+
{ id: '150' },
|
|
89
|
+
{ id: '453' },
|
|
90
|
+
{ id: '311' },
|
|
91
|
+
{ id: '456' },
|
|
92
|
+
{ id: '286' }
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('alters the bid request 2', function () {
|
|
98
|
+
setIAB({
|
|
99
|
+
raw: { text: ['Sports', 'Sports>Soccer'] },
|
|
100
|
+
codes: { text: ['IAB17', 'IAB17-44'] },
|
|
101
|
+
newcodes: { text: ['483', '533'] },
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
var reqBidsConfigObj = {};
|
|
105
|
+
reqBidsConfigObj.ortb2Fragments = {};
|
|
106
|
+
reqBidsConfigObj.ortb2Fragments.global = {};
|
|
107
|
+
arcspanSubmodule.getBidRequestData(reqBidsConfigObj, function () {
|
|
108
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.name).to.equal(
|
|
109
|
+
'arcspan'
|
|
110
|
+
);
|
|
111
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.keywords).to.equal(
|
|
112
|
+
'Sports,Sports>Soccer'
|
|
113
|
+
);
|
|
114
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.content.data[0].ext.segtax).to.equal(6);
|
|
115
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.cat).to.eql([
|
|
116
|
+
'IAB17',
|
|
117
|
+
'IAB17_44',
|
|
118
|
+
]);
|
|
119
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.sectioncat).to.eql([
|
|
120
|
+
'IAB17',
|
|
121
|
+
'IAB17_44'
|
|
122
|
+
]);
|
|
123
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.pagecat).to.eql([
|
|
124
|
+
'IAB17',
|
|
125
|
+
'IAB17_44',
|
|
126
|
+
]);
|
|
127
|
+
expect(reqBidsConfigObj.ortb2Fragments.global.site.content.data[0].segment).to.eql([
|
|
128
|
+
{ id: '483' },
|
|
129
|
+
{ id: '533' }
|
|
130
|
+
]);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
function getGoodConfig() {
|
|
137
|
+
return {
|
|
138
|
+
name: 'arcspan',
|
|
139
|
+
waitForIt: true,
|
|
140
|
+
params: {
|
|
141
|
+
silo: 13,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function getBadConfig() {
|
|
147
|
+
return {
|
|
148
|
+
name: 'arcspan',
|
|
149
|
+
waitForIt: true,
|
|
150
|
+
params: {
|
|
151
|
+
notasilo: 1,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function getTestConfig() {
|
|
157
|
+
return {
|
|
158
|
+
name: 'arcspan',
|
|
159
|
+
waitForIt: true,
|
|
160
|
+
params: {
|
|
161
|
+
silo: 'test',
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function setIAB(vjson) {
|
|
167
|
+
window.arcobj2 = {};
|
|
168
|
+
window.arcobj2.cat = 0;
|
|
169
|
+
if (typeof vjson.codes != 'undefined') {
|
|
170
|
+
window.arcobj2.cat = 1;
|
|
171
|
+
if (typeof vjson.codes.images != 'undefined') {
|
|
172
|
+
vjson.codes.images.forEach(function f(e, i) {
|
|
173
|
+
vjson.codes.images[i] = e.replace('-', '_');
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (typeof vjson.codes.text != 'undefined') {
|
|
177
|
+
vjson.codes.text.forEach(function f(e, i) {
|
|
178
|
+
vjson.codes.text[i] = e.replace('-', '_');
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
window.arcobj2.sampled = 1;
|
|
182
|
+
window.arcobj1 = {};
|
|
183
|
+
window.arcobj1.page_iab_codes = vjson.codes;
|
|
184
|
+
window.arcobj1.page_iab = vjson.raw;
|
|
185
|
+
window.arcobj1.page_iab_newcodes = vjson.newcodes;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -130,7 +130,7 @@ const getConfigCreative = () => {
|
|
|
130
130
|
creativeId: '34567erty',
|
|
131
131
|
width: 300,
|
|
132
132
|
height: 250,
|
|
133
|
-
ttl:
|
|
133
|
+
ttl: 300,
|
|
134
134
|
netRevenue: true,
|
|
135
135
|
}
|
|
136
136
|
}
|
|
@@ -145,7 +145,7 @@ const getConfigCreativeVideo = (isNoVast) => {
|
|
|
145
145
|
requestId: '6a204ce130280d',
|
|
146
146
|
width: 300,
|
|
147
147
|
height: 250,
|
|
148
|
-
ttl:
|
|
148
|
+
ttl: 300,
|
|
149
149
|
netRevenue: true,
|
|
150
150
|
}
|
|
151
151
|
}
|
|
@@ -395,7 +395,7 @@ const testsInterpretResponse = [
|
|
|
395
395
|
mediaType: 'video',
|
|
396
396
|
netRevenue: true,
|
|
397
397
|
requestId: '2def0c5b2a7f6e',
|
|
398
|
-
ttl:
|
|
398
|
+
ttl: 300,
|
|
399
399
|
vastXml,
|
|
400
400
|
vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(vastXml.replace(/\\"/g, '"'))
|
|
401
401
|
}]
|
|
@@ -421,7 +421,7 @@ const testsInterpretResponse = [
|
|
|
421
421
|
mediaType: 'banner',
|
|
422
422
|
netRevenue: true,
|
|
423
423
|
requestId: '2def0c5b2a7f6e',
|
|
424
|
-
ttl:
|
|
424
|
+
ttl: 300,
|
|
425
425
|
width: 300
|
|
426
426
|
}]
|
|
427
427
|
},
|
|
@@ -505,7 +505,7 @@ const testsBuildBid = [
|
|
|
505
505
|
netRevenue: true,
|
|
506
506
|
vastXml: getConfigCreativeVideo().vastXml,
|
|
507
507
|
vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(getConfigCreativeVideo().vastXml.replace(/\\"/g, '"')),
|
|
508
|
-
ttl:
|
|
508
|
+
ttl: 300,
|
|
509
509
|
}
|
|
510
510
|
},
|
|
511
511
|
{
|
|
@@ -535,7 +535,7 @@ const testsBuildBid = [
|
|
|
535
535
|
netRevenue: true,
|
|
536
536
|
vastXml: getConfigCreativeVideo().vastXml,
|
|
537
537
|
vastUrl: 'data:text/xml;charset=utf-8;base64,' + btoa(getConfigCreativeVideo().vastXml.replace(/\\"/g, '"')),
|
|
538
|
-
ttl:
|
|
538
|
+
ttl: 300,
|
|
539
539
|
}
|
|
540
540
|
},
|
|
541
541
|
{
|
|
@@ -552,7 +552,7 @@ const testsBuildBid = [
|
|
|
552
552
|
height: 250,
|
|
553
553
|
creativeId: getConfigCreative().creativeId,
|
|
554
554
|
ad: getConfigBannerBid().creative.banner.adm,
|
|
555
|
-
ttl:
|
|
555
|
+
ttl: 300,
|
|
556
556
|
netRevenue: true,
|
|
557
557
|
}
|
|
558
558
|
}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
setConsentConfig,
|
|
3
|
+
requestBidsHook,
|
|
4
|
+
resetConsentData,
|
|
5
|
+
userCMP,
|
|
6
|
+
consentTimeout,
|
|
7
|
+
actionTimeout,
|
|
8
|
+
staticConsentData,
|
|
9
|
+
gdprScope,
|
|
10
|
+
loadConsentData,
|
|
11
|
+
setActionTimeout
|
|
12
|
+
} from 'modules/consentManagement.js';
|
|
2
13
|
import { gdprDataHandler } from 'src/adapterManager.js';
|
|
3
14
|
import * as utils from 'src/utils.js';
|
|
4
15
|
import { config } from 'src/config.js';
|
|
@@ -726,4 +737,41 @@ describe('consentManagement', function () {
|
|
|
726
737
|
});
|
|
727
738
|
});
|
|
728
739
|
});
|
|
740
|
+
|
|
741
|
+
describe('actionTimeout', function () {
|
|
742
|
+
afterEach(function () {
|
|
743
|
+
config.resetConfig();
|
|
744
|
+
resetConsentData();
|
|
745
|
+
});
|
|
746
|
+
|
|
747
|
+
it('should set actionTimeout if present', () => {
|
|
748
|
+
setConsentConfig({
|
|
749
|
+
gdpr: { timeout: 5000, actionTimeout: 5500 }
|
|
750
|
+
});
|
|
751
|
+
|
|
752
|
+
expect(userCMP).to.be.equal('iab');
|
|
753
|
+
expect(consentTimeout).to.be.equal(5000);
|
|
754
|
+
expect(actionTimeout).to.be.equal(5500);
|
|
755
|
+
});
|
|
756
|
+
|
|
757
|
+
it('should utilize actionTimeout duration on initial user visit when user action is pending', () => {
|
|
758
|
+
const cb = () => {};
|
|
759
|
+
const cmpCallMap = {
|
|
760
|
+
'iab': () => {},
|
|
761
|
+
'static': () => {}
|
|
762
|
+
};
|
|
763
|
+
const timeout = sinon.spy();
|
|
764
|
+
|
|
765
|
+
setConsentConfig({
|
|
766
|
+
gdpr: { timeout: 5000, actionTimeout: 5500 }
|
|
767
|
+
});
|
|
768
|
+
loadConsentData(cb, cmpCallMap, timeout);
|
|
769
|
+
|
|
770
|
+
sinon.assert.calledWith(timeout, sinon.match.any, 5000);
|
|
771
|
+
|
|
772
|
+
setActionTimeout();
|
|
773
|
+
|
|
774
|
+
timeout.lastCall.lastArg === 5500;
|
|
775
|
+
});
|
|
776
|
+
});
|
|
729
777
|
});
|
|
@@ -625,6 +625,52 @@ describe('Consumable BidAdapter', function () {
|
|
|
625
625
|
expect(opts.length).to.equal(1);
|
|
626
626
|
});
|
|
627
627
|
|
|
628
|
+
it('should return a sync url if iframe syncs are enabled and GDPR applies', function () {
|
|
629
|
+
let gdprConsent = {
|
|
630
|
+
consentString: 'GDPR_CONSENT_STRING',
|
|
631
|
+
gdprApplies: true,
|
|
632
|
+
}
|
|
633
|
+
let opts = spec.getUserSyncs(syncOptions, [AD_SERVER_RESPONSE], gdprConsent);
|
|
634
|
+
|
|
635
|
+
expect(opts.length).to.equal(1);
|
|
636
|
+
expect(opts[0].url).to.equal('https://sync.serverbid.com/ss/730181.html?gdpr=1&gdpr_consent=GDPR_CONSENT_STRING');
|
|
637
|
+
})
|
|
638
|
+
|
|
639
|
+
it('should return a sync url if iframe syncs are enabled and GDPR is undefined', function () {
|
|
640
|
+
let gdprConsent = {
|
|
641
|
+
consentString: 'GDPR_CONSENT_STRING',
|
|
642
|
+
gdprApplies: undefined,
|
|
643
|
+
}
|
|
644
|
+
let opts = spec.getUserSyncs(syncOptions, [AD_SERVER_RESPONSE], gdprConsent);
|
|
645
|
+
|
|
646
|
+
expect(opts.length).to.equal(1);
|
|
647
|
+
expect(opts[0].url).to.equal('https://sync.serverbid.com/ss/730181.html?gdpr=0&gdpr_consent=GDPR_CONSENT_STRING');
|
|
648
|
+
})
|
|
649
|
+
|
|
650
|
+
it('should return a sync url if iframe syncs are enabled and USP applies', function () {
|
|
651
|
+
let uspConsent = {
|
|
652
|
+
consentString: 'USP_CONSENT_STRING',
|
|
653
|
+
}
|
|
654
|
+
let opts = spec.getUserSyncs(syncOptions, [AD_SERVER_RESPONSE], {}, uspConsent);
|
|
655
|
+
|
|
656
|
+
expect(opts.length).to.equal(1);
|
|
657
|
+
expect(opts[0].url).to.equal('https://sync.serverbid.com/ss/730181.html?us_privacy=USP_CONSENT_STRING');
|
|
658
|
+
})
|
|
659
|
+
|
|
660
|
+
it('should return a sync url if iframe syncs are enabled, GDPR and USP applies', function () {
|
|
661
|
+
let gdprConsent = {
|
|
662
|
+
consentString: 'GDPR_CONSENT_STRING',
|
|
663
|
+
gdprApplies: true,
|
|
664
|
+
}
|
|
665
|
+
let uspConsent = {
|
|
666
|
+
consentString: 'USP_CONSENT_STRING',
|
|
667
|
+
}
|
|
668
|
+
let opts = spec.getUserSyncs(syncOptions, [AD_SERVER_RESPONSE], gdprConsent, uspConsent);
|
|
669
|
+
|
|
670
|
+
expect(opts.length).to.equal(1);
|
|
671
|
+
expect(opts[0].url).to.equal('https://sync.serverbid.com/ss/730181.html?gdpr=1&gdpr_consent=GDPR_CONSENT_STRING&us_privacy=USP_CONSENT_STRING');
|
|
672
|
+
})
|
|
673
|
+
|
|
628
674
|
it('should return a sync url if pixel syncs are enabled and some are returned from the server', function () {
|
|
629
675
|
let syncOptions = {'pixelEnabled': true};
|
|
630
676
|
let opts = spec.getUserSyncs(syncOptions, [AD_SERVER_RESPONSE]);
|