Skip to content

Commit

Permalink
FreepassBidAdaptor. add publisher param, also set site,source (#10303)
Browse files Browse the repository at this point in the history
  • Loading branch information
aplio committed Aug 3, 2023
1 parent c2cf122 commit 74d03dd
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 2 deletions.
21 changes: 20 additions & 1 deletion modules/freepassBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const spec = {

isBidRequestValid(bid) {
logMessage('Validating bid: ', bid);
return !!bid.adUnitCode;
return !(!bid.adUnitCode || !bid.params || !bid.params.publisherId);
},

buildRequests(validBidRequests, bidderRequest) {
Expand All @@ -72,6 +72,25 @@ export const spec = {
data.user = prepareUserInfo(data.user, freepassId);
data.device = prepareDeviceInfo(data.device, freepassId);

// set site.page & site.publisher
data.site = data.site || {};
data.site.publisher = data.site.publisher || {};
// set site.publisher.id. from params.publisherId required
data.site.publisher.id = validBidRequests[0].params.publisherId;
// set site.publisher.domain from params.publisherUrl. optional
data.site.publisher.domain = validBidRequests[0].params?.publisherUrl;

// set source
data.source = data.source || {};
data.source.fd = 0;
data.source.tid = validBidRequests.ortb2?.source?.tid;
data.source.pchain = '';

// set imp.ext
validBidRequests.forEach((bidRequest, index) => {
data.imp[index].tagId = bidRequest.adUnitCode;
});

data.test = validBidRequests[0].test || 0;

logMessage('FreePass BidAdapter augmented ORTB bid request user: ', data.user);
Expand Down
5 changes: 4 additions & 1 deletion modules/freepassBidAdapter.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ This BidAdapter requires the FreePass IdSystem to be configured. Please contact
}
},
bids: [{
bidder: 'freepass'
bidder: 'freepass',
params: {
publisherId: '12345'
}
}]
}
];
Expand Down
44 changes: 44 additions & 0 deletions test/spec/modules/freepassBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ describe('FreePass adapter', function () {
}
},
adUnitCode: 'adunit-code',
params: {
publisherId: 'publisherIdValue'
}
};

it('should return true when required params found', function () {
Expand All @@ -30,6 +33,12 @@ describe('FreePass adapter', function () {
delete localBid.adUnitCode;
expect(spec.isBidRequestValid(localBid)).to.equal(false);
});

it('should return false when params.publisherId is missing', function () {
let localBid = Object.assign({}, bid);
delete localBid.params.publisherId;
expect(spec.isBidRequestValid(localBid)).to.equal(false);
});
});

describe('buildRequests', function () {
Expand All @@ -43,6 +52,10 @@ describe('FreePass adapter', function () {
'userId': '56c4c789-71ce-46f5-989e-9e543f3d5f96',
'commonId': 'commonIdValue'
}
},
'adUnitCode': 'adunit-code',
'params': {
'publisherId': 'publisherIdValue'
}
}];
bidderRequest = {};
Expand Down Expand Up @@ -108,6 +121,33 @@ describe('FreePass adapter', function () {
expect(ortbData.device.ext).to.be.an('object');
expect(ortbData.device.ext.is_accurate_ip).to.equal(0);
});

it('it should add publisher related information w/o publisherUrl', function () {
const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
const ortbData = bidRequest.data;
expect(ortbData.site).to.be.an('object');
expect(ortbData.site.publisher.id).to.equal('publisherIdValue');
// publisher.domain is optional
expect(ortbData.site.publisher.domain).to.be.undefined;
});

it('it should add publisher related information w/ publisherUrl', function () {
const PUBLISHER_URL = 'publisherUrlValue';
let localBidRequests = [Object.assign({}, bidRequests[0])];
localBidRequests[0].params.publisherUrl = PUBLISHER_URL;
const bidRequest = spec.buildRequests(localBidRequests, bidderRequest);
const ortbData = bidRequest.data;
expect(ortbData.site).to.be.an('object');
expect(ortbData.site.publisher.id).to.equal('publisherIdValue');
// publisher.domain is optional. set when given
expect(ortbData.site.publisher.domain).to.equal(PUBLISHER_URL);
});

it('it should imp.tagId from adUnitCode', function () {
const bidRequest = spec.buildRequests(bidRequests, bidderRequest);
const ortbData = bidRequest.data;
expect(ortbData.imp[0].tagId).to.equal('adunit-code');
});
});

describe('interpretResponse', function () {
Expand All @@ -122,6 +162,10 @@ describe('FreePass adapter', function () {
'userId': '56c4c789-71ce-46f5-989e-9e543f3d5f96',
'commonId': 'commonIdValue'
}
},
'adUnitCode': 'adunit-code',
'params': {
'publisherId': 'publisherIdValue'
}
}];
bidderRequest = {};
Expand Down

0 comments on commit 74d03dd

Please sign in to comment.