prebid.js 7.25.0 → 7.27.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/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -0
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.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/beopBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/bucksenseBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/captifyRtdProvider.js +1 -0
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fluctBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -0
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/glomexBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/googleAnalyticsAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -0
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.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/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.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/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.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 +240 -202
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/pubProvidedIdSystem.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/redtramBidAdapter.js +1 -0
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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 -1
- package/dist/sigmoidAnalyticsAdapter.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 -0
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiAnalyticsAdapter.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/staqAnalyticsAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -1
- package/dist/terceptAnalyticsAdapter.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/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viqeoBidAdapter.js +1 -0
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldliftBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/dist/zeusPrimeRtdProvider.js +31 -0
- package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
- package/integrationExamples/gpt/growthcode.html +134 -0
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
- package/modules/.submodules.json +3 -1
- package/modules/admaticBidAdapter.js +116 -58
- package/modules/admaticBidAdapter.md +2 -2
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/aidemBidAdapter.js +492 -0
- package/modules/aidemBidAdapter.md +187 -0
- package/modules/beopBidAdapter.js +17 -2
- package/modules/browsiRtdProvider.js +6 -4
- package/modules/bucksenseBidAdapter.js +1 -1
- package/modules/captifyRtdProvider.js +146 -0
- package/modules/captifyRtdProvider.md +68 -0
- package/modules/criteoBidAdapter.js +3 -3
- package/modules/discoveryBidAdapter.js +38 -17
- package/modules/discoveryBidAdapter.md +7 -6
- package/modules/eplanningBidAdapter.js +2 -6
- package/modules/fluctBidAdapter.js +5 -0
- package/modules/gdprEnforcement.js +26 -24
- package/modules/genericAnalyticsAdapter.js +157 -0
- package/modules/geoedgeRtdProvider.js +22 -0
- package/modules/glomexBidAdapter.js +2 -0
- package/modules/gravitoIdSystem.js +3 -4
- package/modules/gridBidAdapter.js +441 -23
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/growthCodeAnalyticsAdapter.js +176 -0
- package/modules/growthCodeAnalyticsAdapter.md +41 -0
- package/modules/impactifyBidAdapter.js +19 -1
- package/modules/jwplayerRtdProvider.js +1 -2
- package/modules/limelightDigitalBidAdapter.js +1 -1
- package/modules/minutemediaBidAdapter.md +3 -3
- package/modules/nextMillenniumBidAdapter.js +19 -23
- package/modules/nexx360BidAdapter.js +264 -138
- package/modules/pubCommonId.js +2 -1
- package/modules/pubProvidedIdSystem.js +2 -0
- package/modules/rasBidAdapter.js +8 -3
- package/modules/rasBidAdapter.md +16 -15
- package/modules/redtramBidAdapter.js +155 -0
- package/modules/redtramBidAdapter.md +33 -0
- package/modules/riseBidAdapter.js +15 -0
- package/modules/riseBidAdapter.md +3 -3
- package/modules/rtbhouseBidAdapter.js +90 -29
- package/modules/rubiconBidAdapter.js +2 -1
- package/modules/seedtagBidAdapter.js +67 -56
- package/modules/seedtagBidAdapter.md +60 -0
- package/modules/sharedIdSystem.js +3 -1
- package/modules/smartadserverBidAdapter.js +6 -2
- package/modules/smartxBidAdapter.js +11 -8
- package/modules/smartytechBidAdapter.js +78 -0
- package/modules/smartytechBidAdapter.md +44 -0
- package/modules/smnBidAdapter.md +52 -0
- package/modules/taboolaBidAdapter.js +3 -3
- package/modules/taboolaBidAdapter.md +0 -2
- package/modules/tappxBidAdapter.js +21 -6
- package/modules/tripleliftBidAdapter.js +1 -1
- package/modules/ttdBidAdapter.js +8 -3
- package/modules/userId/index.js +1 -1
- package/modules/vidazooBidAdapter.js +26 -3
- package/modules/viqeoBidAdapter.js +180 -0
- package/modules/viqeoBidAdapter.md +56 -0
- package/modules/yandexBidAdapter.js +85 -19
- package/modules/yandexBidAdapter.md +7 -7
- package/modules/yieldlabBidAdapter.js +29 -12
- package/modules/yieldliftBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +60 -8
- package/modules/yieldoneBidAdapter.md +109 -9
- package/modules/zeta_global_sspBidAdapter.js +4 -0
- package/modules/zeusPrimeRtdProvider.js +357 -0
- package/modules/zeusPrimeRtdProvider.md +60 -0
- package/package.json +1 -1
- package/src/adloader.js +0 -1
- package/src/auction.js +19 -3
- package/src/consentHandler.js +8 -0
- package/src/events.js +4 -0
- package/src/native.js +31 -20
- package/src/refererDetection.js +6 -1
- package/src/storageManager.js +6 -3
- package/test/helpers/analytics.js +34 -0
- package/test/mocks/analyticsStub.js +3 -1
- package/test/spec/AnalyticsAdapter_spec.js +119 -116
- package/test/spec/auctionmanager_spec.js +86 -0
- package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
- package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
- package/test/spec/modules/beopBidAdapter_spec.js +52 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
- package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
- package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
- package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
- package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
- package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
- package/test/spec/modules/fpdModule_spec.js +1 -1
- package/test/spec/modules/gdprEnforcement_spec.js +115 -68
- package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
- package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
- package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
- package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
- package/test/spec/modules/gridBidAdapter_spec.js +289 -1
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
- package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
- package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
- package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
- package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
- package/test/spec/modules/rasBidAdapter_spec.js +5 -1
- package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
- package/test/spec/modules/riseBidAdapter_spec.js +24 -0
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
- package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
- package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
- package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
- package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
- package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
- package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
- package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
- package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
- package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
- package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
- package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
- package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
- package/test/spec/native_spec.js +68 -56
- package/test/spec/refererDetection_spec.js +45 -7
- package/test/spec/unit/core/storageManager_spec.js +2 -1
|
@@ -216,4 +216,56 @@ describe('BeOp Bid Adapter tests', () => {
|
|
|
216
216
|
expect(triggerPixelStub.getCall(0).args[0]).to.exist.and.to.include('pid=5a8af500c9e77c00017e4cad');
|
|
217
217
|
});
|
|
218
218
|
});
|
|
219
|
+
|
|
220
|
+
describe('Ensure keywords is always array of string', function () {
|
|
221
|
+
let bidRequests = [];
|
|
222
|
+
afterEach(function () {
|
|
223
|
+
bidRequests = [];
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it('should work with keywords as an array', function () {
|
|
227
|
+
let bid = Object.assign({}, validBid);
|
|
228
|
+
bid.params.keywords = ['a', 'b'];
|
|
229
|
+
bidRequests.push(bid);
|
|
230
|
+
config.setConfig({
|
|
231
|
+
currency: { adServerCurrency: 'USD' }
|
|
232
|
+
});
|
|
233
|
+
const request = spec.buildRequests(bidRequests, {});
|
|
234
|
+
const payload = JSON.parse(request.data);
|
|
235
|
+
const url = request.url;
|
|
236
|
+
expect(payload.kwds).to.exist;
|
|
237
|
+
expect(payload.kwds).to.include('a');
|
|
238
|
+
expect(payload.kwds).to.include('b');
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
it('should work with keywords as a string', function () {
|
|
242
|
+
let bid = Object.assign({}, validBid);
|
|
243
|
+
bid.params.keywords = 'list of keywords';
|
|
244
|
+
bidRequests.push(bid);
|
|
245
|
+
config.setConfig({
|
|
246
|
+
currency: { adServerCurrency: 'USD' }
|
|
247
|
+
});
|
|
248
|
+
const request = spec.buildRequests(bidRequests, {});
|
|
249
|
+
const payload = JSON.parse(request.data);
|
|
250
|
+
const url = request.url;
|
|
251
|
+
expect(payload.kwds).to.exist;
|
|
252
|
+
expect(payload.kwds).to.include('list of keywords');
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('should work with keywords as a string containing a comma', function () {
|
|
256
|
+
let bid = Object.assign({}, validBid);
|
|
257
|
+
bid.params.keywords = 'list, of, keywords';
|
|
258
|
+
bidRequests.push(bid);
|
|
259
|
+
config.setConfig({
|
|
260
|
+
currency: { adServerCurrency: 'USD' }
|
|
261
|
+
});
|
|
262
|
+
const request = spec.buildRequests(bidRequests, {});
|
|
263
|
+
const payload = JSON.parse(request.data);
|
|
264
|
+
const url = request.url;
|
|
265
|
+
expect(payload.kwds).to.exist;
|
|
266
|
+
expect(payload.kwds).to.include('list');
|
|
267
|
+
expect(payload.kwds).to.include('of');
|
|
268
|
+
expect(payload.kwds).to.include('keywords');
|
|
269
|
+
})
|
|
270
|
+
})
|
|
219
271
|
});
|
|
@@ -297,7 +297,6 @@ describe('BidWatch Analytics', function () {
|
|
|
297
297
|
expect(message.auctionEnd[0]).to.have.property('bidderRequests').and.to.have.lengthOf(1);
|
|
298
298
|
expect(message.auctionEnd[0].bidderRequests[0]).to.have.property('gdprConsent');
|
|
299
299
|
expect(message.auctionEnd[0].bidderRequests[0].gdprConsent).not.to.have.property('vendorData');
|
|
300
|
-
sinon.assert.callCount(bidwatchAnalytics.track, 4);
|
|
301
300
|
});
|
|
302
301
|
|
|
303
302
|
it('test bidWon', function() {
|
|
@@ -318,7 +317,6 @@ describe('BidWatch Analytics', function () {
|
|
|
318
317
|
expect(message).not.to.have.property('ad');
|
|
319
318
|
expect(message).to.have.property('adId')
|
|
320
319
|
expect(message).to.have.property('cpmIncrement').and.to.equal(27.4276);
|
|
321
|
-
sinon.assert.callCount(bidwatchAnalytics.track, 1);
|
|
322
320
|
});
|
|
323
321
|
});
|
|
324
322
|
});
|
|
@@ -252,7 +252,8 @@ describe('browsi Real time data sub module', function () {
|
|
|
252
252
|
})
|
|
253
253
|
it('should send event if type is correct', function () {
|
|
254
254
|
sendPageviewEvent('PAGEVIEW')
|
|
255
|
-
|
|
255
|
+
const pageViewEvent = new CustomEvent('browsi_pageview', {});
|
|
256
|
+
window.dispatchEvent(pageViewEvent);
|
|
256
257
|
const expectedCall = {
|
|
257
258
|
vendor: 'browsi',
|
|
258
259
|
type: 'pageview',
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import {addSegmentData, captifySubmodule, getMatchingBidders, setCaptifyTargeting} from 'modules/captifyRtdProvider.js';
|
|
2
|
+
import {server} from 'test/mocks/xhr.js';
|
|
3
|
+
import {config} from 'src/config.js';
|
|
4
|
+
import {deepAccess} from '../../../src/utils';
|
|
5
|
+
|
|
6
|
+
const responseHeader = {'Content-Type': 'application/json'};
|
|
7
|
+
const defaultRequestUrl = 'https://live-classification.cpx.to/prebid-segments';
|
|
8
|
+
|
|
9
|
+
describe('captifyRtdProvider', function () {
|
|
10
|
+
describe('init function', function () {
|
|
11
|
+
it('successfully instantiates, when configured properly', function () {
|
|
12
|
+
const config = {
|
|
13
|
+
params: {
|
|
14
|
+
pubId: 123456,
|
|
15
|
+
bidders: ['appnexus'],
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
expect(captifySubmodule.init(config, null)).to.equal(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('return false on init, when config is invalid', function () {
|
|
22
|
+
const config = {
|
|
23
|
+
params: {}
|
|
24
|
+
};
|
|
25
|
+
expect(captifySubmodule.init(config, null)).to.equal(false);
|
|
26
|
+
expect(captifySubmodule.init(null, null)).to.equal(false);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('return false on init, when pubId is absent', function () {
|
|
30
|
+
const config = {
|
|
31
|
+
params: {
|
|
32
|
+
bidders: ['appnexus'],
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
expect(captifySubmodule.init(config, null)).to.equal(false);
|
|
36
|
+
expect(captifySubmodule.init(null, null)).to.equal(false);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('return false on init, when bidders is empty array', function () {
|
|
40
|
+
const config = {
|
|
41
|
+
params: {
|
|
42
|
+
bidders: [],
|
|
43
|
+
pubId: 123,
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
expect(captifySubmodule.init(config, null)).to.equal(false);
|
|
47
|
+
expect(captifySubmodule.init(null, null)).to.equal(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('addSegmentData function', function () {
|
|
52
|
+
it('adds segment data', function () {
|
|
53
|
+
config.resetConfig();
|
|
54
|
+
|
|
55
|
+
let data = {
|
|
56
|
+
xandr: [111111, 222222],
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
addSegmentData(['appnexus'], data);
|
|
60
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe('getMatchingBidders function', function () {
|
|
65
|
+
it('returns only bidders that used within adUnits', function () {
|
|
66
|
+
const moduleConfig = {
|
|
67
|
+
params: {
|
|
68
|
+
pubId: 123,
|
|
69
|
+
bidders: ['appnexus', 'pubmatic'],
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
let reqBidsConfigObj = {
|
|
73
|
+
adUnits: [{
|
|
74
|
+
bids: [{
|
|
75
|
+
bidder: 'appnexus',
|
|
76
|
+
params: {
|
|
77
|
+
placementId: 13144370
|
|
78
|
+
}
|
|
79
|
+
}]
|
|
80
|
+
}]
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
let matchedBidders = getMatchingBidders(moduleConfig, reqBidsConfigObj);
|
|
84
|
+
expect(matchedBidders).to.eql(['appnexus']);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('return empty result, when there are no bidders configured for adUnits', function () {
|
|
88
|
+
const moduleConfig = {
|
|
89
|
+
params: {
|
|
90
|
+
pubId: 123,
|
|
91
|
+
bidders: ['pubmatic'],
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
let reqBidsConfigObj = {
|
|
95
|
+
adUnits: [{
|
|
96
|
+
bids: []
|
|
97
|
+
}]
|
|
98
|
+
};
|
|
99
|
+
expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('return empty result, when there are no bidders matched', function () {
|
|
103
|
+
const moduleConfig = {
|
|
104
|
+
params: {
|
|
105
|
+
pubId: 123,
|
|
106
|
+
bidders: ['pubmatic'],
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
let reqBidsConfigObj = {
|
|
110
|
+
adUnits: [{
|
|
111
|
+
bids: [{
|
|
112
|
+
params: {
|
|
113
|
+
bidder: 'appnexus',
|
|
114
|
+
placementId: 13144370,
|
|
115
|
+
}
|
|
116
|
+
}]
|
|
117
|
+
}]
|
|
118
|
+
};
|
|
119
|
+
expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('return empty result, when there are no adUnits with bidders', function () {
|
|
123
|
+
const moduleConfig = {
|
|
124
|
+
params: {
|
|
125
|
+
pubId: 123,
|
|
126
|
+
bidders: ['pubmatic'],
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
let reqBidsConfigObj = {
|
|
130
|
+
adUnits: [{
|
|
131
|
+
bids: [{
|
|
132
|
+
params: {
|
|
133
|
+
placementId: 13144370,
|
|
134
|
+
}
|
|
135
|
+
}]
|
|
136
|
+
}]
|
|
137
|
+
};
|
|
138
|
+
expect(getMatchingBidders(moduleConfig, reqBidsConfigObj)).to.be.empty;
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
describe('integration test with mock live-classification response', function () {
|
|
143
|
+
const moduleConfig = {
|
|
144
|
+
params: {
|
|
145
|
+
pubId: 123456,
|
|
146
|
+
bidders: ['appnexus'],
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const reqBidsConfigObj = {
|
|
151
|
+
adUnits: [{
|
|
152
|
+
bids: [{
|
|
153
|
+
bidder: 'appnexus',
|
|
154
|
+
params: {
|
|
155
|
+
placementId: 13144370
|
|
156
|
+
}
|
|
157
|
+
}, {
|
|
158
|
+
bidder: 'other'
|
|
159
|
+
}]
|
|
160
|
+
}]
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const expectedUrlParam = 'http://localhost:9876/context.html';
|
|
164
|
+
|
|
165
|
+
it('gets data from async request and adds segment data', function () {
|
|
166
|
+
config.resetConfig();
|
|
167
|
+
let data = {xandr: [111111, 222222]};
|
|
168
|
+
const callbackSpy = sinon.spy();
|
|
169
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
|
|
170
|
+
let request = server.requests[0];
|
|
171
|
+
let requestBody = JSON.parse(server.requests[0].requestBody);
|
|
172
|
+
expect(request.url).to.be.eq(defaultRequestUrl);
|
|
173
|
+
expect(requestBody['pubId']).to.eq(moduleConfig.params.pubId);
|
|
174
|
+
expect(requestBody['url']).to.eq(expectedUrlParam);
|
|
175
|
+
request.respond(200, responseHeader, JSON.stringify(data));
|
|
176
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
|
|
177
|
+
expect(callbackSpy.calledOnce).to.be.true;
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
it('do not send classification request, if no matching adUnits on page', function () {
|
|
181
|
+
config.resetConfig();
|
|
182
|
+
let reqBidsConfigObj = {
|
|
183
|
+
adUnits: [{
|
|
184
|
+
bids: [
|
|
185
|
+
{bidder: 'pubmatic'}
|
|
186
|
+
]
|
|
187
|
+
}]
|
|
188
|
+
};
|
|
189
|
+
const callbackSpy = sinon.spy();
|
|
190
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
|
|
191
|
+
expect(server.requests).to.be.empty;
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it('gets data from async request and adds segment data, using URL from config', function () {
|
|
195
|
+
config.resetConfig();
|
|
196
|
+
let data = {xandr: [111111, 222222]};
|
|
197
|
+
const callbackSpy = sinon.spy();
|
|
198
|
+
const testUrl = 'http://my-test-server.com/path';
|
|
199
|
+
const conf = {
|
|
200
|
+
params: {
|
|
201
|
+
url: testUrl,
|
|
202
|
+
pubId: 123456,
|
|
203
|
+
bidders: ['appnexus'],
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, conf, {});
|
|
207
|
+
let request = server.requests[0];
|
|
208
|
+
let requestBody = JSON.parse(server.requests[0].requestBody);
|
|
209
|
+
expect(request.url).to.be.eq(testUrl);
|
|
210
|
+
expect(requestBody['pubId']).to.eq(conf.params.pubId);
|
|
211
|
+
expect(requestBody['url']).to.eq(expectedUrlParam);
|
|
212
|
+
request.respond(200, responseHeader, JSON.stringify(data));
|
|
213
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.eql(data['xandr']);
|
|
214
|
+
expect(callbackSpy.calledOnce).to.be.true;
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it('do not set anything, in case server responded with 202', function () {
|
|
218
|
+
config.resetConfig();
|
|
219
|
+
const callbackSpy = sinon.spy();
|
|
220
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
|
|
221
|
+
let request = server.requests[0];
|
|
222
|
+
let requestBody = JSON.parse(server.requests[0].requestBody);
|
|
223
|
+
expect(request.url).to.be.eq(defaultRequestUrl);
|
|
224
|
+
expect(requestBody['pubId']).to.eq(moduleConfig.params.pubId);
|
|
225
|
+
expect(requestBody['url']).to.eq(expectedUrlParam);
|
|
226
|
+
request.respond(202, responseHeader, '');
|
|
227
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
|
|
228
|
+
expect(callbackSpy.calledOnce).to.be.true;
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
it('do not set anything, in case server responded with error', function () {
|
|
232
|
+
config.resetConfig();
|
|
233
|
+
const callbackSpy = sinon.spy();
|
|
234
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
|
|
235
|
+
let request = server.requests[0];
|
|
236
|
+
expect(request.url).to.be.eq(defaultRequestUrl);
|
|
237
|
+
request.respond(500, null, '');
|
|
238
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
|
|
239
|
+
expect(callbackSpy.calledOnce).to.be.true;
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it('do not set anything, in case request error', function () {
|
|
243
|
+
config.resetConfig();
|
|
244
|
+
const callbackSpy = sinon.spy();
|
|
245
|
+
setCaptifyTargeting(reqBidsConfigObj, callbackSpy, moduleConfig, {});
|
|
246
|
+
let request = server.requests[0];
|
|
247
|
+
expect(request.url).to.be.eq(defaultRequestUrl);
|
|
248
|
+
request.abort('test error');
|
|
249
|
+
expect(deepAccess(config.getConfig(), 'appnexusAuctionKeywords.captify_segments')).to.be.undefined;
|
|
250
|
+
expect(callbackSpy.calledOnce).to.be.true;
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import concertAnalytics from 'modules/concertAnalyticsAdapter.js';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
|
+
import {expectEvents} from '../../helpers/analytics.js';
|
|
3
4
|
const sinon = require('sinon');
|
|
4
5
|
let adapterManager = require('src/adapterManager').default;
|
|
5
6
|
let events = require('src/events');
|
|
@@ -46,10 +47,7 @@ describe('ConcertAnalyticsAdapter', function() {
|
|
|
46
47
|
|
|
47
48
|
it('should catch all events', function() {
|
|
48
49
|
sandbox.spy(concertAnalytics, 'track');
|
|
49
|
-
|
|
50
|
-
fireBidEvents(events);
|
|
51
|
-
// 5 Concert events + 1 Clean.io event
|
|
52
|
-
sandbox.assert.callCount(concertAnalytics.track, 6);
|
|
50
|
+
expectEvents().to.beTrackedBy(concertAnalytics.track);
|
|
53
51
|
});
|
|
54
52
|
|
|
55
53
|
it('should report data for BID_RESPONSE, BID_WON events', function() {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { spec } from 'modules/discoveryBidAdapter.js';
|
|
3
3
|
|
|
4
|
-
describe('
|
|
4
|
+
describe('discovery:BidAdapterTests', function () {
|
|
5
5
|
let bidRequestData = {
|
|
6
|
-
bidderCode: '
|
|
6
|
+
bidderCode: 'discovery',
|
|
7
7
|
auctionId: 'ff66e39e-4075-4d18-9854-56fde9b879ac',
|
|
8
8
|
bidderRequestId: '4fec04e87ad785',
|
|
9
9
|
bids: [
|
|
10
10
|
{
|
|
11
|
-
bidder: '
|
|
11
|
+
bidder: 'discovery',
|
|
12
12
|
params: {
|
|
13
13
|
token: 'd0f4902b616cc5c38cbe0a08676d0ed9',
|
|
14
14
|
},
|
|
@@ -32,25 +32,26 @@ describe('DiscoveryDSP:BidAdapterTests', function () {
|
|
|
32
32
|
};
|
|
33
33
|
let request = [];
|
|
34
34
|
|
|
35
|
-
it('
|
|
35
|
+
it('discovery:validate_pub_params', function () {
|
|
36
36
|
expect(
|
|
37
37
|
spec.isBidRequestValid({
|
|
38
|
-
bidder: '
|
|
38
|
+
bidder: 'discovery',
|
|
39
39
|
params: {
|
|
40
40
|
token: ['d0f4902b616cc5c38cbe0a08676d0ed9'],
|
|
41
|
-
|
|
41
|
+
tagid: ['test_tagid'],
|
|
42
|
+
publisher: ['test_publisher']
|
|
42
43
|
},
|
|
43
44
|
})
|
|
44
45
|
).to.equal(true);
|
|
45
46
|
});
|
|
46
47
|
|
|
47
|
-
it('
|
|
48
|
+
it('discovery:validate_generated_params', function () {
|
|
48
49
|
request = spec.buildRequests(bidRequestData.bids, bidRequestData);
|
|
49
50
|
let req_data = JSON.parse(request.data);
|
|
50
51
|
expect(req_data.imp).to.have.lengthOf(1);
|
|
51
52
|
});
|
|
52
53
|
|
|
53
|
-
it('
|
|
54
|
+
it('discovery:validate_response_params', function () {
|
|
54
55
|
let tempAdm = '<link rel=\"stylesheet\" href=\"https://cdn.mediago.io/js/style/style_banner_336x280_standard.css\"><div id=\"mgcontainer-e1746bcc817beaba9d63bd4254aad533\" class=\"mediago-placement_46ee9c c336x280_standard_46ee9c mediago-placement c336x280_standard\" style=\"width:336px;height:280px;overflow:hidden\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-placement-top_46ee9c mediago-placement-top\" style=\"background-image:url(https://d2cli4kgl5uxre.cloudfront.net/ML/d8e9b4aa20fae1739d2aad8c926d3f15__scv1__306x304.png)\"></div></a><div class=\"mediago-placement-bottom_46ee9c mediago-placement-bottom\"><div class=\"mediago-middle_46ee9c mediago-middle\"><a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-title_46ee9c mediago-title\">秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた</div></a><div style=\"margin-top:10px;\"><a class=\"mediago-ad-icon_46ee9c mediago-ad-icon\" title=\"ad\" href=\"//www.mediago.io/privacy\" target=\"_blank\">AD</a> <a class=\"mediago-placement-track_46ee9c mediago-placement-track\" title=\"秘密のしかけのネックレスをプレゼントした男性。2年後に彼女は中身に気付いて悲鳴を上げた\" href=\"https://trace.mediago.cc/api/bidder/track?tn=d0f4902b616cc5c38cbe0a08676d0ed9&price=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&evt=102&rid=3f6700b5e61e1476bed629b6ea6c7a4d&campaignid=1366258&impid=50-3663.infoseek.co.jp.336x280-1&offerid=28316825&test=0&time=1660811542&cp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&clickid=50_3f6700b5e61e1476bed629b6ea6c7a4d_50-3663.infoseek.co.jp.336x280-1&acid=1120&trackingid=e1746bcc817beaba9d63bd4254aad533&uid=7544198412013119947&jt=2&url=O7fi1nLA9qLQjcPq7rIDvxMyybMbcc2iUh-TuaqiVSD1Dj4cKrR82gRYdWy1Ao22yhq2FoY79tmyI3X_bsO3CusXggmpW8bZvwTlHPxfOxekArClcRSpWmkVorlnMSYf7yM6QBVTuTLCCP-cK8eXMZnQVR7PdOImYZGJis6q9Xx9MToxvPkWRVa13OaCtKVeqzGdglYH3G2mqo1qLP1RCCZJHE1Fq8fgCYmLJ0Xli-nLvFZjt3g0HIui_IvyZi6YtXS97p9ohgfgDJnqcGH6l053AP0cO7ZQDHtS2_9P9UqgaA47gmltDVEDkSThX7js&bm=50&la=ja&cn=jp&cid=4215873&info=x_ME1qzmB7TY6hTSn_XUw5s6N-EkBgxcE4qJ0fd9amgsJzO3-Gtm2Nja777SyGlpkF6k_tSzbcLYYecYQlHncOAAIyuNaT2rvqrhxrQPfC7opZUGQ8WMx4Rwkx8R2k0nDiBI8xnegLWYTvY-Fc99Rw&sid=38__149__12__24__144__163__47__1__99&sp=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&scp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&acu=JPY&scu=USD&sgcp=mMrvLk32jGlArvPzkLzohkmMOOp6YSaVPquxpJIAub4&gprice=zM_t6HbCS8OclsiLiZUjtAqxHOGHkHjKXNZ9_buiV_s&gcp=WDWnWmVvDyEauBe8AfxyP7vfEVRzDMzzKOeztgGoSWY&ah=&pb=m&de=infoseek.co.jp&cat=&iv=0\" target=\"_blank\"><div class=\"mediago-brand-name_46ee9c mediago-brand-name\">Factable</div></a></div></div></div></div>'
|
|
55
56
|
tempAdm += '%3Cscr';
|
|
56
57
|
tempAdm += 'ipt%3E';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
+
import {config} from 'src/config.js';
|
|
2
3
|
import { getRefererInfo } from 'src/refererDetection.js';
|
|
3
4
|
import {processFpd, coreStorage, resetEnrichments} from 'modules/enrichmentFpdModule.js';
|
|
4
5
|
import * as enrichmentModule from 'modules/enrichmentFpdModule.js';
|
|
@@ -77,10 +78,10 @@ describe('the first party data enrichment module', function() {
|
|
|
77
78
|
expect(validated.site.keywords).to.be.undefined;
|
|
78
79
|
});
|
|
79
80
|
|
|
80
|
-
it('adds page domain values if
|
|
81
|
+
it('adds page domain values if pageUrl url exists', function() {
|
|
82
|
+
config.setConfig({'pageUrl': 'https://www.subdomain.domain.co.uk/path?query=12345'});
|
|
81
83
|
width = 800;
|
|
82
84
|
height = 500;
|
|
83
|
-
canonical.href = 'https://www.subdomain.domain.co.uk/path?query=12345';
|
|
84
85
|
|
|
85
86
|
let validated = syncProcessFpd({}, {}).global;
|
|
86
87
|
|
|
@@ -152,9 +152,6 @@ describe('eplanning analytics adapter', function () {
|
|
|
152
152
|
|
|
153
153
|
// Step 10 check that the host to send the ajax request is configurable via options
|
|
154
154
|
expect(eplAnalyticsAdapter.context.host).to.equal(initOptions.host);
|
|
155
|
-
|
|
156
|
-
// Step 11 verify that we received 7 events (6 E-Planning events + 1 Clean.io event)
|
|
157
|
-
sinon.assert.callCount(eplAnalyticsAdapter.track, 7);
|
|
158
155
|
});
|
|
159
156
|
});
|
|
160
157
|
});
|
|
@@ -840,7 +840,7 @@ describe('E-Planning Adapter', function () {
|
|
|
840
840
|
});
|
|
841
841
|
|
|
842
842
|
it('should correctly map the parameters in the response vast', function () {
|
|
843
|
-
const bidResponse = spec.interpretResponse(responseVast, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
|
|
843
|
+
const bidResponse = spec.interpretResponse(responseVast, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID }, data: { vv: 2 } })[0];
|
|
844
844
|
const expectedResponse = {
|
|
845
845
|
requestId: BID_ID,
|
|
846
846
|
cpm: CPM,
|
|
@@ -851,13 +851,13 @@ describe('E-Planning Adapter', function () {
|
|
|
851
851
|
netRevenue: true,
|
|
852
852
|
currency: 'USD',
|
|
853
853
|
vastXml: ADM_VAST,
|
|
854
|
-
|
|
854
|
+
mediaType: VIDEO
|
|
855
855
|
};
|
|
856
856
|
expect(bidResponse).to.deep.equal(expectedResponse);
|
|
857
857
|
});
|
|
858
858
|
|
|
859
859
|
it('should correctly map the parameters in the response vast vv 1', function () {
|
|
860
|
-
const bidResponse = spec.interpretResponse(responseVastVV1, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID } })[0];
|
|
860
|
+
const bidResponse = spec.interpretResponse(responseVastVV1, { adUnitToBidId: { [CLEAN_ADUNIT_CODE_VAST]: BID_ID }, data: { vv: 1 } })[0];
|
|
861
861
|
const expectedResponse = {
|
|
862
862
|
requestId: BID_ID,
|
|
863
863
|
cpm: CPM,
|
|
@@ -868,7 +868,7 @@ describe('E-Planning Adapter', function () {
|
|
|
868
868
|
netRevenue: true,
|
|
869
869
|
currency: 'USD',
|
|
870
870
|
vastXml: ADM_VAST_VV_1,
|
|
871
|
-
|
|
871
|
+
mediaType: VIDEO
|
|
872
872
|
};
|
|
873
873
|
expect(bidResponse).to.deep.equal(expectedResponse);
|
|
874
874
|
});
|
|
@@ -94,7 +94,12 @@ describe('fluctAdapter', function () {
|
|
|
94
94
|
expect(request.data.params.kv).to.eql(undefined);
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
it('includes
|
|
97
|
+
it('includes no data.schain by default', function () {
|
|
98
|
+
const request = spec.buildRequests(bidRequests, bidderRequest)[0];
|
|
99
|
+
expect(request.data.schain).to.eql(undefined);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('includes filtered user.eids if any exist', function () {
|
|
98
103
|
const bidRequests2 = bidRequests.map(
|
|
99
104
|
(bidReq) => Object.assign(bidReq, {
|
|
100
105
|
userIdAsEids: [
|
|
@@ -175,6 +180,37 @@ describe('fluctAdapter', function () {
|
|
|
175
180
|
imsids: ['imsid1', 'imsid2']
|
|
176
181
|
});
|
|
177
182
|
});
|
|
183
|
+
|
|
184
|
+
it('includes data.schain if any exists', function () {
|
|
185
|
+
// this should be done by schain.js
|
|
186
|
+
const bidRequests2 = bidRequests.map(
|
|
187
|
+
(bidReq) => Object.assign(bidReq, {
|
|
188
|
+
schain: {
|
|
189
|
+
ver: '1.0',
|
|
190
|
+
complete: 1,
|
|
191
|
+
nodes: [
|
|
192
|
+
{
|
|
193
|
+
asi: 'example.com',
|
|
194
|
+
sid: 'publisher-id',
|
|
195
|
+
hp: 1
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
);
|
|
201
|
+
const request = spec.buildRequests(bidRequests2, bidderRequest)[0];
|
|
202
|
+
expect(request.data.schain).to.eql({
|
|
203
|
+
ver: '1.0',
|
|
204
|
+
complete: 1,
|
|
205
|
+
nodes: [
|
|
206
|
+
{
|
|
207
|
+
asi: 'example.com',
|
|
208
|
+
sid: 'publisher-id',
|
|
209
|
+
hp: 1
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
});
|
|
213
|
+
});
|
|
178
214
|
});
|
|
179
215
|
|
|
180
216
|
describe('interpretResponse', function() {
|
|
@@ -130,7 +130,7 @@ describe('the first party data module', function () {
|
|
|
130
130
|
}
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
config.setConfig({'pageUrl': 'https://www.domain.com/path?query=12345'});
|
|
134
134
|
width = 1120;
|
|
135
135
|
height = 750;
|
|
136
136
|
|