Skip to content

Commit

Permalink
Review changes
Browse files Browse the repository at this point in the history
  • Loading branch information
johwier committed Dec 4, 2023
1 parent eb0d21b commit 993891b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 122 deletions.
49 changes: 12 additions & 37 deletions modules/conversantBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,6 @@ const BIDDER_CODE = 'conversant';
export const storage = getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE});
const URL = 'https://web.hb.ad.cpe.dotomi.com/cvx/client/hb/ortb/25';

function setGDPR(bidderRequest, request) {
// Add GDPR flag and consent string
if (bidderRequest.gdprConsent) {
deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);

if (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') {
deepSetValue(request, 'regs.ext.gdpr', bidderRequest.gdprConsent.gdprApplies ? 1 : 0);
}
}

if (bidderRequest.uspConsent) {
deepSetValue(request, 'regs.ext.us_privacy', bidderRequest.uspConsent);
}
}

function setSiteId(bidRequest, request) {
if (bidRequest.params.site_id) {
if (request.site) {
Expand Down Expand Up @@ -69,17 +54,12 @@ const converter = ortbConverter({
request: function (buildRequest, imps, bidderRequest, context) {
const request = buildRequest(imps, bidderRequest, context);
request.at = 1;
request.cur = 'USD';
if (context.bidRequests) {
const bidRequest = context.bidRequests[0];
setSiteId(bidRequest, request);
setPubcid(bidRequest, request);
}

if (bidderRequest) {
setGDPR(bidderRequest, request);
}

return request;
},
imp(buildImp, bidRequest, context) {
Expand All @@ -96,6 +76,8 @@ const converter = ortbConverter({
},
bidResponse: function (buildBidResponse, bid, context) {
if (!bid.price) return;

// ensure that context.mediaType is set to banner or video otherwise
if (!context.mediaType && context.bidRequest.mediaTypes) {
const [type] = Object.keys(context.bidRequest.mediaTypes);
if (Object.values(ORTB_MTYPES).includes(type)) {
Expand All @@ -105,10 +87,7 @@ const converter = ortbConverter({
const bidResponse = buildBidResponse(bid, context);
return bidResponse;
},
response(buildResponse, bidResponses, ortbResponse, context) {
const response = buildResponse(bidResponses, ortbResponse, context);
return response.bids;
},

overrides: {
imp: {
banner(fillBannerImp, imp, bidRequest, context) {
Expand All @@ -129,11 +108,6 @@ const converter = ortbConverter({
copyOptProperty(bidRequest.params?.api, videoData, 'api');
imp.video = mergeDeep(videoData, imp.video);
fillVideoImp(imp, bidRequest, context);
},
bidfloor(setBidFloor, imp, bidRequest, context) {
const floor = {};
setBidFloor(floor, bidRequest, {...context, currency: 'USD'});
Object.assign(imp, floor);
}
},
}
Expand Down Expand Up @@ -176,18 +150,11 @@ export const spec = {
return true;
},

makeBidUrl: function(bid) {
let bidurl = URL;
if (bid.params.white_label_url) {
bidurl = bid.params.white_label_url;
}
return bidurl;
},
buildRequests: function(bidRequests, bidderRequest) {
const payload = converter.toORTB({bidderRequest, bidRequests});
const result = {
method: 'POST',
url: this.makeBidUrl(bidRequests[0]),
url: makeBidUrl(bidRequests[0]),
data: payload,
};
return result;
Expand Down Expand Up @@ -352,4 +319,12 @@ function getBidFloor(bid) {
return floor
}

function makeBidUrl(bid) {
let bidurl = URL;
if (bid.params.white_label_url) {
bidurl = bid.params.white_label_url;
}
return bidurl;
}

registerBidder(spec);
118 changes: 33 additions & 85 deletions test/spec/modules/conversantBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ describe('Conversant adapter tests', function() {
expect(spec.isBidRequestValid({})).to.be.false;
expect(spec.isBidRequestValid({params: {}})).to.be.false;
expect(spec.isBidRequestValid({params: {site_id: '123'}})).to.be.true;
bidRequests.map((bid) => {
bidRequests.forEach((bid) => {
expect(spec.isBidRequestValid(bid)).to.be.true;
});

Expand All @@ -253,30 +253,34 @@ describe('Conversant adapter tests', function() {
});

describe('Verify buildRequest', function() {
const page = 'http://test.com?a=b&c=123';
// ortbConverter uses the site/device information from the ortb2 object passed in the bidderRequest object
const bidderRequest = {
refererInfo: {
page: page
},
ortb2: {
source: {
tid: 'tid000'
},
site: {
mobile: 0,
page: page,
let page, bidderRequest, request, payload;
before(() => {
page = 'http://test.com?a=b&c=123';
// ortbConverter uses the site/device information from the ortb2 object passed in the bidderRequest object
bidderRequest = {
refererInfo: {
page: page
},
device: {
w: screen.width,
h: screen.height,
dnt: 0,
ua: navigator.userAgent
ortb2: {
source: {
tid: 'tid000'
},
site: {
mobile: 0,
page: page,
},
device: {
w: screen.width,
h: screen.height,
dnt: 0,
ua: navigator.userAgent
}
}
}
};
const request = spec.buildRequests(bidRequests, bidderRequest);
const payload = request.data;
};
request = spec.buildRequests(bidRequests, bidderRequest);
payload = request.data;
});

it('Verify common elements', function() {
expect(request.method).to.equal('POST');
expect(request.url).to.equal('https://web.hb.ad.cpe.dotomi.com/cvx/client/hb/ortb/25');
Expand Down Expand Up @@ -457,9 +461,12 @@ describe('Conversant adapter tests', function() {
});

describe('Verify interpretResponse', function() {
let bid;
const request = spec.buildRequests(bidRequests, {});
const response = spec.interpretResponse(bidResponses, request);
let bid, request, response;

before(() => {
request = spec.buildRequests(bidRequests, {});
response = spec.interpretResponse(bidResponses, request).bids;
});

it('Banner', function() {
expect(response).to.be.an('array').with.lengthOf(4);
Expand Down Expand Up @@ -540,65 +547,6 @@ describe('Conversant adapter tests', function() {
expect(payload).to.not.have.nested.property('user.ext.eids');
});

it('Verify GDPR bid request', function() {
// add gdpr info
const bidderRequest = {
gdprConsent: {
consentString: 'BOJObISOJObISAABAAENAA4AAAAAoAAA',
gdprApplies: true
}
};

const payload = spec.buildRequests(bidRequests, bidderRequest).data;
expect(payload).to.have.deep.nested.property('user.ext.consent', 'BOJObISOJObISAABAAENAA4AAAAAoAAA');
expect(payload).to.have.deep.nested.property('regs.ext.gdpr', 1);
});

it('Verify GDPR bid request without gdprApplies', function() {
// add gdpr info
const bidderRequest = {
gdprConsent: {
consentString: ''
}
};

const payload = spec.buildRequests(bidRequests, bidderRequest).data;
expect(payload).to.have.deep.nested.property('user.ext.consent', '');
expect(payload).to.not.have.deep.nested.property('regs.ext.gdpr');
});

describe('CCPA', function() {
it('should have us_privacy', function() {
const bidderRequest = {
uspConsent: '1NYN'
};

const payload = spec.buildRequests(bidRequests, bidderRequest).data;
expect(payload).to.have.deep.nested.property('regs.ext.us_privacy', '1NYN');
expect(payload).to.not.have.deep.nested.property('regs.ext.gdpr');
});

it('should have no us_privacy', function() {
const payload = spec.buildRequests(bidRequests, {}).data;
expect(payload).to.not.have.deep.nested.property('regs.ext.us_privacy');
});

it('should have both gdpr and us_privacy', function() {
const bidderRequest = {
gdprConsent: {
consentString: 'BOJObISOJObISAABAAENAA4AAAAAoAAA',
gdprApplies: true
},
uspConsent: '1NYN'
};

const payload = spec.buildRequests(bidRequests, bidderRequest).data;
expect(payload).to.have.deep.nested.property('user.ext.consent', 'BOJObISOJObISAABAAENAA4AAAAAoAAA');
expect(payload).to.have.deep.nested.property('regs.ext.gdpr', 1);
expect(payload).to.have.deep.nested.property('regs.ext.us_privacy', '1NYN');
});
});

describe('Extended ID', function() {
it('Verify unifiedid and liveramp', function() {
// clone bidRequests
Expand Down

0 comments on commit 993891b

Please sign in to comment.