diff --git a/modules/bridBidAdapter.js b/modules/bridBidAdapter.js index c822f4d5c80..c9840ad57f8 100644 --- a/modules/bridBidAdapter.js +++ b/modules/bridBidAdapter.js @@ -100,7 +100,9 @@ export const spec = { }; if (bidRequests[0].schain) { - postBody.schain = bidRequests[0].schain; + postBody.source = { + ext: { schain: bidRequests[0].schain } + }; } const params = bid.params; diff --git a/modules/targetVideoBidAdapter.js b/modules/targetVideoBidAdapter.js index b01e3dddab3..c149e80749d 100644 --- a/modules/targetVideoBidAdapter.js +++ b/modules/targetVideoBidAdapter.js @@ -99,7 +99,9 @@ export const spec = { }; if (bidRequests[0].schain) { - payload.schain = bidRequests[0].schain; + payload.source = { + ext: { schain: bidRequests[0].schain } + }; } requests.push(formatRequest({ payload, url: VIDEO_ENDPOINT_URL, bidId })); diff --git a/test/spec/modules/bridBidAdapter_spec.js b/test/spec/modules/bridBidAdapter_spec.js index fdda6d840e8..20a6542707b 100644 --- a/test/spec/modules/bridBidAdapter_spec.js +++ b/test/spec/modules/bridBidAdapter_spec.js @@ -1,5 +1,6 @@ import { spec } from '../../../modules/bridBidAdapter.js' import { SYNC_URL } from '../../../libraries/targetVideoUtils/constants.js'; +import { deepClone } from '../../../src/utils.js'; describe('Brid Bid Adapter', function() { const videoRequest = [{ @@ -37,6 +38,29 @@ describe('Brid Bid Adapter', function() { expect(payload.imp[0].ext.prebid.storedrequest.id).to.equal(12345); }); + it('Test the request schain sending', function() { + const globalSchain = { + ver: '1.0', + complete: 1, + nodes: [{ + asi: 'examplewebsite.com', + sid: '00001', + hp: 1 + }] + }; + + let videoRequestCloned = deepClone(videoRequest); + videoRequestCloned[0].schain = globalSchain; + + const request = spec.buildRequests(videoRequestCloned, videoRequestCloned[0]); + expect(request).to.not.be.empty; + + const payload = JSON.parse(request[0].data); + expect(payload).to.not.be.empty; + expect(payload.source.ext.schain).to.exist; + expect(payload.source.ext.schain).to.deep.equal(globalSchain); + }); + it('Test nobid responses', function () { const responseBody = { 'id': 'test-id', diff --git a/test/spec/modules/targetVideoBidAdapter_spec.js b/test/spec/modules/targetVideoBidAdapter_spec.js index 61df5413862..f2c59d29031 100644 --- a/test/spec/modules/targetVideoBidAdapter_spec.js +++ b/test/spec/modules/targetVideoBidAdapter_spec.js @@ -1,5 +1,6 @@ import { spec } from '../../../modules/targetVideoBidAdapter.js' import { SYNC_URL } from '../../../libraries/targetVideoUtils/constants.js'; +import { deepClone } from '../../../src/utils.js'; describe('TargetVideo Bid Adapter', function() { const bidder = 'targetVideo'; @@ -7,6 +8,10 @@ describe('TargetVideo Bid Adapter', function() { placementId: 12345, }; + const defaultBidderRequest = { + bidderRequestId: 'mock-uuid', + }; + const bannerRequest = [{ bidder, params, @@ -38,7 +43,7 @@ describe('TargetVideo Bid Adapter', function() { }); it('Test the BANNER request processing function', function() { - const request = spec.buildRequests(bannerRequest, bannerRequest[0]); + const request = spec.buildRequests(bannerRequest, defaultBidderRequest); expect(request).to.not.be.empty; const payload = JSON.parse(request.data); @@ -53,7 +58,7 @@ describe('TargetVideo Bid Adapter', function() { }); it('Test the VIDEO request processing function', function() { - const request = spec.buildRequests(videoRequest, videoRequest[0]); + const request = spec.buildRequests(videoRequest, defaultBidderRequest); expect(request).to.not.be.empty; const payload = JSON.parse(request[0].data); @@ -65,6 +70,29 @@ describe('TargetVideo Bid Adapter', function() { expect(payload.imp[0].ext.prebid.storedrequest.id).to.equal(12345); }) + it('Test the VIDEO request schain sending', function() { + const globalSchain = { + ver: '1.0', + complete: 1, + nodes: [{ + asi: 'examplewebsite.com', + sid: '00001', + hp: 1 + }] + }; + + let videoRequestCloned = deepClone(videoRequest); + videoRequestCloned[0].schain = globalSchain; + + const request = spec.buildRequests(videoRequestCloned, defaultBidderRequest); + expect(request).to.not.be.empty; + + const payload = JSON.parse(request[0].data); + expect(payload).to.not.be.empty; + expect(payload.source.ext.schain).to.exist; + expect(payload.source.ext.schain).to.deep.equal(globalSchain); + }); + it('Handle BANNER nobid responses', function() { const responseBody = { 'version': '0.0.1', @@ -170,7 +198,7 @@ describe('TargetVideo Bid Adapter', function() { expect(bid.width).to.equal(640); expect(bid.height).to.equal(480); expect(bid.currency).to.equal('USD'); - }) + }); it('Test BANNER GDPR consent information is present in the request', function() { let consentString = 'BOJ8RZsOJ8RZsABAB8AAAAAZ+A==';