From db668040479806c184610cbbc31209c91cccf2ef Mon Sep 17 00:00:00 2001 From: Jordi Arnau Date: Thu, 3 Aug 2023 17:17:28 +0200 Subject: [PATCH] Tappx Refactor: Optimizing and adding more checkers and tests --- modules/tappxBidAdapter.js | 31 +++++++++++++---------- test/spec/modules/tappxBidAdapter_spec.js | 19 ++++++++++++++ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/modules/tappxBidAdapter.js b/modules/tappxBidAdapter.js index f45f16a0728..531927114c8 100644 --- a/modules/tappxBidAdapter.js +++ b/modules/tappxBidAdapter.js @@ -12,7 +12,7 @@ const BIDDER_CODE = 'tappx'; const GVLID_CODE = 628; const TTL = 360; const CUR = 'USD'; -const TAPPX_BIDDER_VERSION = '0.1.2'; +const TAPPX_BIDDER_VERSION = '0.1.3'; const TYPE_CNN = 'prebidjs'; const LOG_PREFIX = '[TAPPX]: '; const VIDEO_SUPPORT = ['instream', 'outstream']; @@ -146,22 +146,22 @@ function validBasic(bid) { return false; } - if (bid.params.tappxkey == null) { + if (!bid.params.tappxkey) { logWarn(LOG_PREFIX, 'Please review the mandatory Tappxkey parameter.'); return false; } - if (bid.params.host == null) { + if (!bid.params.host) { logWarn(LOG_PREFIX, 'Please review the mandatory Host parameter.'); return false; } - let classicEndpoint = true + let classicEndpoint = true; if ((new RegExp(`^(vz.*|zz.*)\\.*$`, 'i')).test(bid.params.host)) { - classicEndpoint = false + classicEndpoint = false; } - if (classicEndpoint && bid.params.endpoint == null) { + if (classicEndpoint && !bid.params.endpoint) { logWarn(LOG_PREFIX, 'Please review the mandatory endpoint Tappx parameters.'); return false; } @@ -191,7 +191,7 @@ function validMediaType(bid) { */ function interpretBid(serverBid, request) { let bidReturned = { - requestId: request.bids.bidId, + requestId: request.bids?.bidId, cpm: serverBid.price, currency: serverBid.cur ? serverBid.cur : CUR, width: serverBid.w, @@ -206,7 +206,7 @@ function interpretBid(serverBid, request) { if (typeof serverBid.nurl != 'undefined') { bidReturned.nurl = serverBid.nurl } if (typeof serverBid.burl != 'undefined') { bidReturned.burl = serverBid.burl } - if (typeof request.bids.mediaTypes !== 'undefined' && typeof request.bids.mediaTypes.video !== 'undefined') { + if (typeof request.bids?.mediaTypes !== 'undefined' && typeof request.bids?.mediaTypes.video !== 'undefined') { bidReturned.vastXml = serverBid.adm; bidReturned.vastUrl = serverBid.lurl; bidReturned.ad = serverBid.adm; @@ -214,13 +214,12 @@ function interpretBid(serverBid, request) { bidReturned.width = serverBid.w; bidReturned.height = serverBid.h; - if (request.bids.mediaTypes.video.context === 'outstream') { - const url = (serverBid.ext.purl) ? serverBid.ext.purl : false; - if (typeof url === 'undefined') { + if (request.bids?.mediaTypes.video.context === 'outstream') { + if (!serverBid.ext.purl) { logWarn(LOG_PREFIX, 'Error getting player outstream from tappx'); return false; } - bidReturned.renderer = createRenderer(bidReturned, request, url); + bidReturned.renderer = createRenderer(bidReturned, request, serverBid.ext.purl); } } else { bidReturned.ad = serverBid.adm; @@ -228,7 +227,7 @@ function interpretBid(serverBid, request) { } if (typeof bidReturned.adomain !== 'undefined' || bidReturned.adomain !== null) { - bidReturned.meta = { advertiserDomains: request.bids.adomain }; + bidReturned.meta = { advertiserDomains: request.bids?.adomain }; } return bidReturned; @@ -305,6 +304,8 @@ function buildOneRequest(validBidRequests, bidderRequest) { let h; if (bannerMediaType) { + if (!Array.isArray(bannerMediaType.sizes)) { logWarn(LOG_PREFIX, 'Banner sizes array not found.'); } + let banner = {}; w = bannerMediaType.sizes[0][0]; h = bannerMediaType.sizes[0][1]; @@ -342,7 +343,9 @@ function buildOneRequest(validBidRequests, bidderRequest) { } if ((video.w === undefined || video.w == null || video.w <= 0) || - (video.h === undefined || video.h == null || video.h <= 0)) { + (video.h === undefined || video.h == null || video.h <= 0)) { + if (!Array.isArray(videoMediaType.playerSize)) { logWarn(LOG_PREFIX, 'Video playerSize array not found.'); } + w = videoMediaType.playerSize[0][0]; h = videoMediaType.playerSize[0][1]; video.w = w; diff --git a/test/spec/modules/tappxBidAdapter_spec.js b/test/spec/modules/tappxBidAdapter_spec.js index 58a62fb2869..46fac8de1e2 100644 --- a/test/spec/modules/tappxBidAdapter_spec.js +++ b/test/spec/modules/tappxBidAdapter_spec.js @@ -466,4 +466,23 @@ describe('Tappx bid adapter', function () { assert.isString(_extractPageUrl(validBidRequests, bidderRequest)); }); }) + + describe('Empty params values from bid tests', function() { + let validBidRequest = JSON.parse(JSON.stringify(c_BIDREQUEST)); + + it('should return false when tappxkey is empty', function () { + validBidRequest.bids[0].params.tappxkey = ''; + assert.isFalse(spec.isBidRequestValid(validBidRequest.bids[0])); + }); + + it('should return false when host is empty', function () { + validBidRequest.bids[0].params.host = ''; + assert.isFalse(spec.isBidRequestValid(validBidRequest.bids[0])); + }); + + it('should return false when endpoint is empty', function () { + validBidRequest.bids[0].params.endpoint = ''; + assert.isFalse(spec.isBidRequestValid(validBidRequest.bids[0])); + }); + }); });