prebid.js 6.0.0 → 6.4.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/.babelrc.js +1 -7
- package/.circleci/config.yml +1 -1
- package/README.md +1 -1
- package/browsers.json +13 -29
- package/gulpfile.js +88 -82
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
- package/karma.conf.maker.js +2 -2
- package/modules/33acrossBidAdapter.js +189 -102
- package/modules/adagioBidAdapter.js +1 -1
- package/modules/addefendBidAdapter.js +1 -0
- package/modules/adheseBidAdapter.js +7 -2
- package/modules/adkernelBidAdapter.js +147 -61
- package/modules/adlivetechBidAdapter.md +61 -0
- package/modules/adlooxAdServerVideo.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +4 -4
- package/modules/admanBidAdapter.js +1 -0
- package/modules/admixerBidAdapter.js +3 -2
- package/modules/adnuntiusBidAdapter.js +5 -2
- package/modules/adomikAnalyticsAdapter.js +16 -4
- package/modules/adplusBidAdapter.js +203 -0
- package/modules/adplusBidAdapter.md +39 -0
- package/modules/adxcgBidAdapter.js +311 -359
- package/modules/adxcgBidAdapter.md +22 -21
- package/modules/adyoulikeBidAdapter.js +7 -2
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +23 -3
- package/modules/beachfrontBidAdapter.js +14 -17
- package/modules/beopBidAdapter.js +6 -4
- package/modules/bidViewability.js +3 -3
- package/modules/bidViewabilityIO.js +3 -3
- package/modules/codefuelBidAdapter.js +1 -3
- package/modules/codefuelBidAdapter.md +3 -3
- package/modules/colossussspBidAdapter.js +7 -0
- package/modules/compassBidAdapter.js +201 -0
- package/modules/compassBidAdapter.md +79 -0
- package/modules/craftBidAdapter.js +5 -3
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/currency.js +2 -2
- package/modules/cwireBidAdapter.js +3 -0
- package/modules/dailyhuntBidAdapter.js +435 -0
- package/modules/dailyhuntBidAdapter.md +4 -0
- package/modules/datablocksBidAdapter.js +3 -3
- package/modules/dchain.js +149 -0
- package/modules/dchain.md +45 -0
- package/modules/deepintentBidAdapter.js +1 -1
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +9 -1
- package/modules/engageyaBidAdapter.js +68 -54
- package/modules/feedadBidAdapter.js +2 -2
- package/modules/feedadBidAdapter.md +4 -2
- package/modules/freewheel-sspBidAdapter.js +6 -0
- package/modules/futureads.md +48 -0
- package/modules/glimpseBidAdapter.js +44 -16
- package/modules/goldbachBidAdapter.js +1176 -0
- package/modules/goldbachBidAdapter.md +151 -0
- package/modules/gptPreAuction.js +11 -5
- package/modules/gridBidAdapter.js +5 -4
- package/modules/gumgumBidAdapter.js +7 -3
- package/modules/id5IdSystem.md +6 -6
- package/modules/imRtdProvider.js +31 -0
- package/modules/improvedigitalBidAdapter.js +19 -3
- package/modules/instreamTracking.js +4 -4
- package/modules/intersectionRtdProvider.js +114 -0
- package/modules/invibesBidAdapter.js +64 -14
- package/modules/invibesBidAdapter.md +2 -1
- package/modules/ipromBidAdapter.js +79 -0
- package/modules/ixBidAdapter.js +185 -22
- package/modules/kinessoIdSystem.js +1 -1
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedBidAdapter.js +8 -2
- package/modules/lotamePanoramaIdSystem.js +80 -8
- package/modules/luponmediaBidAdapter.js +570 -0
- package/modules/mediasquareBidAdapter.js +1 -9
- package/modules/merkleIdSystem.js +5 -0
- package/modules/missenaBidAdapter.js +89 -0
- package/modules/nativoBidAdapter.js +27 -1
- package/modules/nextMillenniumBidAdapter.js +37 -7
- package/modules/oguryBidAdapter.js +2 -1
- package/modules/openxBidAdapter.js +6 -1
- package/modules/prebidServerBidAdapter/index.js +19 -15
- package/modules/pubgeniusBidAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +5 -3
- package/modules/pubxaiAnalyticsAdapter.js +17 -0
- package/modules/relaidoBidAdapter.js +86 -65
- package/modules/richaudienceBidAdapter.js +2 -3
- package/modules/rtdModule/index.js +48 -18
- package/modules/rubiconBidAdapter.js +31 -19
- package/modules/saambaaBidAdapter.js +420 -0
- package/modules/saambaaBidAdapter.md +65 -68
- package/modules/seedtagBidAdapter.js +6 -0
- package/modules/sharedIdSystem.js +27 -1
- package/modules/smaatoBidAdapter.js +9 -1
- package/modules/smartxBidAdapter.js +17 -1
- package/modules/sspBCBidAdapter.js +34 -3
- package/modules/tappxBidAdapter.js +3 -1
- package/modules/targetVideoBidAdapter.js +187 -0
- package/modules/targetVideoBidAdapter.md +34 -0
- package/modules/telariaBidAdapter.js +2 -2
- package/modules/trustxBidAdapter.js +18 -17
- package/modules/undertoneBidAdapter.js +8 -1
- package/modules/userId/index.js +27 -2
- package/modules/ventes.md +71 -0
- package/modules/ventesBidAdapter.js +104 -64
- package/modules/ventesBidAdapter.md +0 -1
- package/modules/vidoomyBidAdapter.js +65 -108
- package/modules/visxBidAdapter.js +20 -3
- package/modules/visxBidAdapter.md +4 -6
- package/modules/weboramaRtdProvider.js +288 -73
- package/modules/weboramaRtdProvider.md +27 -10
- package/modules/yahoosspBidAdapter.js +5 -1
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldlabBidAdapter.js +41 -10
- package/modules/yieldlabBidAdapter.md +91 -48
- package/modules/yieldoneBidAdapter.js +115 -11
- package/modules/zetaSspBidAdapter.md +33 -1
- package/modules/zeta_global_sspBidAdapter.js +22 -1
- package/package.json +6 -1
- package/plugins/pbjsGlobals.js +28 -1
- package/src/adapterManager.js +14 -8
- package/src/auction.js +5 -4
- package/src/prebid.js +1 -2
- package/src/targeting.js +24 -3
- package/src/utils.js +41 -7
- package/test/helpers/prebidGlobal.js +1 -0
- package/test/spec/integration/faker/googletag.js +6 -0
- package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
- package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +9 -1
- package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
- package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +63 -1
- package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
- package/test/spec/modules/beopBidAdapter_spec.js +1 -1
- package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
- package/test/spec/modules/bidViewability_spec.js +4 -4
- package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
- package/test/spec/modules/compassBidAdapter_spec.js +397 -0
- package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
- package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
- package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
- package/test/spec/modules/dchain_spec.js +329 -0
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
- package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
- package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
- package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
- package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
- package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
- package/test/spec/modules/gptPreAuction_spec.js +58 -4
- package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
- package/test/spec/modules/imRtdProvider_spec.js +25 -0
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -1
- package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
- package/test/spec/modules/invibesBidAdapter_spec.js +148 -4
- package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
- package/test/spec/modules/ixBidAdapter_spec.js +293 -2
- package/test/spec/modules/konduitWrapper_spec.js +0 -1
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
- package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
- package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
- package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
- package/test/spec/modules/merkleIdSystem_spec.js +18 -0
- package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
- package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
- package/test/spec/modules/openxBidAdapter_spec.js +5 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +62 -2
- package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
- package/test/spec/modules/realTimeDataModule_spec.js +135 -49
- package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
- package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
- package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
- package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
- package/test/spec/modules/sharedIdSystem_spec.js +52 -6
- package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
- package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
- package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +42 -0
- package/test/spec/modules/userId_spec.js +51 -0
- package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
- package/test/spec/modules/visxBidAdapter_spec.js +121 -5
- package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
- package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
- package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
- package/test/spec/unit/core/adapterManager_spec.js +24 -6
- package/test/spec/unit/core/targeting_spec.js +116 -0
- package/test/spec/utils_spec.js +38 -0
- package/test/test_deps.js +3 -0
- package/test/test_index.js +1 -3
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { spec } from '../../../modules/targetVideoBidAdapter.js'
|
|
2
|
+
|
|
3
|
+
describe('TargetVideo Bid Adapter', function() {
|
|
4
|
+
const bannerRequest = [{
|
|
5
|
+
bidder: 'targetVideo',
|
|
6
|
+
mediaTypes: {
|
|
7
|
+
banner: {
|
|
8
|
+
sizes: [[300, 250]],
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
params: {
|
|
12
|
+
placementId: 12345,
|
|
13
|
+
}
|
|
14
|
+
}];
|
|
15
|
+
|
|
16
|
+
it('Test the bid validation function', function() {
|
|
17
|
+
const validBid = spec.isBidRequestValid(bannerRequest[0]);
|
|
18
|
+
const invalidBid = spec.isBidRequestValid(null);
|
|
19
|
+
|
|
20
|
+
expect(validBid).to.be.true;
|
|
21
|
+
expect(invalidBid).to.be.false;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('Test the request processing function', function () {
|
|
25
|
+
const request = spec.buildRequests(bannerRequest, bannerRequest[0]);
|
|
26
|
+
expect(request).to.not.be.empty;
|
|
27
|
+
|
|
28
|
+
const payload = JSON.parse(request.data);
|
|
29
|
+
expect(payload).to.not.be.empty;
|
|
30
|
+
expect(payload.sdk).to.deep.equal({
|
|
31
|
+
source: 'pbjs',
|
|
32
|
+
version: '$prebid.version$'
|
|
33
|
+
});
|
|
34
|
+
expect(payload.tags[0].id).to.equal(12345);
|
|
35
|
+
expect(payload.tags[0].gpid).to.equal('targetVideo');
|
|
36
|
+
expect(payload.tags[0].ad_types[0]).to.equal('video');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('Handle nobid responses', function () {
|
|
40
|
+
const responseBody = {
|
|
41
|
+
'version': '0.0.1',
|
|
42
|
+
'tags': [{
|
|
43
|
+
'uuid': '84ab500420319d',
|
|
44
|
+
'tag_id': 5976557,
|
|
45
|
+
'auction_id': '297492697822162468',
|
|
46
|
+
'nobid': true
|
|
47
|
+
}]
|
|
48
|
+
};
|
|
49
|
+
const bidderRequest = null;
|
|
50
|
+
|
|
51
|
+
const bidResponse = spec.interpretResponse({ body: responseBody }, {bidderRequest});
|
|
52
|
+
expect(bidResponse.length).to.equal(0);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('Test the response parsing function', function () {
|
|
56
|
+
const responseBody = {
|
|
57
|
+
'tags': [{
|
|
58
|
+
'uuid': '84ab500420319d',
|
|
59
|
+
'ads': [{
|
|
60
|
+
'ad_type': 'video',
|
|
61
|
+
'cpm': 0.500000,
|
|
62
|
+
'notify_url': 'https://www.target-video.com/',
|
|
63
|
+
'rtb': {
|
|
64
|
+
'video': {
|
|
65
|
+
'player_width': 640,
|
|
66
|
+
'player_height': 360,
|
|
67
|
+
'asset_url': 'https://www.target-video.com/'
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}]
|
|
71
|
+
}]
|
|
72
|
+
};
|
|
73
|
+
const bidderRequest = {
|
|
74
|
+
bids: [{
|
|
75
|
+
bidId: '84ab500420319d',
|
|
76
|
+
adUnitCode: 'code',
|
|
77
|
+
mediaTypes: {
|
|
78
|
+
banner: {
|
|
79
|
+
sizes: [[300, 250]]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}]
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const bidResponse = spec.interpretResponse({ body: responseBody }, {bidderRequest});
|
|
86
|
+
expect(bidResponse).to.not.be.empty;
|
|
87
|
+
|
|
88
|
+
const bid = bidResponse[0];
|
|
89
|
+
expect(bid).to.not.be.empty;
|
|
90
|
+
expect(bid.cpm).to.equal(0.675);
|
|
91
|
+
expect(bid.width).to.equal(300);
|
|
92
|
+
expect(bid.height).to.equal(250);
|
|
93
|
+
expect(bid.ad).to.include('<script src="https://player.target-video.com/custom/targetvideo-banner.js"></script>')
|
|
94
|
+
expect(bid.ad).to.include('initPlayer')
|
|
95
|
+
});
|
|
96
|
+
});
|
|
@@ -519,6 +519,48 @@ describe('TrustXAdapter', function () {
|
|
|
519
519
|
expect(payload.tmax).to.equal(3000);
|
|
520
520
|
getConfigStub.restore();
|
|
521
521
|
});
|
|
522
|
+
it('should contain imp[].ext.data.adserver if available', function() {
|
|
523
|
+
const ortb2Imp = [{
|
|
524
|
+
ext: {
|
|
525
|
+
data: {
|
|
526
|
+
adserver: {
|
|
527
|
+
name: 'ad_server_name',
|
|
528
|
+
adslot: '/111111/slot'
|
|
529
|
+
},
|
|
530
|
+
pbadslot: '/111111/slot'
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}, {
|
|
534
|
+
ext: {
|
|
535
|
+
data: {
|
|
536
|
+
adserver: {
|
|
537
|
+
name: 'ad_server_name',
|
|
538
|
+
adslot: '/222222/slot'
|
|
539
|
+
},
|
|
540
|
+
pbadslot: '/222222/slot'
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}];
|
|
544
|
+
const bidRequestsWithOrtb2Imp = bidRequests.slice(0, 3).map((bid, ind) => {
|
|
545
|
+
return Object.assign(ortb2Imp[ind] ? { ortb2Imp: ortb2Imp[ind] } : {}, bid);
|
|
546
|
+
});
|
|
547
|
+
const request = spec.buildRequests(bidRequestsWithOrtb2Imp, bidderRequest);
|
|
548
|
+
expect(request.data).to.be.an('string');
|
|
549
|
+
const payload = parseRequest(request.data);
|
|
550
|
+
expect(payload.imp[0].ext).to.deep.equal({
|
|
551
|
+
divid: bidRequests[0].adUnitCode,
|
|
552
|
+
data: ortb2Imp[0].ext.data,
|
|
553
|
+
gpid: ortb2Imp[0].ext.data.adserver.adslot
|
|
554
|
+
});
|
|
555
|
+
expect(payload.imp[1].ext).to.deep.equal({
|
|
556
|
+
divid: bidRequests[1].adUnitCode,
|
|
557
|
+
data: ortb2Imp[1].ext.data,
|
|
558
|
+
gpid: ortb2Imp[1].ext.data.adserver.adslot
|
|
559
|
+
});
|
|
560
|
+
expect(payload.imp[2].ext).to.deep.equal({
|
|
561
|
+
divid: bidRequests[2].adUnitCode
|
|
562
|
+
});
|
|
563
|
+
});
|
|
522
564
|
it('all id like request fields must be a string', function () {
|
|
523
565
|
const bidderRequestWithNumId = Object.assign({}, bidderRequest, { bidderRequestId: 123123, auctionId: 345345543 });
|
|
524
566
|
|
|
@@ -49,6 +49,7 @@ import {flocIdSubmodule} from 'modules/flocIdSystem.js'
|
|
|
49
49
|
import {amxIdSubmodule} from '../../../modules/amxIdSystem.js';
|
|
50
50
|
import {akamaiDAPIdSubmodule} from 'modules/akamaiDAPIdSystem.js'
|
|
51
51
|
import {kinessoIdSubmodule} from 'modules/kinessoIdSystem.js'
|
|
52
|
+
import * as mockGpt from '../integration/faker/googletag.js';
|
|
52
53
|
|
|
53
54
|
let assert = require('chai').assert;
|
|
54
55
|
let expect = require('chai').expect;
|
|
@@ -114,15 +115,21 @@ describe('User ID', function () {
|
|
|
114
115
|
|
|
115
116
|
describe('Decorate Ad Units', function () {
|
|
116
117
|
beforeEach(function () {
|
|
118
|
+
// reset mockGpt so nothing else interferes
|
|
119
|
+
mockGpt.disable();
|
|
120
|
+
mockGpt.enable();
|
|
117
121
|
coreStorage.setCookie('pubcid', '', EXPIRED_COOKIE_DATE);
|
|
118
122
|
coreStorage.setCookie('pubcid_alt', 'altpubcid200000', (new Date(Date.now() + 5000).toUTCString()));
|
|
119
123
|
sinon.spy(coreStorage, 'setCookie');
|
|
124
|
+
sinon.stub(utils, 'logWarn');
|
|
120
125
|
});
|
|
121
126
|
|
|
122
127
|
afterEach(function () {
|
|
128
|
+
mockGpt.enable();
|
|
123
129
|
$$PREBID_GLOBAL$$.requestBids.removeAll();
|
|
124
130
|
config.resetConfig();
|
|
125
131
|
coreStorage.setCookie.restore();
|
|
132
|
+
utils.logWarn.restore();
|
|
126
133
|
});
|
|
127
134
|
|
|
128
135
|
after(function () {
|
|
@@ -321,6 +328,50 @@ describe('User ID', function () {
|
|
|
321
328
|
expect((getGlobal()).getUserIdsAsEids()).to.deep.equal(createEidsArray((getGlobal()).getUserIds()));
|
|
322
329
|
});
|
|
323
330
|
|
|
331
|
+
it('should set googletag ppid correctly', function () {
|
|
332
|
+
let adUnits = [getAdUnitMock()];
|
|
333
|
+
setSubmoduleRegistry([amxIdSubmodule, sharedIdSystemSubmodule, identityLinkSubmodule]);
|
|
334
|
+
init(config);
|
|
335
|
+
|
|
336
|
+
config.setConfig({
|
|
337
|
+
userSync: {
|
|
338
|
+
ppid: 'pubcid.org',
|
|
339
|
+
userIds: [
|
|
340
|
+
{ name: 'amxId', value: {'amxId': 'amx-id-value-amx-id-value-amx-id-value'} },
|
|
341
|
+
{ name: 'pubCommonId', value: {'pubcid': 'pubCommon-id-value-pubCommon-id-value'} },
|
|
342
|
+
{ name: 'identityLink', value: {'idl_env': 'identityLink-id-value-identityLink-id-value'} },
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
// before ppid should not be set
|
|
347
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
348
|
+
requestBidsHook(() => {}, {adUnits});
|
|
349
|
+
// ppid should have been set without dashes and stuff
|
|
350
|
+
expect(window.googletag._ppid).to.equal('pubCommonidvaluepubCommonidvalue');
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
it('should log a warning if PPID too big or small', function () {
|
|
354
|
+
let adUnits = [getAdUnitMock()];
|
|
355
|
+
setSubmoduleRegistry([sharedIdSystemSubmodule]);
|
|
356
|
+
init(config);
|
|
357
|
+
|
|
358
|
+
config.setConfig({
|
|
359
|
+
userSync: {
|
|
360
|
+
ppid: 'pubcid.org',
|
|
361
|
+
userIds: [
|
|
362
|
+
{ name: 'pubCommonId', value: {'pubcid': 'pubcommonIdValue'} },
|
|
363
|
+
]
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
// before ppid should not be set
|
|
367
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
368
|
+
requestBidsHook(() => {}, {adUnits});
|
|
369
|
+
// ppid should NOT have been set
|
|
370
|
+
expect(window.googletag._ppid).to.equal(undefined);
|
|
371
|
+
// a warning should have been emmited
|
|
372
|
+
expect(utils.logWarn.args[0][0]).to.exist.and.to.contain('User ID - Googletag Publisher Provided ID for pubcid.org is not between 32 and 150 characters - pubcommonIdValue');
|
|
373
|
+
});
|
|
374
|
+
|
|
324
375
|
it('pbjs.refreshUserIds refreshes', function() {
|
|
325
376
|
let sandbox = sinon.createSandbox();
|
|
326
377
|
|
|
@@ -4,6 +4,7 @@ import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
|
4
4
|
import { INSTREAM } from '../../../src/video';
|
|
5
5
|
|
|
6
6
|
const ENDPOINT = `https://d.vidoomy.com/api/rtbserver/prebid/`;
|
|
7
|
+
const PIXELS = ['/test.png', '/test2.png?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}']
|
|
7
8
|
|
|
8
9
|
describe('vidoomyBidAdapter', function() {
|
|
9
10
|
const adapter = newBidder(spec);
|
|
@@ -101,24 +102,24 @@ describe('vidoomyBidAdapter', function() {
|
|
|
101
102
|
});
|
|
102
103
|
|
|
103
104
|
it('attaches source and version to endpoint URL as query params', function () {
|
|
104
|
-
expect(request[0].url).to.
|
|
105
|
-
expect(request[1].url).to.
|
|
105
|
+
expect(request[0].url).to.equal(ENDPOINT);
|
|
106
|
+
expect(request[1].url).to.equal(ENDPOINT);
|
|
106
107
|
});
|
|
107
108
|
|
|
108
109
|
it('only accepts first width and height sizes', function () {
|
|
109
|
-
expect(request[0].
|
|
110
|
-
expect(request[0].
|
|
111
|
-
expect(request[0].
|
|
112
|
-
expect(request[0].
|
|
113
|
-
expect(request[1].
|
|
114
|
-
expect(request[1].
|
|
110
|
+
expect('' + request[0].data.w).to.equal('300');
|
|
111
|
+
expect('' + request[0].data.h).to.equal('250');
|
|
112
|
+
expect('' + request[0].data.w).to.not.equal('200');
|
|
113
|
+
expect('' + request[0].data.h).to.not.equal('100');
|
|
114
|
+
expect('' + request[1].data.w).to.equal('400');
|
|
115
|
+
expect('' + request[1].data.h).to.equal('225');
|
|
115
116
|
});
|
|
116
117
|
|
|
117
118
|
it('should send id and pid parameters', function () {
|
|
118
|
-
expect(request[0].
|
|
119
|
-
expect(request[0].
|
|
120
|
-
expect(request[1].
|
|
121
|
-
expect(request[1].
|
|
119
|
+
expect('' + request[0].data.id).to.equal('123123');
|
|
120
|
+
expect('' + request[0].data.pid).to.equal('123123');
|
|
121
|
+
expect('' + request[1].data.id).to.equal('456456');
|
|
122
|
+
expect('' + request[1].data.pid).to.equal('456456');
|
|
122
123
|
});
|
|
123
124
|
});
|
|
124
125
|
|
|
@@ -182,7 +183,8 @@ describe('vidoomyBidAdapter', function() {
|
|
|
182
183
|
'networkName': null,
|
|
183
184
|
'primaryCatId': 'IAB3-1',
|
|
184
185
|
'secondaryCatIds': null
|
|
185
|
-
}
|
|
186
|
+
},
|
|
187
|
+
'pixels': PIXELS
|
|
186
188
|
}
|
|
187
189
|
}
|
|
188
190
|
|
|
@@ -206,5 +208,22 @@ describe('vidoomyBidAdapter', function() {
|
|
|
206
208
|
|
|
207
209
|
expect(result[0].requestId).to.equal(serverResponseBanner.body.requestId);
|
|
208
210
|
});
|
|
211
|
+
|
|
212
|
+
it('should sync user cookies', function () {
|
|
213
|
+
const GDPR_CONSENT = 'GDPR_TEST'
|
|
214
|
+
const result = spec.getUserSyncs({
|
|
215
|
+
pixelEnabled: true
|
|
216
|
+
}, [serverResponseBanner], { consentString: GDPR_CONSENT, gdprApplies: 1 }, null)
|
|
217
|
+
expect(result).to.eql([
|
|
218
|
+
{
|
|
219
|
+
type: 'image',
|
|
220
|
+
url: PIXELS[0]
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
type: 'image',
|
|
224
|
+
url: `/test2.png?gdpr=1&gdpr_consent=${GDPR_CONSENT}`
|
|
225
|
+
}
|
|
226
|
+
])
|
|
227
|
+
});
|
|
209
228
|
});
|
|
210
229
|
});
|
|
@@ -3,6 +3,7 @@ import { spec } from 'modules/visxBidAdapter.js';
|
|
|
3
3
|
import { config } from 'src/config.js';
|
|
4
4
|
import { newBidder } from 'src/adapters/bidderFactory.js';
|
|
5
5
|
import * as utils from 'src/utils.js';
|
|
6
|
+
import { makeSlot } from '../integration/faker/googletag.js';
|
|
6
7
|
|
|
7
8
|
describe('VisxAdapter', function () {
|
|
8
9
|
const adapter = newBidder(spec);
|
|
@@ -145,17 +146,17 @@ describe('VisxAdapter', function () {
|
|
|
145
146
|
const expectedFullImps = [{
|
|
146
147
|
'id': '30b31c1838de1e',
|
|
147
148
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
148
|
-
'ext': {'bidder': {'uid': 903535}}
|
|
149
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
|
|
149
150
|
},
|
|
150
151
|
{
|
|
151
152
|
'id': '3150ccb55da321',
|
|
152
153
|
'banner': {'format': [{'w': 728, 'h': 90}, {'w': 300, 'h': 250}]},
|
|
153
|
-
'ext': {'bidder': {'uid': 903535}}
|
|
154
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
|
|
154
155
|
},
|
|
155
156
|
{
|
|
156
157
|
'id': '42dbe3a7168a6a',
|
|
157
158
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
158
|
-
'ext': {'bidder': {'uid': 903536}}
|
|
159
|
+
'ext': {'bidder': {'uid': 903536, 'adslotExists': false}}
|
|
159
160
|
},
|
|
160
161
|
{
|
|
161
162
|
'id': '39a4e3a7168a6a',
|
|
@@ -452,7 +453,122 @@ describe('VisxAdapter', function () {
|
|
|
452
453
|
'imp': [{
|
|
453
454
|
'id': '39aff3a7169a6a',
|
|
454
455
|
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
455
|
-
'ext': {'bidder': {'uid': 903538}}
|
|
456
|
+
'ext': {'bidder': {'uid': 903538, 'adslotExists': false}}
|
|
457
|
+
}],
|
|
458
|
+
'tmax': 3000,
|
|
459
|
+
'cur': ['EUR'],
|
|
460
|
+
'source': {
|
|
461
|
+
'ext': {
|
|
462
|
+
'wrapperType': 'Prebid_js',
|
|
463
|
+
'wrapperVersion': '$prebid.version$'
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
'site': {'page': referrer}
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
describe('buildRequests (check ad slot exists)', function () {
|
|
472
|
+
function parseRequest(url) {
|
|
473
|
+
const res = {};
|
|
474
|
+
(url.split('?')[1] || '').split('&').forEach((it) => {
|
|
475
|
+
const couple = it.split('=');
|
|
476
|
+
res[couple[0]] = decodeURIComponent(couple[1]);
|
|
477
|
+
});
|
|
478
|
+
return res;
|
|
479
|
+
}
|
|
480
|
+
const bidderRequest = {
|
|
481
|
+
timeout: 3000,
|
|
482
|
+
refererInfo: {
|
|
483
|
+
referer: 'https://example.com'
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
const referrer = bidderRequest.refererInfo.referer;
|
|
487
|
+
const bidRequests = [
|
|
488
|
+
{
|
|
489
|
+
'bidder': 'visx',
|
|
490
|
+
'params': {
|
|
491
|
+
'uid': 903535
|
|
492
|
+
},
|
|
493
|
+
'adUnitCode': 'visx-adunit-code-1',
|
|
494
|
+
'sizes': [[300, 250], [300, 600]],
|
|
495
|
+
'bidId': '30b31c1838de1e',
|
|
496
|
+
'bidderRequestId': '22edbae2733bf6',
|
|
497
|
+
'auctionId': '1d1a030790a475',
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
'bidder': 'visx',
|
|
501
|
+
'params': {
|
|
502
|
+
'uid': 903535
|
|
503
|
+
},
|
|
504
|
+
'adUnitCode': 'visx-adunit-code-2',
|
|
505
|
+
'sizes': [[300, 250], [300, 600]],
|
|
506
|
+
'bidId': '30b31c1838de1e',
|
|
507
|
+
'bidderRequestId': '22edbae2733bf6',
|
|
508
|
+
'auctionId': '1d1a030790a475',
|
|
509
|
+
}
|
|
510
|
+
];
|
|
511
|
+
let sandbox;
|
|
512
|
+
let documentStub;
|
|
513
|
+
|
|
514
|
+
before(function() {
|
|
515
|
+
sandbox = sinon.sandbox.create();
|
|
516
|
+
documentStub = sandbox.stub(document, 'getElementById');
|
|
517
|
+
documentStub.withArgs('visx-adunit-code-1').returns({
|
|
518
|
+
id: 'visx-adunit-code-1'
|
|
519
|
+
});
|
|
520
|
+
documentStub.withArgs('visx-adunit-element-2').returns({
|
|
521
|
+
id: 'visx-adunit-element-2'
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
after(function() {
|
|
526
|
+
sandbox.restore();
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
it('should find ad slot by ad unit code as element id', function () {
|
|
530
|
+
const request = spec.buildRequests([bidRequests[0]], bidderRequest);
|
|
531
|
+
const payload = parseRequest(request.url);
|
|
532
|
+
expect(payload).to.be.an('object');
|
|
533
|
+
expect(payload).to.have.property('auids', '903535');
|
|
534
|
+
|
|
535
|
+
const postData = request.data;
|
|
536
|
+
expect(postData).to.be.an('object');
|
|
537
|
+
expect(postData).to.deep.equal({
|
|
538
|
+
'id': '22edbae2733bf6',
|
|
539
|
+
'imp': [{
|
|
540
|
+
'id': '30b31c1838de1e',
|
|
541
|
+
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
542
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
|
|
543
|
+
}],
|
|
544
|
+
'tmax': 3000,
|
|
545
|
+
'cur': ['EUR'],
|
|
546
|
+
'source': {
|
|
547
|
+
'ext': {
|
|
548
|
+
'wrapperType': 'Prebid_js',
|
|
549
|
+
'wrapperVersion': '$prebid.version$'
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
'site': {'page': referrer}
|
|
553
|
+
});
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
it('should find ad slot by ad unit code as adUnitPath', function () {
|
|
557
|
+
makeSlot({code: 'visx-adunit-code-2', divId: 'visx-adunit-element-2'});
|
|
558
|
+
|
|
559
|
+
const request = spec.buildRequests([bidRequests[1]], bidderRequest);
|
|
560
|
+
const payload = parseRequest(request.url);
|
|
561
|
+
expect(payload).to.be.an('object');
|
|
562
|
+
expect(payload).to.have.property('auids', '903535');
|
|
563
|
+
|
|
564
|
+
const postData = request.data;
|
|
565
|
+
expect(postData).to.be.an('object');
|
|
566
|
+
expect(postData).to.deep.equal({
|
|
567
|
+
'id': '22edbae2733bf6',
|
|
568
|
+
'imp': [{
|
|
569
|
+
'id': '30b31c1838de1e',
|
|
570
|
+
'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
|
|
571
|
+
'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
|
|
456
572
|
}],
|
|
457
573
|
'tmax': 3000,
|
|
458
574
|
'cur': ['EUR'],
|
|
@@ -1149,7 +1265,7 @@ describe('VisxAdapter', function () {
|
|
|
1149
1265
|
it('onTimeout', function () {
|
|
1150
1266
|
const data = { timeout: 3000, bidId: '23423', params: { uid: 1 } };
|
|
1151
1267
|
spec.onTimeout(data);
|
|
1152
|
-
expect(utils.triggerPixel.calledOnceWith('https://t.visx.net/track/bid_timeout
|
|
1268
|
+
expect(utils.triggerPixel.calledOnceWith('https://t.visx.net/track/bid_timeout//' + JSON.stringify(data))).to.equal(true);
|
|
1153
1269
|
});
|
|
1154
1270
|
});
|
|
1155
1271
|
|