prebid.js 7.43.0 → 7.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/admixerIdSystem.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adrinoBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adsinteractiveBidAdapter.js +1 -0
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/airgridRtdProvider.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/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/apstreamBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bedigitechBidAdapter.js +1 -0
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/blueconicRtdProvider.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/brightcomSSPBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/byDataAnalyticsAdapter.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/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/criteoIdSystem.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/czechAdIdSystem.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/deepintentDpesIdSystem.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fledgeForGpt.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/gnetBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -0
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idWardRtdProvider.js +1 -1
- package/dist/identityLinkIdSystem.js +1 -1
- package/dist/idxIdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/imuIdSystem.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/invibesBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.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/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.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/mediagoBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidRtdProvider.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mwOpenLinkIdSystem.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +205 -202
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.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/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.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/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/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/staqAnalyticsAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.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/teadsIdSystem.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.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/userId.js +1 -1
- package/dist/validationFpdModule.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/vidoomyBidAdapter.js +1 -1
- 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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeotapIdPlusIdSystem.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/libraries/ortbConverter/converter.js +3 -2
- package/modules/33acrossIdSystem.js +5 -2
- package/modules/adagioBidAdapter.js +3 -4
- package/modules/adkernelAdnAnalyticsAdapter.js +4 -2
- package/modules/admixerIdSystem.js +4 -2
- package/modules/adnuntiusBidAdapter.js +1 -1
- package/modules/adqueryBidAdapter.js +1 -1
- package/modules/adqueryIdSystem.js +2 -1
- package/modules/adrinoBidAdapter.js +24 -16
- package/modules/adriverIdSystem.js +3 -2
- package/modules/adsinteractiveBidAdapter.js +144 -0
- package/modules/adsinteractiveBidAdapter.md +31 -0
- package/modules/adyoulikeBidAdapter.js +2 -3
- package/modules/aidemBidAdapter.js +5 -0
- package/modules/airgridRtdProvider.js +4 -2
- package/modules/ajaBidAdapter.js +38 -16
- package/modules/akamaiDapRtdProvider.js +2 -1
- package/modules/amxBidAdapter.js +11 -9
- package/modules/appnexusBidAdapter.js +8 -8
- package/modules/apstreamBidAdapter.js +1 -1
- package/modules/atsAnalyticsAdapter.js +4 -2
- package/modules/audiencerunBidAdapter.js +9 -10
- package/modules/bedigitechBidAdapter.js +67 -0
- package/modules/bedigitechBidAdapter.md +32 -0
- package/modules/bluebillywigBidAdapter.js +2 -4
- package/modules/blueconicRtdProvider.js +2 -1
- package/modules/brightcomBidAdapter.js +0 -1
- package/modules/brightcomSSPBidAdapter.js +0 -1
- package/modules/browsiRtdProvider.js +4 -2
- package/modules/byDataAnalyticsAdapter.js +6 -3
- package/modules/concertBidAdapter.js +14 -7
- package/modules/connectadBidAdapter.js +2 -4
- package/modules/craftBidAdapter.js +29 -24
- package/modules/criteoBidAdapter.js +4 -2
- package/modules/criteoIdSystem.js +6 -2
- package/modules/czechAdIdSystem.js +3 -2
- package/modules/dacIdSystem.js +4 -3
- package/modules/deepintentDpesIdSystem.js +3 -2
- package/modules/discoveryBidAdapter.js +1 -1
- package/modules/dspxBidAdapter.js +223 -15
- package/modules/fintezaAnalyticsAdapter.js +5 -3
- package/modules/fledgeForGpt.js +54 -6
- package/modules/ftrackIdSystem.js +6 -6
- package/modules/gdprEnforcement.js +56 -68
- package/modules/glimpseBidAdapter.js +1 -4
- package/modules/gnetBidAdapter.js +1 -2
- package/modules/gravitoIdSystem.js +5 -3
- package/modules/greenbidsAnalyticsAdapter.js +181 -0
- package/modules/greenbidsAnalyticsAdapter.md +23 -0
- package/modules/gridBidAdapter.js +13 -7
- package/modules/growthCodeAnalyticsAdapter.js +3 -2
- package/modules/growthCodeIdSystem.js +3 -2
- package/modules/gumgumBidAdapter.js +7 -17
- package/modules/hadronAnalyticsAdapter.js +5 -3
- package/modules/hadronIdSystem.js +3 -1
- package/modules/hadronRtdProvider.js +4 -2
- package/modules/id5IdSystem.js +4 -2
- package/modules/idWardRtdProvider.js +2 -1
- package/modules/identityLinkIdSystem.js +5 -2
- package/modules/idxIdSystem.js +3 -2
- package/modules/imRtdProvider.js +3 -1
- package/modules/impactifyBidAdapter.js +2 -4
- package/modules/imuIdSystem.js +6 -3
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/intentIqIdSystem.js +3 -2
- package/modules/invibesBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +1 -1
- package/modules/jixieBidAdapter.js +3 -6
- package/modules/kargoBidAdapter.js +1 -1
- package/modules/kueezRtbBidAdapter.js +1 -1
- package/modules/liveIntentIdSystem.js +3 -2
- package/modules/lotamePanoramaIdSystem.js +3 -2
- package/modules/magniteAnalyticsAdapter.js +25 -6
- package/modules/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +1 -1
- package/modules/mediakeysBidAdapter.js +2 -3
- package/modules/merkleIdSystem.js +2 -1
- package/modules/mgidBidAdapter.js +1 -1
- package/modules/mgidRtdProvider.js +3 -1
- package/modules/minutemediaplusBidAdapter.js +1 -1
- package/modules/mwOpenLinkIdSystem.js +3 -2
- package/modules/naveggIdSystem.js +3 -2
- package/modules/nexx360BidAdapter.js +0 -1
- package/modules/nobidBidAdapter.js +1 -1
- package/modules/novatiqIdSystem.js +6 -3
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/openxOrtbBidAdapter.js +19 -7
- package/modules/openxOrtbBidAdapter.md +6 -5
- package/modules/parrableIdSystem.js +4 -2
- package/modules/permutiveRtdProvider.js +2 -1
- package/modules/prebidServerBidAdapter/index.js +9 -3
- package/modules/prebidServerBidAdapter/ortbConverter.js +12 -2
- package/modules/prebidmanagerAnalyticsAdapter.js +3 -2
- package/modules/pubCommonId.js +6 -3
- package/modules/publinkIdSystem.js +2 -1
- package/modules/pubmaticAnalyticsAdapter.js +12 -1
- package/modules/pubmaticBidAdapter.js +192 -222
- package/modules/pubwiseAnalyticsAdapter.js +5 -3
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/quantcastIdSystem.js +5 -3
- package/modules/realvuAnalyticsAdapter.js +6 -3
- package/modules/roxotAnalyticsAdapter.js +5 -2
- package/modules/rtbhouseBidAdapter.js +5 -3
- package/modules/rtdModule/index.js +3 -0
- package/modules/rubiconAnalyticsAdapter.js +3 -2
- package/modules/rubiconBidAdapter.js +1 -0
- package/modules/sharedIdSystem.js +12 -9
- package/modules/sharethroughBidAdapter.js +1 -2
- package/modules/sigmoidAnalyticsAdapter.js +4 -2
- package/modules/smartadserverBidAdapter.js +2 -3
- package/modules/sovrnBidAdapter.js +2 -3
- package/modules/staqAnalyticsAdapter.js +5 -3
- package/modules/stroeerCoreBidAdapter.js +3 -2
- package/modules/taboolaBidAdapter.js +4 -2
- package/modules/teadsBidAdapter.js +1 -1
- package/modules/teadsIdSystem.js +2 -1
- package/modules/tripleliftBidAdapter.js +1 -1
- package/modules/trustpidSystem.js +3 -2
- package/modules/ttdBidAdapter.js +11 -5
- package/modules/uid2IdSystem.js +3 -2
- package/modules/undertoneBidAdapter.js +1 -0
- package/modules/userId/index.js +5 -2
- package/modules/validationFpdModule/index.js +3 -2
- package/modules/vidazooBidAdapter.js +14 -5
- package/modules/vidoomyBidAdapter.js +29 -1
- package/modules/weboramaRtdProvider.js +3 -1
- package/modules/yieldmoBidAdapter.js +2 -3
- package/modules/yuktamediaAnalyticsAdapter.js +4 -2
- package/modules/zeotapIdPlusIdSystem.js +3 -2
- package/modules/zeta_global_sspBidAdapter.js +3 -0
- package/package.json +1 -1
- package/plugins/eslint/validateImports.js +13 -14
- package/plugins/pbjsGlobals.js +3 -1
- package/src/activities/modules.js +5 -0
- package/src/adapterManager.js +4 -8
- package/src/adapters/bidderFactory.js +30 -16
- package/src/consentHandler.js +42 -0
- package/src/refererDetection.js +39 -21
- package/src/secureCreatives.js +2 -2
- package/src/storageManager.js +33 -47
- package/src/userSync.js +7 -4
- package/test/spec/modules/33acrossIdSystem_spec.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +11 -17
- package/test/spec/modules/admixerIdSystem_spec.js +0 -3
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -6
- package/test/spec/modules/adrinoBidAdapter_spec.js +65 -34
- package/test/spec/modules/adsinteractiveBidAdapter_spec.js +207 -0
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -11
- package/test/spec/modules/aidemBidAdapter_spec.js +72 -8
- package/test/spec/modules/amxBidAdapter_spec.js +4 -1
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/audiencerunBidAdapter_spec.js +8 -11
- package/test/spec/modules/bedigitechBidAdapter_spec.js +145 -0
- package/test/spec/modules/bluebillywigBidAdapter_spec.js +1 -3
- package/test/spec/modules/concertBidAdapter_spec.js +3 -8
- package/test/spec/modules/connectadBidAdapter_spec.js +11 -3
- package/test/spec/modules/criteoBidAdapter_spec.js +29 -0
- package/test/spec/modules/criteoIdSystem_spec.js +38 -0
- package/test/spec/modules/datablocksBidAdapter_spec.js +0 -1
- package/test/spec/modules/dspxBidAdapter_spec.js +184 -13
- package/test/spec/modules/fledge_spec.js +173 -2
- package/test/spec/modules/gdprEnforcement_spec.js +134 -164
- package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +418 -0
- package/test/spec/modules/gridBidAdapter_spec.js +9 -5
- package/test/spec/modules/growthCodeIdSystem_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +41 -4
- package/test/spec/modules/identityLinkIdSystem_spec.js +2 -2
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -3
- package/test/spec/modules/jixieBidAdapter_spec.js +42 -60
- package/test/spec/modules/mediakeysBidAdapter_spec.js +12 -16
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +96 -11
- package/test/spec/modules/prebidServerBidAdapter_spec.js +68 -2
- package/test/spec/modules/publinkIdSystem_spec.js +3 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +67 -10
- package/test/spec/modules/realTimeDataModule_spec.js +22 -0
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +5 -5
- package/test/spec/modules/rubiconBidAdapter_spec.js +2 -1
- package/test/spec/modules/sharethroughBidAdapter_spec.js +97 -21
- package/test/spec/modules/smartadserverBidAdapter_spec.js +74 -12
- package/test/spec/modules/sovrnBidAdapter_spec.js +25 -6
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +13 -18
- package/test/spec/modules/taboolaBidAdapter_spec.js +101 -0
- package/test/spec/modules/ttdBidAdapter_spec.js +25 -7
- package/test/spec/modules/userId_spec.js +68 -0
- package/test/spec/modules/vidazooBidAdapter_spec.js +13 -0
- package/test/spec/modules/vidoomyBidAdapter_spec.js +33 -0
- package/test/spec/modules/yieldmoBidAdapter_spec.js +18 -2
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -2
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
- package/test/spec/refererDetection_spec.js +56 -1
- package/test/spec/unit/core/adapterManager_spec.js +21 -58
- package/test/spec/unit/core/bidderFactory_spec.js +28 -10
- package/test/spec/unit/core/consentHandler_spec.js +29 -1
- package/test/spec/unit/core/storageManager_spec.js +31 -21
- package/test/spec/userSync_spec.js +2 -1
|
@@ -1,26 +1,33 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deviceAccessHook,
|
|
3
|
-
|
|
4
|
-
userSyncHook,
|
|
5
|
-
userIdHook,
|
|
6
|
-
makeBidRequestsHook,
|
|
7
|
-
validateRules,
|
|
3
|
+
enableAnalyticsHook,
|
|
8
4
|
enforcementRules,
|
|
5
|
+
getGvlid,
|
|
6
|
+
getGvlidFromAnalyticsAdapter,
|
|
7
|
+
makeBidRequestsHook,
|
|
9
8
|
purpose1Rule,
|
|
10
9
|
purpose2Rule,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
setEnforcementConfig,
|
|
11
|
+
STRICT_STORAGE_ENFORCEMENT,
|
|
12
|
+
userIdHook,
|
|
13
|
+
userSyncHook,
|
|
14
|
+
validateRules
|
|
14
15
|
} from 'modules/gdprEnforcement.js';
|
|
15
|
-
import {
|
|
16
|
-
import adapterManager, {
|
|
16
|
+
import {config} from 'src/config.js';
|
|
17
|
+
import adapterManager, {gdprDataHandler} from 'src/adapterManager.js';
|
|
17
18
|
import * as utils from 'src/utils.js';
|
|
18
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
MODULE_TYPE_ANALYTICS,
|
|
21
|
+
MODULE_TYPE_BIDDER,
|
|
22
|
+
MODULE_TYPE_CORE,
|
|
23
|
+
MODULE_TYPE_UID
|
|
24
|
+
} from '../../../src/activities/modules.js';
|
|
19
25
|
import * as events from 'src/events.js';
|
|
20
26
|
import 'modules/appnexusBidAdapter.js'; // some tests expect this to be in the adapter registry
|
|
21
|
-
import 'src/prebid.js'
|
|
27
|
+
import 'src/prebid.js';
|
|
22
28
|
import {hook} from '../../../src/hook.js';
|
|
23
|
-
import {VENDORLESS_GVLID} from '../../../src/consentHandler.js';
|
|
29
|
+
import {GDPR_GVLIDS, VENDORLESS_GVLID} from '../../../src/consentHandler.js';
|
|
30
|
+
import {validateStorageEnforcement} from '../../../src/storageManager.js';
|
|
24
31
|
|
|
25
32
|
describe('gdpr enforcement', function () {
|
|
26
33
|
let nextFnSpy;
|
|
@@ -100,6 +107,7 @@ describe('gdpr enforcement', function () {
|
|
|
100
107
|
}
|
|
101
108
|
}
|
|
102
109
|
};
|
|
110
|
+
let gvlids;
|
|
103
111
|
|
|
104
112
|
before(() => {
|
|
105
113
|
hook.ready();
|
|
@@ -111,31 +119,28 @@ describe('gdpr enforcement', function () {
|
|
|
111
119
|
adapterManager.makeBidRequests.getHooks({ hook: makeBidRequestsHook }).remove();
|
|
112
120
|
})
|
|
113
121
|
|
|
114
|
-
|
|
115
|
-
|
|
122
|
+
beforeEach(() => {
|
|
123
|
+
gvlids = {};
|
|
124
|
+
sinon.stub(GDPR_GVLIDS, 'get').callsFake((name) => ({gvlid: gvlids[name], modules: {}}));
|
|
125
|
+
});
|
|
116
126
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return {
|
|
121
|
-
gvlid
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
127
|
+
afterEach(() => {
|
|
128
|
+
GDPR_GVLIDS.get.restore();
|
|
129
|
+
});
|
|
126
130
|
|
|
131
|
+
describe('deviceAccessHook', function () {
|
|
127
132
|
beforeEach(function () {
|
|
128
133
|
nextFnSpy = sinon.spy();
|
|
129
134
|
gdprDataHandlerStub = sinon.stub(gdprDataHandler, 'getConsentData');
|
|
130
135
|
logWarnSpy = sinon.spy(utils, 'logWarn');
|
|
131
|
-
adapterManagerStub = sinon.stub(adapterManager, 'getBidAdapter');
|
|
132
136
|
});
|
|
137
|
+
|
|
133
138
|
afterEach(function () {
|
|
134
139
|
config.resetConfig();
|
|
135
140
|
gdprDataHandler.getConsentData.restore();
|
|
136
141
|
logWarnSpy.restore();
|
|
137
|
-
adapterManagerStub.restore();
|
|
138
142
|
});
|
|
143
|
+
|
|
139
144
|
it('should not allow device access when device access flag is set to false', function () {
|
|
140
145
|
config.setConfig({
|
|
141
146
|
deviceAccess: false,
|
|
@@ -161,8 +166,10 @@ describe('gdpr enforcement', function () {
|
|
|
161
166
|
});
|
|
162
167
|
|
|
163
168
|
it('should only check for consent for vendor exceptions when enforcePurpose and enforceVendor are false', function () {
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
Object.assign(gvlids, {
|
|
170
|
+
appnexus: 1,
|
|
171
|
+
rubicon: 5
|
|
172
|
+
});
|
|
166
173
|
setEnforcementConfig({
|
|
167
174
|
gdpr: {
|
|
168
175
|
rules: [{
|
|
@@ -179,14 +186,16 @@ describe('gdpr enforcement', function () {
|
|
|
179
186
|
consentData.apiVersion = 2;
|
|
180
187
|
gdprDataHandlerStub.returns(consentData);
|
|
181
188
|
|
|
182
|
-
deviceAccessHook(nextFnSpy,
|
|
183
|
-
deviceAccessHook(nextFnSpy,
|
|
189
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
|
|
190
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'rubicon');
|
|
184
191
|
expect(logWarnSpy.callCount).to.equal(0);
|
|
185
192
|
});
|
|
186
193
|
|
|
187
194
|
it('should check consent for all vendors when enforcePurpose and enforceVendor are true', function () {
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
Object.assign(gvlids, {
|
|
196
|
+
appnexus: 1,
|
|
197
|
+
rubicon: 3
|
|
198
|
+
});
|
|
190
199
|
setEnforcementConfig({
|
|
191
200
|
gdpr: {
|
|
192
201
|
rules: [{
|
|
@@ -202,13 +211,13 @@ describe('gdpr enforcement', function () {
|
|
|
202
211
|
consentData.apiVersion = 2;
|
|
203
212
|
gdprDataHandlerStub.returns(consentData);
|
|
204
213
|
|
|
205
|
-
deviceAccessHook(nextFnSpy,
|
|
206
|
-
deviceAccessHook(nextFnSpy,
|
|
214
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
|
|
215
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'rubicon');
|
|
207
216
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
208
217
|
});
|
|
209
218
|
|
|
210
219
|
it('should allow device access when gdprApplies is false and hasDeviceAccess flag is true', function () {
|
|
211
|
-
|
|
220
|
+
gvlids.appnexus = 1;
|
|
212
221
|
setEnforcementConfig({
|
|
213
222
|
gdpr: {
|
|
214
223
|
rules: [{
|
|
@@ -225,13 +234,13 @@ describe('gdpr enforcement', function () {
|
|
|
225
234
|
consentData.apiVersion = 2;
|
|
226
235
|
gdprDataHandlerStub.returns(consentData);
|
|
227
236
|
|
|
228
|
-
deviceAccessHook(nextFnSpy,
|
|
237
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
|
|
229
238
|
expect(nextFnSpy.calledOnce).to.equal(true);
|
|
230
239
|
let result = {
|
|
231
240
|
hasEnforcementHook: true,
|
|
232
241
|
valid: true
|
|
233
242
|
}
|
|
234
|
-
sinon.assert.calledWith(nextFnSpy,
|
|
243
|
+
sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
|
|
235
244
|
});
|
|
236
245
|
|
|
237
246
|
it('should use gvlMapping set by publisher', function() {
|
|
@@ -256,13 +265,13 @@ describe('gdpr enforcement', function () {
|
|
|
256
265
|
consentData.apiVersion = 2;
|
|
257
266
|
gdprDataHandlerStub.returns(consentData);
|
|
258
267
|
|
|
259
|
-
deviceAccessHook(nextFnSpy,
|
|
268
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
|
|
260
269
|
expect(nextFnSpy.calledOnce).to.equal(true);
|
|
261
270
|
let result = {
|
|
262
271
|
hasEnforcementHook: true,
|
|
263
272
|
valid: true
|
|
264
273
|
}
|
|
265
|
-
sinon.assert.calledWith(nextFnSpy,
|
|
274
|
+
sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
|
|
266
275
|
config.resetConfig();
|
|
267
276
|
});
|
|
268
277
|
|
|
@@ -291,13 +300,13 @@ describe('gdpr enforcement', function () {
|
|
|
291
300
|
consentData.apiVersion = 2;
|
|
292
301
|
gdprDataHandlerStub.returns(consentData);
|
|
293
302
|
|
|
294
|
-
deviceAccessHook(nextFnSpy,
|
|
303
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
|
|
295
304
|
expect(nextFnSpy.calledOnce).to.equal(true);
|
|
296
305
|
let result = {
|
|
297
306
|
hasEnforcementHook: true,
|
|
298
307
|
valid: true
|
|
299
308
|
}
|
|
300
|
-
sinon.assert.calledWith(nextFnSpy,
|
|
309
|
+
sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
|
|
301
310
|
config.resetConfig();
|
|
302
311
|
curBidderStub.restore();
|
|
303
312
|
});
|
|
@@ -310,9 +319,9 @@ describe('gdpr enforcement', function () {
|
|
|
310
319
|
}
|
|
311
320
|
gdprDataHandlerStub.returns(consentData);
|
|
312
321
|
const validate = sinon.stub().callsFake(() => false);
|
|
313
|
-
deviceAccessHook(nextFnSpy,
|
|
322
|
+
deviceAccessHook(nextFnSpy, MODULE_TYPE_CORE, 'mockModule', undefined, {validate});
|
|
314
323
|
sinon.assert.callCount(validate, 0);
|
|
315
|
-
sinon.assert.calledWith(nextFnSpy,
|
|
324
|
+
sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_CORE, 'mockModule', {hasEnforcementHook: true, valid: true});
|
|
316
325
|
})
|
|
317
326
|
});
|
|
318
327
|
|
|
@@ -354,23 +363,11 @@ describe('gdpr enforcement', function () {
|
|
|
354
363
|
gdprDataHandlerStub.returns(consentData);
|
|
355
364
|
|
|
356
365
|
curBidderStub.returns('sampleBidder1');
|
|
357
|
-
|
|
358
|
-
getSpec: function () {
|
|
359
|
-
return {
|
|
360
|
-
'gvlid': 1
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
});
|
|
366
|
+
gvlids.sampleBidder1 = 1;
|
|
364
367
|
userSyncHook(nextFnSpy);
|
|
365
368
|
|
|
366
369
|
curBidderStub.returns('sampleBidder2');
|
|
367
|
-
|
|
368
|
-
getSpec: function () {
|
|
369
|
-
return {
|
|
370
|
-
'gvlid': 3
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
});
|
|
370
|
+
gvlids.sampleBidder2 = 3;
|
|
374
371
|
userSyncHook(nextFnSpy);
|
|
375
372
|
expect(nextFnSpy.calledTwice).to.equal(true);
|
|
376
373
|
});
|
|
@@ -393,23 +390,11 @@ describe('gdpr enforcement', function () {
|
|
|
393
390
|
gdprDataHandlerStub.returns(consentData);
|
|
394
391
|
|
|
395
392
|
curBidderStub.returns('sampleBidder1');
|
|
396
|
-
|
|
397
|
-
getSpec: function () {
|
|
398
|
-
return {
|
|
399
|
-
'gvlid': 1
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
});
|
|
393
|
+
gvlids.sampleBidder1 = 1;
|
|
403
394
|
userSyncHook(nextFnSpy);
|
|
404
395
|
|
|
405
396
|
curBidderStub.returns('sampleBidder2');
|
|
406
|
-
|
|
407
|
-
getSpec: function () {
|
|
408
|
-
return {
|
|
409
|
-
'gvlid': 3
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
});
|
|
397
|
+
gvlids.sampleBidder2 = 3;
|
|
413
398
|
userSyncHook(nextFnSpy);
|
|
414
399
|
expect(nextFnSpy.calledOnce).to.equal(true);
|
|
415
400
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
@@ -433,23 +418,11 @@ describe('gdpr enforcement', function () {
|
|
|
433
418
|
gdprDataHandlerStub.returns(consentData);
|
|
434
419
|
|
|
435
420
|
curBidderStub.returns('sampleBidder1');
|
|
436
|
-
|
|
437
|
-
getSpec: function () {
|
|
438
|
-
return {
|
|
439
|
-
'gvlid': 1
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
});
|
|
421
|
+
gvlids.sampleBidder1 = 1;
|
|
443
422
|
userSyncHook(nextFnSpy);
|
|
444
423
|
|
|
445
424
|
curBidderStub.returns('sampleBidder2');
|
|
446
|
-
|
|
447
|
-
getSpec: function () {
|
|
448
|
-
return {
|
|
449
|
-
'gvlid': 3
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
});
|
|
425
|
+
gvlids.sampleBidder2 = 3;
|
|
453
426
|
userSyncHook(nextFnSpy);
|
|
454
427
|
expect(nextFnSpy.calledTwice).to.equal(true);
|
|
455
428
|
expect(logWarnSpy.callCount).to.equal(0);
|
|
@@ -486,6 +459,7 @@ describe('gdpr enforcement', function () {
|
|
|
486
459
|
name: 'sampleUserId'
|
|
487
460
|
}
|
|
488
461
|
}]
|
|
462
|
+
gvlids.sampleUserId = 1;
|
|
489
463
|
userIdHook(nextFnSpy, submodules, consentData);
|
|
490
464
|
// Should pass back hasValidated flag since version 2
|
|
491
465
|
const args = nextFnSpy.getCalls()[0].args;
|
|
@@ -501,6 +475,7 @@ describe('gdpr enforcement', function () {
|
|
|
501
475
|
name: 'sampleUserId'
|
|
502
476
|
}
|
|
503
477
|
}];
|
|
478
|
+
gvlids.sampleUserId = 1;
|
|
504
479
|
let consentData = null;
|
|
505
480
|
userIdHook(nextFnSpy, submodules, consentData);
|
|
506
481
|
// Should not pass back hasValidated flag since version 2
|
|
@@ -537,6 +512,10 @@ describe('gdpr enforcement', function () {
|
|
|
537
512
|
name: 'sampleUserId1'
|
|
538
513
|
}
|
|
539
514
|
}]
|
|
515
|
+
Object.assign(gvlids, {
|
|
516
|
+
sampleUserId: 1,
|
|
517
|
+
sampleUserId1: 3
|
|
518
|
+
});
|
|
540
519
|
userIdHook(nextFnSpy, submodules, consentData);
|
|
541
520
|
expect(logWarnSpy.callCount).to.equal(1);
|
|
542
521
|
let expectedSubmodules = [{
|
|
@@ -602,20 +581,9 @@ describe('gdpr enforcement', function () {
|
|
|
602
581
|
consentData.gdprApplies = true;
|
|
603
582
|
|
|
604
583
|
gdprDataHandlerStub.returns(consentData);
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
}
|
|
609
|
-
});
|
|
610
|
-
adapterManagerStub.withArgs('bidder_2').returns({
|
|
611
|
-
getSpec: function () {
|
|
612
|
-
return { 'gvlid': 5 }
|
|
613
|
-
}
|
|
614
|
-
});
|
|
615
|
-
adapterManagerStub.withArgs('bidder_3').returns({
|
|
616
|
-
getSpec: function () {
|
|
617
|
-
return { 'gvlid': undefined }
|
|
618
|
-
}
|
|
584
|
+
Object.assign(gvlids, {
|
|
585
|
+
bidder_1: 4,
|
|
586
|
+
bidder_2: 5,
|
|
619
587
|
});
|
|
620
588
|
makeBidRequestsHook(nextFnSpy, MOCK_AD_UNITS, []);
|
|
621
589
|
|
|
@@ -660,21 +628,10 @@ describe('gdpr enforcement', function () {
|
|
|
660
628
|
consentData.gdprApplies = true;
|
|
661
629
|
|
|
662
630
|
gdprDataHandlerStub.returns(consentData);
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
});
|
|
668
|
-
adapterManagerStub.withArgs('bidder_2').returns({
|
|
669
|
-
getSpec: function () {
|
|
670
|
-
return { 'gvlid': 5 }
|
|
671
|
-
}
|
|
672
|
-
});
|
|
673
|
-
adapterManagerStub.withArgs('bidder_3').returns({
|
|
674
|
-
getSpec: function () {
|
|
675
|
-
return { 'gvlid': undefined }
|
|
676
|
-
}
|
|
677
|
-
});
|
|
631
|
+
Object.assign(gvlids, {
|
|
632
|
+
bidder_1: 4,
|
|
633
|
+
bidder_2: 5,
|
|
634
|
+
})
|
|
678
635
|
|
|
679
636
|
makeBidRequestsHook(nextFnSpy, MOCK_AD_UNITS, []);
|
|
680
637
|
|
|
@@ -771,9 +728,11 @@ describe('gdpr enforcement', function () {
|
|
|
771
728
|
consentData.gdprApplies = true;
|
|
772
729
|
|
|
773
730
|
gdprDataHandlerStub.returns(consentData);
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
731
|
+
Object.assign(gvlids, {
|
|
732
|
+
analyticsAdapter_A: 3,
|
|
733
|
+
analyticsAdapter_B: 5,
|
|
734
|
+
analyticsAdapter_C: 1
|
|
735
|
+
});
|
|
777
736
|
|
|
778
737
|
enableAnalyticsHook(nextFnSpy, MOCK_ANALYTICS_ADAPTER_CONFIG);
|
|
779
738
|
|
|
@@ -1142,13 +1101,13 @@ describe('gdpr enforcement', function () {
|
|
|
1142
1101
|
});
|
|
1143
1102
|
|
|
1144
1103
|
describe('getGvlid', function() {
|
|
1145
|
-
|
|
1146
|
-
let
|
|
1147
|
-
|
|
1104
|
+
const MOCK_MODULE = 'moduleA';
|
|
1105
|
+
let entry;
|
|
1106
|
+
|
|
1148
1107
|
beforeEach(function() {
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1108
|
+
entry = {modules: {}};
|
|
1109
|
+
GDPR_GVLIDS.get.reset();
|
|
1110
|
+
GDPR_GVLIDS.get.callsFake((mod) => mod === MOCK_MODULE ? entry : {modules: {}});
|
|
1152
1111
|
});
|
|
1153
1112
|
|
|
1154
1113
|
it('should return "null" if called without passing any argument', function() {
|
|
@@ -1156,46 +1115,63 @@ describe('gdpr enforcement', function () {
|
|
|
1156
1115
|
expect(gvlid).to.equal(null);
|
|
1157
1116
|
});
|
|
1158
1117
|
|
|
1159
|
-
it('should return "null" if GVL ID
|
|
1160
|
-
|
|
1161
|
-
getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
|
|
1162
|
-
getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(null);
|
|
1163
|
-
|
|
1164
|
-
const gvlid = getGvlid('moduleA');
|
|
1118
|
+
it('should return "null" if no GVL ID was registered', function() {
|
|
1119
|
+
const gvlid = getGvlid('type', MOCK_MODULE);
|
|
1165
1120
|
expect(gvlid).to.equal(null);
|
|
1166
1121
|
});
|
|
1167
1122
|
|
|
1168
|
-
it('should return the GVL ID
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
}
|
|
1173
|
-
});
|
|
1174
|
-
|
|
1175
|
-
// Actual GVL ID for moduleA is 2, as defined on its the bidAdapter.js file.
|
|
1176
|
-
getGvlidForBidAdapterStub.withArgs('moduleA').returns(2);
|
|
1177
|
-
|
|
1178
|
-
const gvlid = getGvlid('moduleA');
|
|
1179
|
-
expect(gvlid).to.equal(1);
|
|
1180
|
-
});
|
|
1181
|
-
|
|
1182
|
-
it('should return the GVL ID by calling getGvlidForBidAdapter -> getGvlidForUserIdModule -> getGvlidForAnalyticsAdapter in sequence', function() {
|
|
1183
|
-
getGvlidForBidAdapterStub.withArgs('moduleA').returns(null);
|
|
1184
|
-
getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
|
|
1185
|
-
getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(7);
|
|
1123
|
+
it('should return null if the wrong GVL ID was registered', () => {
|
|
1124
|
+
entry = {gvlid: 123};
|
|
1125
|
+
expect(getGvlid('type', 'someOtherModule')).to.equal(null);
|
|
1126
|
+
})
|
|
1186
1127
|
|
|
1187
|
-
|
|
1188
|
-
|
|
1128
|
+
Object.entries({
|
|
1129
|
+
'without fallback': null,
|
|
1130
|
+
'with fallback': () => 'shouldBeIgnored'
|
|
1131
|
+
}).forEach(([t, fallbackFn]) => {
|
|
1132
|
+
describe(t, () => {
|
|
1133
|
+
it('should return the GVL ID from gvlMapping if it is defined in setConfig', function() {
|
|
1134
|
+
config.setConfig({
|
|
1135
|
+
gvlMapping: {
|
|
1136
|
+
[MOCK_MODULE]: 1
|
|
1137
|
+
}
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
entry = {gvlid: 2};
|
|
1141
|
+
|
|
1142
|
+
const gvlid = getGvlid('type', MOCK_MODULE, fallbackFn);
|
|
1143
|
+
expect(gvlid).to.equal(1);
|
|
1144
|
+
});
|
|
1145
|
+
|
|
1146
|
+
it('should return the GVL ID that was registered', function() {
|
|
1147
|
+
entry = {gvlid: 7};
|
|
1148
|
+
expect(getGvlid('type', MOCK_MODULE, fallbackFn)).to.equal(7);
|
|
1149
|
+
});
|
|
1150
|
+
|
|
1151
|
+
it('should return VENDORLESS_GVLID for core modules', () => {
|
|
1152
|
+
entry = {gvlid: 123};
|
|
1153
|
+
expect(getGvlid(MODULE_TYPE_CORE, MOCK_MODULE, fallbackFn)).to.equal(VENDORLESS_GVLID);
|
|
1154
|
+
});
|
|
1155
|
+
|
|
1156
|
+
describe('multiple GVL IDs are found', () => {
|
|
1157
|
+
it('should use bidder over others', () => {
|
|
1158
|
+
entry = {modules: {[MODULE_TYPE_BIDDER]: 123, [MODULE_TYPE_UID]: 321}};
|
|
1159
|
+
expect(getGvlid(MODULE_TYPE_UID, MOCK_MODULE, fallbackFn)).to.equal(123);
|
|
1160
|
+
});
|
|
1161
|
+
it('should use uid over analytics', () => {
|
|
1162
|
+
entry = {modules: {[MODULE_TYPE_UID]: 123, [MODULE_TYPE_ANALYTICS]: 321}};
|
|
1163
|
+
expect(getGvlid(MODULE_TYPE_ANALYTICS, MOCK_MODULE, fallbackFn)).to.equal(123);
|
|
1164
|
+
})
|
|
1165
|
+
})
|
|
1166
|
+
})
|
|
1167
|
+
})
|
|
1189
1168
|
|
|
1190
|
-
it('should
|
|
1191
|
-
|
|
1192
|
-
const cfg = {some: 'args'};
|
|
1193
|
-
getGvlid('analytics', cfg);
|
|
1194
|
-
sinon.assert.calledWith(getGvlidForAnalyticsAdapterStub, 'analytics', cfg);
|
|
1169
|
+
it('should use fallbackFn if no other lookup produces a gvl id', () => {
|
|
1170
|
+
expect(getGvlid('type', MOCK_MODULE, () => 321)).to.equal(321);
|
|
1195
1171
|
});
|
|
1196
1172
|
});
|
|
1197
1173
|
|
|
1198
|
-
describe('
|
|
1174
|
+
describe('getGvlidFromAnalyticsConfig', () => {
|
|
1199
1175
|
let getAnalyticsAdapter, adapter, adapterEntry;
|
|
1200
1176
|
|
|
1201
1177
|
beforeEach(() => {
|
|
@@ -1207,26 +1183,20 @@ describe('gdpr enforcement', function () {
|
|
|
1207
1183
|
getAnalyticsAdapter.withArgs('analytics').returns(adapterEntry);
|
|
1208
1184
|
});
|
|
1209
1185
|
|
|
1210
|
-
it('should return gvlid from adapterManager if defined', () => {
|
|
1211
|
-
adapterEntry.gvlid = 123;
|
|
1212
|
-
adapter.gvlid = 321
|
|
1213
|
-
expect(internal.getGvlidForAnalyticsAdapter('analytics')).to.equal(123);
|
|
1214
|
-
});
|
|
1215
|
-
|
|
1216
1186
|
it('should return gvlid from adapter if defined', () => {
|
|
1217
1187
|
adapter.gvlid = 321;
|
|
1218
|
-
expect(
|
|
1188
|
+
expect(getGvlidFromAnalyticsAdapter('analytics')).to.equal(321);
|
|
1219
1189
|
});
|
|
1220
1190
|
|
|
1221
1191
|
it('should invoke adapter.gvlid if it\'s a function', () => {
|
|
1222
1192
|
adapter.gvlid = (cfg) => cfg.k
|
|
1223
1193
|
const cfg = {k: 231};
|
|
1224
|
-
expect(
|
|
1194
|
+
expect(getGvlidFromAnalyticsAdapter('analytics', cfg)).to.eql(231);
|
|
1225
1195
|
});
|
|
1226
1196
|
|
|
1227
1197
|
it('should not choke if adapter gvlid fn throws', () => {
|
|
1228
1198
|
adapter.gvlid = () => { throw new Error(); };
|
|
1229
|
-
expect(
|
|
1199
|
+
expect(getGvlidFromAnalyticsAdapter('analytics')).to.not.be.ok;
|
|
1230
1200
|
});
|
|
1231
1201
|
});
|
|
1232
1202
|
})
|