prebid.js 5.14.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +11 -0
- package/.devcontainer/devcontainer.json +27 -0
- package/.devcontainer/postCreate.sh +6 -0
- package/allowedModules.js +2 -1
- package/integrationExamples/gpt/afpExample.html +242 -0
- package/integrationExamples/gpt/afpGamExample.html +152 -0
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
- package/modules/.submodules.json +29 -27
- package/modules/33acrossBidAdapter.js +23 -20
- package/modules/a4gBidAdapter.js +3 -3
- package/modules/ablidaBidAdapter.js +2 -2
- package/modules/adWMGBidAdapter.js +4 -4
- package/modules/adagioAnalyticsAdapter.js +4 -4
- package/modules/adagioBidAdapter.js +85 -82
- package/modules/adbookpspBidAdapter.js +56 -54
- package/modules/adfBidAdapter.js +24 -16
- package/modules/adgenerationBidAdapter.js +42 -18
- package/modules/adhashBidAdapter.js +105 -0
- package/modules/adhashBidAdapter.md +1 -1
- package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
- package/modules/adkernelAdnBidAdapter.js +23 -23
- package/modules/adkernelBidAdapter.js +49 -44
- package/modules/adlooxAdServerVideo.js +26 -26
- package/modules/adlooxAnalyticsAdapter.js +38 -35
- package/modules/adlooxRtdProvider.js +49 -46
- package/modules/admanBidAdapter.js +4 -4
- package/modules/admixerBidAdapter.js +13 -2
- package/modules/admixerIdSystem.js +4 -4
- package/modules/adnowBidAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +6 -5
- package/modules/adoceanBidAdapter.js +10 -10
- package/modules/adpartnerBidAdapter.js +3 -3
- package/modules/adpod.js +45 -42
- package/modules/adprimeBidAdapter.js +4 -4
- package/modules/adqueryBidAdapter.js +204 -0
- package/modules/adqueryBidAdapter.md +32 -0
- package/modules/adrelevantisBidAdapter.js +30 -27
- package/modules/adriverBidAdapter.js +13 -13
- package/modules/adtargetBidAdapter.js +24 -24
- package/modules/adtelligentBidAdapter.js +29 -29
- package/modules/adtrueBidAdapter.js +35 -35
- package/modules/aduptechBidAdapter.js +10 -10
- package/modules/advangelistsBidAdapter.js +14 -14
- package/modules/adxcgAnalyticsAdapter.js +5 -5
- package/modules/adxcgBidAdapter.js +56 -56
- package/modules/adxpremiumAnalyticsAdapter.js +17 -17
- package/modules/adyoulikeBidAdapter.js +11 -11
- package/modules/afpBidAdapter.js +166 -0
- package/modules/afpBidAdapter.md +348 -0
- package/modules/ajaBidAdapter.js +12 -12
- package/modules/akamaiDAPIdSystem.js +9 -9
- package/modules/aniviewBidAdapter.js +2 -2
- package/modules/aolBidAdapter.js +15 -14
- package/modules/apacdexBidAdapter.js +16 -16
- package/modules/appnexusBidAdapter.js +59 -59
- package/modules/apstreamBidAdapter.js +5 -5
- package/modules/asoBidAdapter.js +30 -30
- package/modules/astraoneBidAdapter.js +2 -2
- package/modules/atsAnalyticsAdapter.js +35 -30
- package/modules/audiencerunBidAdapter.js +15 -15
- package/modules/automatadBidAdapter.js +2 -2
- package/modules/axonixBidAdapter.js +7 -7
- package/modules/beachfrontBidAdapter.js +23 -23
- package/modules/beopBidAdapter.js +22 -22
- package/modules/bidViewabilityIO.js +7 -7
- package/modules/bidglassBidAdapter.js +8 -8
- package/modules/bidscubeBidAdapter.js +3 -3
- package/modules/bizzclickBidAdapter.js +10 -10
- package/modules/bliinkBidAdapter.js +58 -32
- package/modules/bliinkBidAdapter.md +29 -6
- package/modules/bluebillywigBidAdapter.js +30 -30
- package/modules/boldwinBidAdapter.js +4 -4
- package/modules/braveBidAdapter.js +5 -5
- package/modules/bridgewellBidAdapter.js +5 -5
- package/modules/brightMountainMediaBidAdapter.js +10 -10
- package/modules/brightcomBidAdapter.js +18 -18
- package/modules/britepoolIdSystem.js +7 -7
- package/modules/browsiRtdProvider.js +8 -8
- package/modules/bucksenseBidAdapter.js +9 -9
- package/modules/buzzoolaBidAdapter.js +4 -4
- package/modules/byDataAnalyticsAdapter.js +12 -12
- package/modules/ccxBidAdapter.js +38 -38
- package/modules/cleanmedianetBidAdapter.js +9 -9
- package/modules/clickforceBidAdapter.js +4 -4
- package/modules/cointrafficBidAdapter.js +4 -4
- package/modules/coinzillaBidAdapter.js +2 -2
- package/modules/colossussspBidAdapter.js +7 -3
- package/modules/concertAnalyticsAdapter.js +3 -3
- package/modules/concertBidAdapter.js +16 -17
- package/modules/connectadBidAdapter.js +13 -13
- package/modules/consentManagement.js +29 -28
- package/modules/consentManagementUsp.js +14 -14
- package/modules/consumableBidAdapter.js +3 -3
- package/modules/contentexchangeBidAdapter.js +5 -5
- package/modules/conversantBidAdapter.js +32 -31
- package/modules/cpmstarBidAdapter.js +8 -9
- package/modules/craftBidAdapter.js +10 -10
- package/modules/criteoBidAdapter.js +16 -16
- package/modules/criteoIdSystem.js +5 -5
- package/modules/currency.js +18 -18
- package/modules/cwireBidAdapter.js +272 -0
- package/modules/cwireBidAdapter.md +43 -0
- package/modules/datablocksBidAdapter.js +12 -12
- package/modules/deepintentBidAdapter.js +13 -13
- package/modules/dgkeywordRtdProvider.js +10 -11
- package/modules/districtmDMXBidAdapter.js +15 -15
- package/modules/dmdIdSystem.js +5 -5
- package/modules/docereeBidAdapter.js +9 -9
- package/modules/dspxBidAdapter.js +5 -5
- package/modules/ebdrBidAdapter.js +9 -9
- package/modules/emx_digitalBidAdapter.js +23 -23
- package/modules/enrichmentFpdModule.js +10 -9
- package/modules/eplanningAnalyticsAdapter.js +2 -2
- package/modules/eplanningBidAdapter.js +10 -10
- package/modules/etargetBidAdapter.js +4 -4
- package/modules/express.js +9 -10
- package/modules/fabrickIdSystem.js +6 -6
- package/modules/feedadBidAdapter.js +5 -5
- package/modules/fintezaAnalyticsAdapter.js +4 -4
- package/modules/flocIdSystem.js +5 -5
- package/modules/fluctBidAdapter.js +6 -5
- package/modules/freewheel-sspBidAdapter.js +6 -6
- package/modules/gamoshiBidAdapter.js +22 -22
- package/modules/gdprEnforcement.js +13 -14
- package/modules/getintentBidAdapter.js +3 -4
- package/modules/glimpseBidAdapter.js +160 -48
- package/modules/glimpseBidAdapter.md +11 -74
- package/modules/gmosspBidAdapter.js +17 -17
- package/modules/gnetBidAdapter.js +5 -5
- package/modules/googleAnalyticsAdapter.js +6 -6
- package/modules/gothamadsBidAdapter.js +9 -9
- package/modules/gptPreAuction.js +7 -7
- package/modules/gridBidAdapter.js +15 -16
- package/modules/gridNMBidAdapter.js +214 -63
- package/modules/growadvertisingBidAdapter.js +7 -8
- package/modules/gumgumBidAdapter.js +19 -13
- package/modules/h12mediaBidAdapter.js +12 -12
- package/modules/haloIdSystem.js +8 -8
- package/modules/hybridBidAdapter.js +7 -7
- package/modules/iasRtdProvider.js +79 -63
- package/modules/id5IdSystem.js +24 -24
- package/modules/idImportLibrary.js +35 -35
- package/modules/idxIdSystem.js +3 -3
- package/modules/impactifyBidAdapter.js +10 -10
- package/modules/improvedigitalBidAdapter.js +36 -36
- package/modules/imuIdSystem.js +6 -6
- package/modules/inmarBidAdapter.js +2 -2
- package/modules/innityBidAdapter.js +3 -3
- package/modules/inskinBidAdapter.js +14 -2
- package/modules/inskinBidAdapter.md +5 -4
- package/modules/instreamTracking.js +5 -5
- package/modules/integr8BidAdapter.js +4 -4
- package/modules/intentIqIdSystem.js +7 -7
- package/modules/interactiveOffersBidAdapter.js +5 -5
- package/modules/invibesBidAdapter.js +53 -19
- package/modules/invisiblyAnalyticsAdapter.js +5 -5
- package/modules/iqmBidAdapter.js +19 -19
- package/modules/iqzoneBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +73 -73
- package/modules/jixieBidAdapter.js +6 -6
- package/modules/justpremiumBidAdapter.js +5 -1
- package/modules/kargoBidAdapter.js +16 -9
- package/modules/kargoBidAdapter.md +20 -0
- package/modules/kinessoIdSystem.js +8 -8
- package/modules/koblerBidAdapter.js +12 -12
- package/modules/konduitAnalyticsAdapter.js +4 -4
- package/modules/konduitWrapper.js +14 -14
- package/modules/krushmediaBidAdapter.js +4 -4
- package/modules/kubientBidAdapter.js +5 -5
- package/modules/limelightDigitalBidAdapter.js +4 -4
- package/modules/liveIntentIdSystem.js +4 -5
- package/modules/livewrappedAnalyticsAdapter.js +27 -15
- package/modules/livewrappedBidAdapter.js +7 -7
- package/modules/liveyieldAnalyticsAdapter.js +13 -13
- package/modules/lockerdomeBidAdapter.js +2 -2
- package/modules/loganBidAdapter.js +4 -4
- package/modules/lotamePanoramaIdSystem.js +13 -13
- package/modules/lunamediahbBidAdapter.js +2 -2
- package/modules/madvertiseBidAdapter.js +3 -3
- package/modules/marsmediaBidAdapter.js +26 -26
- package/modules/mathildeadsBidAdapter.js +5 -5
- package/modules/mediaforceBidAdapter.js +11 -11
- package/modules/mediakeysBidAdapter.js +444 -53
- package/modules/mediakeysBidAdapter.md +108 -0
- package/modules/medianetAnalyticsAdapter.js +48 -125
- package/modules/medianetBidAdapter.js +38 -33
- package/modules/medianetRtdProvider.js +7 -7
- package/modules/merkleIdSystem.js +19 -19
- package/modules/mgidBidAdapter.js +50 -50
- package/modules/microadBidAdapter.js +3 -3
- package/modules/multibid/index.js +15 -13
- package/modules/mwOpenLinkIdSystem.js +7 -7
- package/modules/mytargetBidAdapter.js +112 -0
- package/modules/nativoBidAdapter.js +46 -31
- package/modules/nativoBidAdapter.md +0 -1
- package/modules/naveggIdSystem.js +3 -3
- package/modules/nextMillenniumBidAdapter.js +6 -6
- package/modules/nextrollBidAdapter.js +375 -0
- package/modules/nobidBidAdapter.js +12 -11
- package/modules/novatiqIdSystem.js +8 -8
- package/modules/oguryBidAdapter.js +22 -6
- package/modules/oneVideoBidAdapter.js +20 -20
- package/modules/onomagicBidAdapter.js +16 -16
- package/modules/ooloAnalyticsAdapter.js +13 -13
- package/modules/openwebBidAdapter.js +26 -26
- package/modules/openxAnalyticsAdapter.js +33 -33
- package/modules/openxBidAdapter.js +29 -29
- package/modules/operaadsBidAdapter.js +53 -53
- package/modules/optimeraRtdProvider.js +9 -9
- package/modules/optoutBidAdapter.js +3 -3
- package/modules/orbidderBidAdapter.js +3 -3
- package/modules/outbrainBidAdapter.js +13 -13
- package/modules/ozoneBidAdapter.js +131 -131
- package/modules/padsquadBidAdapter.js +4 -4
- package/modules/parrableIdSystem.js +17 -17
- package/modules/pixfutureBidAdapter.js +45 -25
- package/modules/pixfutureBidAdapter.md +127 -0
- package/modules/prebidServerBidAdapter/index.js +109 -105
- package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
- package/modules/priceFloors.js +47 -47
- package/modules/proxistoreBidAdapter.js +6 -8
- package/modules/pubCommonId.js +11 -11
- package/modules/pubProvidedIdSystem.js +3 -3
- package/modules/publinkIdSystem.js +23 -7
- package/modules/publinkIdSystem.md +7 -2
- package/modules/pubmaticAnalyticsAdapter.js +16 -16
- package/modules/pubmaticBidAdapter.js +109 -93
- package/modules/pubmaticBidAdapter.md +1 -1
- package/modules/pubperfAnalyticsAdapter.js +3 -3
- package/modules/pubwiseAnalyticsAdapter.js +6 -6
- package/modules/pubwiseBidAdapter.js +23 -23
- package/modules/pubxBidAdapter.js +2 -2
- package/modules/pubxaiAnalyticsAdapter.js +7 -7
- package/modules/pulsepointBidAdapter.js +13 -13
- package/modules/pxyzBidAdapter.js +7 -7
- package/modules/quantcastBidAdapter.js +16 -16
- package/modules/radsBidAdapter.js +5 -5
- package/modules/realvuAnalyticsAdapter.js +5 -7
- package/modules/reconciliationRtdProvider.js +6 -6
- package/modules/relaidoBidAdapter.js +44 -38
- package/modules/resetdigitalBidAdapter.js +3 -4
- package/modules/revcontentBidAdapter.js +9 -9
- package/modules/rhythmoneBidAdapter.js +17 -16
- package/modules/richaudienceBidAdapter.js +9 -9
- package/modules/riseBidAdapter.js +26 -26
- package/modules/riseBidAdapter.md +1 -3
- package/modules/roxotAnalyticsAdapter.js +14 -14
- package/modules/rtbhouseBidAdapter.js +7 -7
- package/modules/rtbsapeBidAdapter.js +3 -4
- package/modules/rtdModule/index.js +3 -3
- package/modules/rubiconAnalyticsAdapter.js +82 -82
- package/modules/rubiconBidAdapter.js +72 -68
- package/modules/scaleableAnalyticsAdapter.js +2 -2
- package/modules/seedingAllianceBidAdapter.js +231 -0
- package/modules/seedtagBidAdapter.js +10 -10
- package/modules/sharedIdSystem.js +11 -11
- package/modules/sharethroughAnalyticsAdapter.js +8 -8
- package/modules/sharethroughBidAdapter.js +20 -27
- package/modules/showheroes-bsBidAdapter.js +23 -23
- package/modules/sigmoidAnalyticsAdapter.js +4 -5
- package/modules/sirdataRtdProvider.js +34 -34
- package/modules/sizeMappingV2.js +39 -39
- package/modules/slimcutBidAdapter.js +121 -0
- package/modules/smaatoBidAdapter.js +44 -44
- package/modules/smartadserverBidAdapter.js +7 -7
- package/modules/smartxBidAdapter.js +72 -72
- package/modules/smartyadsBidAdapter.js +2 -2
- package/modules/smilewantedBidAdapter.js +6 -6
- package/modules/sonobiAnalyticsAdapter.js +23 -23
- package/modules/sortableAnalyticsAdapter.js +5 -5
- package/modules/sortableBidAdapter.js +28 -28
- package/modules/sovrnAnalyticsAdapter.js +5 -5
- package/modules/sovrnBidAdapter.js +22 -22
- package/modules/spotxBidAdapter.js +97 -83
- package/modules/sspBCBidAdapter.js +216 -21
- package/modules/sspBCBidAdapter.md +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/stroeerCoreBidAdapter.js +16 -16
- package/modules/sublimeBidAdapter.js +6 -6
- package/modules/talkadsBidAdapter.js +129 -0
- package/modules/talkadsBidAdapter.md +60 -0
- package/modules/tapadIdSystem.js +3 -3
- package/modules/tappxBidAdapter.js +63 -64
- package/modules/teadsBidAdapter.js +20 -20
- package/modules/telariaBidAdapter.js +17 -17
- package/modules/temedyaBidAdapter.js +4 -4
- package/modules/terceptAnalyticsAdapter.js +4 -4
- package/modules/theAdxBidAdapter.js +16 -16
- package/modules/timeoutRtdProvider.js +15 -15
- package/modules/tpmnBidAdapter.js +3 -3
- package/modules/trionBidAdapter.js +15 -15
- package/modules/tripleliftBidAdapter.js +27 -24
- package/modules/truereachBidAdapter.js +4 -4
- package/modules/trustxBidAdapter.js +22 -18
- package/modules/ucfunnelBidAdapter.js +3 -3
- package/modules/uid2IdSystem.js +6 -6
- package/modules/underdogmediaBidAdapter.js +4 -4
- package/modules/unicornBidAdapter.js +15 -15
- package/modules/unifiedIdSystem.js +4 -4
- package/modules/unrulyBidAdapter.js +16 -16
- package/modules/userId/eids.js +9 -9
- package/modules/userId/index.js +37 -35
- package/modules/validationFpdModule/index.js +15 -15
- package/modules/vdoaiBidAdapter.js +2 -2
- package/modules/verizonMediaIdSystem.js +5 -5
- package/modules/vidazooBidAdapter.js +5 -5
- package/modules/videobyteBidAdapter.js +24 -24
- package/modules/videoreachBidAdapter.js +7 -7
- package/modules/vidoomyBidAdapter.js +105 -22
- package/modules/viewdeosDXBidAdapter.js +17 -17
- package/modules/visxBidAdapter.js +21 -29
- package/modules/voxBidAdapter.js +7 -7
- package/modules/vuukleBidAdapter.js +2 -2
- package/modules/waardexBidAdapter.js +26 -26
- package/modules/weboramaRtdProvider.js +174 -0
- package/modules/weboramaRtdProvider.md +70 -0
- package/modules/winrBidAdapter.js +27 -27
- package/modules/wipesBidAdapter.js +2 -2
- package/modules/yahoosspBidAdapter.js +637 -0
- package/modules/yahoosspBidAdapter.md +795 -0
- package/modules/yieldlabBidAdapter.js +57 -12
- package/modules/yieldlabBidAdapter.md +16 -1
- package/modules/yieldliftBidAdapter.js +9 -9
- package/modules/yieldmoBidAdapter.js +64 -50
- package/modules/yieldoneAnalyticsAdapter.js +6 -6
- package/modules/yieldoneBidAdapter.js +11 -11
- package/modules/yuktamediaAnalyticsAdapter.js +15 -15
- package/modules/zeotapIdPlusIdSystem.js +2 -2
- package/modules/zetaBidAdapter.js +6 -6
- package/modules/zeta_global_sspBidAdapter.js +14 -14
- package/package.json +1 -1
- package/src/AnalyticsAdapter.js +6 -6
- package/src/Renderer.js +10 -8
- package/src/adapterManager.js +45 -42
- package/src/adloader.js +6 -6
- package/src/ajax.js +8 -9
- package/src/auction.js +26 -23
- package/src/bidfactory.js +2 -2
- package/src/config.js +52 -50
- package/src/cpmBucketManager.js +2 -2
- package/src/prebid.js +85 -81
- package/src/storageManager.js +5 -5
- package/src/targeting.js +25 -26
- package/src/userSync.js +35 -22
- package/src/videoCache.js +2 -2
- package/test/.eslintrc.js +2 -1
- package/test/spec/modules/adfBidAdapter_spec.js +55 -0
- package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
- package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
- package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
- package/test/spec/modules/afpBidAdapter_spec.js +306 -0
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
- package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
- package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
- package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
- package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
- package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
- package/test/spec/modules/gridBidAdapter_spec.js +38 -2
- package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
- package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
- package/test/spec/modules/iasRtdProvider_spec.js +71 -6
- package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
- package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
- package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
- package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
- package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
- package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
- package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
- package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
- package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
- package/test/spec/modules/publinkIdSystem_spec.js +42 -12
- package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
- package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
- package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
- package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
- package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
- package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
- package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
- package/test/spec/modules/visxBidAdapter_spec.js +48 -4
- package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
- package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
- package/test/spec/unit/pbjs_api_spec.js +4 -0
- package/test/spec/userSync_spec.js +30 -2
- package/modules/turktelekomBidAdapter.md +0 -49
|
@@ -20,7 +20,7 @@ import { spec, buildBid, BLIINK_ENDPOINT_ENGINE, parseXML, getMetaList } from 'm
|
|
|
20
20
|
* crumbs: {pubcid: string},
|
|
21
21
|
* ortb2Imp: {ext: {data: {pbadslot: string}}}}}
|
|
22
22
|
*/
|
|
23
|
-
const getConfigBid = () => {
|
|
23
|
+
const getConfigBid = (placement) => {
|
|
24
24
|
return {
|
|
25
25
|
adUnitCode: '/19968336/test',
|
|
26
26
|
auctionId: '6752b51c-dcd4-4001-85dc-885ab5c504cf',
|
|
@@ -48,7 +48,7 @@ const getConfigBid = () => {
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
params: {
|
|
51
|
-
placement:
|
|
51
|
+
placement: placement,
|
|
52
52
|
tagId: '14f30eca-85d2-11e8-9eed-0242ac120007'
|
|
53
53
|
},
|
|
54
54
|
sizes: [
|
|
@@ -66,24 +66,35 @@ const getConfigBid = () => {
|
|
|
66
66
|
* viewability_percent_in_view: number,
|
|
67
67
|
* viewability_duration: number,
|
|
68
68
|
* ad_id: number,
|
|
69
|
-
* adm: string,
|
|
70
69
|
* id: number,
|
|
71
70
|
* category: number,
|
|
72
|
-
* type: number
|
|
71
|
+
* type: number,
|
|
72
|
+
* content: {
|
|
73
|
+
* creative: {
|
|
74
|
+
* adm: string
|
|
75
|
+
* }
|
|
76
|
+
* }
|
|
77
|
+
* }
|
|
73
78
|
* }
|
|
74
79
|
* }
|
|
75
80
|
*/
|
|
76
81
|
const getConfigCreative = () => {
|
|
77
82
|
return {
|
|
78
83
|
ad_id: 5648,
|
|
79
|
-
adm: '<html lang="en"></html>',
|
|
80
84
|
price: 1,
|
|
81
85
|
currency: 'EUR',
|
|
86
|
+
media_type: 'banner',
|
|
82
87
|
category: 1,
|
|
83
88
|
id: 2825,
|
|
89
|
+
creativeId: 2825,
|
|
84
90
|
type: 1,
|
|
85
91
|
viewability_duration: 1,
|
|
86
92
|
viewability_percent_in_view: 30,
|
|
93
|
+
content: {
|
|
94
|
+
creative: {
|
|
95
|
+
adm: '<html lang="en"></html>',
|
|
96
|
+
}
|
|
97
|
+
}
|
|
87
98
|
}
|
|
88
99
|
}
|
|
89
100
|
|
|
@@ -92,6 +103,7 @@ const getConfigCreativeVideo = () => {
|
|
|
92
103
|
ad_id: 5648,
|
|
93
104
|
price: 1,
|
|
94
105
|
currency: 'EUR',
|
|
106
|
+
media_type: 'video',
|
|
95
107
|
category: 1,
|
|
96
108
|
creativeId: 2825,
|
|
97
109
|
content: '<VAST></VAST>'
|
|
@@ -102,14 +114,11 @@ const getConfigCreativeVideo = () => {
|
|
|
102
114
|
* @description Mockup BuildRequest function
|
|
103
115
|
* @return {{bidderRequestId: string, bidderCode: string, bids: {bidderWinsCount: number, adUnitCode: string, bidder: string, src: string, bidRequestsCount: number, params: {tagId: string, placement: string}, bidId: string, transactionId: string, auctionId: string, bidderRequestId: string, bidderRequestsCount: number, mediaTypes: {banner: {sizes: number[][]}}, sizes: number[][], crumbs: {pubcid: string}, ortb2Imp: {ext: {data: {pbadslot: string}}}}[], refererInfo: {referer: string, canonicalUrl: null, isAmp: boolean, reachedTop: boolean, numIframes: number}}}
|
|
104
116
|
*/
|
|
105
|
-
const getConfigBuildRequest = () => {
|
|
106
|
-
|
|
117
|
+
const getConfigBuildRequest = (placement) => {
|
|
118
|
+
let buildRequest = {
|
|
107
119
|
bidderRequestId: '164ddfd207e94d',
|
|
108
120
|
bidderCode: 'bliink',
|
|
109
|
-
bids: [getConfigBid()],
|
|
110
|
-
params: {
|
|
111
|
-
bids: [getConfigBid()],
|
|
112
|
-
},
|
|
121
|
+
bids: [getConfigBid(placement)],
|
|
113
122
|
refererInfo: {
|
|
114
123
|
canonicalUrl: null,
|
|
115
124
|
isAmp: false,
|
|
@@ -118,6 +127,17 @@ const getConfigBuildRequest = () => {
|
|
|
118
127
|
referer: 'http://localhost:9999/integrationExamples/gpt/bliink-adapter.html?pbjs_debug=true',
|
|
119
128
|
},
|
|
120
129
|
}
|
|
130
|
+
|
|
131
|
+
if (!placement) {
|
|
132
|
+
return buildRequest
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return Object.assign(buildRequest, {
|
|
136
|
+
params: {
|
|
137
|
+
bids: [getConfigBid(placement)],
|
|
138
|
+
placement: placement
|
|
139
|
+
},
|
|
140
|
+
})
|
|
121
141
|
}
|
|
122
142
|
|
|
123
143
|
/**
|
|
@@ -157,7 +177,19 @@ const getConfigInterpretResponseRTB = (noAd = false) => {
|
|
|
157
177
|
}
|
|
158
178
|
|
|
159
179
|
return {
|
|
160
|
-
body:
|
|
180
|
+
body: `
|
|
181
|
+
<VAST version="3">
|
|
182
|
+
<Ad>
|
|
183
|
+
<Wrapper>
|
|
184
|
+
<AdSystem>BLIINK</AdSystem>
|
|
185
|
+
<VASTAdTagURI>https://vast.bliink.io/p/508379d0-9f65-4198-8ba5-f61f2b51224f.xml</VASTAdTagURI>
|
|
186
|
+
<Error>https://e.api.bliink.io/e?name=vast-error&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Error>
|
|
187
|
+
<Impression>https://e.api.bliink.io/e?name=impression&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQwMzA1MjcsImlhdCI6MTYzMzQyNTcyNywiaXNzIjoiYmxpaW5rIiwiZGF0YSI6eyJ0eXBlIjoiYWQtc2VydmVyIiwidHJhbnNhY3Rpb25JZCI6ImE2NjJjZGJmLTkzNDYtNDI0MS1iMTU0LTJhOTc2OTg0NjNmOSIsIm5ldHdvcmtJZCI6MjUsInNpdGVJZCI6MTQzLCJ0YWdJZCI6MTI3MSwiY29va2llSWQiOiIwNWFhN2UwMi05MzgzLTQ1NGYtOTJmZC1jOTE2YWNlMmUyZjYiLCJldmVudElkIjozLCJ0YXJnZXRpbmciOnsicGxhdGZvcm0iOiJXZWJzaXRlIiwicmVmZXJyZXIiOiJodHRwOi8vbG9jYWxob3N0OjgxODEvaW50ZWdyYXRpb25FeGFtcGxlcy9ncHQvYmxpaW5rLWluc3RyZWFtLmh0bWwiLCJwYWdlVXJsIjoiaHR0cDovL2xvY2FsaG9zdDo4MTgxL2ludGVncmF0aW9uRXhhbXBsZXMvZ3B0L2JsaWluay1pbnN0cmVhbS5odG1sIiwiaXAiOiIzMS4zOS4xNDEuMTQwIiwidGltZSI6MTYzMzQyNTcyNywibG9jYXRpb24iOnsibGF0aXR1ZGUiOjQ4Ljk0MjIsImxvbmdpdHVkZSI6Mi41MDM5LCJyZWdpb24iOiJJREYiLCJjb3VudHJ5IjoiRlIiLCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsInppcENvZGUiOiI5MzYwMCIsImRlcGFydG1lbnQiOiI5MyJ9LCJjaXR5IjoiQXVsbmF5LXNvdXMtQm9pcyIsImNvdW50cnkiOiJGUiIsImRldmljZU9zIjoibWFjT1MiLCJkZXZpY2VQbGF0Zm9ybSI6IldlYnNpdGUiLCJyYXdVc2VyQWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTMuMC40NTc3LjYzIFNhZmFyaS81MzcuMzYiLCJjb250ZW50Q2xhc3NpZmljYXRpb24iOnsiYnJhbmRzYWZlIjpmYWxzZX19LCJnZHByIjp7Imhhc0NvbnNlbnQiOnRydWV9LCJ3aW4iOmZhbHNlLCJhZElkIjo1NzkzLCJhZHZlcnRpc2VySWQiOjEsImNhbXBhaWduSWQiOjEsImNyZWF0aXZlSWQiOjExOTQsImVycm9yIjpmYWxzZX19.nJSJPKovg0_jSHtLdrMPDqesAIlFKCuXPXYxpsyWBDw</Impression>
|
|
188
|
+
<Extensions><Price>1</Price><Currency>EUR</Currency>
|
|
189
|
+
</Wrapper>
|
|
190
|
+
</Ad>
|
|
191
|
+
</VAST>
|
|
192
|
+
`
|
|
161
193
|
}
|
|
162
194
|
}
|
|
163
195
|
|
|
@@ -284,7 +316,7 @@ const testsIsBidRequestValid = [
|
|
|
284
316
|
{
|
|
285
317
|
title: 'isBidRequestValid Receive a valid bid',
|
|
286
318
|
args: {
|
|
287
|
-
fn: spec.isBidRequestValid(getConfigBid())
|
|
319
|
+
fn: spec.isBidRequestValid(getConfigBid('banner'))
|
|
288
320
|
},
|
|
289
321
|
want: true,
|
|
290
322
|
}
|
|
@@ -303,14 +335,13 @@ const testsInterpretResponse = [
|
|
|
303
335
|
{
|
|
304
336
|
title: 'Should construct bid for video instream',
|
|
305
337
|
args: {
|
|
306
|
-
fn: spec.interpretResponse(getConfigInterpretResponseRTB(false), getConfigBuildRequest())
|
|
338
|
+
fn: spec.interpretResponse(getConfigInterpretResponseRTB(false), getConfigBuildRequest('video'))
|
|
307
339
|
},
|
|
308
340
|
want: {
|
|
309
|
-
ad: '<html lang=\"en\"></html>',
|
|
310
341
|
cpm: 0,
|
|
311
342
|
currency: 'EUR',
|
|
312
|
-
height:
|
|
313
|
-
width:
|
|
343
|
+
height: 250,
|
|
344
|
+
width: 300,
|
|
314
345
|
creativeId: 0,
|
|
315
346
|
mediaType: 'video',
|
|
316
347
|
netRevenue: false,
|
|
@@ -322,7 +353,7 @@ const testsInterpretResponse = [
|
|
|
322
353
|
{
|
|
323
354
|
title: 'ServerResponse with message: invalid tag, return empty array',
|
|
324
355
|
args: {
|
|
325
|
-
fn: spec.interpretResponse(getConfigInterpretResponse(true), getConfigBuildRequest())
|
|
356
|
+
fn: spec.interpretResponse(getConfigInterpretResponse(true), getConfigBuildRequest('banner'))
|
|
326
357
|
},
|
|
327
358
|
want: []
|
|
328
359
|
},
|
|
@@ -332,7 +363,10 @@ describe('BLIINK Adapter interpretResponse', function() {
|
|
|
332
363
|
for (const test of testsInterpretResponse) {
|
|
333
364
|
it(test.title, () => {
|
|
334
365
|
const res = test.args.fn
|
|
335
|
-
|
|
366
|
+
|
|
367
|
+
if (res) {
|
|
368
|
+
expect(res).to.eql(test.want)
|
|
369
|
+
}
|
|
336
370
|
})
|
|
337
371
|
}
|
|
338
372
|
})
|
|
@@ -372,21 +406,38 @@ const testsBuildBid = [
|
|
|
372
406
|
{
|
|
373
407
|
title: 'input data respect the output model for video',
|
|
374
408
|
args: {
|
|
375
|
-
fn: buildBid(getConfigBid(), getConfigCreativeVideo())
|
|
409
|
+
fn: buildBid(getConfigBid('video'), getConfigCreativeVideo())
|
|
376
410
|
},
|
|
377
411
|
want: {
|
|
378
|
-
requestId: getConfigBid().bidId,
|
|
412
|
+
requestId: getConfigBid('video').bidId,
|
|
379
413
|
cpm: 1,
|
|
380
414
|
currency: 'EUR',
|
|
381
415
|
mediaType: 'video',
|
|
382
|
-
width:
|
|
383
|
-
height:
|
|
416
|
+
width: 300,
|
|
417
|
+
height: 250,
|
|
384
418
|
creativeId: getConfigCreativeVideo().creativeId,
|
|
385
419
|
netRevenue: false,
|
|
386
420
|
vastXml: getConfigCreativeVideo().content,
|
|
387
|
-
ad: getConfigCreative().adm,
|
|
388
421
|
ttl: 3600,
|
|
389
422
|
}
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
title: 'input data respect the output model for banner',
|
|
426
|
+
args: {
|
|
427
|
+
fn: buildBid(getConfigBid('banner'), getConfigCreative())
|
|
428
|
+
},
|
|
429
|
+
want: {
|
|
430
|
+
requestId: getConfigBid('banner').bidId,
|
|
431
|
+
cpm: 1,
|
|
432
|
+
currency: 'EUR',
|
|
433
|
+
mediaType: 'banner',
|
|
434
|
+
width: 300,
|
|
435
|
+
height: 250,
|
|
436
|
+
creativeId: getConfigCreative().id,
|
|
437
|
+
ad: getConfigCreative().content.creative.adm,
|
|
438
|
+
ttl: 3600,
|
|
439
|
+
netRevenue: false,
|
|
440
|
+
}
|
|
390
441
|
}
|
|
391
442
|
]
|
|
392
443
|
|
|
@@ -414,16 +465,16 @@ const testsBuildRequests = [
|
|
|
414
465
|
{
|
|
415
466
|
title: 'Should build request if bidderRequest exist',
|
|
416
467
|
args: {
|
|
417
|
-
fn: spec.buildRequests([], getConfigBuildRequest())
|
|
468
|
+
fn: spec.buildRequests([], getConfigBuildRequest('banner'))
|
|
418
469
|
},
|
|
419
470
|
want: {
|
|
420
471
|
method: 'GET',
|
|
421
|
-
url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest().bids[0].params.tagId}`,
|
|
472
|
+
url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest('banner').bids[0].params.tagId}`,
|
|
422
473
|
params: {
|
|
423
|
-
bidderRequestId: getConfigBuildRequest().bidderRequestId,
|
|
424
|
-
bidderCode: getConfigBuildRequest().bidderCode,
|
|
425
|
-
bids: getConfigBuildRequest().bids,
|
|
426
|
-
refererInfo: getConfigBuildRequest().refererInfo
|
|
474
|
+
bidderRequestId: getConfigBuildRequest('banner').bidderRequestId,
|
|
475
|
+
bidderCode: getConfigBuildRequest('banner').bidderCode,
|
|
476
|
+
bids: getConfigBuildRequest('banner').bids,
|
|
477
|
+
refererInfo: getConfigBuildRequest('banner').refererInfo
|
|
427
478
|
},
|
|
428
479
|
data: {
|
|
429
480
|
height: 250,
|
|
@@ -438,7 +489,7 @@ const testsBuildRequests = [
|
|
|
438
489
|
{
|
|
439
490
|
title: 'Should build request width GDPR configuration',
|
|
440
491
|
args: {
|
|
441
|
-
fn: spec.buildRequests([], Object.assign(getConfigBuildRequest(), {
|
|
492
|
+
fn: spec.buildRequests([], Object.assign(getConfigBuildRequest('banner'), {
|
|
442
493
|
gdprConsent: {
|
|
443
494
|
gdprApplies: true,
|
|
444
495
|
consentString: 'XXXX'
|
|
@@ -447,12 +498,12 @@ const testsBuildRequests = [
|
|
|
447
498
|
},
|
|
448
499
|
want: {
|
|
449
500
|
method: 'GET',
|
|
450
|
-
url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest().bids[0].params.tagId}`,
|
|
501
|
+
url: `${BLIINK_ENDPOINT_ENGINE}/${getConfigBuildRequest('banner').bids[0].params.tagId}`,
|
|
451
502
|
params: {
|
|
452
|
-
bidderRequestId: getConfigBuildRequest().bidderRequestId,
|
|
453
|
-
bidderCode: getConfigBuildRequest().bidderCode,
|
|
454
|
-
bids: getConfigBuildRequest().bids,
|
|
455
|
-
refererInfo: getConfigBuildRequest().refererInfo
|
|
503
|
+
bidderRequestId: getConfigBuildRequest('banner').bidderRequestId,
|
|
504
|
+
bidderCode: getConfigBuildRequest('banner').bidderCode,
|
|
505
|
+
bids: getConfigBuildRequest('banner').bids,
|
|
506
|
+
refererInfo: getConfigBuildRequest('banner').refererInfo
|
|
456
507
|
},
|
|
457
508
|
data: {
|
|
458
509
|
gdpr: true,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {expect} from 'chai';
|
|
2
|
-
import {spec} from '../../../modules/colossussspBidAdapter.js';
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec } from '../../../modules/colossussspBidAdapter.js';
|
|
3
3
|
|
|
4
4
|
describe('ColossussspAdapter', function () {
|
|
5
5
|
let bid = {
|
|
@@ -16,6 +16,13 @@ describe('ColossussspAdapter', function () {
|
|
|
16
16
|
sizes: [[300, 250]]
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
|
+
ortb2Imp: {
|
|
20
|
+
ext: {
|
|
21
|
+
data: {
|
|
22
|
+
pbadslot: '/19968336/prebid_cache_video_adunit'
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
19
26
|
transactionId: '3bb2f6da-87a6-4029-aeb0-bfe951372e62',
|
|
20
27
|
schain: {
|
|
21
28
|
ver: '1.0',
|
|
@@ -71,7 +78,7 @@ describe('ColossussspAdapter', function () {
|
|
|
71
78
|
it('Returns valid URL', function () {
|
|
72
79
|
expect(serverRequest.url).to.equal('https://colossusssp.com/?c=o&m=multi');
|
|
73
80
|
});
|
|
74
|
-
it('Should contain ccpa', function() {
|
|
81
|
+
it('Should contain ccpa', function () {
|
|
75
82
|
expect(serverRequest.data.ccpa).to.be.an('string')
|
|
76
83
|
})
|
|
77
84
|
|
|
@@ -88,13 +95,14 @@ describe('ColossussspAdapter', function () {
|
|
|
88
95
|
let placements = data['placements'];
|
|
89
96
|
for (let i = 0; i < placements.length; i++) {
|
|
90
97
|
let placement = placements[i];
|
|
91
|
-
expect(placement).to.have.all.keys('placementId', 'eids', 'bidId', 'traffic', 'sizes', 'schain', 'floor');
|
|
98
|
+
expect(placement).to.have.all.keys('placementId', 'eids', 'bidId', 'traffic', 'sizes', 'schain', 'floor', 'gpid');
|
|
92
99
|
expect(placement.schain).to.be.an('object')
|
|
93
100
|
expect(placement.placementId).to.be.a('number');
|
|
94
101
|
expect(placement.bidId).to.be.a('string');
|
|
95
102
|
expect(placement.traffic).to.be.a('string');
|
|
96
103
|
expect(placement.sizes).to.be.an('array');
|
|
97
104
|
expect(placement.floor).to.be.an('object');
|
|
105
|
+
expect(placement.gpid).to.be.an('string');
|
|
98
106
|
}
|
|
99
107
|
});
|
|
100
108
|
it('Returns empty data if no valid requests are passed', function () {
|
|
@@ -135,7 +143,7 @@ describe('ColossussspAdapter', function () {
|
|
|
135
143
|
|
|
136
144
|
describe('interpretResponse', function () {
|
|
137
145
|
let resObject = {
|
|
138
|
-
body: [
|
|
146
|
+
body: [{
|
|
139
147
|
requestId: '123',
|
|
140
148
|
mediaType: 'banner',
|
|
141
149
|
cpm: 0.3,
|
|
@@ -150,7 +158,7 @@ describe('ColossussspAdapter', function () {
|
|
|
150
158
|
advertiserDomains: ['google.com'],
|
|
151
159
|
advertiserId: 1234
|
|
152
160
|
}
|
|
153
|
-
}
|
|
161
|
+
}]
|
|
154
162
|
};
|
|
155
163
|
let serverResponses = spec.interpretResponse(resObject);
|
|
156
164
|
it('Returns an array of valid server responses if response object is valid', function () {
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import * as utils from '../../../src/utils.js';
|
|
3
|
+
import {
|
|
4
|
+
spec,
|
|
5
|
+
CW_PAGE_VIEW_ID,
|
|
6
|
+
ENDPOINT_URL,
|
|
7
|
+
RENDERER_URL,
|
|
8
|
+
} from '../../../modules/cwireBidAdapter.js';
|
|
9
|
+
import * as prebidGlobal from 'src/prebidGlobal.js';
|
|
10
|
+
|
|
11
|
+
// ------------------------------------
|
|
12
|
+
// Bid Request Builder
|
|
13
|
+
// ------------------------------------
|
|
14
|
+
|
|
15
|
+
const BID_DEFAULTS = {
|
|
16
|
+
request: {
|
|
17
|
+
bidder: 'cwire',
|
|
18
|
+
auctionId: 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
|
|
19
|
+
transactionId: 'txaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee',
|
|
20
|
+
bidId: 'bid123445',
|
|
21
|
+
bidderRequestId: 'brid12345',
|
|
22
|
+
code: 'original-div',
|
|
23
|
+
},
|
|
24
|
+
params: {
|
|
25
|
+
placementId: 123456,
|
|
26
|
+
pageId: 777,
|
|
27
|
+
adUnitElementId: 'target-div'
|
|
28
|
+
},
|
|
29
|
+
sizes: [[300, 250], [1, 1]],
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const BidderRequestBuilder = function BidderRequestBuilder(options) {
|
|
33
|
+
const defaults = {
|
|
34
|
+
bidderCode: 'cwire',
|
|
35
|
+
auctionId: BID_DEFAULTS.request.auctionId,
|
|
36
|
+
bidderRequestId: BID_DEFAULTS.request.bidderRequestId,
|
|
37
|
+
transactionId: BID_DEFAULTS.request.transactionId,
|
|
38
|
+
timeout: 3000,
|
|
39
|
+
refererInfo: {
|
|
40
|
+
numIframes: 0,
|
|
41
|
+
reachedTop: true,
|
|
42
|
+
referer: 'http://test.io/index.html?pbjs_debug=true'
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const request = {
|
|
47
|
+
...defaults,
|
|
48
|
+
...options
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
this.build = () => request;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const BidRequestBuilder = function BidRequestBuilder(options, deleteKeys) {
|
|
55
|
+
const defaults = JSON.parse(JSON.stringify(BID_DEFAULTS));
|
|
56
|
+
|
|
57
|
+
const request = {
|
|
58
|
+
...defaults.request,
|
|
59
|
+
...options
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
if (request && utils.isArray(deleteKeys)) {
|
|
63
|
+
deleteKeys.forEach((k) => {
|
|
64
|
+
delete request[k];
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
this.withParams = (options, deleteKeys) => {
|
|
69
|
+
request.params = {
|
|
70
|
+
...defaults.params,
|
|
71
|
+
...options
|
|
72
|
+
};
|
|
73
|
+
if (request && utils.isArray(deleteKeys)) {
|
|
74
|
+
deleteKeys.forEach((k) => {
|
|
75
|
+
delete request.params[k];
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
return this;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
this.build = () => request;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
describe('C-WIRE bid adapter', () => {
|
|
85
|
+
let utilsMock;
|
|
86
|
+
let sandbox;
|
|
87
|
+
|
|
88
|
+
beforeEach(() => {
|
|
89
|
+
utilsMock = sinon.mock(utils);
|
|
90
|
+
sandbox = sinon.createSandbox();
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
afterEach(() => {
|
|
94
|
+
utilsMock.restore();
|
|
95
|
+
sandbox.restore();
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// START TESTING
|
|
99
|
+
describe('C-WIRE - isBidRequestValid', function () {
|
|
100
|
+
it('should return true when required params found', function () {
|
|
101
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
102
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(true);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('should fail if there is no placementId', function () {
|
|
106
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
107
|
+
delete bid01.params.placementId
|
|
108
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(false);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it('should fail if invalid placementId type', function () {
|
|
112
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
113
|
+
delete bid01.params.placementId;
|
|
114
|
+
bid01.placementId = '322';
|
|
115
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(false);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it('should fail if there is no pageId', function () {
|
|
119
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
120
|
+
delete bid01.params.pageId
|
|
121
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(false);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('should fail if invalid pageId type', function () {
|
|
125
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
126
|
+
delete bid01.params.pageId;
|
|
127
|
+
bid01.params.pageId = '3320';
|
|
128
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(false);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it('should use params.adUnitElementId if provided', function () {
|
|
132
|
+
const bid01 = new BidRequestBuilder().withParams().build();
|
|
133
|
+
|
|
134
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(true);
|
|
135
|
+
expect(bid01.params.adUnitElementId).to.exist;
|
|
136
|
+
expect(bid01.params.adUnitElementId).to.equal('target-div');
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('should use default adUnitCode if no adUnitElementId provided', function () {
|
|
140
|
+
const bid01 = new BidRequestBuilder().withParams({}, ['adUnitElementId']).build();
|
|
141
|
+
expect(spec.isBidRequestValid(bid01)).to.equal(true);
|
|
142
|
+
expect(bid01.params.adUnitElementId).to.exist;
|
|
143
|
+
expect(bid01.params.adUnitElementId).to.equal('original-div');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe('C-WIRE - buildRequests()', function () {
|
|
148
|
+
it('creates a valid request', function () {
|
|
149
|
+
const bid01 = new BidRequestBuilder({
|
|
150
|
+
mediaTypes: {
|
|
151
|
+
banner: {
|
|
152
|
+
sizes: [[1, 1]],
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}).withParams().build();
|
|
156
|
+
const bidderRequest01 = new BidderRequestBuilder().build();
|
|
157
|
+
|
|
158
|
+
const requests = spec.buildRequests([bid01], bidderRequest01);
|
|
159
|
+
expect(requests.data.slots.length).to.equal(1);
|
|
160
|
+
expect(requests.data.cwid).to.be.null;
|
|
161
|
+
expect(requests.data.slots[0].sizes[0]).to.equal('1x1');
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
describe('C-WIRE - interpretResponse()', function () {
|
|
166
|
+
const serverResponse = {
|
|
167
|
+
body: {
|
|
168
|
+
bids: [{
|
|
169
|
+
html: '<div><h2>AD CONTENT</h2></div>',
|
|
170
|
+
currency: 'CHF',
|
|
171
|
+
cpm: 43.37,
|
|
172
|
+
dimensions: [1, 1],
|
|
173
|
+
netRevenue: true,
|
|
174
|
+
creativeId: '1337',
|
|
175
|
+
requestId: BID_DEFAULTS.request.bidId,
|
|
176
|
+
ttl: 3500,
|
|
177
|
+
}],
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const expectedResponse = [{
|
|
182
|
+
ad: JSON.parse(JSON.stringify(serverResponse.body.bids[0].html)),
|
|
183
|
+
bidderCode: BID_DEFAULTS.request.bidder,
|
|
184
|
+
cpm: JSON.parse(JSON.stringify(serverResponse.body.bids[0].cpm)),
|
|
185
|
+
creativeId: JSON.parse(JSON.stringify(serverResponse.body.bids[0].creativeId)),
|
|
186
|
+
currency: JSON.parse(JSON.stringify(serverResponse.body.bids[0].currency)),
|
|
187
|
+
height: JSON.parse(JSON.stringify(serverResponse.body.bids[0].dimensions[0])),
|
|
188
|
+
width: JSON.parse(JSON.stringify(serverResponse.body.bids[0].dimensions[1])),
|
|
189
|
+
netRevenue: JSON.parse(JSON.stringify(serverResponse.body.bids[0].netRevenue)),
|
|
190
|
+
requestId: JSON.parse(JSON.stringify(serverResponse.body.bids[0].requestId)),
|
|
191
|
+
ttl: JSON.parse(JSON.stringify(serverResponse.body.bids[0].ttl)),
|
|
192
|
+
meta: {
|
|
193
|
+
advertiserDomains: [],
|
|
194
|
+
},
|
|
195
|
+
mediaType: 'banner',
|
|
196
|
+
}]
|
|
197
|
+
|
|
198
|
+
it('correctly parses response', function () {
|
|
199
|
+
const bid01 = new BidRequestBuilder({
|
|
200
|
+
mediaTypes: {
|
|
201
|
+
banner: {
|
|
202
|
+
sizes: [[1, 1]],
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}).withParams().build();
|
|
206
|
+
|
|
207
|
+
const bidderRequest01 = new BidderRequestBuilder().build();
|
|
208
|
+
const requests = spec.buildRequests([bid01], bidderRequest01);
|
|
209
|
+
|
|
210
|
+
const response = spec.interpretResponse(serverResponse, requests);
|
|
211
|
+
expect(response).to.deep.equal(expectedResponse);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it('attaches renderer', function () {
|
|
215
|
+
const bid01 = new BidRequestBuilder({
|
|
216
|
+
mediaTypes: {
|
|
217
|
+
video: {
|
|
218
|
+
playerSize: [[640, 480]],
|
|
219
|
+
context: 'outstream',
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}).withParams().build();
|
|
223
|
+
const bidderRequest01 = new BidderRequestBuilder().build();
|
|
224
|
+
|
|
225
|
+
const _serverResponse = utils.deepClone(serverResponse);
|
|
226
|
+
_serverResponse.body.bids[0].vastXml = '<xml></xml>';
|
|
227
|
+
|
|
228
|
+
const _expectedResponse = utils.deepClone(expectedResponse);
|
|
229
|
+
_expectedResponse[0].mediaType = 'video';
|
|
230
|
+
_expectedResponse[0].videoScript = JSON.parse(JSON.stringify(_serverResponse.body.bids[0].html));
|
|
231
|
+
_expectedResponse[0].vastXml = JSON.parse(JSON.stringify(_serverResponse.body.bids[0].vastXml));
|
|
232
|
+
delete _expectedResponse[0].ad;
|
|
233
|
+
|
|
234
|
+
const requests = spec.buildRequests([bid01], bidderRequest01);
|
|
235
|
+
expect(requests.data.slots[0].sizes).to.deep.equal(['640x480']);
|
|
236
|
+
|
|
237
|
+
const response = spec.interpretResponse(_serverResponse, requests);
|
|
238
|
+
expect(response[0].renderer).to.exist;
|
|
239
|
+
expect(response[0].renderer.url).to.equals(RENDERER_URL);
|
|
240
|
+
expect(response[0].renderer.loaded).to.equals(false);
|
|
241
|
+
|
|
242
|
+
delete response[0].renderer;
|
|
243
|
+
expect(response).to.deep.equal(_expectedResponse);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
});
|
|
@@ -350,7 +350,7 @@ describe('E-Planning Adapter', function () {
|
|
|
350
350
|
|
|
351
351
|
it('should create the url correctly', function () {
|
|
352
352
|
const url = spec.buildRequests(bidRequests, bidderRequest).url;
|
|
353
|
-
expect(url).to.equal('https://
|
|
353
|
+
expect(url).to.equal('https://pbjs.e-planning.net/pbjs/1/' + CI + '/1/localhost/ROS');
|
|
354
354
|
});
|
|
355
355
|
|
|
356
356
|
it('should return GET method', function () {
|
|
@@ -740,7 +740,7 @@ describe('E-Planning Adapter', function () {
|
|
|
740
740
|
hasLocalStorageStub.returns(false);
|
|
741
741
|
const response = spec.buildRequests(bidRequests, bidderRequest);
|
|
742
742
|
|
|
743
|
-
expect(response.url).to.equal('https://
|
|
743
|
+
expect(response.url).to.equal('https://pbjs.e-planning.net/pbjs/1/' + CI + '/1/localhost/ROS');
|
|
744
744
|
expect(response.data.vs).to.equal('F');
|
|
745
745
|
|
|
746
746
|
sinon.assert.notCalled(getLocalStorageSpy);
|
|
@@ -750,7 +750,7 @@ describe('E-Planning Adapter', function () {
|
|
|
750
750
|
it('should create the url correctly with LocalStorage', function() {
|
|
751
751
|
createElementVisible();
|
|
752
752
|
const response = spec.buildRequests(bidRequests, bidderRequest);
|
|
753
|
-
expect(response.url).to.equal('https://
|
|
753
|
+
expect(response.url).to.equal('https://pbjs.e-planning.net/pbjs/1/' + CI + '/1/localhost/ROS');
|
|
754
754
|
|
|
755
755
|
expect(response.data.vs).to.equal('F');
|
|
756
756
|
|