prebid.js 9.5.0 → 9.7.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 +1 -1
- package/.github/release-drafter.yml +4 -0
- package/README.md +4 -4
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/cleanmedianetBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/connectionInfo.js +1 -0
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +31 -2
- package/dist/docereeAdManagerBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gamoshiBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idImportLibrary.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -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/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +174 -170
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ownadxBidAdapter.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prismaBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -0
- 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/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/telariaBidAdapter.js +1 -1
- package/dist/teqblazeUtils.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/uid2IdSystem_shared.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/viantOrtbBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/wurflRtdProvider.js +1 -0
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
- package/libraries/connectionInfo/connectionUtils.js +33 -0
- package/libraries/ortbConverter/processors/video.js +2 -24
- package/libraries/riseUtils/index.js +331 -0
- package/libraries/teqblazeUtils/bidderUtils.js +15 -11
- package/libraries/vidazooUtils/bidderUtils.js +16 -0
- package/modules/.submodules.json +3 -1
- package/modules/51DegreesRtdProvider.md +11 -7
- package/modules/adagioAnalyticsAdapter.js +101 -84
- package/modules/adagioAnalyticsAdapter.md +4 -0
- package/modules/adagioBidAdapter.js +14 -66
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/aidemBidAdapter.js +2 -0
- package/modules/appnexusBidAdapter.js +1 -1
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +5 -3
- package/modules/dailymotionBidAdapter.js +19 -0
- package/modules/docereeAdManagerBidAdapter.js +9 -12
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/greenbidsAnalyticsAdapter.js +7 -4
- package/modules/greenbidsRtdProvider.js +15 -5
- package/modules/id5IdSystem.js +14 -93
- package/modules/idImportLibrary.js +14 -6
- package/modules/insticatorBidAdapter.js +35 -31
- package/modules/kargoBidAdapter.js +11 -14
- package/modules/kimberliteBidAdapter.js +24 -7
- package/modules/kimberliteBidAdapter.md +30 -1
- package/modules/minutemediaBidAdapter.js +21 -398
- package/modules/mobianRtdProvider.js +28 -14
- package/modules/nexx360BidAdapter.js +3 -2
- package/modules/openwebBidAdapter.js +18 -396
- package/modules/ownadxBidAdapter.js +99 -0
- package/modules/prismaBidAdapter.js +1 -27
- package/modules/publirBidAdapter.js +20 -273
- package/modules/pubmaticBidAdapter.js +2 -1
- package/modules/resetdigitalBidAdapter.md +54 -45
- package/modules/riseBidAdapter.js +19 -400
- package/modules/sharethroughBidAdapter.js +5 -0
- package/modules/shinezBidAdapter.js +17 -361
- package/modules/smarthubBidAdapter.js +45 -177
- package/modules/stnBidAdapter.js +22 -398
- package/modules/telariaBidAdapter.js +2 -32
- package/modules/ttdBidAdapter.js +14 -32
- package/modules/uid2IdSystem_shared.js +51 -39
- package/modules/viantOrtbBidAdapter.js +1 -1
- package/modules/wurflRtdProvider.js +213 -0
- package/modules/wurflRtdProvider.md +67 -0
- package/package.json +1 -1
- package/src/adloader.js +1 -0
- package/src/prebid.js +6 -1
- package/src/video.js +78 -1
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
- package/test/spec/modules/adagioBidAdapter_spec.js +32 -67
- package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
- package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
- package/test/spec/modules/connectIdSystem_spec.js +27 -28
- package/test/spec/modules/dailymotionBidAdapter_spec.js +50 -0
- package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
- package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
- package/test/spec/modules/id5IdSystem_spec.js +25 -98
- package/test/spec/modules/idImportLibrary_spec.js +14 -0
- package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
- package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
- package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
- package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
- package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
- package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
- package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
- package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
- package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
- package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
- package/test/spec/unit/pbjs_api_spec.js +11 -0
- package/test/spec/video_spec.js +103 -1
|
@@ -389,7 +389,7 @@ describe('InsticatorBidAdapter', function () {
|
|
|
389
389
|
expect(data.device).to.be.an('object');
|
|
390
390
|
expect(data.device.w).to.equal(window.innerWidth);
|
|
391
391
|
expect(data.device.h).to.equal(window.innerHeight);
|
|
392
|
-
expect(data.device.js).to.equal(
|
|
392
|
+
expect(data.device.js).to.equal(1);
|
|
393
393
|
expect(data.device.ext).to.be.an('object');
|
|
394
394
|
expect(data.device.ext.localStorage).to.equal(true);
|
|
395
395
|
expect(data.device.ext.cookies).to.equal(false);
|
|
@@ -439,6 +439,13 @@ describe('InsticatorBidAdapter', function () {
|
|
|
439
439
|
insticator: {
|
|
440
440
|
adUnitId: bidRequest.params.adUnitId,
|
|
441
441
|
},
|
|
442
|
+
prebid: {
|
|
443
|
+
bidder: {
|
|
444
|
+
insticator: {
|
|
445
|
+
adUnitId: bidRequest.params.adUnitId,
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
442
449
|
}
|
|
443
450
|
}]);
|
|
444
451
|
expect(data.ext).to.be.an('object');
|
|
@@ -1885,16 +1885,15 @@ describe('kargo adapter tests', function() {
|
|
|
1885
1885
|
describe('getUserSyncs', function() {
|
|
1886
1886
|
let crb = {};
|
|
1887
1887
|
const clientId = 'random-client-id-string';
|
|
1888
|
-
const baseUrl = 'https://crb.kargo.com/api/v1/initsyncrnd/random-client-id-string?seed=3205e885-8d37-4139-b47e-f82cff268000&
|
|
1888
|
+
const baseUrl = 'https://crb.kargo.com/api/v1/initsyncrnd/random-client-id-string?seed=3205e885-8d37-4139-b47e-f82cff268000&gdpr=0&gdpr_consent=&us_privacy=&gpp=&gpp_sid=';
|
|
1889
1889
|
|
|
1890
|
-
function buildSyncUrls(baseUrl = 'https://crb.kargo.com/api/v1/initsyncrnd/random-client-id-string?seed=3205e885-8d37-4139-b47e-f82cff268000&
|
|
1890
|
+
function buildSyncUrls(baseUrl = 'https://crb.kargo.com/api/v1/initsyncrnd/random-client-id-string?seed=3205e885-8d37-4139-b47e-f82cff268000&gdpr=0&gdpr_consent=&us_privacy=&gpp=&gpp_sid=') {
|
|
1891
1891
|
let syncs = [];
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
}
|
|
1892
|
+
|
|
1893
|
+
syncs.push({
|
|
1894
|
+
type: 'iframe',
|
|
1895
|
+
url: baseUrl
|
|
1896
|
+
});
|
|
1898
1897
|
|
|
1899
1898
|
return syncs;
|
|
1900
1899
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { spec } from 'modules/kimberliteBidAdapter.js';
|
|
1
|
+
import { spec, ENDPOINT_URL } from 'modules/kimberliteBidAdapter.js';
|
|
2
2
|
import { assert } from 'chai';
|
|
3
|
-
import { BANNER } from '../../../src/mediaTypes.js';
|
|
3
|
+
import { BANNER, VIDEO } from '../../../src/mediaTypes.js';
|
|
4
4
|
|
|
5
5
|
const BIDDER_CODE = 'kimberlite';
|
|
6
6
|
|
|
@@ -8,74 +8,104 @@ describe('kimberliteBidAdapter', function () {
|
|
|
8
8
|
const sizes = [[640, 480]];
|
|
9
9
|
|
|
10
10
|
describe('isBidRequestValid', function () {
|
|
11
|
-
let
|
|
11
|
+
let bidRequests;
|
|
12
12
|
|
|
13
13
|
beforeEach(function () {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
bidRequests = [
|
|
15
|
+
{
|
|
16
|
+
mediaTypes: {
|
|
17
|
+
[BANNER]: {
|
|
18
|
+
sizes: [[320, 240]]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
params: {
|
|
22
|
+
placementId: 'test-placement'
|
|
18
23
|
}
|
|
19
24
|
},
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
{
|
|
26
|
+
mediaTypes: {
|
|
27
|
+
[VIDEO]: {
|
|
28
|
+
mimes: ['video/mp4']
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
params: {
|
|
32
|
+
placementId: 'test-placement'
|
|
33
|
+
}
|
|
22
34
|
}
|
|
23
|
-
|
|
35
|
+
];
|
|
24
36
|
});
|
|
25
37
|
|
|
26
|
-
it('pass on valid bidRequest', function () {
|
|
27
|
-
assert.isTrue(spec.isBidRequestValid(
|
|
38
|
+
it('pass on valid banner bidRequest', function () {
|
|
39
|
+
assert.isTrue(spec.isBidRequestValid(bidRequests[0]));
|
|
28
40
|
});
|
|
29
41
|
|
|
30
42
|
it('fails on missed placementId', function () {
|
|
31
|
-
delete
|
|
32
|
-
assert.isFalse(spec.isBidRequestValid(
|
|
43
|
+
delete bidRequests[0].params.placementId;
|
|
44
|
+
assert.isFalse(spec.isBidRequestValid(bidRequests[0]));
|
|
33
45
|
});
|
|
34
46
|
|
|
35
47
|
it('fails on empty banner', function () {
|
|
36
|
-
delete
|
|
37
|
-
assert.isFalse(spec.isBidRequestValid(
|
|
48
|
+
delete bidRequests[0].mediaTypes.banner;
|
|
49
|
+
assert.isFalse(spec.isBidRequestValid(bidRequests[0]));
|
|
38
50
|
});
|
|
39
51
|
|
|
40
52
|
it('fails on empty banner.sizes', function () {
|
|
41
|
-
delete
|
|
42
|
-
assert.isFalse(spec.isBidRequestValid(
|
|
53
|
+
delete bidRequests[0].mediaTypes.banner.sizes;
|
|
54
|
+
assert.isFalse(spec.isBidRequestValid(bidRequests[0]));
|
|
43
55
|
});
|
|
44
56
|
|
|
45
57
|
it('fails on empty request', function () {
|
|
46
58
|
assert.isFalse(spec.isBidRequestValid());
|
|
47
59
|
});
|
|
60
|
+
|
|
61
|
+
it('pass on valid video bidRequest', function () {
|
|
62
|
+
assert.isTrue(spec.isBidRequestValid(bidRequests[1]));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('fails on missed video.mimes', function () {
|
|
66
|
+
delete bidRequests[1].mediaTypes.video.mimes;
|
|
67
|
+
assert.isFalse(spec.isBidRequestValid(bidRequests[1]));
|
|
68
|
+
});
|
|
48
69
|
});
|
|
49
70
|
|
|
50
71
|
describe('buildRequests', function () {
|
|
51
72
|
let bidRequests, bidderRequest;
|
|
52
73
|
|
|
53
74
|
beforeEach(function () {
|
|
54
|
-
bidRequests = [
|
|
55
|
-
|
|
56
|
-
|
|
75
|
+
bidRequests = [
|
|
76
|
+
{
|
|
77
|
+
mediaTypes: {
|
|
78
|
+
[BANNER]: {sizes: sizes}
|
|
79
|
+
},
|
|
80
|
+
params: {
|
|
81
|
+
placementId: 'test-placement'
|
|
82
|
+
}
|
|
57
83
|
},
|
|
58
|
-
|
|
59
|
-
|
|
84
|
+
{
|
|
85
|
+
mediaTypes: {
|
|
86
|
+
[VIDEO]: {
|
|
87
|
+
mimes: ['video/mp4'],
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
params: {
|
|
91
|
+
placementId: 'test-placement'
|
|
92
|
+
}
|
|
60
93
|
}
|
|
61
|
-
|
|
94
|
+
];
|
|
62
95
|
|
|
63
96
|
bidderRequest = {
|
|
64
97
|
refererInfo: {
|
|
65
98
|
domain: 'example.com',
|
|
66
99
|
page: 'https://www.example.com/test.html',
|
|
67
|
-
}
|
|
68
|
-
bids: [{
|
|
69
|
-
mediaTypes: {
|
|
70
|
-
[BANNER]: {sizes: sizes}
|
|
71
|
-
}
|
|
72
|
-
}]
|
|
100
|
+
}
|
|
73
101
|
};
|
|
74
102
|
});
|
|
75
103
|
|
|
76
104
|
it('valid bid request', function () {
|
|
77
105
|
const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
|
|
106
|
+
|
|
78
107
|
assert.equal(bidRequest.method, 'POST');
|
|
108
|
+
assert.equal(bidRequest.url, ENDPOINT_URL);
|
|
79
109
|
assert.ok(bidRequest.data);
|
|
80
110
|
|
|
81
111
|
const requestData = bidRequest.data;
|
|
@@ -87,10 +117,10 @@ describe('kimberliteBidAdapter', function () {
|
|
|
87
117
|
expect(requestData.ext).to.be.an('Object').and.have.all.keys('prebid');
|
|
88
118
|
expect(requestData.ext.prebid).to.be.an('Object').and.have.all.keys('ver', 'adapterVer');
|
|
89
119
|
|
|
90
|
-
const
|
|
91
|
-
expect(
|
|
120
|
+
const impBannerData = requestData.imp[0];
|
|
121
|
+
expect(impBannerData.banner).is.to.be.an('Object').and.have.all.keys(['format', 'topframe']);
|
|
92
122
|
|
|
93
|
-
const bannerData =
|
|
123
|
+
const bannerData = impBannerData.banner;
|
|
94
124
|
expect(bannerData.format).to.be.an('array').and.is.not.empty;
|
|
95
125
|
|
|
96
126
|
const formatData = bannerData.format[0];
|
|
@@ -98,30 +128,44 @@ describe('kimberliteBidAdapter', function () {
|
|
|
98
128
|
|
|
99
129
|
assert.equal(formatData.w, sizes[0][0]);
|
|
100
130
|
assert.equal(formatData.h, sizes[0][1]);
|
|
131
|
+
|
|
132
|
+
if (FEATURES.VIDEO) {
|
|
133
|
+
const impVideoData = requestData.imp[1];
|
|
134
|
+
expect(impVideoData.video).is.to.be.an('Object').and.have.all.keys(['mimes']);
|
|
135
|
+
|
|
136
|
+
const videoData = impVideoData.video;
|
|
137
|
+
expect(videoData.mimes).to.be.an('array').and.is.not.empty;
|
|
138
|
+
expect(videoData.mimes[0]).to.be.a('string').that.equals('video/mp4');
|
|
139
|
+
}
|
|
101
140
|
});
|
|
102
141
|
});
|
|
103
142
|
|
|
104
143
|
describe('interpretResponse', function () {
|
|
105
|
-
let bidderResponse, bidderRequest, bidRequest,
|
|
144
|
+
let bidderResponse, bidderRequest, bidRequest, expectedBids;
|
|
106
145
|
|
|
107
146
|
const requestId = '07fba8b0-8812-4dc6-b91e-4a525d81729c';
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const crId = 'creative-id';
|
|
111
|
-
const adm = '<a href="http://test.landing.com">landing</a>';
|
|
147
|
+
const bannerAdm = '<a href="http://test.landing.com">landing</a>';
|
|
148
|
+
const videoAdm = '<VAST version="3.0">test vast</VAST>';
|
|
112
149
|
|
|
113
150
|
beforeEach(function () {
|
|
114
151
|
bidderResponse = {
|
|
115
152
|
body: {
|
|
116
153
|
id: requestId,
|
|
117
154
|
seatbid: [{
|
|
118
|
-
bid: [
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
155
|
+
bid: [
|
|
156
|
+
{
|
|
157
|
+
crid: 1,
|
|
158
|
+
impid: 1,
|
|
159
|
+
price: 1,
|
|
160
|
+
adm: bannerAdm
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
crid: 2,
|
|
164
|
+
impid: 2,
|
|
165
|
+
price: 1,
|
|
166
|
+
adm: videoAdm
|
|
167
|
+
}
|
|
168
|
+
]
|
|
125
169
|
}]
|
|
126
170
|
}
|
|
127
171
|
};
|
|
@@ -131,36 +175,64 @@ describe('kimberliteBidAdapter', function () {
|
|
|
131
175
|
domain: 'example.com',
|
|
132
176
|
page: 'https://www.example.com/test.html',
|
|
133
177
|
},
|
|
134
|
-
bids: [
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
178
|
+
bids: [
|
|
179
|
+
{
|
|
180
|
+
bidId: 1,
|
|
181
|
+
mediaTypes: {
|
|
182
|
+
banner: {sizes: sizes}
|
|
183
|
+
},
|
|
184
|
+
params: {
|
|
185
|
+
placementId: 'test-placement'
|
|
186
|
+
}
|
|
138
187
|
},
|
|
139
|
-
|
|
140
|
-
|
|
188
|
+
{
|
|
189
|
+
bidId: 2,
|
|
190
|
+
mediaTypes: {
|
|
191
|
+
video: {
|
|
192
|
+
mimes: ['video/mp4']
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
params: {
|
|
196
|
+
placementId: 'test-placement'
|
|
197
|
+
}
|
|
141
198
|
}
|
|
142
|
-
|
|
199
|
+
]
|
|
143
200
|
};
|
|
144
201
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
202
|
+
expectedBids = [
|
|
203
|
+
{
|
|
204
|
+
mediaType: 'banner',
|
|
205
|
+
requestId: 1,
|
|
206
|
+
cpm: 1,
|
|
207
|
+
creative_id: 1,
|
|
208
|
+
creativeId: 1,
|
|
209
|
+
ttl: 300,
|
|
210
|
+
netRevenue: true,
|
|
211
|
+
ad: bannerAdm,
|
|
212
|
+
meta: {}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
mediaType: 'video',
|
|
216
|
+
requestId: 2,
|
|
217
|
+
cpm: 1,
|
|
218
|
+
creative_id: 2,
|
|
219
|
+
creativeId: 2,
|
|
220
|
+
ttl: 300,
|
|
221
|
+
netRevenue: true,
|
|
222
|
+
vastXml: videoAdm,
|
|
223
|
+
meta: {}
|
|
224
|
+
},
|
|
225
|
+
];
|
|
157
226
|
|
|
158
227
|
bidRequest = spec.buildRequests(bidderRequest.bids, bidderRequest);
|
|
159
228
|
});
|
|
160
229
|
|
|
161
230
|
it('pass on valid request', function () {
|
|
162
231
|
const bids = spec.interpretResponse(bidderResponse, bidRequest);
|
|
163
|
-
assert.deepEqual(bids[0],
|
|
232
|
+
assert.deepEqual(bids[0], expectedBids[0]);
|
|
233
|
+
if (FEATURES.VIDEO) {
|
|
234
|
+
assert.deepEqual(bids[1], expectedBids[1]);
|
|
235
|
+
}
|
|
164
236
|
});
|
|
165
237
|
|
|
166
238
|
it('fails on empty response', function () {
|
|
@@ -23,83 +23,86 @@ describe('Mobian RTD Submodule', function () {
|
|
|
23
23
|
ajaxStub.restore();
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
it('should return
|
|
26
|
+
it('should return risk level when server responds with garm_risk', function () {
|
|
27
27
|
ajaxStub = sinon.stub(ajax, 'ajaxBuilder').returns(function(url, callbacks) {
|
|
28
|
-
callbacks.success({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
});
|
|
28
|
+
callbacks.success(JSON.stringify({
|
|
29
|
+
garm_risk: 'low',
|
|
30
|
+
sentiment_positive: true,
|
|
31
|
+
emotion_joy: true
|
|
32
|
+
}));
|
|
34
33
|
});
|
|
35
34
|
|
|
36
35
|
return mobianBrandSafetySubmodule.getBidRequestData(bidReqConfig, {}, {}).then((risk) => {
|
|
37
|
-
expect(risk).to.
|
|
38
|
-
|
|
36
|
+
expect(risk).to.deep.equal({
|
|
37
|
+
risk: 'low',
|
|
38
|
+
contentCategories: [],
|
|
39
|
+
sentiment: 'positive',
|
|
40
|
+
emotions: ['joy']
|
|
41
|
+
});
|
|
39
42
|
expect(bidReqConfig.ortb2Fragments.global.site.ext.data.mobian).to.deep.equal(risk);
|
|
40
43
|
});
|
|
41
44
|
});
|
|
42
45
|
|
|
43
|
-
it('should
|
|
46
|
+
it('should handle response with GARM content categories, sentiment, and emotions', function () {
|
|
44
47
|
ajaxStub = sinon.stub(ajax, 'ajaxBuilder').returns(function(url, callbacks) {
|
|
45
|
-
callbacks.success({
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
callbacks.success(JSON.stringify({
|
|
49
|
+
garm_risk: 'medium',
|
|
50
|
+
garm_content_category_arms: true,
|
|
51
|
+
garm_content_category_crime: true,
|
|
52
|
+
sentiment_negative: true,
|
|
53
|
+
emotion_anger: true,
|
|
54
|
+
emotion_fear: true
|
|
55
|
+
}));
|
|
51
56
|
});
|
|
52
57
|
|
|
53
58
|
return mobianBrandSafetySubmodule.getBidRequestData(bidReqConfig, {}, {}).then((risk) => {
|
|
54
|
-
expect(risk).to.
|
|
55
|
-
|
|
59
|
+
expect(risk).to.deep.equal({
|
|
60
|
+
risk: 'medium',
|
|
61
|
+
contentCategories: ['arms', 'crime'],
|
|
62
|
+
sentiment: 'negative',
|
|
63
|
+
emotions: ['anger', 'fear']
|
|
64
|
+
});
|
|
56
65
|
expect(bidReqConfig.ortb2Fragments.global.site.ext.data.mobian).to.deep.equal(risk);
|
|
57
66
|
});
|
|
58
67
|
});
|
|
59
68
|
|
|
60
|
-
it('should return
|
|
69
|
+
it('should return unknown risk when garm_risk is not present', function () {
|
|
61
70
|
ajaxStub = sinon.stub(ajax, 'ajaxBuilder').returns(function(url, callbacks) {
|
|
62
|
-
callbacks.success({
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
garm_medium_risk: true,
|
|
66
|
-
garm_high_risk: false
|
|
67
|
-
});
|
|
71
|
+
callbacks.success(JSON.stringify({
|
|
72
|
+
sentiment_neutral: true
|
|
73
|
+
}));
|
|
68
74
|
});
|
|
69
75
|
|
|
70
76
|
return mobianBrandSafetySubmodule.getBidRequestData(bidReqConfig, {}, {}).then((risk) => {
|
|
71
|
-
expect(risk).to.
|
|
72
|
-
|
|
77
|
+
expect(risk).to.deep.equal({
|
|
78
|
+
risk: 'unknown',
|
|
79
|
+
contentCategories: [],
|
|
80
|
+
sentiment: 'neutral',
|
|
81
|
+
emotions: []
|
|
82
|
+
});
|
|
73
83
|
expect(bidReqConfig.ortb2Fragments.global.site.ext.data.mobian).to.deep.equal(risk);
|
|
74
84
|
});
|
|
75
85
|
});
|
|
76
86
|
|
|
77
|
-
it('should return
|
|
87
|
+
it('should return empty object when server response is not valid JSON', function () {
|
|
78
88
|
ajaxStub = sinon.stub(ajax, 'ajaxBuilder').returns(function(url, callbacks) {
|
|
79
|
-
callbacks.success(
|
|
80
|
-
garm_no_risk: false,
|
|
81
|
-
garm_low_risk: false,
|
|
82
|
-
garm_medium_risk: false,
|
|
83
|
-
garm_high_risk: true
|
|
84
|
-
});
|
|
89
|
+
callbacks.success('unexpected output not even of the right type');
|
|
85
90
|
});
|
|
86
|
-
|
|
91
|
+
const originalConfig = JSON.parse(JSON.stringify(bidReqConfig));
|
|
87
92
|
return mobianBrandSafetySubmodule.getBidRequestData(bidReqConfig, {}, {}).then((risk) => {
|
|
88
|
-
expect(risk).to.
|
|
89
|
-
|
|
90
|
-
expect(bidReqConfig
|
|
93
|
+
expect(risk).to.deep.equal({});
|
|
94
|
+
// Check that bidReqConfig hasn't been modified
|
|
95
|
+
expect(bidReqConfig).to.deep.equal(originalConfig);
|
|
91
96
|
});
|
|
92
97
|
});
|
|
93
98
|
|
|
94
|
-
it('should
|
|
99
|
+
it('should handle error response', function () {
|
|
95
100
|
ajaxStub = sinon.stub(ajax, 'ajaxBuilder').returns(function(url, callbacks) {
|
|
96
|
-
callbacks.
|
|
101
|
+
callbacks.error();
|
|
97
102
|
});
|
|
98
103
|
|
|
99
104
|
return mobianBrandSafetySubmodule.getBidRequestData(bidReqConfig, {}, {}).then((risk) => {
|
|
100
|
-
expect(risk).to.
|
|
101
|
-
expect(risk['mobianGarmRisk']).to.equal('unknown');
|
|
102
|
-
expect(bidReqConfig.ortb2Fragments.global.site.ext.data.mobian).to.deep.equal(risk);
|
|
105
|
+
expect(risk).to.deep.equal({});
|
|
103
106
|
});
|
|
104
107
|
});
|
|
105
108
|
});
|
|
@@ -405,7 +405,7 @@ describe('Nexx360 bid adapter tests', function () {
|
|
|
405
405
|
expect(requestContent.imp[1].tagid).to.be.eql('div-2-abcd');
|
|
406
406
|
expect(requestContent.imp[1].ext.adUnitCode).to.be.eql('div-2-abcd');
|
|
407
407
|
expect(requestContent.imp[1].ext.divId).to.be.eql('div-2-abcd');
|
|
408
|
-
expect(requestContent.ext.bidderVersion).to.be.eql('4.
|
|
408
|
+
expect(requestContent.ext.bidderVersion).to.be.eql('4.2');
|
|
409
409
|
expect(requestContent.ext.source).to.be.eql('prebid.js');
|
|
410
410
|
});
|
|
411
411
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec } from 'modules/ownadxBidAdapter.js';
|
|
3
|
+
|
|
4
|
+
describe('ownadx', function () {
|
|
5
|
+
const METHOD = 'POST';
|
|
6
|
+
const URL = 'https://pbs-js.prebid-ownadx.com/publisher/prebid/9/1231?token=3f2941af4f7e446f9a19ca6045f8cff4';
|
|
7
|
+
|
|
8
|
+
const bidRequest = {
|
|
9
|
+
bidder: 'ownadx',
|
|
10
|
+
params: {
|
|
11
|
+
tokenId: '3f2941af4f7e446f9a19ca6045f8cff4',
|
|
12
|
+
sspId: '1231',
|
|
13
|
+
seatId: '9'
|
|
14
|
+
},
|
|
15
|
+
mediaTypes: {
|
|
16
|
+
banner: {
|
|
17
|
+
sizes: [[300, 250], [300, 600]]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
sizes: [
|
|
21
|
+
[300, 250],
|
|
22
|
+
[300, 600]
|
|
23
|
+
],
|
|
24
|
+
bidId: 'bid-id-123456',
|
|
25
|
+
adUnitCode: 'ad-unit-code-1',
|
|
26
|
+
bidderRequestId: 'bidder-request-id-123456',
|
|
27
|
+
auctionId: 'auction-id-123456',
|
|
28
|
+
transactionId: 'transaction-id-123456'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
describe('isBidRequestValid', function () {
|
|
32
|
+
it('should return true where required params found', function () {
|
|
33
|
+
expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('buildRequests', function () {
|
|
38
|
+
let bidderRequest = {
|
|
39
|
+
refererInfo: {
|
|
40
|
+
page: 'https://www.test.com',
|
|
41
|
+
reachedTop: true,
|
|
42
|
+
isAmp: false,
|
|
43
|
+
numIframes: 0,
|
|
44
|
+
stack: [
|
|
45
|
+
'https://www.test.com'
|
|
46
|
+
],
|
|
47
|
+
canonicalUrl: null
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
it('should build correct POST request for banner bid', function () {
|
|
52
|
+
const request = spec.buildRequests([bidRequest], bidderRequest)[0];
|
|
53
|
+
expect(request).to.be.an('object');
|
|
54
|
+
expect(request.method).to.equal('POST');
|
|
55
|
+
expect(request.url).to.equal('https://pbs-js.prebid-ownadx.com/publisher/prebid/9/1231?token=3f2941af4f7e446f9a19ca6045f8cff4');
|
|
56
|
+
const payload = request.data;
|
|
57
|
+
expect(payload).to.be.an('object');
|
|
58
|
+
expect(payload.sizes).to.be.an('array');
|
|
59
|
+
expect(payload.slotBidId).to.be.a('string');
|
|
60
|
+
expect(payload.PageUrl).to.be.a('string');
|
|
61
|
+
expect(payload.mediaChannel).to.be.a('number');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe('interpretResponse', function () {
|
|
66
|
+
let serverResponse = {
|
|
67
|
+
body: {
|
|
68
|
+
tokenId: '3f2941af4f7e446f9a19ca6045f8cff4',
|
|
69
|
+
bid: 'BID-XXXX-XXXX',
|
|
70
|
+
width: '300',
|
|
71
|
+
height: '250',
|
|
72
|
+
cpm: '0.7',
|
|
73
|
+
adm: '<html><h1>Ad from OwnAdX</h1></html>',
|
|
74
|
+
slotBidId: 'bid-id-123456',
|
|
75
|
+
adType: '1',
|
|
76
|
+
statusText: 'Success'
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
let expectedResponse = [{
|
|
81
|
+
token: '3f2941af4f7e446f9a19ca6045f8cff4',
|
|
82
|
+
requestId: 'bid-id-123456',
|
|
83
|
+
cpm: '0.7',
|
|
84
|
+
currency: 'USD',
|
|
85
|
+
aType: '1',
|
|
86
|
+
netRevenue: false,
|
|
87
|
+
width: '300',
|
|
88
|
+
height: '250',
|
|
89
|
+
creativeId: 0,
|
|
90
|
+
ttl: 300,
|
|
91
|
+
ad: '<html><h1>Ad from OwnAdX</h1></html>',
|
|
92
|
+
meta: {
|
|
93
|
+
mediaType: 'banner',
|
|
94
|
+
advertiserDomains: []
|
|
95
|
+
}
|
|
96
|
+
}];
|
|
97
|
+
|
|
98
|
+
it('should correctly interpret valid banner response', function () {
|
|
99
|
+
let result = spec.interpretResponse(serverResponse);
|
|
100
|
+
expect(result).to.deep.equal(expectedResponse);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
@@ -2974,6 +2974,24 @@ describe('PubMatic adapter', function () {
|
|
|
2974
2974
|
expect(data.device).to.include.any.keys('connectiontype');
|
|
2975
2975
|
}
|
|
2976
2976
|
});
|
|
2977
|
+
|
|
2978
|
+
it('should send imp.pmp in request if pmp json is present in adUnit ortb2Imp object', function () {
|
|
2979
|
+
let originalBidRequests = utils.deepClone(bidRequests);
|
|
2980
|
+
originalBidRequests[0].ortb2Imp.pmp = {
|
|
2981
|
+
'private_auction': 0,
|
|
2982
|
+
'deals': [{ 'id': '5678' }]
|
|
2983
|
+
}
|
|
2984
|
+
const bidRequest = spec.buildRequests(originalBidRequests);
|
|
2985
|
+
let data = JSON.parse(bidRequest.data);
|
|
2986
|
+
expect(data.imp[0].pmp).to.exist.and.to.be.an('object');
|
|
2987
|
+
})
|
|
2988
|
+
|
|
2989
|
+
it('should not send imp.pmp in request if pmp json is not present in adUnit ortb2Imp object', function () {
|
|
2990
|
+
let originalBidRequests = utils.deepClone(bidRequests);
|
|
2991
|
+
const bidRequest = spec.buildRequests(originalBidRequests);
|
|
2992
|
+
let data = JSON.parse(bidRequest.data);
|
|
2993
|
+
expect(data.imp[0].pmp).to.deep.equal(undefined);
|
|
2994
|
+
})
|
|
2977
2995
|
});
|
|
2978
2996
|
|
|
2979
2997
|
it('Request params dctr check', function () {
|
|
@@ -346,6 +346,41 @@ describe('sharethrough adapter spec', function () {
|
|
|
346
346
|
|
|
347
347
|
expect(openRtbReq.user.ext.eids).to.deep.equal([]);
|
|
348
348
|
});
|
|
349
|
+
|
|
350
|
+
it('should add ORTB2 device data to the request', () => {
|
|
351
|
+
const bidderRequestWithOrtb2Device = {
|
|
352
|
+
...bidderRequest,
|
|
353
|
+
...{
|
|
354
|
+
ortb2: {
|
|
355
|
+
device: {
|
|
356
|
+
w: 980,
|
|
357
|
+
h: 1720,
|
|
358
|
+
dnt: 0,
|
|
359
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/125.0.6422.80 Mobile/15E148 Safari/604.1',
|
|
360
|
+
language: 'en',
|
|
361
|
+
devicetype: 1,
|
|
362
|
+
make: 'Apple',
|
|
363
|
+
model: 'iPhone 12 Pro Max',
|
|
364
|
+
os: 'iOS',
|
|
365
|
+
osv: '17.4',
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
const [request] = spec.buildRequests(bidRequests, bidderRequestWithOrtb2Device);
|
|
372
|
+
|
|
373
|
+
expect(request.data.device.w).to.equal(bidderRequestWithOrtb2Device.ortb2.device.w);
|
|
374
|
+
expect(request.data.device.h).to.equal(bidderRequestWithOrtb2Device.ortb2.device.h);
|
|
375
|
+
expect(request.data.device.dnt).to.equal(bidderRequestWithOrtb2Device.ortb2.device.dnt);
|
|
376
|
+
expect(request.data.device.ua).to.equal(bidderRequestWithOrtb2Device.ortb2.device.ua);
|
|
377
|
+
expect(request.data.device.language).to.equal(bidderRequestWithOrtb2Device.ortb2.device.language);
|
|
378
|
+
expect(request.data.device.devicetype).to.equal(bidderRequestWithOrtb2Device.ortb2.device.devicetype);
|
|
379
|
+
expect(request.data.device.make).to.equal(bidderRequestWithOrtb2Device.ortb2.device.make);
|
|
380
|
+
expect(request.data.device.model).to.equal(bidderRequestWithOrtb2Device.ortb2.device.model);
|
|
381
|
+
expect(request.data.device.os).to.equal(bidderRequestWithOrtb2Device.ortb2.device.os);
|
|
382
|
+
expect(request.data.device.osv).to.equal(bidderRequestWithOrtb2Device.ortb2.device.osv);
|
|
383
|
+
});
|
|
349
384
|
});
|
|
350
385
|
|
|
351
386
|
describe('no referer provided', () => {
|