prebid.js 9.6.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/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/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/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 +5 -1
- 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/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 +161 -158
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.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/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/riseUtils.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/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/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/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/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 +2 -1
- package/libraries/vidazooUtils/bidderUtils.js +16 -0
- package/modules/.submodules.json +3 -1
- package/modules/51DegreesRtdProvider.md +11 -7
- package/modules/adagioBidAdapter.js +10 -50
- package/modules/appnexusBidAdapter.js +1 -1
- package/modules/cleanmedianetBidAdapter.js +1 -1
- 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/mobianRtdProvider.js +28 -14
- package/modules/ownadxBidAdapter.js +99 -0
- package/modules/prismaBidAdapter.js +1 -27
- package/modules/pubmaticBidAdapter.js +2 -1
- package/modules/sharethroughBidAdapter.js +5 -0
- package/modules/ttdBidAdapter.js +14 -32
- 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 +2 -1
- package/src/video.js +78 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
- package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
- 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/mobianRtdProvider_spec.js +46 -43
- 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/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/video_spec.js +103 -1
|
@@ -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
|
});
|
|
@@ -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', () => {
|
|
@@ -277,6 +277,13 @@ describe('ttdBidAdapter', function () {
|
|
|
277
277
|
expect(url).to.equal('https://direct.adsrvr.org/bid/bidder/supplier');
|
|
278
278
|
});
|
|
279
279
|
|
|
280
|
+
it('sends bid requests to the correct custom endpoint', function () {
|
|
281
|
+
let bannerBidRequestsWithCustomEndpoint = deepClone(baseBannerBidRequests);
|
|
282
|
+
bannerBidRequestsWithCustomEndpoint[0].params.useHttp2 = true;
|
|
283
|
+
const url = testBuildRequests(bannerBidRequestsWithCustomEndpoint, baseBidderRequest).url;
|
|
284
|
+
expect(url).to.equal('https://d2.adsrvr.org/bid/bidder/supplier');
|
|
285
|
+
});
|
|
286
|
+
|
|
280
287
|
it('sends publisher id', function () {
|
|
281
288
|
const requestBody = testBuildRequests(baseBannerBidRequests, baseBidderRequest).data;
|
|
282
289
|
expect(requestBody.site).to.be.not.null;
|
|
@@ -442,7 +449,9 @@ describe('ttdBidAdapter', function () {
|
|
|
442
449
|
let clonedBannerRequests = deepClone(baseBannerBidRequests);
|
|
443
450
|
const battr = [1, 2, 3];
|
|
444
451
|
clonedBannerRequests[0].ortb2Imp = {
|
|
445
|
-
|
|
452
|
+
banner: {
|
|
453
|
+
battr: battr
|
|
454
|
+
}
|
|
446
455
|
};
|
|
447
456
|
const requestBody = testBuildRequests(clonedBannerRequests, baseBidderRequest).data;
|
|
448
457
|
expect(requestBody.imp[0].banner.battr).to.equal(battr);
|
|
@@ -268,7 +268,7 @@ describe('viantOrtbBidAdapter', function () {
|
|
|
268
268
|
});
|
|
269
269
|
it('sends bid requests to the correct endpoint', function () {
|
|
270
270
|
const url = testBuildRequests(baseBannerBidRequests, baseBidderRequest)[0].url;
|
|
271
|
-
expect(url).to.equal('https://bidders-us
|
|
271
|
+
expect(url).to.equal('https://bidders-us.adelphic.net/d/rtb/v25/prebid/bidder');
|
|
272
272
|
});
|
|
273
273
|
|
|
274
274
|
it('sends site', function () {
|
|
@@ -92,7 +92,7 @@ const VIDEO_BID = {
|
|
|
92
92
|
'minduration': 0,
|
|
93
93
|
'startdelay': 0,
|
|
94
94
|
'linearity': 1,
|
|
95
|
-
'api': [2],
|
|
95
|
+
'api': [2, 7],
|
|
96
96
|
'placement': 1
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -157,8 +157,14 @@ const BIDDER_REQUEST = {
|
|
|
157
157
|
segment: [{id: '243'}],
|
|
158
158
|
},
|
|
159
159
|
],
|
|
160
|
+
},
|
|
161
|
+
source: {
|
|
162
|
+
ext: {
|
|
163
|
+
omidpn: 'MyIntegrationPartner',
|
|
164
|
+
omidpv: '7.1'
|
|
165
|
+
}
|
|
160
166
|
}
|
|
161
|
-
}
|
|
167
|
+
}
|
|
162
168
|
};
|
|
163
169
|
|
|
164
170
|
const SERVER_RESPONSE = {
|
|
@@ -359,7 +365,7 @@ describe('VidazooBidAdapter', function () {
|
|
|
359
365
|
webSessionId: webSessionId,
|
|
360
366
|
mediaTypes: {
|
|
361
367
|
video: {
|
|
362
|
-
api: [2],
|
|
368
|
+
api: [2, 7],
|
|
363
369
|
context: 'instream',
|
|
364
370
|
linearity: 1,
|
|
365
371
|
maxduration: 60,
|
|
@@ -373,7 +379,9 @@ describe('VidazooBidAdapter', function () {
|
|
|
373
379
|
protocols: [2, 3, 5, 6],
|
|
374
380
|
startdelay: 0
|
|
375
381
|
}
|
|
376
|
-
}
|
|
382
|
+
},
|
|
383
|
+
omidpn: 'MyIntegrationPartner',
|
|
384
|
+
omidpv: '7.1'
|
|
377
385
|
}
|
|
378
386
|
})
|
|
379
387
|
;
|