prebid.js 9.4.0 → 9.5.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/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/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 +43 -7
- 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 +201 -193
- 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/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/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/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/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/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/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/adagioBidAdapter.js +1 -1
- 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/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 +3 -1
- 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/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/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +7 -176
- package/modules/medianetBidAdapter.js +101 -40
- package/modules/mgidBidAdapter.js +3 -1
- package/modules/mobianRtdProvider.js +16 -2
- package/modules/nextMillenniumBidAdapter.js +1 -27
- package/modules/nobidBidAdapter.js +1 -1
- 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/pubmaticBidAdapter.js +12 -0
- package/modules/pubxaiAnalyticsAdapter.js +306 -164
- package/modules/relevatehealthBidAdapter.js +2 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +5 -3
- package/modules/sirdataRtdProvider.js +2 -0
- package/modules/sizeMapping.js +2 -5
- package/modules/smaatoBidAdapter.js +18 -1
- package/modules/smilewantedBidAdapter.js +26 -22
- package/modules/snigelBidAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +5 -10
- 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/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/adRendering.js +7 -3
- 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/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/banner_sync.html +97 -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/e2e/banner/basic_banner_ad.spec.js +20 -14
- package/test/spec/fpd/gdpr_spec.js +1 -1
- package/test/spec/libraries/userAgentUtils_spec.js +109 -0
- 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/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/intentIqAnalyticsAdapter_spec.js +172 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
- 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/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/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/utils_spec.js +19 -0
- /package/src/utils/{gpdr.js → gdpr.js} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
+
import { config } from 'src/config.js';
|
|
2
3
|
import { spec } from 'modules/dspxBidAdapter.js';
|
|
3
4
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
4
5
|
import { deepClone } from '../../../src/utils';
|
|
6
|
+
import {BANNER} from '../../../src/mediaTypes';
|
|
5
7
|
|
|
6
8
|
const ENDPOINT_URL = 'https://buyer.dspx.tv/request/';
|
|
7
9
|
const ENDPOINT_URL_DEV = 'https://dcbuyer.dspx.tv/request/';
|
|
@@ -33,11 +35,18 @@ describe('dspxAdapter', function () {
|
|
|
33
35
|
});
|
|
34
36
|
|
|
35
37
|
it('should return false when required params are not passed', function () {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const invalidBid = {
|
|
39
|
+
bidId: '30b31c1838de1e',
|
|
40
|
+
bidder: 'dspx',
|
|
41
|
+
mediaTypes: {
|
|
42
|
+
[BANNER]: {
|
|
43
|
+
sizes: [[300, 250]]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
params: {
|
|
47
|
+
someIncorrectParam: 0
|
|
48
|
+
}
|
|
49
|
+
}
|
|
41
50
|
expect(spec.isBidRequestValid(invalidBid)).to.equal(false);
|
|
42
51
|
});
|
|
43
52
|
});
|
|
@@ -77,7 +86,26 @@ describe('dspxAdapter', function () {
|
|
|
77
86
|
'sharedid': {
|
|
78
87
|
'id': '01EXPPGZ9C8NKG1MTXVHV98505',
|
|
79
88
|
'third': '01EXPPGZ9C8NKG1MTXVHV98505'
|
|
80
|
-
}
|
|
89
|
+
},
|
|
90
|
+
'pubProvidedId': [{
|
|
91
|
+
'source': 'puburl2.com',
|
|
92
|
+
'uids': [{
|
|
93
|
+
'id': 'pubid2'
|
|
94
|
+
}, {
|
|
95
|
+
'id': 'pubid2-123'
|
|
96
|
+
}]
|
|
97
|
+
}, {
|
|
98
|
+
'source': 'puburl.com',
|
|
99
|
+
'uids': [{
|
|
100
|
+
'id': 'pubid1',
|
|
101
|
+
'atype': 1,
|
|
102
|
+
'ext': {
|
|
103
|
+
'stype': 'ppuid'
|
|
104
|
+
}
|
|
105
|
+
}]
|
|
106
|
+
}],
|
|
107
|
+
'euid': {},
|
|
108
|
+
'tdid': 'tdid_ID',
|
|
81
109
|
},
|
|
82
110
|
'crumbs': {
|
|
83
111
|
'pubcid': 'e09ab6a3-ae74-4f01-b2e8-81b141d6dc61'
|
|
@@ -228,12 +256,54 @@ describe('dspxAdapter', function () {
|
|
|
228
256
|
}
|
|
229
257
|
};
|
|
230
258
|
|
|
259
|
+
// With ortb2
|
|
260
|
+
var bidderRequestWithORTB = {
|
|
261
|
+
refererInfo: {
|
|
262
|
+
referer: 'some_referrer.net'
|
|
263
|
+
},
|
|
264
|
+
gdprConsent: {
|
|
265
|
+
consentString: 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',
|
|
266
|
+
vendorData: {someData: 'value'},
|
|
267
|
+
gdprApplies: true
|
|
268
|
+
},
|
|
269
|
+
ortb2: {
|
|
270
|
+
source: {},
|
|
271
|
+
site: {
|
|
272
|
+
domain: 'buyer',
|
|
273
|
+
publisher: {
|
|
274
|
+
domain: 'buyer'
|
|
275
|
+
},
|
|
276
|
+
page: 'http://buyer/schain.php?ver=8.5.0-pre:latest-dev-build&pbjs_debug=true',
|
|
277
|
+
ref: 'http://buyer/pbjsv/',
|
|
278
|
+
content: {
|
|
279
|
+
id: 'contentID',
|
|
280
|
+
episode: 1,
|
|
281
|
+
title: 'contentTitle',
|
|
282
|
+
series: 'contentSeries',
|
|
283
|
+
season: 'contentSeason 3',
|
|
284
|
+
artist: 'contentArtist',
|
|
285
|
+
genre: 'rock',
|
|
286
|
+
isrc: 'contentIsrc',
|
|
287
|
+
url: 'https://content-url.com/',
|
|
288
|
+
context: 1,
|
|
289
|
+
keywords: 'kw1,kw2,keqword 3',
|
|
290
|
+
livestream: 0,
|
|
291
|
+
cat: [
|
|
292
|
+
'IAB1-1',
|
|
293
|
+
'IAB1-2',
|
|
294
|
+
'IAB2-10'
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
231
301
|
var request1 = spec.buildRequests([bidRequests[0]], bidderRequest)[0];
|
|
232
302
|
it('sends bid request to our endpoint via GET', function () {
|
|
233
303
|
expect(request1.method).to.equal('GET');
|
|
234
304
|
expect(request1.url).to.equal(ENDPOINT_URL);
|
|
235
305
|
let data = request1.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
|
|
236
|
-
expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=6682&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e1&pbver=test&pfilter%5Bfloorprice%5D=1000000&pfilter%5Bprivate_auction%5D=0&pfilter%5Bgeo%5D%5Bcountry%5D=DE&pfilter%5Bgdpr_consent%5D=BOJ%2FP2HOJ%2FP2HABABMAAAAAZ%2BA%3D%3D&pfilter%5Bgdpr%5D=true&bcat=IAB2%2CIAB4&dvt=desktop&
|
|
306
|
+
expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=6682&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e1&pbver=test&pfilter%5Bfloorprice%5D=1000000&pfilter%5Bprivate_auction%5D=0&pfilter%5Bgeo%5D%5Bcountry%5D=DE&pfilter%5Bgdpr_consent%5D=BOJ%2FP2HOJ%2FP2HABABMAAAAAZ%2BA%3D%3D&pfilter%5Bgdpr%5D=true&bcat=IAB2%2CIAB4&dvt=desktop&auctionId=1d1a030790a475&pbcode=testDiv1&media_types%5Bbanner%5D=300x250&schain%5Bver%5D=1.0&schain%5Bcomplete%5D=1&schain%5Bnodes%5D%5B0%5D%5Basi%5D=example.com&schain%5Bnodes%5D%5B0%5D%5Bsid%5D=0&schain%5Bnodes%5D%5B0%5D%5Bhp%5D=1&schain%5Bnodes%5D%5B0%5D%5Brid%5D=bidrequestid&schain%5Bnodes%5D%5B0%5D%5Bdomain%5D=example.com&did_netid=123&did_id5=ID5-ZHMOcvSShIBZiIth_yYh9odjNFxVEmMQ_i5TArPfWw!ID5*dtrjfV5mPLasyya5TW2IE9oVzQZwx7xRPGyAYS4hcWkAAOoxoFef4bIoREpQys8x&did_id5_linktype=2&did_uid2=456&did_sharedid=01EXPPGZ9C8NKG1MTXVHV98505&did_pubcid=e09ab6a3-ae74-4f01-b2e8-81b141d6dc61&did_tdid=tdid_ID&did_ppuid=1%3Apuburl.com%3Apubid1&did_cpubcid=e09ab6a3-ae74-4f01-b2e8-81b141d6dc61');
|
|
237
307
|
});
|
|
238
308
|
|
|
239
309
|
var request2 = spec.buildRequests([bidRequests[1]], bidderRequest)[0];
|
|
@@ -281,6 +351,14 @@ describe('dspxAdapter', function () {
|
|
|
281
351
|
expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=107&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e4&pbver=test&pfilter%5Btest%5D=1&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv3&media_types%5Bvideo%5D=640x480&media_types%5Bbanner%5D=300x250&vctx=instream&vpl%5Bmimes%5D%5B0%5D=video%2Fmp4&vpl%5Bprotocols%5D%5B0%5D=1&vpl%5Bprotocols%5D%5B1%5D=2&vpl%5Bplaybackmethod%5D%5B0%5D=2&vpl%5Bskip%5D=1');
|
|
282
352
|
});
|
|
283
353
|
|
|
354
|
+
var request7 = spec.buildRequests([bidRequests[5]], bidderRequestWithORTB)[0];
|
|
355
|
+
it('ortb2 iab_content test', function () {
|
|
356
|
+
expect(request7.method).to.equal('GET');
|
|
357
|
+
expect(request7.url).to.equal('http://localhost');
|
|
358
|
+
let data = request7.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
|
|
359
|
+
expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=107&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e4&pbver=test&pfilter%5Btest%5D=1&pfilter%5Bgdpr_consent%5D=BOJ%2FP2HOJ%2FP2HABABMAAAAAZ%2BA%3D%3D&pfilter%5Bgdpr%5D=true&pfilter%5Biab_content%5D=cat%3AIAB1-1%7CIAB1-2%7CIAB2-10%2Cepisode%3A1%2Ccontext%3A1%2Cid%3AcontentID%2Ctitle%3AcontentTitle%2Cseries%3AcontentSeries%2Cseason%3AcontentSeason%25203%2Cartist%3AcontentArtist%2Cgenre%3Arock%2Cisrc%3AcontentIsrc%2Curl%3Ahttps%253A%252F%252Fcontent-url.com%252F%2Ckeywords%3Akw1%252Ckw2%252Ckeqword%25203&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv3&media_types%5Bvideo%5D=640x480&media_types%5Bbanner%5D=300x250&vctx=instream&vpl%5Bmimes%5D%5B0%5D=video%2Fmp4&vpl%5Bprotocols%5D%5B0%5D=1&vpl%5Bprotocols%5D%5B1%5D=2&vpl%5Bplaybackmethod%5D%5B0%5D=2&vpl%5Bskip%5D=1');
|
|
360
|
+
});
|
|
361
|
+
|
|
284
362
|
// bidfloor tests
|
|
285
363
|
const getFloorResponse = {currency: 'EUR', floor: 5};
|
|
286
364
|
let testBidRequest = deepClone(bidRequests[1]);
|
|
@@ -321,6 +399,109 @@ describe('dspxAdapter', function () {
|
|
|
321
399
|
});
|
|
322
400
|
});
|
|
323
401
|
|
|
402
|
+
describe('google topics handling', () => {
|
|
403
|
+
afterEach(() => {
|
|
404
|
+
config.resetConfig();
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
const REQPARAMS = {
|
|
408
|
+
refererInfo: {
|
|
409
|
+
referer: 'some_referrer.net'
|
|
410
|
+
},
|
|
411
|
+
gdprConsent: {
|
|
412
|
+
consentString: 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',
|
|
413
|
+
vendorData: {someData: 'value'},
|
|
414
|
+
gdprApplies: true
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
const defaultRequest = {
|
|
419
|
+
'bidder': 'dspx',
|
|
420
|
+
'params': {
|
|
421
|
+
'placement': '6682',
|
|
422
|
+
'pfilter': {
|
|
423
|
+
'floorprice': 1000000,
|
|
424
|
+
'private_auction': 0,
|
|
425
|
+
'geo': {
|
|
426
|
+
'country': 'DE'
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
'bcat': 'IAB2,IAB4',
|
|
430
|
+
'dvt': 'desktop'
|
|
431
|
+
},
|
|
432
|
+
'sizes': [
|
|
433
|
+
[300, 250]
|
|
434
|
+
],
|
|
435
|
+
'bidId': '30b31c1838de1e1',
|
|
436
|
+
'bidderRequestId': '22edbae2733bf61',
|
|
437
|
+
'auctionId': '1d1a030790a475',
|
|
438
|
+
'adUnitCode': 'testDiv1',
|
|
439
|
+
};
|
|
440
|
+
|
|
441
|
+
it('does pass segtax, segclass, segments for google topics data', () => {
|
|
442
|
+
const GOOGLE_TOPICS_DATA = {
|
|
443
|
+
ortb2: {
|
|
444
|
+
user: {
|
|
445
|
+
data: [
|
|
446
|
+
{
|
|
447
|
+
ext: {
|
|
448
|
+
segtax: 600,
|
|
449
|
+
segclass: 'v1',
|
|
450
|
+
},
|
|
451
|
+
segment: [
|
|
452
|
+
{id: '717'}, {id: '808'},
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
]
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
}
|
|
459
|
+
config.setConfig(GOOGLE_TOPICS_DATA);
|
|
460
|
+
const request = spec.buildRequests([defaultRequest], { ...REQPARAMS, ...GOOGLE_TOPICS_DATA })[0];
|
|
461
|
+
expect(request.data).to.contain('segtx=600&segcl=v1&segs=717%2C808');
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
it('does not pass topics params for invalid topics data', () => {
|
|
465
|
+
const INVALID_TOPICS_DATA = {
|
|
466
|
+
ortb2: {
|
|
467
|
+
user: {
|
|
468
|
+
data: [
|
|
469
|
+
{
|
|
470
|
+
segment: []
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
segment: [{id: ''}]
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
segment: [{id: null}]
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
segment: [{id: 'dummy'}, {id: '123'}]
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
ext: {
|
|
483
|
+
segtax: 600,
|
|
484
|
+
segclass: 'v1',
|
|
485
|
+
},
|
|
486
|
+
segment: [
|
|
487
|
+
{
|
|
488
|
+
name: 'dummy'
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
},
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
config.setConfig(INVALID_TOPICS_DATA);
|
|
498
|
+
let request = spec.buildRequests([defaultRequest], { ...REQPARAMS, ...INVALID_TOPICS_DATA })[0];
|
|
499
|
+
expect(request.data).to.not.contain('segtax');
|
|
500
|
+
expect(request.data).to.not.contain('segclass');
|
|
501
|
+
expect(request.data).to.not.contain('segments');
|
|
502
|
+
});
|
|
503
|
+
});
|
|
504
|
+
|
|
324
505
|
describe('interpretResponse', function () {
|
|
325
506
|
let serverResponse = {
|
|
326
507
|
'body': {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import analyticsAdapter, { storage, queue,
|
|
1
|
+
import analyticsAdapter, { storage, queue, trackEvent } from 'modules/eightPodAnalyticsAdapter.js';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
3
|
import adapterManager from 'src/adapterManager.js';
|
|
4
4
|
import eightPodAnalytics from 'modules/eightPodAnalyticsAdapter.js';
|
|
@@ -45,11 +45,12 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
45
45
|
it('should subscribe on messageEvents', function() {
|
|
46
46
|
getDataFromLocalStorageStub.returns(JSON.stringify([]));
|
|
47
47
|
sandbox.spy(eightPodAnalytics, 'eventSubscribe');
|
|
48
|
+
sandbox.spy(eightPodAnalytics, 'getEventFromLocalStorage');
|
|
48
49
|
|
|
49
50
|
analyticsAdapter.setupPage();
|
|
50
51
|
|
|
51
|
-
sandbox.assert.callCount(analyticsAdapter.eventSubscribe,
|
|
52
|
-
sandbox.assert.callCount(
|
|
52
|
+
sandbox.assert.callCount(analyticsAdapter.eventSubscribe, 0);
|
|
53
|
+
sandbox.assert.callCount(analyticsAdapter.getEventFromLocalStorage, 1);
|
|
53
54
|
});
|
|
54
55
|
|
|
55
56
|
it('should receive saved events list', function() {
|
|
@@ -67,6 +68,7 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
67
68
|
|
|
68
69
|
beforeEach(function() {
|
|
69
70
|
setupPageStub = sandbox.stub(eightPodAnalytics, 'setupPage');
|
|
71
|
+
eightPodAnalytics.resetContext();
|
|
70
72
|
});
|
|
71
73
|
|
|
72
74
|
afterEach(function() {
|
|
@@ -79,16 +81,18 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
79
81
|
})
|
|
80
82
|
|
|
81
83
|
sandbox.assert.callCount(setupPageStub, 0);
|
|
82
|
-
expect(
|
|
84
|
+
expect(analyticsAdapter.getContext()).to.deep.equal({})
|
|
83
85
|
});
|
|
84
86
|
|
|
85
87
|
it('should call setup page and get context', function() {
|
|
86
88
|
eightPodAnalytics.track({
|
|
87
89
|
eventType: BID_WON,
|
|
88
90
|
args: {
|
|
91
|
+
adUnitCode: 'adUnitCode',
|
|
89
92
|
bidder: 'eightPod',
|
|
90
93
|
creativeId: 'creativeId',
|
|
91
94
|
seatBidId: 'seatBidId',
|
|
95
|
+
cid: 'campaignId',
|
|
92
96
|
params: [
|
|
93
97
|
{
|
|
94
98
|
publisherId: 'publisherId',
|
|
@@ -99,23 +103,27 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
99
103
|
})
|
|
100
104
|
|
|
101
105
|
sandbox.assert.callCount(setupPageStub, 1);
|
|
102
|
-
expect(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
expect(analyticsAdapter.getContext()).to.deep.equal({
|
|
107
|
+
adUnitCode: {
|
|
108
|
+
bidId: 'seatBidId',
|
|
109
|
+
campaignId: 'campaignId',
|
|
110
|
+
placementId: 'placementId',
|
|
111
|
+
publisherId: 'publisherId',
|
|
112
|
+
variantId: 'creativeId'
|
|
113
|
+
}
|
|
108
114
|
})
|
|
109
115
|
});
|
|
110
116
|
});
|
|
111
117
|
|
|
112
118
|
describe('trackEvent', function() {
|
|
113
119
|
let getContextStub, getTimeStub;
|
|
120
|
+
const adUnitCode = 'adUnitCode';
|
|
114
121
|
|
|
115
122
|
beforeEach(function() {
|
|
116
123
|
getContextStub = sandbox.stub(eightPodAnalytics, 'getContext');
|
|
117
124
|
getTimeStub = sandbox.stub(Date.prototype, 'getTime').returns(1234);
|
|
118
125
|
eightPodAnalytics.resetQueue();
|
|
126
|
+
eightPodAnalytics.resetContext();
|
|
119
127
|
});
|
|
120
128
|
|
|
121
129
|
afterEach(function() {
|
|
@@ -124,7 +132,7 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
124
132
|
});
|
|
125
133
|
|
|
126
134
|
it('should add event to the queue', function() {
|
|
127
|
-
getContextStub.returns({});
|
|
135
|
+
getContextStub.returns({adUnitCode: {}});
|
|
128
136
|
|
|
129
137
|
const event1 = {
|
|
130
138
|
detail: {
|
|
@@ -169,9 +177,10 @@ describe('eightPodAnalyticAdapter', function() {
|
|
|
169
177
|
value: 2
|
|
170
178
|
}
|
|
171
179
|
}
|
|
172
|
-
|
|
180
|
+
|
|
181
|
+
trackEvent(event1, adUnitCode)
|
|
173
182
|
expect(queue).to.deep.equal([result1]);
|
|
174
|
-
trackEvent(event2);
|
|
183
|
+
trackEvent(event2, adUnitCode);
|
|
175
184
|
expect(queue).to.deep.equal([result1, result2]);
|
|
176
185
|
});
|
|
177
186
|
});
|
|
@@ -2,10 +2,16 @@ import {
|
|
|
2
2
|
appendGptSlots,
|
|
3
3
|
appendPbAdSlot,
|
|
4
4
|
_currentConfig,
|
|
5
|
-
makeBidRequestsHook
|
|
5
|
+
makeBidRequestsHook,
|
|
6
|
+
getAuctionsIdsFromTargeting,
|
|
7
|
+
getSegments,
|
|
8
|
+
getSignals,
|
|
9
|
+
getSignalsArrayByAuctionsIds,
|
|
10
|
+
getSignalsIntersection
|
|
6
11
|
} from 'modules/gptPreAuction.js';
|
|
7
12
|
import { config } from 'src/config.js';
|
|
8
13
|
import { makeSlot } from '../integration/faker/googletag.js';
|
|
14
|
+
import { taxonomies } from '../../../libraries/gptUtils/gptUtils.js';
|
|
9
15
|
|
|
10
16
|
describe('GPT pre-auction module', () => {
|
|
11
17
|
let sandbox;
|
|
@@ -25,6 +31,87 @@ describe('GPT pre-auction module', () => {
|
|
|
25
31
|
makeSlot({ code: 'slotCode4', divId: 'div5' })
|
|
26
32
|
];
|
|
27
33
|
|
|
34
|
+
const mockTargeting = {'/123456/header-bid-tag-0': {'hb_deal_rubicon': '1234', 'hb_deal': '1234', 'hb_pb': '0.53', 'hb_adid': '148018fe5e', 'hb_bidder': 'rubicon', 'foobar': '300x250', 'hb_pb_rubicon': '0.53', 'hb_adid_rubicon': '148018fe5e', 'hb_bidder_rubicon': 'rubicon', 'hb_deal_appnexus': '4321', 'hb_pb_appnexus': '0.1', 'hb_adid_appnexus': '567891011', 'hb_bidder_appnexus': 'appnexus'}}
|
|
35
|
+
|
|
36
|
+
const mockAuctionManager = {
|
|
37
|
+
findBidByAdId(adId) {
|
|
38
|
+
const bidsMap = {
|
|
39
|
+
'148018fe5e': {
|
|
40
|
+
auctionId: mocksAuctions[0].auctionId
|
|
41
|
+
},
|
|
42
|
+
'567891011': {
|
|
43
|
+
auctionId: mocksAuctions[1].auctionId
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
return bidsMap[adId];
|
|
47
|
+
},
|
|
48
|
+
index: {
|
|
49
|
+
getAuction({ auctionId }) {
|
|
50
|
+
return mocksAuctions.find(auction => auction.auctionId === auctionId);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const mocksAuctions = [
|
|
56
|
+
{
|
|
57
|
+
auctionId: '1111',
|
|
58
|
+
getFPD: () => ({
|
|
59
|
+
global: {
|
|
60
|
+
user: {
|
|
61
|
+
data: [{
|
|
62
|
+
name: 'dataprovider.com',
|
|
63
|
+
ext: {
|
|
64
|
+
segtax: 4
|
|
65
|
+
},
|
|
66
|
+
segment: [{
|
|
67
|
+
id: '1'
|
|
68
|
+
}, {
|
|
69
|
+
id: '2'
|
|
70
|
+
}]
|
|
71
|
+
}],
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
auctionId: '234234',
|
|
78
|
+
getFPD: () => ({
|
|
79
|
+
global: {
|
|
80
|
+
user: {
|
|
81
|
+
data: [{
|
|
82
|
+
name: 'dataprovider.com',
|
|
83
|
+
ext: {
|
|
84
|
+
segtax: 4
|
|
85
|
+
},
|
|
86
|
+
segment: [{
|
|
87
|
+
id: '2'
|
|
88
|
+
}]
|
|
89
|
+
}]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}),
|
|
93
|
+
}, {
|
|
94
|
+
auctionId: '234324234',
|
|
95
|
+
getFPD: () => ({
|
|
96
|
+
global: {
|
|
97
|
+
user: {
|
|
98
|
+
data: [{
|
|
99
|
+
name: 'dataprovider.com',
|
|
100
|
+
ext: {
|
|
101
|
+
segtax: 4
|
|
102
|
+
},
|
|
103
|
+
segment: [{
|
|
104
|
+
id: '2'
|
|
105
|
+
}, {
|
|
106
|
+
id: '3'
|
|
107
|
+
}]
|
|
108
|
+
}]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
},
|
|
113
|
+
]
|
|
114
|
+
|
|
28
115
|
describe('appendPbAdSlot', () => {
|
|
29
116
|
// sets up our document body to test the pbAdSlot dom actions against
|
|
30
117
|
document.body.innerHTML = '<div id="foo1" data-adslotid="bar1">test1</div>' +
|
|
@@ -454,4 +541,59 @@ describe('GPT pre-auction module', () => {
|
|
|
454
541
|
expect(returnedAdUnits).to.deep.equal(expectedAdUnits);
|
|
455
542
|
});
|
|
456
543
|
});
|
|
544
|
+
|
|
545
|
+
describe('pps gpt config', () => {
|
|
546
|
+
it('should parse segments from fpd', () => {
|
|
547
|
+
const twoSegments = getSegments(mocksAuctions[0].getFPD().global, ['user.data'], 4);
|
|
548
|
+
expect(JSON.stringify(twoSegments)).to.equal(JSON.stringify(['1', '2']));
|
|
549
|
+
const zeroSegments = getSegments(mocksAuctions[0].getFPD().global, ['user.data'], 6);
|
|
550
|
+
expect(zeroSegments).to.length(0);
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
it('should return signals from fpd', () => {
|
|
554
|
+
const signals = getSignals(mocksAuctions[0].getFPD().global);
|
|
555
|
+
const expectedSignals = [{ taxonomy: taxonomies[0], values: ['1', '2'] }];
|
|
556
|
+
expect(signals).to.eql(expectedSignals);
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
it('should properly get auctions ids from targeting', () => {
|
|
560
|
+
const auctionsIds = getAuctionsIdsFromTargeting(mockTargeting, mockAuctionManager);
|
|
561
|
+
expect(auctionsIds).to.eql([mocksAuctions[0].auctionId, mocksAuctions[1].auctionId])
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
it('should filter out adIds that do not map to any auction', () => {
|
|
565
|
+
const auctionsIds = getAuctionsIdsFromTargeting({
|
|
566
|
+
...mockTargeting,
|
|
567
|
+
'au': {'hb_adid': 'missing'},
|
|
568
|
+
}, mockAuctionManager);
|
|
569
|
+
expect(auctionsIds).to.eql([mocksAuctions[0].auctionId, mocksAuctions[1].auctionId]);
|
|
570
|
+
})
|
|
571
|
+
|
|
572
|
+
it('should properly return empty array of auction ids for invalid targeting', () => {
|
|
573
|
+
let auctionsIds = getAuctionsIdsFromTargeting({}, mockAuctionManager);
|
|
574
|
+
expect(Array.isArray(auctionsIds)).to.equal(true);
|
|
575
|
+
expect(auctionsIds).to.length(0);
|
|
576
|
+
auctionsIds = getAuctionsIdsFromTargeting({'/123456/header-bid-tag-0/bg': {'invalidContent': '123'}}, mockAuctionManager);
|
|
577
|
+
expect(Array.isArray(auctionsIds)).to.equal(true);
|
|
578
|
+
expect(auctionsIds).to.length(0);
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
it('should properly get signals from auctions', () => {
|
|
582
|
+
const signals = getSignalsArrayByAuctionsIds(['1111', '234234', '234324234'], mockAuctionManager.index);
|
|
583
|
+
const intersection = getSignalsIntersection(signals);
|
|
584
|
+
const expectedResult = { IAB_AUDIENCE_1_1: { values: ['2'] }, IAB_CONTENT_2_2: { values: [] } };
|
|
585
|
+
expect(JSON.stringify(intersection)).to.be.equal(JSON.stringify(expectedResult));
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
it('should return empty signals array for empty auctions ids array', () => {
|
|
589
|
+
const signals = getSignalsArrayByAuctionsIds([], mockAuctionManager.index);
|
|
590
|
+
expect(Array.isArray(signals)).to.equal(true);
|
|
591
|
+
expect(signals).to.length(0);
|
|
592
|
+
});
|
|
593
|
+
|
|
594
|
+
it('should return properly formatted object for getSignalsIntersection invoked with empty array', () => {
|
|
595
|
+
const signals = getSignalsIntersection([]);
|
|
596
|
+
expect(Object.keys(signals)).to.contain.members(taxonomies);
|
|
597
|
+
});
|
|
598
|
+
});
|
|
457
599
|
});
|
|
@@ -321,6 +321,23 @@ describe('gumgumAdapter', function () {
|
|
|
321
321
|
expect(bidRequest.data).to.have.property('gpid');
|
|
322
322
|
expect(bidRequest.data.gpid).to.equal('/17037559/jeusol/jeusol_D_1');
|
|
323
323
|
});
|
|
324
|
+
it('should set ae value to 1 for PAAPI', function () {
|
|
325
|
+
const req = { ...bidRequests[0],
|
|
326
|
+
ortb2Imp: {
|
|
327
|
+
ext: {
|
|
328
|
+
ae: 1,
|
|
329
|
+
data: {
|
|
330
|
+
adserver: {
|
|
331
|
+
name: 'test',
|
|
332
|
+
adslot: 123456
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
} }
|
|
337
|
+
const bidRequest = spec.buildRequests([req])[0];
|
|
338
|
+
expect(bidRequest.data).to.have.property('ae');
|
|
339
|
+
expect(bidRequest.data.ae).to.equal(true);
|
|
340
|
+
});
|
|
324
341
|
|
|
325
342
|
it('should set the global placement id (gpid) if in pbadslot property', function () {
|
|
326
343
|
const pbadslot = 'abc123'
|