prebid.js 7.10.0 → 7.13.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/.github/PULL_REQUEST_TEMPLATE.md +16 -10
- package/.github/codeql/codeql-config.yml +4 -0
- package/.github/workflows/codeql-analysis.yml +73 -0
- package/.github/workflows/issue_tracker.yml +1 -1
- package/README.md +0 -2
- package/babelConfig.js +10 -4
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/acuityAdsBidAdapter.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -0
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/betweenBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpmstarBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -0
- package/dist/debugging-standalone.js +1 -1
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/displayioBidAdapter.js +1 -3
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/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/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -0
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -0
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +153 -147
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.js +1 -0
- package/dist/oneKeyRtdProvider.js +1 -0
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.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 +2 -2
- 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/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.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/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.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/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.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/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viewability.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/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
- package/karma.conf.maker.js +2 -13
- package/modules/.submodules.json +2 -0
- package/modules/acuityAdsBidAdapter.js +207 -0
- package/modules/acuityAdsBidAdapter.md +79 -0
- package/modules/adagioBidAdapter.js +2 -3
- package/modules/adgenerationBidAdapter.js +2 -2
- package/modules/adkernelBidAdapter.js +28 -12
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adpod.js +1 -1
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adriverBidAdapter.js +5 -12
- package/modules/adriverIdSystem.js +2 -1
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +6 -2
- package/modules/adtrgtmeBidAdapter.js +333 -0
- package/modules/adtrgtmeBidAdapter.md +69 -0
- package/modules/adtrueBidAdapter.js +1 -1
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/alkimiBidAdapter.js +2 -1
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +13 -93
- package/modules/apstreamBidAdapter.js +2 -2
- package/modules/beopBidAdapter.js +4 -4
- package/modules/betweenBidAdapter.js +4 -4
- package/modules/bidwatchAnalyticsAdapter.js +112 -59
- package/modules/bizzclickBidAdapter.js +1 -1
- package/modules/brightMountainMediaBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +24 -10
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/consentManagement.js +1 -1
- package/modules/consentManagementUsp.js +1 -1
- package/modules/consumableBidAdapter.js +43 -3
- package/modules/cpmstarBidAdapter.js +23 -13
- package/modules/criteoBidAdapter.js +19 -13
- package/modules/currency.js +1 -0
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/datablocksBidAdapter.js +1 -1
- package/modules/datawrkzBidAdapter.js +633 -0
- package/modules/datawrkzBidAdapter.md +160 -0
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dgkeywordRtdProvider.js +10 -1
- package/modules/displayioBidAdapter.js +92 -97
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/e_volutionBidAdapter.js +3 -3
- package/modules/ebdrBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +11 -0
- package/modules/fabrickIdSystem.js +2 -2
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/getintentBidAdapter.js +1 -1
- package/modules/gjirafaBidAdapter.js +2 -2
- package/modules/goldbachBidAdapter.js +8 -8
- package/modules/gothamadsBidAdapter.js +2 -2
- package/modules/gumgumBidAdapter.js +3 -3
- package/modules/h12mediaBidAdapter.js +1 -1
- package/modules/id5AnalyticsAdapter.js +1 -1
- package/modules/id5IdSystem.js +160 -111
- package/modules/id5IdSystem.md +16 -14
- package/modules/imRtdProvider.js +20 -7
- package/modules/imRtdProvider.md +3 -1
- package/modules/impactifyBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +50 -28
- package/modules/inskinBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/integr8BidAdapter.js +2 -2
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/interactiveOffersBidAdapter.js +1 -1
- package/modules/iqmBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +21 -328
- package/modules/ixBidAdapter.md +1 -19
- package/modules/kargoBidAdapter.js +4 -5
- package/modules/krushmediaBidAdapter.js +2 -2
- package/modules/lassoBidAdapter.js +3 -3
- package/modules/lifestreetBidAdapter.js +143 -0
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +3 -3
- package/modules/lkqdBidAdapter.js +3 -3
- package/modules/loganBidAdapter.js +2 -2
- package/modules/luponmediaBidAdapter.js +3 -3
- package/modules/mabidderBidAdapter.js +60 -0
- package/modules/mabidderBidAdapter.md +31 -0
- package/modules/malltvBidAdapter.js +2 -2
- package/modules/mediagoBidAdapter.js +462 -0
- package/modules/mediagoBidAdapter.md +34 -0
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/mgidBidAdapter.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +25 -6
- package/modules/nobidBidAdapter.js +2 -2
- package/modules/novatiqIdSystem.js +1 -1
- package/modules/oneKeyIdSystem.js +78 -0
- package/modules/oneKeyIdSystem.md +109 -0
- package/modules/oneKeyRtdProvider.js +98 -0
- package/modules/oneKeyRtdProvider.md +127 -0
- package/modules/open8BidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +5 -744
- package/modules/openxAnalyticsAdapter.md +4 -0
- package/modules/openxBidAdapter.js +3 -3
- package/modules/permutiveRtdProvider.js +55 -8
- package/modules/pixfutureBidAdapter.js +1 -1
- package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
- package/modules/priceFloors.js +1 -1
- package/modules/pubmaticAnalyticsAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +19 -1
- package/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/modules/pubwiseBidAdapter.js +3 -3
- package/modules/pubxBidAdapter.js +1 -1
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/quantcastIdSystem.js +1 -1
- package/modules/radsBidAdapter.js +1 -1
- package/modules/rasBidAdapter.js +8 -0
- package/modules/rasBidAdapter.md +14 -13
- package/modules/revcontentBidAdapter.js +1 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +25 -1
- package/modules/schain.js +1 -1
- package/modules/seedtagBidAdapter.md +25 -56
- package/modules/showheroes-bsBidAdapter.js +1 -1
- package/modules/sizeMappingV2.js +1 -1
- package/modules/smaatoBidAdapter.js +2 -2
- package/modules/sonobiAnalyticsAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +4 -3
- package/modules/staqAnalyticsAdapter.js +1 -1
- package/modules/tappxBidAdapter.js +11 -2
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/theAdxBidAdapter.js +2 -2
- package/modules/tpmnBidAdapter.js +1 -1
- package/modules/trionBidAdapter.js +2 -2
- package/modules/tripleliftBidAdapter.js +20 -1
- package/modules/trustpidSystem.js +6 -42
- package/modules/trustpidSystem.md +10 -10
- package/modules/underdogmediaBidAdapter.js +1 -1
- package/modules/userId/eids.js +26 -0
- package/modules/userId/userId.md +2 -2
- package/modules/vdoaiBidAdapter.js +1 -1
- package/modules/vidazooBidAdapter.js +7 -5
- package/modules/vidoomyBidAdapter.js +1 -1
- package/modules/viewability.js +14 -14
- package/modules/winrBidAdapter.js +1 -1
- package/modules/yahoosspBidAdapter.js +3 -3
- package/modules/yandexBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +2 -2
- package/modules/zeta_global_sspBidAdapter.js +24 -21
- package/package.json +3 -3
- package/src/Renderer.js +1 -1
- package/src/adloader.js +2 -1
- package/src/adserver.js +0 -56
- package/src/auction.js +60 -16
- package/src/bidfactory.js +1 -1
- package/src/native.js +75 -60
- package/src/refererDetection.js +12 -1
- package/src/sizeMapping.js +5 -7
- package/src/targeting.js +1 -1
- package/src/userSync.js +1 -1
- package/src/utils/promise.js +3 -1
- package/src/utils.js +27 -0
- package/src/video.js +5 -4
- package/src/videoCache.js +8 -2
- package/test/pages/instream.html +2 -2
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
- package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
- package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
- package/test/spec/modules/adriverIdSystem_spec.js +3 -8
- package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
- package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
- package/test/spec/modules/beopBidAdapter_spec.js +11 -0
- package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
- package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
- package/test/spec/modules/currency_spec.js +22 -0
- package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
- package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
- package/test/spec/modules/fpdModule_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +529 -172
- package/test/spec/modules/imRtdProvider_spec.js +10 -5
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
- package/test/spec/modules/ixBidAdapter_spec.js +216 -123
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
- package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
- package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
- package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
- package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
- package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
- package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
- package/test/spec/modules/rasBidAdapter_spec.js +2 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
- package/test/spec/modules/trustpidSystem_spec.js +27 -45
- package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
- package/test/spec/native_spec.js +257 -2
- package/test/spec/videoCache_spec.js +37 -7
|
@@ -276,7 +276,7 @@ describe('kargo adapter tests', function () {
|
|
|
276
276
|
optOut: false,
|
|
277
277
|
usp: '1---'
|
|
278
278
|
},
|
|
279
|
-
pageURL:
|
|
279
|
+
pageURL: 'https://www.prebid.org',
|
|
280
280
|
prebidRawBidRequests: [
|
|
281
281
|
{
|
|
282
282
|
bidId: 1,
|
|
@@ -327,10 +327,19 @@ describe('kargo adapter tests', function () {
|
|
|
327
327
|
if (excludeTdid) {
|
|
328
328
|
delete clonedBids[0].userId.tdid;
|
|
329
329
|
}
|
|
330
|
-
var payload = {
|
|
330
|
+
var payload = {
|
|
331
|
+
timeout: 200,
|
|
332
|
+
uspConsent: '1---',
|
|
333
|
+
foo: 'bar',
|
|
334
|
+
refererInfo: {
|
|
335
|
+
page: 'https://www.prebid.org',
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
|
|
331
339
|
if (gdpr) {
|
|
332
340
|
payload['gdprConsent'] = gdpr
|
|
333
341
|
}
|
|
342
|
+
|
|
334
343
|
var request = spec.buildRequests(clonedBids, payload);
|
|
335
344
|
expected.sessionId = getSessionId();
|
|
336
345
|
sessionIds.push(expected.sessionId);
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { BANNER, VIDEO } from 'src/mediaTypes.js';
|
|
3
|
+
import { spec } from 'modules/lifestreetBidAdapter.js';
|
|
4
|
+
|
|
5
|
+
describe('lifestreetBidAdapter', function() {
|
|
6
|
+
let bidRequests;
|
|
7
|
+
let videoBidRequests;
|
|
8
|
+
let bidResponses;
|
|
9
|
+
let videoBidResponses;
|
|
10
|
+
beforeEach(function() {
|
|
11
|
+
bidRequests = [
|
|
12
|
+
{
|
|
13
|
+
bidder: 'lifestreet',
|
|
14
|
+
params: {
|
|
15
|
+
slot: 'slot166704',
|
|
16
|
+
adkey: '78c',
|
|
17
|
+
ad_size: '160x600'
|
|
18
|
+
},
|
|
19
|
+
mediaTypes: {
|
|
20
|
+
banner: {
|
|
21
|
+
sizes: [
|
|
22
|
+
[160, 600],
|
|
23
|
+
[300, 600]
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
sizes: [
|
|
28
|
+
[160, 600],
|
|
29
|
+
[300, 600]
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
bidResponses = {
|
|
35
|
+
body: {
|
|
36
|
+
cpm: 0.1,
|
|
37
|
+
netRevenue: true,
|
|
38
|
+
content_type: 'display_flash',
|
|
39
|
+
width: 160,
|
|
40
|
+
currency: 'USD',
|
|
41
|
+
ttl: 86400,
|
|
42
|
+
content: '<iframe src=\'https://ads.lfstmedia.com/displayAd?__ads=ip37346-u0T8r2uJ8245jv6i2QE8Qu&adt=5748927953915945176&seq=2&plc=K73sUSWIH9WwpIQiGybtg8lYdYFld5NvswMmfGBMz6U&__df=true&clickUrl=https%3A%2F%2Fads.lfstmedia.com%2Fclick%2Fcmp15299%2F5748927953915945176%2F2%3F__ads%3Dip37346-u0T8r2uJ8245jv6i2QE8Qu%26adkey%3D6bd%26slot%3Dslot166704%26__stamp%3D1583331395140%26ad%3Dcrv197050%26_cx%3D%24%24CX%24%24%26_cy%3D%24%24CY%24%24%26_celt%3D%24%24ELT-ID%24%24%26redirectURL%3D\' width=\'160\' height=\'600\' frameBorder=\'0\' scrolling=\'no\' framespacing=\'0\' marginheight=\'0\' marginwidth=\'0\'><!--test--><\/iframe>\n',
|
|
43
|
+
creativeId: 7985076,
|
|
44
|
+
height: 600,
|
|
45
|
+
status: 1
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
videoBidRequests = [
|
|
49
|
+
{
|
|
50
|
+
bidder: 'lifestreet',
|
|
51
|
+
params: {
|
|
52
|
+
slot: 'slot1227631',
|
|
53
|
+
adkey: 'a98',
|
|
54
|
+
ad_size: '640x480'
|
|
55
|
+
},
|
|
56
|
+
mediaTypes: {
|
|
57
|
+
video: {
|
|
58
|
+
sizes: [
|
|
59
|
+
[640, 480],
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
videoBidResponses = {
|
|
67
|
+
body: {
|
|
68
|
+
cpm: 0.1,
|
|
69
|
+
netRevenue: true,
|
|
70
|
+
content_type: 'vast_3_0',
|
|
71
|
+
width: 640,
|
|
72
|
+
currency: 'USD',
|
|
73
|
+
ttl: 86400,
|
|
74
|
+
content: '<iframe src="https://ads.lfstmedia.com/displayAd?__ads=ip38770-u0T8r2uJ8245jv6i2QE8Qu&adt=7734389071973843496&seq=2&plc=QEw02HSSpFZCrGaMUP5rN01QQtwPM5iEI5EQzt1nV4E&__df=true&clickUrl=https%3A%2F%2Fads.lfstmedia.com%2Fclick%2Fcmp20228%2F7734389071973843496%2F2%3F__ads%3Dip38770-u0T8r2uJ8245jv6i2QE8Qu%26adkey%3Dcdc%26slot%3Dslot1227631%26__stamp%3D1583766419183%26ad%3Dcrv225652%26_cx%3D%24%24CX%24%24%26_cy%3D%24%24CY%24%24%26_celt%3D%24%24ELT-ID%24%24%26redirectURL%3D" width="640" height="480" frameBorder="0" scrolling="no" framespacing="0" marginheight="0" marginwidth="0"><!--test--><\/iframe>\n',
|
|
75
|
+
creativeId: 108323592,
|
|
76
|
+
height: 480,
|
|
77
|
+
status: 1
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
describe('implementation', function() {
|
|
82
|
+
describe('Bid validations', function() {
|
|
83
|
+
it('valid bid case', function() {
|
|
84
|
+
const validBid = {
|
|
85
|
+
bidder: 'lifestreet',
|
|
86
|
+
params: {
|
|
87
|
+
slot: 'slot166704',
|
|
88
|
+
adkey: '78c',
|
|
89
|
+
ad_size: '160x600'
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
expect(spec.isBidRequestValid(validBid)).to.equal(true);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('invalid bid case', function() {
|
|
96
|
+
expect(spec.isBidRequestValid()).to.equal(false);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('invalid bid case: slot not passed', function() {
|
|
100
|
+
var validBid = {
|
|
101
|
+
bidder: 'lifestreet',
|
|
102
|
+
params: {
|
|
103
|
+
adkey: '78c',
|
|
104
|
+
ad_size: '160x600'
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
expect(spec.isBidRequestValid(validBid)).to.equal(false);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('invalid bid case: adkey not passed', function() {
|
|
111
|
+
const validBid = {
|
|
112
|
+
bidder: 'lifestreet',
|
|
113
|
+
params: {
|
|
114
|
+
slot: 'slot166704',
|
|
115
|
+
ad_size: '160x600'
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
expect(spec.isBidRequestValid(validBid)).to.equal(false);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('invalid bid case: ad_size is not passed', function() {
|
|
122
|
+
const validBid = {
|
|
123
|
+
bidder: 'lifestreet',
|
|
124
|
+
params: {
|
|
125
|
+
slot: 'slot166704',
|
|
126
|
+
adkey: '78c'
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
expect(spec.isBidRequestValid(validBid)).to.equal(false);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe('buildRequests spec method', function () {
|
|
134
|
+
it('method exists and is a function', function () {
|
|
135
|
+
expect(spec.buildRequests).to.exist.and.to.be.a('function');
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('should not return request when no bids are present', function () {
|
|
139
|
+
const [request] = spec.buildRequests([]);
|
|
140
|
+
expect(request).to.be.undefined;
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('should return an url and request method ', function () {
|
|
144
|
+
const [request] = spec.buildRequests(bidRequests);
|
|
145
|
+
expect(request.method).to.equal('GET');
|
|
146
|
+
expect(request.url).to.be.a('string');
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it('should return an url that contains all required fields', function () {
|
|
150
|
+
const [request] = spec.buildRequests(bidRequests);
|
|
151
|
+
expect(request.url).to.have.string('adkey');
|
|
152
|
+
expect(request.url).to.have.string('slot');
|
|
153
|
+
expect(request.url).to.have.string('ad_size');
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it('should add GDPR consent information to the request', function () {
|
|
157
|
+
let consentString = 'BOJ8RZsOJ8RZsABAB8AAAAAZ+A==';
|
|
158
|
+
let bidderRequest = {
|
|
159
|
+
bidderCode: 'lifestreet',
|
|
160
|
+
auctionId: '1d1a030790a875',
|
|
161
|
+
bidderRequestId: '22edbae2744bf6',
|
|
162
|
+
timeout: 3000,
|
|
163
|
+
gdprConsent: {
|
|
164
|
+
consentString: consentString,
|
|
165
|
+
gdprApplies: true
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
bidderRequest.bids = bidRequests;
|
|
169
|
+
|
|
170
|
+
const [request] = spec.buildRequests(bidRequests, bidderRequest);
|
|
171
|
+
expect(request.url).to.have.string('__gdpr=1');
|
|
172
|
+
expect(request.url).to.have.string(`__consent=${consentString}`);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it('should add US privacy string to request', function() {
|
|
176
|
+
let consentString = '1YA-';
|
|
177
|
+
let bidderRequest = {
|
|
178
|
+
bidderCode: 'lifestreet',
|
|
179
|
+
auctionId: '1d1a030790a875',
|
|
180
|
+
bidderRequestId: '22edbae2744bf6',
|
|
181
|
+
timeout: 3000,
|
|
182
|
+
uspConsent: consentString
|
|
183
|
+
};
|
|
184
|
+
bidderRequest.bids = bidRequests;
|
|
185
|
+
|
|
186
|
+
const [request] = spec.buildRequests(bidRequests, bidderRequest);
|
|
187
|
+
expect(request.url).to.have.string(`__us_privacy=${consentString}`);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
describe('server response', function() {
|
|
192
|
+
it('should return valid proper values', function() {
|
|
193
|
+
const request = spec.buildRequests(bidRequests);
|
|
194
|
+
const response = spec.interpretResponse(bidResponses, request);
|
|
195
|
+
expect(response).to.be.an('array').with.length.above(0);
|
|
196
|
+
expect(response[0].cpm).to.equal(bidResponses.body.cpm);
|
|
197
|
+
expect(response[0].width).to.equal(bidResponses.body.width);
|
|
198
|
+
expect(response[0].height).to.equal(bidResponses.body.height);
|
|
199
|
+
expect(response[0].creativeId).to.equal(bidResponses.body.creativeId);
|
|
200
|
+
expect(response[0].currency).to.equal('USD');
|
|
201
|
+
expect(response[0].netRevenue).to.equal(true);
|
|
202
|
+
expect(response[0].ttl).to.equal(bidResponses.body.ttl);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it('should return proper mediaType for BANNER', function() {
|
|
206
|
+
const request = spec.buildRequests(bidRequests);
|
|
207
|
+
const [response] = spec.interpretResponse(bidResponses, request);
|
|
208
|
+
expect(response.mediaType).to.equal(BANNER);
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
it('should return proper mediaType for VIDEO', function() {
|
|
212
|
+
const request = spec.buildRequests(videoBidRequests);
|
|
213
|
+
const [response] = spec.interpretResponse(videoBidResponses, request);
|
|
214
|
+
expect(response.mediaType).to.equal(VIDEO);
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it('should return a VAST XML for VIDEO', function() {
|
|
218
|
+
const request = spec.buildRequests(videoBidRequests);
|
|
219
|
+
const [response] = spec.interpretResponse(videoBidResponses, request);
|
|
220
|
+
expect(response.vastXml).to.be.a('string');
|
|
221
|
+
expect(response.vastXml).to.have.string('iframe');
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it('should return an ad content for BANNER', function() {
|
|
225
|
+
const request = spec.buildRequests(bidRequests);
|
|
226
|
+
const [response] = spec.interpretResponse(bidResponses, request);
|
|
227
|
+
expect(response.ad).to.be.a('string');
|
|
228
|
+
expect(response.ad).to.have.string('iframe');
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {expect} from 'chai';
|
|
2
|
-
import {spec} from '../../../modules/limelightDigitalBidAdapter.js';
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec } from '../../../modules/limelightDigitalBidAdapter.js';
|
|
3
3
|
|
|
4
4
|
describe('limelightDigitalAdapter', function () {
|
|
5
5
|
const bid1 = {
|
|
@@ -29,7 +29,18 @@ describe('limelightDigitalAdapter', function () {
|
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
}
|
|
32
|
-
]
|
|
32
|
+
],
|
|
33
|
+
schain: {
|
|
34
|
+
ver: '1.0',
|
|
35
|
+
complete: 1,
|
|
36
|
+
nodes: [
|
|
37
|
+
{
|
|
38
|
+
asi: 'example.com',
|
|
39
|
+
sid: '1',
|
|
40
|
+
hp: 1
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
33
44
|
}
|
|
34
45
|
const bid2 = {
|
|
35
46
|
bidId: '58ee9870c3164a',
|
|
@@ -53,7 +64,23 @@ describe('limelightDigitalAdapter', function () {
|
|
|
53
64
|
}
|
|
54
65
|
]
|
|
55
66
|
}
|
|
56
|
-
]
|
|
67
|
+
],
|
|
68
|
+
schain: {
|
|
69
|
+
ver: '1.0',
|
|
70
|
+
complete: 1,
|
|
71
|
+
nodes: [
|
|
72
|
+
{
|
|
73
|
+
asi: 'example.com',
|
|
74
|
+
sid: '1',
|
|
75
|
+
hp: 1
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
asi: 'example1.com',
|
|
79
|
+
sid: '2',
|
|
80
|
+
hp: 1
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
57
84
|
}
|
|
58
85
|
const bid3 = {
|
|
59
86
|
bidId: '019645c7d69460',
|
|
@@ -81,7 +108,18 @@ describe('limelightDigitalAdapter', function () {
|
|
|
81
108
|
}
|
|
82
109
|
]
|
|
83
110
|
}
|
|
84
|
-
]
|
|
111
|
+
],
|
|
112
|
+
schain: {
|
|
113
|
+
ver: '1.0',
|
|
114
|
+
complete: 1,
|
|
115
|
+
nodes: [
|
|
116
|
+
{
|
|
117
|
+
asi: 'example.com',
|
|
118
|
+
sid: '1',
|
|
119
|
+
hp: 1
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
85
123
|
}
|
|
86
124
|
const bid4 = {
|
|
87
125
|
bidId: '019645c7d69460',
|
|
@@ -107,7 +145,18 @@ describe('limelightDigitalAdapter', function () {
|
|
|
107
145
|
}
|
|
108
146
|
]
|
|
109
147
|
}
|
|
110
|
-
]
|
|
148
|
+
],
|
|
149
|
+
schain: {
|
|
150
|
+
ver: '1.0',
|
|
151
|
+
complete: 1,
|
|
152
|
+
nodes: [
|
|
153
|
+
{
|
|
154
|
+
asi: 'example.com',
|
|
155
|
+
sid: '1',
|
|
156
|
+
hp: 1
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
111
160
|
}
|
|
112
161
|
|
|
113
162
|
describe('buildRequests', function () {
|
|
@@ -146,7 +195,8 @@ describe('limelightDigitalAdapter', function () {
|
|
|
146
195
|
'sizes',
|
|
147
196
|
'transactionId',
|
|
148
197
|
'publisherId',
|
|
149
|
-
'userIdAsEids'
|
|
198
|
+
'userIdAsEids',
|
|
199
|
+
'supplyChain'
|
|
150
200
|
);
|
|
151
201
|
expect(adUnit.id).to.be.a('number');
|
|
152
202
|
expect(adUnit.bidId).to.be.a('string');
|
|
@@ -154,6 +204,7 @@ describe('limelightDigitalAdapter', function () {
|
|
|
154
204
|
expect(adUnit.transactionId).to.be.a('string');
|
|
155
205
|
expect(adUnit.sizes).to.be.an('array');
|
|
156
206
|
expect(adUnit.userIdAsEids).to.be.an('array');
|
|
207
|
+
expect(adUnit.supplyChain).to.be.an('object');
|
|
157
208
|
})
|
|
158
209
|
})
|
|
159
210
|
})
|
|
@@ -587,4 +638,5 @@ function validateAdUnit(adUnit, bid) {
|
|
|
587
638
|
}));
|
|
588
639
|
expect(adUnit.publisherId).to.equal(bid.params.publisherId);
|
|
589
640
|
expect(adUnit.userIdAsEids).to.deep.equal(bid.userIdAsEids);
|
|
641
|
+
expect(adUnit.supplyChain).to.deep.equal(bid.schain);
|
|
590
642
|
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { expect } from 'chai'
|
|
2
|
+
import { baseUrl, spec } from 'modules/mabidderBidAdapter.js'
|
|
3
|
+
import { newBidder } from 'src/adapters/bidderFactory.js'
|
|
4
|
+
import { BANNER } from '../../../src/mediaTypes.js';
|
|
5
|
+
|
|
6
|
+
describe('mabidderBidAdapter', () => {
|
|
7
|
+
const adapter = newBidder(spec)
|
|
8
|
+
const bidRequestBanner = {
|
|
9
|
+
'bidId': '12345',
|
|
10
|
+
'bidder': 'mabidder',
|
|
11
|
+
'sizes': [[300, 250]],
|
|
12
|
+
'mediaTypes': {
|
|
13
|
+
'banner': {
|
|
14
|
+
'sizes': [[300, 250]]
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
'params': {
|
|
18
|
+
'ppid': 'string1',
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe('inherited functions', () => {
|
|
24
|
+
it('exists and is a function', () => {
|
|
25
|
+
expect(adapter.callBids).to.exist.and.to.be.a('function')
|
|
26
|
+
})
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
describe('isBidRequestValid', () => {
|
|
30
|
+
it('should return true when required params are found', () => {
|
|
31
|
+
expect(spec.isBidRequestValid(bidRequestBanner)).to.equal(true)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('should return false when required params are not found', () => {
|
|
35
|
+
let bid = Object.assign({}, bidRequestBanner)
|
|
36
|
+
const ppid = bid.params.ppid
|
|
37
|
+
delete bid.params.ppid
|
|
38
|
+
expect(spec.isBidRequestValid(bid)).to.equal(false)
|
|
39
|
+
bid.params.ppid = ppid
|
|
40
|
+
|
|
41
|
+
bid = Object.assign({}, bidRequestBanner)
|
|
42
|
+
const params = bidRequestBanner.params
|
|
43
|
+
delete bid.params
|
|
44
|
+
expect(spec.isBidRequestValid(bid)).to.equal(false)
|
|
45
|
+
bidRequestBanner.params = params
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
describe('buildRequests', () => {
|
|
50
|
+
const bidRequests = [bidRequestBanner]
|
|
51
|
+
const req = spec.buildRequests(bidRequests, {
|
|
52
|
+
auctionId: '123',
|
|
53
|
+
refererInfo: {
|
|
54
|
+
referer: 'http://test.com/path.html'
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('sends bid request to ENDPOINT via POST', () => {
|
|
59
|
+
expect(req.method).to.equal('POST')
|
|
60
|
+
expect(req.url.indexOf('https://')).to.equal(0)
|
|
61
|
+
expect(req.url).to.equal(baseUrl)
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
it('contains prebid version parameter', () => {
|
|
65
|
+
expect(req.data.v).to.equal($$PREBID_GLOBAL$$.version)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('sends the correct bid parameters for banner', () => {
|
|
69
|
+
expect(req.data.bids[0].bidId).to.equal(bidRequestBanner.bidId)
|
|
70
|
+
expect(req.data.bids[0].ppid).to.equal(bidRequestBanner.params.ppid)
|
|
71
|
+
expect(req.data.bids[0].sizes[0].width).to.equal(bidRequestBanner.sizes[0][0])
|
|
72
|
+
expect(req.data.bids[0].sizes[0].height).to.equal(bidRequestBanner.sizes[0][1])
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
it('accepts an optional fpd parameter', () => {
|
|
76
|
+
expect(req.data.fpd).to.exist.and.to.be.a('Object')
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
describe('interpretResponse', () => {
|
|
81
|
+
it('handles banner request and should get correct bid response', () => {
|
|
82
|
+
const BIDDER_RESPONSE_BANNER = {
|
|
83
|
+
'Responses': [{
|
|
84
|
+
'width': 300,
|
|
85
|
+
'height': 250,
|
|
86
|
+
'creativeId': '123abc',
|
|
87
|
+
'ad': '<!-- Creative -->',
|
|
88
|
+
'cpm': 0.5,
|
|
89
|
+
'requestId': 'abc123',
|
|
90
|
+
'ttl': 60,
|
|
91
|
+
'netRevenue': true,
|
|
92
|
+
'currency': 'USD',
|
|
93
|
+
'mediaType': BANNER,
|
|
94
|
+
'meta': {
|
|
95
|
+
'advertiserDomains': ['https://loblaws.ca']
|
|
96
|
+
}
|
|
97
|
+
}]
|
|
98
|
+
}
|
|
99
|
+
const results = spec.interpretResponse({ body: BIDDER_RESPONSE_BANNER }, {})
|
|
100
|
+
const response = results[0]
|
|
101
|
+
expect(results.length).to.equal(BIDDER_RESPONSE_BANNER.Responses.length)
|
|
102
|
+
expect(response).to.have.property('ad').equal('<!-- Creative -->')
|
|
103
|
+
expect(response).to.have.property('requestId').equal('abc123')
|
|
104
|
+
expect(response).to.have.property('cpm').equal(0.5)
|
|
105
|
+
expect(response).to.have.property('currency').equal('USD')
|
|
106
|
+
expect(response).to.have.property('width').equal(300)
|
|
107
|
+
expect(response).to.have.property('height').equal(250)
|
|
108
|
+
expect(response).to.have.property('ttl').equal(60)
|
|
109
|
+
expect(response).to.have.property('creativeId').equal('123abc')
|
|
110
|
+
expect(response).to.have.property('mediaType').equal(BANNER)
|
|
111
|
+
expect(response).to.have.property('meta')
|
|
112
|
+
expect(response.meta).to.have.property('advertiserDomains')
|
|
113
|
+
expect(response.meta.advertiserDomains).to.be.an('array')
|
|
114
|
+
expect(response.meta.advertiserDomains[0]).equal('https://loblaws.ca')
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
it('handles no bid response by returning empty array', () => {
|
|
118
|
+
let result = spec.interpretResponse({ body: undefined }, {})
|
|
119
|
+
expect(result).to.deep.equal([])
|
|
120
|
+
|
|
121
|
+
result = spec.interpretResponse({ body: '' }, {})
|
|
122
|
+
expect(result).to.deep.equal([])
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
})
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec } from 'modules/mediagoBidAdapter.js';
|
|
3
|
+
|
|
4
|
+
describe('mediago:BidAdapterTests', function () {
|
|
5
|
+
let bidRequestData = {
|
|
6
|
+
bidderCode: 'mediago',
|
|
7
|
+
auctionId: '7fae02a9-0195-472f-ba94-708d3bc2c0d9',
|
|
8
|
+
bidderRequestId: '4fec04e87ad785',
|
|
9
|
+
bids: [
|
|
10
|
+
{
|
|
11
|
+
bidder: 'mediago',
|
|
12
|
+
params: {
|
|
13
|
+
token: '85a6b01e41ac36d49744fad726e3655d',
|
|
14
|
+
bidfloor: 0.01,
|
|
15
|
+
},
|
|
16
|
+
mediaTypes: {
|
|
17
|
+
banner: {
|
|
18
|
+
sizes: [[300, 250]],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
adUnitCode: 'regular_iframe',
|
|
22
|
+
transactionId: '7b26fdae-96e6-4c35-a18b-218dda11397d',
|
|
23
|
+
sizes: [[300, 250]],
|
|
24
|
+
bidId: '54d73f19c9d47a', // todo
|
|
25
|
+
bidderRequestId: '4fec04e87ad785', // todo
|
|
26
|
+
auctionId: '883a346a-6d62-4adb-a600-0f3a869061d1',
|
|
27
|
+
src: 'client',
|
|
28
|
+
bidRequestsCount: 1,
|
|
29
|
+
bidderRequestsCount: 1,
|
|
30
|
+
bidderWinsCount: 0,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
let request = [];
|
|
35
|
+
|
|
36
|
+
it('mediago:validate_pub_params', function () {
|
|
37
|
+
expect(
|
|
38
|
+
spec.isBidRequestValid({
|
|
39
|
+
bidder: 'mediago',
|
|
40
|
+
params: {
|
|
41
|
+
token: ['85a6b01e41ac36d49744fad726e3655d'],
|
|
42
|
+
},
|
|
43
|
+
})
|
|
44
|
+
).to.equal(true);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('mediago:validate_generated_params', function () {
|
|
48
|
+
request = spec.buildRequests(bidRequestData.bids, bidRequestData);
|
|
49
|
+
let req_data = JSON.parse(request.data);
|
|
50
|
+
expect(req_data.imp).to.have.lengthOf(1);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('mediago:validate_response_params', function () {
|
|
54
|
+
let adm = "<link rel=\"stylesheet\" href=\"https://cdn.mediago.io/js/style/style_banner_300*250.css\"><div id=\"mgcontainer-99afea272c2b0e8626489674ddb7a0bb\" class=\"mediago-placement imgTopTitleBottom\" style=\"position:relative;width:298px;height:248px;overflow:hidden\"><a href=\"https://trace.mediago.io/api/bidder/track?tn=39934c2bda4debbe4c680be1dd02f5d3&price=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&evt=102&rid=6e28cfaf115a354ea1ad8e1304d6d7b8&campaignid=1339145&impid=44-300x250-1&offerid=24054386&test=0&time=1660789795&cp=jZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM&clickid=44_6e28cfaf115a354ea1ad8e1304d6d7b8_44-300x250-1&acid=599&trackingid=99afea272c2b0e8626489674ddb7a0bb&uid=a865b9ae-fa9e-4c09-8204-2db99ac7c8f7&jt=2&url=oxZA2i2aUVY76Xy2t3HffaK_ZtBDsgFwFc_Nbnw-bz3yCxmoUyZvATKnFc9ZkUfT1eQizhtczCwDzjHwwwDgTehUnp1EwdY4g1LRcuOwlRpXnVTt3zPQdaVx5nVDw25by7lQ0q469LCv2eEFDTAv_FOuVT32WiOx_ArOIlxCnDGpjPLUNyxm3cTZFGOJn4B7&bm=2&la=en&cn=us&cid=3998296&info=Si3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk&sid=128__110__1__12__28__38__163__96__58__24__47__99&sp=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&scp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&acu=USD&scu=USD&sgcp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&gprice=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&gcp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&ah=&pb=&de=wjh.popin.cc&cat=&iv=0\" target=\"_blank\" class=\"mediago-placement-track\" style=\"display: inline-block;\"><img alt=\"Ranger's spot giant lion - vet is shocked when looking at the ultrasound\" src=\"https://d2cli4kgl5uxre.cloudfront.net/ML/ff32b6f9b3bbc45c00b78b6674a2952e__scv1__300x175.png\" style=\"height:70%;width:100%;border-width:0;border:none;\"><h3 class=\"title\" style=\"font-size:16px;\">Ranger's spot giant lion - vet is shocked when looking at the ultrasound</h3></a><span class=\"source\"><a class=\"sourcename\" href=\"//www.mediago.io\" target=\"_blank\"><span>Ad</span> </a><a class=\"mgmgsrcnameadslabelurl\" href=\"//www.mediago.io/privacy\" target=\"_blank\"><span>soo-healthy</span></a></span></div>";
|
|
55
|
+
let temp = '%3Cscr';
|
|
56
|
+
temp += 'ipt%3E';
|
|
57
|
+
temp += '!function()%7B%22use%20strict%22%3Bfunction%20f(t)%7Breturn(f%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol.iterator%3Ffunction(t)%7Breturn%20typeof%20t%7D%3Afunction(t)%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t.constructor%3D%3D%3DSymbol%26%26t!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20t%7D)(t)%7Dfunction%20l(t)%7Bvar%20e%3D0%3Carguments.length%26%26void%200!%3D%3Dt%3Ft%3A%7B%7D%3Btry%7Be.random_t%3D(new%20Date).getTime()%2Cg(function(t)%7Bvar%20e%3D1%3Carguments.length%26%26void%200!%3D%3Darguments%5B1%5D%3Farguments%5B1%5D%3A%22%22%3Bif(%22object%22!%3D%3Df(t))return%20e%3Bvar%20n%3Dfunction(t)%7Bfor(var%20e%2Cn%3D%5B%5D%2Co%3D0%2Ci%3DObject.keys(t)%3Bo%3Ci.length%3Bo%2B%2B)e%3Di%5Bo%5D%2Cn.push(%22%22.concat(e%2C%22%3D%22).concat(t%5Be%5D))%3Breturn%20n%7D(t).join(%22%26%22)%2Co%3De.indexOf(%22%23%22)%2Ci%3De%2Ct%3D%22%22%3Breturn-1!%3D%3Do%26%26(i%3De.slice(0%2Co)%2Ct%3De.slice(o))%2Cn%26%26(i%26%26-1!%3D%3Di.indexOf(%22%3F%22)%3Fi%2B%3D%22%26%22%2Bn%3Ai%2B%3D%22%3F%22%2Bn)%2Ci%2Bt%7D(e%2C%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Flog%2Ftrack%22))%7Dcatch(t)%7B%7D%7Dfunction%20g(t%2Ce%2Cn)%7B(t%3Dt%3Ft.split(%22%3B%3B%3B%22)%3A%5B%5D).map(function(t)%7Btry%7B0%3C%3Dt.indexOf(%22%2Fapi%2Fbidder%2Ftrack%22)%26%26n%26%26(t%2B%3D%22%26inIframe%3D%22.concat(!(!self.frameElement%7C%7C%22IFRAME%22!%3Dself.frameElement.tagName)%7C%7Cwindow.frames.length!%3Dparent.frames.length%7C%7Cself!%3Dtop)%2Ct%2B%3D%22%26pos_x%3D%22.concat(n.left%2C%22%26pos_y%3D%22).concat(n.top%2C%22%26page_w%3D%22).concat(n.page_width%2C%22%26page_h%3D%22).concat(n.page_height))%7Dcatch(t)%7Bl(%7Btn%3As%2Cwinloss%3A1%2Cfe%3A2%2Cpos_err_c%3A1002%2Cpos_err_m%3At.toString()%7D)%7Dvar%20e%3Dnew%20Image%3Be.src%3Dt%2Ce.style.display%3D%22none%22%2Ce.style.visibility%3D%22hidden%22%2Ce.width%3D0%2Ce.height%3D0%2Cdocument.body.appendChild(e)%7D)%7Dvar%20d%3D%5B%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Fbidder%2Ftrack%3Ftn%3D39934c2bda4debbe4c680be1dd02f5d3%26price%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26evt%3D101%26rid%3D6e28cfaf115a354ea1ad8e1304d6d7b8%26campaignid%3D1339145%26impid%3D44-300x250-1%26offerid%3D24054386%26test%3D0%26time%3D1660789795%26cp%3DjZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM%26acid%3D599%26trackingid%3D99afea272c2b0e8626489674ddb7a0bb%26uid%3Da865b9ae-fa9e-4c09-8204-2db99ac7c8f7%26bm%3D2%26la%3Den%26cn%3Dus%26cid%3D3998296%26info%3DSi3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk%26sid%3D128__110__1__12__28__38__163__96__58__24__47__99%26sp%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26scp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26acu%3DUSD%26scu%3DUSD%26sgcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26gprice%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26gcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26ah%3D%26de%3Dwjh.popin.cc%26iv%3D0%22%2C%22%24%7BITRACKER2%7D%22%2C%22%24%7BITRACKER3%7D%22%2C%22%24%7BITRACKER4%7D%22%2C%22%24%7BITRACKER5%7D%22%2C%22%24%7BITRACKER6%7D%22%5D%2Cp%3D%5B%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Fbidder%2Ftrack%3Ftn%3D39934c2bda4debbe4c680be1dd02f5d3%26price%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26evt%3D104%26rid%3D6e28cfaf115a354ea1ad8e1304d6d7b8%26campaignid%3D1339145%26impid%3D44-300x250-1%26offerid%3D24054386%26test%3D0%26time%3D1660789795%26cp%3DjZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM%26acid%3D599%26trackingid%3D99afea272c2b0e8626489674ddb7a0bb%26uid%3Da865b9ae-fa9e-4c09-8204-2db99ac7c8f7%26sid%3D128__110__1__12__28__38__163__96__58__24__47__99%26format%3D%26crid%3Dff32b6f9b3bbc45c00b78b6674a2952e%26bm%3D2%26la%3Den%26cn%3Dus%26cid%3D3998296%26info%3DSi3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk%26sp%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26scp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26acu%3DUSD%26scu%3DUSD%26sgcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26gprice%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26gcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26ah%3D%26de%3Dwjh.popin.cc%26iv%3D0%22%2C%22%24%7BVTRACKER2%7D%22%2C%22%24%7BVTRACKER3%7D%22%2C%22%24%7BVTRACKER4%7D%22%2C%22%24%7BVTRACKER5%7D%22%2C%22%24%7BVTRACKER6%7D%22%5D%2Cs%3D%22f9f2b1ef23fe2759c2cad0953029a94b%22%2Cn%3Ddocument.getElementById(%22mgcontainer-99afea272c2b0e8626489674ddb7a0bb%22)%3Bn%26%26function()%7Bvar%20a%3Dn.getElementsByClassName(%22mediago-placement-track%22)%3Bif(a%26%26a.length)%7Bvar%20t%2Ce%3Dfunction(t)%7Bvar%20e%2Cn%2Co%2Ci%2Cc%2Cr%3B%22object%22%3D%3D%3Df(r%3Da%5Bt%5D)%26%26(e%3Dfunction(t)%7Btry%7Bvar%20e%3Dt.getBoundingClientRect()%2Cn%3De%26%26e.top%7C%7C-1%2Co%3De%26%26e.left%7C%7C-1%2Ci%3Ddocument.body.scrollWidth%7C%7C-1%2Ce%3Ddocument.body.scrollHeight%7C%7C-1%3Breturn%7Btop%3An.toFixed(0)%2Cleft%3Ao.toFixed(0)%2Cpage_width%3Ai%2Cpage_height%3Ae%7D%7Dcatch(o)%7Breturn%20l(%7Btn%3As%2Cwinloss%3A1%2Cfe%3A2%2Cpos_err_c%3A1001%2Cpos_err_m%3Ao.toString()%7D)%2C%7Btop%3A%22-1%22%2Cleft%3A%22-1%22%2Cpage_width%3A%22-1%22%2Cpage_height%3A%22-1%22%7D%7D%7D(r)%2C(n%3Dd%5Bt%5D)%26%26g(n%2C0%2Ce)%2Co%3Dp%5Bt%5D%2Ci%3D!1%2C(c%3Dfunction()%7BsetTimeout(function()%7Bvar%20t%2Ce%3B!i%26%26(t%3Dr%2Ce%3Dwindow.innerHeight%7C%7Cdocument.documentElement.clientHeight%7C%7Cdocument.body.clientHeight%2C(t.getBoundingClientRect()%26%26t.getBoundingClientRect().top)%3C%3De-.75*(t.offsetHeight%7C%7Ct.clientHeight))%3F(i%3D!0%2Co%26%26g(o))%3Ac()%7D%2C500)%7D)())%7D%3Bfor(t%20in%20a)e(t)%7D%7D()%7D()';
|
|
58
|
+
temp += '%3B%3C%2Fscri';
|
|
59
|
+
temp += 'pt%3E';
|
|
60
|
+
adm += decodeURIComponent(temp);
|
|
61
|
+
let serverResponse = {
|
|
62
|
+
body: {
|
|
63
|
+
id: 'mgprebidjs_0b6572fc-ceba-418f-b6fd-33b41ad0ac8a',
|
|
64
|
+
seatbid: [
|
|
65
|
+
{
|
|
66
|
+
bid: [
|
|
67
|
+
{
|
|
68
|
+
id: '6e28cfaf115a354ea1ad8e1304d6d7b8',
|
|
69
|
+
impid: '1',
|
|
70
|
+
price: 0.087581,
|
|
71
|
+
adm: adm,
|
|
72
|
+
cid: '1339145',
|
|
73
|
+
crid: 'ff32b6f9b3bbc45c00b78b6674a2952e',
|
|
74
|
+
w: 300,
|
|
75
|
+
h: 250,
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
cur: 'USD',
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
let bids = spec.interpretResponse(serverResponse);
|
|
85
|
+
// console.log({
|
|
86
|
+
// bids
|
|
87
|
+
// });
|
|
88
|
+
expect(bids).to.have.lengthOf(1);
|
|
89
|
+
|
|
90
|
+
let bid = bids[0];
|
|
91
|
+
|
|
92
|
+
expect(bid.creativeId).to.equal('ff32b6f9b3bbc45c00b78b6674a2952e');
|
|
93
|
+
expect(bid.width).to.equal(300);
|
|
94
|
+
expect(bid.height).to.equal(250);
|
|
95
|
+
expect(bid.currency).to.equal('USD');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -104,9 +104,9 @@ describe('nextMillenniumBidAdapterTests', function() {
|
|
|
104
104
|
expect(JSON.parse(request[0].data).ext.nextMillennium.refresh_count).to.equal(3);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
it('Check if
|
|
107
|
+
it('Check if domain was added', function() {
|
|
108
108
|
const request = spec.buildRequests(bidRequestData)
|
|
109
|
-
expect(JSON.parse(request[0].data).site.domain).to.
|
|
109
|
+
expect(JSON.parse(request[0].data).site.domain).to.exist
|
|
110
110
|
})
|
|
111
111
|
|
|
112
112
|
it('Check if elOffsets was added', function() {
|
|
@@ -114,11 +114,6 @@ describe('nextMillenniumBidAdapterTests', function() {
|
|
|
114
114
|
expect(JSON.parse(request[0].data).ext.nextMillennium.elOffsets).to.be.an('object')
|
|
115
115
|
})
|
|
116
116
|
|
|
117
|
-
it('Check if refferer was added', function() {
|
|
118
|
-
const request = spec.buildRequests(bidRequestData)
|
|
119
|
-
expect(JSON.parse(request[0].data).device.referrer).to.exist
|
|
120
|
-
})
|
|
121
|
-
|
|
122
117
|
it('Check if imp object was added', function() {
|
|
123
118
|
const request = spec.buildRequests(bidRequestData)
|
|
124
119
|
expect(JSON.parse(request[0].data).imp).to.be.an('array')
|