diff --git a/modules/colossussspBidAdapter.js b/modules/colossussspBidAdapter.js index c1b6e31ff2e..fec0d1b6510 100644 --- a/modules/colossussspBidAdapter.js +++ b/modules/colossussspBidAdapter.js @@ -112,7 +112,6 @@ export const spec = { placementId: bid.params.placement_id, groupId: bid.params.group_id, bidId: bid.bidId, - sizes: bid.mediaTypes[traff].sizes, traffic: traff, eids: [], floor: {} @@ -146,7 +145,12 @@ export const spec = { rtiPartner: 'TDID' }); } + if (traff === BANNER) { + placement.sizes = bid.mediaTypes[BANNER].sizes + } + if (traff === VIDEO) { + placement.sizes = bid.mediaTypes[VIDEO].playerSize; placement.playerSize = bid.mediaTypes[VIDEO].playerSize; placement.minduration = bid.mediaTypes[VIDEO].minduration; placement.maxduration = bid.mediaTypes[VIDEO].maxduration; diff --git a/test/spec/modules/colossussspBidAdapter_spec.js b/test/spec/modules/colossussspBidAdapter_spec.js index 32f02def27e..da050b3af90 100644 --- a/test/spec/modules/colossussspBidAdapter_spec.js +++ b/test/spec/modules/colossussspBidAdapter_spec.js @@ -48,6 +48,10 @@ describe('ColossussspAdapter', function () { auctionStart: 1472239426000, timeout: 5000, uspConsent: '1YN-', + gdprConsent: { + consentString: 'xxx', + gdprApplies: 1 + }, refererInfo: { referer: 'http://www.example.com', reachedTop: true, @@ -87,7 +91,7 @@ describe('ColossussspAdapter', function () { it('Returns valid data if array of bids is valid', function () { let data = serverRequest.data; expect(data).to.be.an('object'); - expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements', 'ccpa'); + expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements', 'ccpa', 'gdpr_consent', 'gdpr_require'); expect(data.deviceWidth).to.be.a('number'); expect(data.deviceHeight).to.be.a('number'); expect(data.language).to.be.a('string'); @@ -108,6 +112,53 @@ describe('ColossussspAdapter', function () { expect(placement.gpid).to.be.an('string'); } }); + + it('Returns valid video data if array of bids is valid', function () { + const videoBid = { + ...bid, + params: { + placement_id: 0, + traffic: 'video', + }, + mediaTypes: { + video: { + playerSize: [[300, 300]], + minduration: 5, + maxduration: 60 + } + } + } + let serverRequest = spec.buildRequests([videoBid], bidderRequest); + + let data = serverRequest.data; + expect(data).to.be.an('object'); + expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements', 'ccpa', 'gdpr_consent', 'gdpr_require'); + expect(data.deviceWidth).to.be.a('number'); + expect(data.deviceHeight).to.be.a('number'); + expect(data.language).to.be.a('string'); + expect(data.secure).to.be.within(0, 1); + expect(data.host).to.be.a('string'); + expect(data.page).to.be.a('string'); + let placements = data['placements']; + for (let i = 0; i < placements.length; i++) { + let placement = placements[i]; + expect(placement).to.have.all.keys('placementId', 'groupId', 'eids', 'bidId', 'traffic', 'schain', 'floor', 'gpid', 'sizes', + 'playerSize', 'minduration', 'maxduration', 'mimes', 'protocols', 'startdelay', 'placement', 'skip', 'skipafter', + 'minbitrate', 'maxbitrate', 'delivery', 'playbackmethod', 'api', 'linearity' + ); + expect(placement.schain).to.be.an('object') + expect(placement.placementId).to.be.a('number'); + expect(placement.bidId).to.be.a('string'); + expect(placement.traffic).to.be.a('string'); + expect(placement.floor).to.be.an('object'); + expect(placement.gpid).to.be.an('string'); + expect(placement.sizes).to.be.an('array'); + expect(placement.playerSize).to.be.an('array'); + expect(placement.minduration).to.be.an('number'); + expect(placement.maxduration).to.be.an('number'); + } + }); + it('Returns empty data if no valid requests are passed', function () { serverRequest = spec.buildRequests([], bidderRequest); let data = serverRequest.data; @@ -187,6 +238,49 @@ describe('ColossussspAdapter', function () { expect(serverResponses).to.be.an('array').that.is.empty; }); }); + + let videoResObject = { + body: [{ + requestId: '123', + mediaType: 'video', + cpm: 0.3, + width: 320, + height: 50, + vastUrl: '', + ttl: 1000, + creativeId: '123asd', + netRevenue: true, + currency: 'USD', + meta: { + advertiserDomains: ['google.com'], + advertiserId: 1234 + } + }] + }; + let videoServerResponses = spec.interpretResponse(videoResObject); + it('Returns an array of valid server video responses if response object is valid', function () { + expect(videoServerResponses).to.be.an('array').that.is.not.empty; + for (let i = 0; i < videoServerResponses.length; i++) { + let dataItem = videoServerResponses[i]; + expect(dataItem).to.have.all.keys('requestId', 'cpm', 'width', 'height', 'vastUrl', 'ttl', 'creativeId', + 'netRevenue', 'currency', 'mediaType', 'meta'); + expect(dataItem.requestId).to.be.a('string'); + expect(dataItem.cpm).to.be.a('number'); + expect(dataItem.width).to.be.a('number'); + expect(dataItem.height).to.be.a('number'); + expect(dataItem.vastUrl).to.be.a('string'); + expect(dataItem.ttl).to.be.a('number'); + expect(dataItem.creativeId).to.be.a('string'); + expect(dataItem.netRevenue).to.be.a('boolean'); + expect(dataItem.currency).to.be.a('string'); + expect(dataItem.mediaType).to.be.a('string'); + expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains'); + } + it('Returns an empty array if invalid response is passed', function () { + videoServerResponses = spec.interpretResponse('invalid_response'); + expect(videoServerResponses).to.be.an('array').that.is.empty; + }); + }); }); describe('onBidWon', function () { @@ -199,13 +293,13 @@ describe('ColossussspAdapter', function () { }) describe('getUserSyncs', function () { - let userSync = spec.getUserSyncs({}, {}, {}, {}); + let userSync = spec.getUserSyncs({}, {}, { consentString: 'xxx', gdprApplies: 1 }, { consentString: '1YN-' }); it('Returns valid URL and type', function () { expect(userSync).to.be.an('array').with.lengthOf(1); expect(userSync[0].type).to.exist; expect(userSync[0].url).to.exist; expect(userSync[0].type).to.be.equal('hms.gif'); - expect(userSync[0].url).to.be.equal('https://sync.colossusssp.com/hms.gif?pbjs=1&coppa=0'); + expect(userSync[0].url).to.be.equal('https://sync.colossusssp.com/hms.gif?pbjs=1&gdpr=0&gdpr_consent=xxx&ccpa_consent=1YN-&coppa=0'); }); }); });