prebid.js 9.4.1 → 9.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +31 -5
- package/.github/workflows/jscpd.yml +2 -2
- package/.github/workflows/linter.yml +107 -0
- package/creative/crossDomain.js +6 -3
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adkernelUtils.js +1 -0
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/advRedAnalyticsAdapter.js +1 -0
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/anonymisedRtdProvider.js +1 -1
- package/dist/apacdexBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/azerionedgeRtdProvider.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.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/chunk-core.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connatixBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.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/currencyUtils.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +69 -8
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dfpAdpod.js +1 -1
- package/dist/dfpUtils.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eightPodAnalyticsAdapter.js +1 -1
- package/dist/eightPodBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fpdUtils.js +1 -0
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gptPreAuction.js +1 -1
- package/dist/gptUtils.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/growthCodeRtdProvider.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -0
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +208 -199
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/optoutBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/paapi.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/playdigoBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/programmaticaBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevatehealthBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/ringieraxelspringerBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -0
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/schainSerializer.js +1 -0
- 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/sizeMapping.js +1 -1
- package/dist/sizeUtils.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/symitriDapRtdProvider.js +1 -0
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/targetVideoUtils.js +1 -0
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/telariaBidAdapter.js +1 -1
- package/dist/teqblazeUtils.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.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/uid2IdSystem_shared.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userAgentUtils.js +1 -0
- package/dist/utiqIdSystem.js +1 -1
- package/dist/vidazooUtils.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/yahooAdsBidAdapter.js +1 -1
- package/dist/yandexIdSystem.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/x-domain/creative.html +1 -1
- package/libraries/adkernelUtils/adkernelUtils.js +11 -0
- package/libraries/currencyUtils/floor.js +23 -0
- package/libraries/dfpUtils/dfpUtils.js +7 -0
- package/libraries/fpdUtils/deviceInfo.js +58 -0
- package/libraries/fpdUtils/pageInfo.js +73 -0
- package/libraries/gptUtils/gptUtils.js +23 -1
- package/libraries/riseUtils/index.js +330 -0
- package/libraries/schainSerializer/schainSerializer.js +24 -0
- package/libraries/sizeUtils/tranformSize.js +43 -0
- package/libraries/targetVideoUtils/bidderUtils.js +178 -0
- package/libraries/targetVideoUtils/constants.js +23 -0
- package/libraries/teqblazeUtils/bidderUtils.js +15 -11
- package/libraries/userAgentUtils/index.js +58 -0
- package/libraries/userAgentUtils/userAgentTypes.enums.js +22 -0
- package/modules/.submodules.json +1 -0
- package/modules/33acrossAnalyticsAdapter.js +2 -0
- package/modules/adagioAnalyticsAdapter.js +101 -84
- package/modules/adagioAnalyticsAdapter.md +4 -0
- package/modules/adagioBidAdapter.js +5 -17
- package/modules/adagioRtdProvider.js +18 -4
- package/modules/adkernelAdnBidAdapter.js +1 -12
- package/modules/adkernelBidAdapter.js +4 -13
- package/modules/adlooxAnalyticsAdapter.js +1 -0
- package/modules/admixerBidAdapter.js +10 -6
- package/modules/admixerBidAdapter.md +7 -10
- package/modules/adtrgtmeBidAdapter.js +1 -1
- package/modules/advRedAnalyticsAdapter.js +198 -0
- package/modules/advRedAnalyticsAdapter.md +30 -0
- package/modules/aidemBidAdapter.js +2 -0
- package/modules/akamaiDapRtdProvider.js +19 -798
- package/modules/anonymisedRtdProvider.js +5 -1
- package/modules/anonymisedRtdProvider.md +1 -1
- package/modules/apacdexBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +56 -2
- package/modules/automatadAnalyticsAdapter.js +2 -0
- package/modules/azerionedgeRtdProvider.js +13 -3
- package/modules/azerionedgeRtdProvider.md +0 -17
- package/modules/bridBidAdapter.js +47 -47
- package/modules/cleanioRtdProvider.js +1 -0
- package/modules/concertBidAdapter.js +1 -1
- package/modules/connatixBidAdapter.js +36 -8
- package/modules/connectIdSystem.js +6 -2
- package/modules/contxtfulRtdProvider.js +20 -2
- package/modules/contxtfulRtdProvider.md +1 -0
- package/modules/craftBidAdapter.js +1 -1
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/cwireBidAdapter.js +5 -1
- package/modules/dailymotionBidAdapter.js +85 -65
- package/modules/debugging/debugging.js +3 -0
- package/modules/dfpAdServerVideo.js +15 -33
- package/modules/dfpAdpod.js +2 -6
- package/modules/dgkeywordRtdProvider.js +2 -0
- package/modules/discoveryBidAdapter.js +26 -210
- package/modules/dspxBidAdapter.js +176 -54
- package/modules/eightPodAnalyticsAdapter.js +28 -34
- package/modules/eightPodBidAdapter.js +113 -57
- package/modules/fintezaAnalyticsAdapter.js +9 -4
- package/modules/goldbachBidAdapter.js +1 -1
- package/modules/gptPreAuction.js +63 -4
- package/modules/growthCodeAnalyticsAdapter.js +1 -1
- package/modules/growthCodeRtdProvider.js +1 -1
- package/modules/gumgumBidAdapter.js +14 -10
- package/modules/improvedigitalBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +35 -31
- package/modules/intentIqAnalyticsAdapter.js +234 -0
- package/modules/intentIqAnalyticsAdapter.md +27 -0
- package/modules/intentIqIdSystem.md +0 -0
- package/modules/jwplayerBidAdapter.js +1 -1
- package/modules/jwplayerRtdProvider.js +26 -6
- package/modules/jwplayerVideoProvider.js +6 -0
- package/modules/kargoBidAdapter.js +11 -14
- package/modules/kimberliteBidAdapter.js +24 -7
- package/modules/kimberliteBidAdapter.md +30 -1
- package/modules/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +7 -176
- package/modules/medianetBidAdapter.js +101 -40
- package/modules/mgidBidAdapter.js +3 -1
- package/modules/minutemediaBidAdapter.js +21 -398
- package/modules/mobianRtdProvider.js +16 -2
- package/modules/nextMillenniumBidAdapter.js +1 -27
- package/modules/nexx360BidAdapter.js +3 -2
- package/modules/nobidBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +18 -396
- package/modules/optoutBidAdapter.js +1 -1
- package/modules/paapi.js +48 -35
- package/modules/permutiveRtdProvider.js +72 -22
- package/modules/playdigoBidAdapter.js +4 -2
- package/modules/prebidServerBidAdapter/index.js +4 -2
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
- package/modules/programmaticaBidAdapter.js +1 -1
- package/modules/publirBidAdapter.js +20 -273
- package/modules/pubmaticBidAdapter.js +12 -0
- package/modules/pubxaiAnalyticsAdapter.js +306 -164
- package/modules/relevatehealthBidAdapter.js +2 -1
- package/modules/resetdigitalBidAdapter.md +54 -45
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/riseBidAdapter.js +19 -400
- package/modules/rtdModule/index.js +5 -3
- package/modules/shinezBidAdapter.js +17 -361
- package/modules/sirdataRtdProvider.js +2 -0
- package/modules/sizeMapping.js +2 -5
- package/modules/smaatoBidAdapter.js +18 -1
- package/modules/smarthubBidAdapter.js +45 -177
- package/modules/smilewantedBidAdapter.js +26 -22
- package/modules/snigelBidAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +5 -10
- package/modules/stnBidAdapter.js +22 -398
- package/modules/symitriDapRtdProvider.js +812 -0
- package/modules/symitriDapRtdProvider.md +49 -0
- package/modules/targetVideoBidAdapter.js +120 -152
- package/modules/targetVideoBidAdapter.md +20 -3
- package/modules/telariaBidAdapter.js +2 -32
- package/modules/uid2IdSystem_shared.js +51 -39
- package/modules/userId/eids.js +3 -0
- package/modules/utiqIdSystem.js +12 -10
- package/modules/validationFpdModule/index.js +22 -17
- package/modules/videojsVideoProvider.js +3 -0
- package/modules/visxBidAdapter.js +1 -1
- package/modules/winrBidAdapter.js +2 -27
- package/modules/yahooAdsBidAdapter.js +1 -1
- package/modules/yandexIdSystem.js +1 -1
- package/package.json +4 -4
- package/plugins/eslint/index.js +73 -45
- package/src/adloader.js +1 -0
- package/src/ajax.js +15 -0
- package/src/config.js +0 -4
- package/src/debugging.js +1 -0
- package/src/prebid.js +4 -0
- package/src/secureCreatives.js +1 -1
- package/src/storageManager.js +62 -73
- package/src/targeting.js +26 -20
- package/src/utils.js +9 -0
- package/test/pages/consent_mgt_gdpr.html +1 -1
- package/test/spec/ajax_spec.js +11 -0
- package/test/spec/creative/crossDomainCreative_spec.js +26 -9
- package/test/spec/fpd/gdpr_spec.js +1 -1
- package/test/spec/libraries/userAgentUtils_spec.js +109 -0
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
- package/test/spec/modules/adagioBidAdapter_spec.js +32 -66
- package/test/spec/modules/adagioRtdProvider_spec.js +72 -0
- package/test/spec/modules/admixerBidAdapter_spec.js +21 -17
- package/test/spec/modules/advRedAnalyticsAdapter_spec.js +114 -0
- package/test/spec/modules/adxcgBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +36 -0
- package/test/spec/modules/azerionedgeRtdProvider_spec.js +36 -21
- package/test/spec/modules/connatixBidAdapter_spec.js +55 -2
- package/test/spec/modules/connectIdSystem_spec.js +27 -28
- package/test/spec/modules/consentManagement_spec.js +1 -1
- package/test/spec/modules/contxtfulRtdProvider_spec.js +6 -0
- package/test/spec/modules/dailymotionBidAdapter_spec.js +497 -4
- package/test/spec/modules/discoveryBidAdapter_spec.js +9 -6
- package/test/spec/modules/dspxBidAdapter_spec.js +188 -7
- package/test/spec/modules/eightPodAnalyticsAdapter_spec.js +22 -13
- package/test/spec/modules/gptPreAuction_spec.js +143 -1
- package/test/spec/modules/gumgumBidAdapter_spec.js +17 -0
- package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
- package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +172 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
- package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
- package/test/spec/modules/mediagoBidAdapter_spec.js +34 -37
- package/test/spec/modules/medianetBidAdapter_spec.js +297 -16
- package/test/spec/modules/mgidBidAdapter_spec.js +15 -5
- package/test/spec/modules/mobianRtdProvider_spec.js +1 -3
- package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
- package/test/spec/modules/paapi_spec.js +177 -111
- package/test/spec/modules/permutiveRtdProvider_spec.js +42 -8
- package/test/spec/modules/prebidServerBidAdapter_spec.js +17 -3
- package/test/spec/modules/proxistoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +970 -603
- package/test/spec/modules/pulsepointBidAdapter_spec.js +4 -4
- package/test/spec/modules/smaatoBidAdapter_spec.js +36 -1
- package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
- package/test/spec/modules/smilewantedBidAdapter_spec.js +57 -1
- package/test/spec/modules/symitriDapRtdProvider_spec.js +600 -0
- package/test/spec/modules/targetVideoBidAdapter_spec.js +112 -11
- package/test/spec/modules/yandexIdSystem_spec.js +6 -1
- package/test/spec/schainSerializer/schainSerializer_spec.js +138 -0
- package/test/spec/unit/core/storageManager_spec.js +68 -51
- package/test/spec/unit/pbjs_api_spec.js +11 -0
- package/test/spec/utils_spec.js +19 -0
- /package/src/utils/{gpdr.js → gdpr.js} +0 -0
|
@@ -277,8 +277,6 @@ describe('Adagio bid adapter', () => {
|
|
|
277
277
|
it('should send bid request to ENDPOINT_PB via POST', function() {
|
|
278
278
|
sandbox.stub(_internal, 'getDevice').returns({ a: 'a' });
|
|
279
279
|
sandbox.stub(_internal, 'getSite').returns({ domain: 'adagio.io', 'page': 'https://adagio.io/hb' });
|
|
280
|
-
// sandbox.stub(_internal, 'getPageviewId').returns('1234-567');
|
|
281
|
-
// sandbox.stub(utils, 'generateUUID').returns('blabla');
|
|
282
280
|
|
|
283
281
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
284
282
|
const bidderRequest = new BidderRequestBuilder().build();
|
|
@@ -292,7 +290,31 @@ describe('Adagio bid adapter', () => {
|
|
|
292
290
|
expect(requests[0].data).to.have.all.keys(expectedDataKeys);
|
|
293
291
|
});
|
|
294
292
|
|
|
295
|
-
it('should use a custom generated auctionId
|
|
293
|
+
it('should use a custom generated auctionId from ortb2.site.ext.data.adg_rtd.uid when available', function() {
|
|
294
|
+
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
295
|
+
|
|
296
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
297
|
+
let ortb = {
|
|
298
|
+
ortb2: {
|
|
299
|
+
site: {
|
|
300
|
+
ext: {
|
|
301
|
+
data: {
|
|
302
|
+
adg_rtd: {
|
|
303
|
+
uid: expectedAuctionId
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const bidderRequest = new BidderRequestBuilder(ortb).build();
|
|
311
|
+
|
|
312
|
+
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
313
|
+
expect(requests[0].data.adUnits[0].auctionId).eq(expectedAuctionId);
|
|
314
|
+
expect(requests[0].data.adUnits[0].transactionId).to.not.exist;
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
it('should use a custom generated auctionId when ortb2.site.ext.data.adg_rtd.uid is absent and remove transactionId', function() {
|
|
296
318
|
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
297
319
|
sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
|
|
298
320
|
|
|
@@ -305,9 +327,7 @@ describe('Adagio bid adapter', () => {
|
|
|
305
327
|
});
|
|
306
328
|
|
|
307
329
|
it('should enrich prebid bid requests params', function() {
|
|
308
|
-
const expectedAuctionId = '373bcda7-9794-4f1c-be2c-0d223d11d579'
|
|
309
330
|
const expectedPageviewId = '56befc26-8cf0-472d-b105-73896df8eb89';
|
|
310
|
-
sandbox.stub(utils, 'generateUUID').returns(expectedAuctionId);
|
|
311
331
|
sandbox.stub(_internal, 'getAdagioNs').returns({ pageviewId: expectedPageviewId });
|
|
312
332
|
|
|
313
333
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
@@ -315,7 +335,6 @@ describe('Adagio bid adapter', () => {
|
|
|
315
335
|
|
|
316
336
|
spec.buildRequests([bid01], bidderRequest);
|
|
317
337
|
|
|
318
|
-
expect(bid01.params.adagioAuctionId).eq(expectedAuctionId);
|
|
319
338
|
expect(bid01.params.pageviewId).eq(expectedPageviewId);
|
|
320
339
|
});
|
|
321
340
|
|
|
@@ -782,77 +801,24 @@ describe('Adagio bid adapter', () => {
|
|
|
782
801
|
describe('with GPP', function() {
|
|
783
802
|
const bid01 = new BidRequestBuilder().withParams().build();
|
|
784
803
|
|
|
785
|
-
const
|
|
786
|
-
const
|
|
787
|
-
|
|
788
|
-
const ortb2Gpp = 'ortb2_gpp_consent_string';
|
|
789
|
-
const ortb2GppSid = [1];
|
|
790
|
-
|
|
791
|
-
context('When GPP in regs module', function() {
|
|
792
|
-
it('send gpp and gppSid to the server', function() {
|
|
793
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
794
|
-
gppConsent: {
|
|
795
|
-
gppString: regsGpp,
|
|
796
|
-
applicableSections: regsApplicableSections,
|
|
797
|
-
}
|
|
798
|
-
}).build();
|
|
799
|
-
|
|
800
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
801
|
-
|
|
802
|
-
expect(requests[0].data.regs.gpp).to.equal(regsGpp);
|
|
803
|
-
expect(requests[0].data.regs.gppSid).to.equal(regsApplicableSections);
|
|
804
|
-
});
|
|
805
|
-
});
|
|
806
|
-
|
|
807
|
-
context('When GPP partially defined in regs module', function() {
|
|
808
|
-
it('send gpp and gppSid coming from ortb2 to the server', function() {
|
|
809
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
810
|
-
gppConsent: {
|
|
811
|
-
gppString: regsGpp,
|
|
812
|
-
},
|
|
813
|
-
ortb2: {
|
|
814
|
-
regs: {
|
|
815
|
-
gpp: ortb2Gpp,
|
|
816
|
-
gpp_sid: ortb2GppSid,
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
}).build();
|
|
820
|
-
|
|
821
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
822
|
-
|
|
823
|
-
expect(requests[0].data.regs.gpp).to.equal(ortb2Gpp);
|
|
824
|
-
expect(requests[0].data.regs.gppSid).to.equal(ortb2GppSid);
|
|
825
|
-
});
|
|
826
|
-
|
|
827
|
-
it('send empty gpp and gppSid if no ortb2 fields to the server', function() {
|
|
828
|
-
const bidderRequest = new BidderRequestBuilder({
|
|
829
|
-
gppConsent: {
|
|
830
|
-
gppString: regsGpp,
|
|
831
|
-
}
|
|
832
|
-
}).build();
|
|
833
|
-
|
|
834
|
-
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
835
|
-
|
|
836
|
-
expect(requests[0].data.regs.gpp).to.equal('');
|
|
837
|
-
expect(requests[0].data.regs.gppSid).to.be.empty;
|
|
838
|
-
});
|
|
839
|
-
});
|
|
804
|
+
const gpp = 'gpp_consent_string';
|
|
805
|
+
const gppSid = [1];
|
|
840
806
|
|
|
841
|
-
context('When GPP defined
|
|
807
|
+
context('When GPP is defined', function() {
|
|
842
808
|
it('send gpp and gppSid coming from ortb2 to the server', function() {
|
|
843
809
|
const bidderRequest = new BidderRequestBuilder({
|
|
844
810
|
ortb2: {
|
|
845
811
|
regs: {
|
|
846
|
-
gpp
|
|
847
|
-
gpp_sid:
|
|
812
|
+
gpp,
|
|
813
|
+
gpp_sid: gppSid,
|
|
848
814
|
}
|
|
849
815
|
}
|
|
850
816
|
}).build();
|
|
851
817
|
|
|
852
818
|
const requests = spec.buildRequests([bid01], bidderRequest);
|
|
853
819
|
|
|
854
|
-
expect(requests[0].data.regs.gpp).to.equal(
|
|
855
|
-
expect(requests[0].data.regs.gppSid).to.equal(
|
|
820
|
+
expect(requests[0].data.regs.gpp).to.equal(gpp);
|
|
821
|
+
expect(requests[0].data.regs.gppSid).to.equal(gppSid);
|
|
856
822
|
});
|
|
857
823
|
});
|
|
858
824
|
|
|
@@ -118,6 +118,7 @@ describe('Adagio Rtd Provider', function () {
|
|
|
118
118
|
describe('store session data in localStorage', function () {
|
|
119
119
|
const session = {
|
|
120
120
|
lastActivityTime: 1714116520700,
|
|
121
|
+
id: 'uid-1234',
|
|
121
122
|
rnd: 0.5697,
|
|
122
123
|
vwSmplg: 0.1,
|
|
123
124
|
vwSmplgNxt: 0.1
|
|
@@ -128,6 +129,7 @@ describe('Adagio Rtd Provider', function () {
|
|
|
128
129
|
sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
|
|
129
130
|
sandbox.stub(Date, 'now').returns(1714116520710);
|
|
130
131
|
sandbox.stub(Math, 'random').returns(0.8);
|
|
132
|
+
sandbox.stub(utils, 'generateUUID').returns('uid-1234');
|
|
131
133
|
|
|
132
134
|
const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
|
|
133
135
|
|
|
@@ -136,6 +138,7 @@ describe('Adagio Rtd Provider', function () {
|
|
|
136
138
|
const expected = {
|
|
137
139
|
session: {
|
|
138
140
|
new: true,
|
|
141
|
+
id: utils.generateUUID(),
|
|
139
142
|
rnd: Math.random()
|
|
140
143
|
}
|
|
141
144
|
}
|
|
@@ -176,6 +179,7 @@ describe('Adagio Rtd Provider', function () {
|
|
|
176
179
|
sandbox.stub(Date, 'now').returns(1715679344351);
|
|
177
180
|
sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
|
|
178
181
|
sandbox.stub(Math, 'random').returns(0.8);
|
|
182
|
+
sandbox.stub(utils, 'generateUUID').returns('uid-5678');
|
|
179
183
|
|
|
180
184
|
const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
|
|
181
185
|
|
|
@@ -185,6 +189,7 @@ describe('Adagio Rtd Provider', function () {
|
|
|
185
189
|
session: {
|
|
186
190
|
...session,
|
|
187
191
|
new: true,
|
|
192
|
+
id: utils.generateUUID(),
|
|
188
193
|
rnd: Math.random(),
|
|
189
194
|
}
|
|
190
195
|
}
|
|
@@ -196,6 +201,73 @@ describe('Adagio Rtd Provider', function () {
|
|
|
196
201
|
}).calledOnce).to.be.true;
|
|
197
202
|
});
|
|
198
203
|
});
|
|
204
|
+
|
|
205
|
+
describe('store session data in localStorage when used with external AB Test snippet', function () {
|
|
206
|
+
const sessionWithABTest = {
|
|
207
|
+
lastActivityTime: 1714116520700,
|
|
208
|
+
id: 'uid-1234',
|
|
209
|
+
rnd: 0.5697,
|
|
210
|
+
vwSmplg: 0.1,
|
|
211
|
+
vwSmplgNxt: 0.1,
|
|
212
|
+
testName: 'adg-test',
|
|
213
|
+
testVersion: 'srv',
|
|
214
|
+
initiator: 'snippet'
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
it('store new session data instancied by the AB Test snippet for further usage', function () {
|
|
218
|
+
const sessionWithNewFlag = { ...sessionWithABTest, new: true };
|
|
219
|
+
const storageValue = JSON.stringify({session: sessionWithNewFlag});
|
|
220
|
+
sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
|
|
221
|
+
sandbox.stub(Date, 'now').returns(1714116520710);
|
|
222
|
+
sandbox.stub(Math, 'random').returns(0.8);
|
|
223
|
+
|
|
224
|
+
const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
|
|
225
|
+
|
|
226
|
+
adagioRtdSubmodule.init(config);
|
|
227
|
+
|
|
228
|
+
const expected = {
|
|
229
|
+
session: {
|
|
230
|
+
...sessionWithNewFlag
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
expect(spy.withArgs({
|
|
235
|
+
action: 'session',
|
|
236
|
+
ts: Date.now(),
|
|
237
|
+
data: expected,
|
|
238
|
+
}).calledOnce).to.be.true;
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
it('store new session data after removing AB Test props when initiator is not the snippet', function () {
|
|
242
|
+
const sessionWithNewFlag = { ...sessionWithABTest, new: false, initiator: 'adgjs' };
|
|
243
|
+
const storageValue = JSON.stringify({session: sessionWithNewFlag});
|
|
244
|
+
sandbox.stub(storage, 'getDataFromLocalStorage').callsArgWith(1, storageValue);
|
|
245
|
+
sandbox.stub(Date, 'now').returns(1714116520710);
|
|
246
|
+
sandbox.stub(Math, 'random').returns(0.8);
|
|
247
|
+
sandbox.stub(utils, 'generateUUID').returns('uid-5678');
|
|
248
|
+
|
|
249
|
+
const spy = sandbox.spy(_internal.getAdagioNs().queue, 'push')
|
|
250
|
+
|
|
251
|
+
adagioRtdSubmodule.init(config);
|
|
252
|
+
|
|
253
|
+
const expected = {
|
|
254
|
+
session: {
|
|
255
|
+
...sessionWithNewFlag,
|
|
256
|
+
new: true,
|
|
257
|
+
id: utils.generateUUID(),
|
|
258
|
+
rnd: Math.random(),
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
delete expected.session.testName;
|
|
262
|
+
delete expected.session.testVersion;
|
|
263
|
+
|
|
264
|
+
expect(spy.withArgs({
|
|
265
|
+
action: 'session',
|
|
266
|
+
ts: Date.now(),
|
|
267
|
+
data: expected,
|
|
268
|
+
}).calledOnce).to.be.true;
|
|
269
|
+
});
|
|
270
|
+
});
|
|
199
271
|
});
|
|
200
272
|
|
|
201
273
|
describe('submodule `getBidRequestData`', function () {
|
|
@@ -4,7 +4,7 @@ import {newBidder} from 'src/adapters/bidderFactory.js';
|
|
|
4
4
|
import {config} from '../../../src/config.js';
|
|
5
5
|
|
|
6
6
|
const BIDDER_CODE = 'admixer';
|
|
7
|
-
const
|
|
7
|
+
const RTB_BIDDER_CODE = 'rtbstack'
|
|
8
8
|
const ENDPOINT_URL = 'https://inv-nets.admixer.net/prebid.1.2.aspx';
|
|
9
9
|
const ENDPOINT_URL_CUSTOM = 'https://custom.admixer.net/prebid.aspx';
|
|
10
10
|
const ZONE_ID = '2eb6bd58-865c-47ce-af7f-a918108c3fd2';
|
|
@@ -37,11 +37,10 @@ describe('AdmixerAdapter', function () {
|
|
|
37
37
|
auctionId: '1d1a030790a475',
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
let
|
|
41
|
-
bidder:
|
|
40
|
+
let rtbBid = {
|
|
41
|
+
bidder: RTB_BIDDER_CODE,
|
|
42
42
|
params: {
|
|
43
|
-
|
|
44
|
-
endpointId: ENDPOINT_ID,
|
|
43
|
+
tagId: ENDPOINT_ID,
|
|
45
44
|
},
|
|
46
45
|
adUnitCode: 'adunit-code',
|
|
47
46
|
sizes: [
|
|
@@ -56,8 +55,8 @@ describe('AdmixerAdapter', function () {
|
|
|
56
55
|
it('should return true when required params found', function () {
|
|
57
56
|
expect(spec.isBidRequestValid(bid)).to.equal(true);
|
|
58
57
|
});
|
|
59
|
-
it('should return true when params required by
|
|
60
|
-
expect(spec.isBidRequestValid(
|
|
58
|
+
it('should return true when params required by RTB found', function () {
|
|
59
|
+
expect(spec.isBidRequestValid(rtbBid)).to.equal(true);
|
|
61
60
|
});
|
|
62
61
|
|
|
63
62
|
it('should return false when required params are not passed', function () {
|
|
@@ -68,8 +67,8 @@ describe('AdmixerAdapter', function () {
|
|
|
68
67
|
};
|
|
69
68
|
expect(spec.isBidRequestValid(invalidBid)).to.equal(false);
|
|
70
69
|
});
|
|
71
|
-
it('should return false when params required by
|
|
72
|
-
let invalidBid = Object.assign({},
|
|
70
|
+
it('should return false when params required by RTB are not passed', function () {
|
|
71
|
+
let invalidBid = Object.assign({}, rtbBid);
|
|
73
72
|
delete invalidBid.params;
|
|
74
73
|
invalidBid.params = {
|
|
75
74
|
clientId: 0,
|
|
@@ -118,7 +117,7 @@ describe('AdmixerAdapter', function () {
|
|
|
118
117
|
it('sends bid request to CUSTOM_ENDPOINT via GET', function () {
|
|
119
118
|
config.setBidderConfig({
|
|
120
119
|
bidders: [BIDDER_CODE], // one or more bidders
|
|
121
|
-
config: {
|
|
120
|
+
config: { bidderURL: ENDPOINT_URL_CUSTOM },
|
|
122
121
|
});
|
|
123
122
|
const request = config.runWithBidder(BIDDER_CODE, () =>
|
|
124
123
|
spec.buildRequests(validRequest, bidderRequest)
|
|
@@ -133,9 +132,8 @@ describe('AdmixerAdapter', function () {
|
|
|
133
132
|
validRequest: [
|
|
134
133
|
{
|
|
135
134
|
bidder: bidder,
|
|
136
|
-
params: bidder === '
|
|
137
|
-
|
|
138
|
-
endpointId: ENDPOINT_ID
|
|
135
|
+
params: bidder === 'rtbstack' ? {
|
|
136
|
+
tagId: ENDPOINT_ID
|
|
139
137
|
} : {
|
|
140
138
|
zone: ZONE_ID,
|
|
141
139
|
},
|
|
@@ -193,10 +191,16 @@ describe('AdmixerAdapter', function () {
|
|
|
193
191
|
expect(request.url).to.equal('https://inv-nets.admixer.net/adxprebid.1.2.aspx');
|
|
194
192
|
expect(request.method).to.equal('POST');
|
|
195
193
|
});
|
|
196
|
-
it('build request for
|
|
197
|
-
const requestParams = requestParamsFor('
|
|
198
|
-
|
|
199
|
-
|
|
194
|
+
it('build request for rtbstack', function () {
|
|
195
|
+
const requestParams = requestParamsFor('rtbstack');
|
|
196
|
+
config.setBidderConfig({
|
|
197
|
+
bidders: ['rtbstack'],
|
|
198
|
+
config: { bidderURL: ENDPOINT_URL_CUSTOM },
|
|
199
|
+
});
|
|
200
|
+
const request = config.runWithBidder(BIDDER_CODE, () =>
|
|
201
|
+
spec.buildRequests(requestParams.validRequest, requestParams.bidderRequest)
|
|
202
|
+
);
|
|
203
|
+
expect(request.url).to.equal(ENDPOINT_URL_CUSTOM);
|
|
200
204
|
expect(request.method).to.equal('POST');
|
|
201
205
|
});
|
|
202
206
|
});
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import advRedAnalytics from 'modules/advRedAnalyticsAdapter.js';
|
|
2
|
+
import {expect} from 'chai';
|
|
3
|
+
import {server} from 'test/mocks/xhr.js';
|
|
4
|
+
import {expectEvents} from '../../helpers/analytics.js';
|
|
5
|
+
import { EVENTS } from 'src/constants.js';
|
|
6
|
+
import sinon from 'sinon';
|
|
7
|
+
|
|
8
|
+
let events = require('src/events');
|
|
9
|
+
|
|
10
|
+
describe('AdvRed Analytics Adapter', function () {
|
|
11
|
+
let bidWonEvent = {
|
|
12
|
+
'bidderCode': 'appnexus',
|
|
13
|
+
'width': 300,
|
|
14
|
+
'height': 250,
|
|
15
|
+
'adId': '1ebb82ec35375e',
|
|
16
|
+
'mediaType': 'banner',
|
|
17
|
+
'cpm': 0.5,
|
|
18
|
+
'requestId': '1582271863760569973',
|
|
19
|
+
'creative_id': '96846035',
|
|
20
|
+
'creativeId': '96846035',
|
|
21
|
+
'ttl': 60,
|
|
22
|
+
'currency': 'USD',
|
|
23
|
+
'netRevenue': true,
|
|
24
|
+
'auctionId': '9c7b70b9-b6ab-4439-9e71-b7b382797c18',
|
|
25
|
+
'responseTimestamp': 1537521629657,
|
|
26
|
+
'requestTimestamp': 1537521629331,
|
|
27
|
+
'bidder': 'appnexus',
|
|
28
|
+
'adUnitCode': 'div-gpt-ad-1460505748561-0',
|
|
29
|
+
'timeToRespond': 326,
|
|
30
|
+
'size': '300x250',
|
|
31
|
+
'status': 'rendered',
|
|
32
|
+
'eventType': 'bidWon',
|
|
33
|
+
'ad': 'some ad',
|
|
34
|
+
'adUrl': 'ad url'
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
describe('AdvRed Analytic tests', function () {
|
|
38
|
+
beforeEach(function () {
|
|
39
|
+
sinon.stub(events, 'getEvents').returns([]);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
afterEach(function () {
|
|
43
|
+
advRedAnalytics.disableAnalytics();
|
|
44
|
+
events.getEvents.restore();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('support custom endpoint', function () {
|
|
48
|
+
let custom_endpoint = 'custom url';
|
|
49
|
+
advRedAnalytics.enableAnalytics({
|
|
50
|
+
provider: 'advRed',
|
|
51
|
+
options: {
|
|
52
|
+
url: custom_endpoint,
|
|
53
|
+
publisherId: '1234567890'
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
expect(advRedAnalytics.getOptions().url).to.equal(custom_endpoint);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('bid won event', function() {
|
|
61
|
+
let publisherId = '1234567890';
|
|
62
|
+
advRedAnalytics.enableAnalytics({
|
|
63
|
+
provider: 'advRed',
|
|
64
|
+
options: {
|
|
65
|
+
publisherId: publisherId
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
events.emit(EVENTS.BID_WON, bidWonEvent);
|
|
70
|
+
advRedAnalytics.sendEvents();
|
|
71
|
+
|
|
72
|
+
expect(server.requests.length).to.equal(1);
|
|
73
|
+
expect(server.requests[0].url).to.equal('https://api.adv.red/api/event');
|
|
74
|
+
|
|
75
|
+
const message = JSON.parse(server.requests[0].requestBody);
|
|
76
|
+
expect(message.pwId).to.exist;
|
|
77
|
+
expect(message.publisherId).to.equal(publisherId);
|
|
78
|
+
expect(message.events.length).to.equal(1);
|
|
79
|
+
expect(message.events[0].eventType).to.equal('bidWon');
|
|
80
|
+
expect(message.events[0].ad).to.be.undefined;
|
|
81
|
+
expect(message.events[0].adUrl).to.be.undefined;
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it('track event', function () {
|
|
85
|
+
sinon.spy(advRedAnalytics, 'track');
|
|
86
|
+
|
|
87
|
+
advRedAnalytics.enableAnalytics({
|
|
88
|
+
provider: 'advRed',
|
|
89
|
+
options: {
|
|
90
|
+
publisherId: '1234567890'
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
expectEvents().to.beTrackedBy(advRedAnalytics.track);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('pageUrl detection', function () {
|
|
99
|
+
afterEach(function () {
|
|
100
|
+
advRedAnalytics.disableAnalytics()
|
|
101
|
+
});
|
|
102
|
+
it('check pageUrl property', function () {
|
|
103
|
+
advRedAnalytics.enableAnalytics({
|
|
104
|
+
provider: 'advRed',
|
|
105
|
+
options: {
|
|
106
|
+
publisherId: '1234567890'
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const message = JSON.parse(server.requests[0].requestBody);
|
|
111
|
+
expect(message.pageUrl).to.equal(window.top.location.href);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
@@ -431,6 +431,42 @@ describe('AppNexusAdapter', function () {
|
|
|
431
431
|
expect(payload.tags[0].video_frameworks).to.deep.equal([1, 4])
|
|
432
432
|
});
|
|
433
433
|
|
|
434
|
+
it('should convert and include ORTB2 device data when available', function () {
|
|
435
|
+
const bidRequest = deepClone(bidRequests[0]);
|
|
436
|
+
const bidderRequest = {
|
|
437
|
+
ortb2: {
|
|
438
|
+
device: {
|
|
439
|
+
w: 980,
|
|
440
|
+
h: 1720,
|
|
441
|
+
dnt: 0,
|
|
442
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/125.0.6422.80 Mobile/15E148 Safari/604.1',
|
|
443
|
+
language: 'en',
|
|
444
|
+
devicetype: 1,
|
|
445
|
+
make: 'Apple',
|
|
446
|
+
model: 'iPhone 12 Pro Max',
|
|
447
|
+
os: 'iOS',
|
|
448
|
+
osv: '17.4',
|
|
449
|
+
},
|
|
450
|
+
},
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
const expectedDeviceResult = {
|
|
454
|
+
useragent: bidderRequest.ortb2.device.ua,
|
|
455
|
+
devicetype: 'Mobile/Tablet - General',
|
|
456
|
+
make: bidderRequest.ortb2.device.make,
|
|
457
|
+
model: bidderRequest.ortb2.device.model,
|
|
458
|
+
os: bidderRequest.ortb2.device.os,
|
|
459
|
+
os_version: bidderRequest.ortb2.device.osv,
|
|
460
|
+
w: bidderRequest.ortb2.device.w,
|
|
461
|
+
h: bidderRequest.ortb2.device.h,
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
const request = spec.buildRequests([bidRequest], bidderRequest);
|
|
465
|
+
const payload = JSON.parse(request.data);
|
|
466
|
+
|
|
467
|
+
expect(payload.device).to.deep.equal(expectedDeviceResult);
|
|
468
|
+
});
|
|
469
|
+
|
|
434
470
|
it('should add video property when adUnit includes a renderer', function () {
|
|
435
471
|
const videoData = {
|
|
436
472
|
mediaTypes: {
|
|
@@ -8,11 +8,17 @@ describe('Azerion Edge RTD submodule', function () {
|
|
|
8
8
|
{ id: '1', visits: 123 },
|
|
9
9
|
{ id: '2', visits: 456 },
|
|
10
10
|
];
|
|
11
|
-
|
|
11
|
+
const IMPROVEDIGITAL_GVLID = '253';
|
|
12
12
|
const key = 'publisher123';
|
|
13
13
|
const bidders = ['appnexus', 'improvedigital'];
|
|
14
14
|
const process = { key: 'value' };
|
|
15
15
|
const dataProvider = { name: 'azerionedge', waitForIt: true };
|
|
16
|
+
const userConsent = {gdpr: {gdprApplies: 'gdpr-applies', consentString: 'consent-string'}, usp: 'usp'};
|
|
17
|
+
|
|
18
|
+
const resetAll = () => {
|
|
19
|
+
window.azerionPublisherAudiences.resetHistory();
|
|
20
|
+
loadExternalScript.resetHistory();
|
|
21
|
+
}
|
|
16
22
|
|
|
17
23
|
let reqBidsConfigObj;
|
|
18
24
|
let storageStub;
|
|
@@ -33,7 +39,11 @@ describe('Azerion Edge RTD submodule', function () {
|
|
|
33
39
|
let returned;
|
|
34
40
|
|
|
35
41
|
beforeEach(function () {
|
|
36
|
-
returned = azerionedgeRTD.azerionedgeSubmodule.init(dataProvider);
|
|
42
|
+
returned = azerionedgeRTD.azerionedgeSubmodule.init(dataProvider, userConsent);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should have the correct gvlid', () => {
|
|
46
|
+
expect(azerionedgeRTD.azerionedgeSubmodule.gvlid).to.equal(IMPROVEDIGITAL_GVLID);
|
|
37
47
|
});
|
|
38
48
|
|
|
39
49
|
it('should return true', function () {
|
|
@@ -49,18 +59,21 @@ describe('Azerion Edge RTD submodule', function () {
|
|
|
49
59
|
expect(loadExternalScript.args[0][0]).to.deep.equal(expected);
|
|
50
60
|
});
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
[
|
|
63
|
+
['gdprApplies', userConsent.gdpr.gdprApplies],
|
|
64
|
+
['gdprConsent', userConsent.gdpr.consentString],
|
|
65
|
+
['uspConsent', userConsent.usp],
|
|
66
|
+
].forEach(([key, value]) => {
|
|
67
|
+
it(`should call azerionPublisherAudiencesStub with ${key}:${value}`, function () {
|
|
68
|
+
expect(window.azerionPublisherAudiences.args[0][0]).to.include({[key]: value});
|
|
69
|
+
});
|
|
54
70
|
});
|
|
55
71
|
|
|
56
72
|
describe('with key', function () {
|
|
57
73
|
beforeEach(function () {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
returned = azerionedgeRTD.azerionedgeSubmodule.init(
|
|
61
|
-
...dataProvider,
|
|
62
|
-
params: { key },
|
|
63
|
-
});
|
|
74
|
+
resetAll();
|
|
75
|
+
const config = { ...dataProvider, params: { key } };
|
|
76
|
+
returned = azerionedgeRTD.azerionedgeSubmodule.init(config, userConsent);
|
|
64
77
|
});
|
|
65
78
|
|
|
66
79
|
it('should return true', function () {
|
|
@@ -75,22 +88,24 @@ describe('Azerion Edge RTD submodule', function () {
|
|
|
75
88
|
|
|
76
89
|
describe('with process configuration', function () {
|
|
77
90
|
beforeEach(function () {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
returned = azerionedgeRTD.azerionedgeSubmodule.init(
|
|
81
|
-
...dataProvider,
|
|
82
|
-
params: { process },
|
|
83
|
-
});
|
|
91
|
+
resetAll();
|
|
92
|
+
const config = { ...dataProvider, params: { process } };
|
|
93
|
+
returned = azerionedgeRTD.azerionedgeSubmodule.init(config, userConsent);
|
|
84
94
|
});
|
|
85
95
|
|
|
86
96
|
it('should return true', function () {
|
|
87
97
|
expect(returned).to.equal(true);
|
|
88
98
|
});
|
|
89
99
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
[
|
|
101
|
+
['gdprApplies', userConsent.gdpr.gdprApplies],
|
|
102
|
+
['gdprConsent', userConsent.gdpr.consentString],
|
|
103
|
+
['uspConsent', userConsent.usp],
|
|
104
|
+
...Object.entries(process),
|
|
105
|
+
].forEach(([key, value]) => {
|
|
106
|
+
it(`should call azerionPublisherAudiencesStub with ${key}:${value}`, function () {
|
|
107
|
+
expect(window.azerionPublisherAudiences.args[0][0]).to.include({[key]: value});
|
|
108
|
+
});
|
|
94
109
|
});
|
|
95
110
|
});
|
|
96
111
|
});
|
|
@@ -111,7 +126,7 @@ describe('Azerion Edge RTD submodule', function () {
|
|
|
111
126
|
);
|
|
112
127
|
});
|
|
113
128
|
|
|
114
|
-
it('does not
|
|
129
|
+
it('does not apply audiences to bidders', function () {
|
|
115
130
|
expect(reqBidsConfigObj.ortb2Fragments.bidder).to.deep.equal({});
|
|
116
131
|
});
|
|
117
132
|
|