From 95fd392f2c545eb71fb0b1deb0e20e565b124bc1 Mon Sep 17 00:00:00 2001 From: Demetrio Girardi Date: Thu, 27 Apr 2023 08:26:26 -0700 Subject: [PATCH 1/2] Core & multiple modules: populate ortb2.source.tid --- libraries/ortbConverter/processors/default.js | 7 +++---- modules/prebidServerBidAdapter/ortbConverter.js | 1 - src/adapterManager.js | 2 +- test/spec/modules/ivsBidAdapter_spec.js | 2 -- test/spec/modules/nexx360BidAdapter_spec.js | 1 - test/spec/modules/prebidServerBidAdapter_spec.js | 13 +++++-------- test/spec/modules/scatteredBidAdapter_spec.js | 2 -- test/spec/unit/core/adapterManager_spec.js | 5 +++++ 8 files changed, 14 insertions(+), 19 deletions(-) diff --git a/libraries/ortbConverter/processors/default.js b/libraries/ortbConverter/processors/default.js index 00922608707..8db2c1c461e 100644 --- a/libraries/ortbConverter/processors/default.js +++ b/libraries/ortbConverter/processors/default.js @@ -1,4 +1,4 @@ -import {deepSetValue, mergeDeep} from '../../../src/utils.js'; +import {generateUUID, mergeDeep} from '../../../src/utils.js'; import {bannerResponseProcessor, fillBannerImp} from './banner.js'; import {fillVideoImp, fillVideoResponse} from './video.js'; import {setResponseMediaType} from './mediaType.js'; @@ -21,17 +21,16 @@ export const DEFAULT_PROCESSORS = { fn: clientSectionChecker('ORTB request') }, props: { - // sets request properties id, tmax, test, source.tid + // sets request properties id, tmax, test fn(ortbRequest, bidderRequest) { Object.assign(ortbRequest, { - id: ortbRequest.id || bidderRequest.auctionId, + id: ortbRequest.id || generateUUID(), test: ortbRequest.test || 0 }); const timeout = parseInt(bidderRequest.timeout, 10); if (!isNaN(timeout)) { ortbRequest.tmax = timeout; } - deepSetValue(ortbRequest, 'source.tid', ortbRequest.source?.tid || bidderRequest.auctionId); } } }, diff --git a/modules/prebidServerBidAdapter/ortbConverter.js b/modules/prebidServerBidAdapter/ortbConverter.js index 820c34c66fd..b22ae011d00 100644 --- a/modules/prebidServerBidAdapter/ortbConverter.js +++ b/modules/prebidServerBidAdapter/ortbConverter.js @@ -51,7 +51,6 @@ const PBS_CONVERTER = ortbConverter({ const request = buildRequest(imps, proxyBidderRequest, context); request.tmax = s2sBidRequest.s2sConfig.timeout; - deepSetValue(request, 'source.tid', proxyBidderRequest.auctionId); [request.app, request.dooh, request.site].forEach(section => { if (section && !section.publisher?.id) { diff --git a/src/adapterManager.js b/src/adapterManager.js index 45438f59b55..b40434a6e0e 100644 --- a/src/adapterManager.js +++ b/src/adapterManager.js @@ -252,7 +252,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a const bidderOrtb2 = ortb2Fragments.bidder || {}; function addOrtb2(bidderRequest) { - const fpd = Object.freeze(mergeDeep({}, ortb2, bidderOrtb2[bidderRequest.bidderCode])); + const fpd = Object.freeze(mergeDeep({source: {tid: auctionId}}, ortb2, bidderOrtb2[bidderRequest.bidderCode])); bidderRequest.ortb2 = fpd; bidderRequest.bids.forEach((bid) => bid.ortb2 = fpd); return bidderRequest; diff --git a/test/spec/modules/ivsBidAdapter_spec.js b/test/spec/modules/ivsBidAdapter_spec.js index 79b3d6811f4..819c7480595 100644 --- a/test/spec/modules/ivsBidAdapter_spec.js +++ b/test/spec/modules/ivsBidAdapter_spec.js @@ -112,9 +112,7 @@ describe('ivsBidAdapter', function () { it('should contain the required parameters', function () { const bidRequest = spec.buildRequests(validBidRequests, validBidderRequest); const bidderRequest = bidRequest.data; - assert.equal(bidderRequest.id, validBidderRequest.auctionId); assert.ok(bidderRequest.site); - assert.ok(bidderRequest.source); assert.lengthOf(bidderRequest.imp, 1); }); }); diff --git a/test/spec/modules/nexx360BidAdapter_spec.js b/test/spec/modules/nexx360BidAdapter_spec.js index 9ba3ac0e5a4..7c2cea99a46 100644 --- a/test/spec/modules/nexx360BidAdapter_spec.js +++ b/test/spec/modules/nexx360BidAdapter_spec.js @@ -354,7 +354,6 @@ describe('Nexx360 bid adapter tests', function () { const request = spec.buildRequests(displayBids, bidderRequest); const requestContent = request.data; expect(request).to.have.property('method').and.to.equal('POST'); - expect(requestContent.id).to.be.eql('2e684815-b44e-4e04-b812-56da54adbe74'); expect(requestContent.cur[0]).to.be.eql('USD'); expect(requestContent.imp.length).to.be.eql(2); expect(requestContent.imp[0].id).to.be.eql('44a2706ac3574'); diff --git a/test/spec/modules/prebidServerBidAdapter_spec.js b/test/spec/modules/prebidServerBidAdapter_spec.js index 9516f0402c1..2c3a29c8282 100644 --- a/test/spec/modules/prebidServerBidAdapter_spec.js +++ b/test/spec/modules/prebidServerBidAdapter_spec.js @@ -636,15 +636,12 @@ describe('S2S Adapter', function () { resetSyncedStatus(); }); - it('should set id and source.tid to auction ID', function () { + it('should pick source.tid from FPD', () => { config.setConfig({ s2sConfig: CONFIG }); - - adapter.callBids(OUTSTREAM_VIDEO_REQUEST, BID_REQUESTS, addBidResponse, done, ajax); - - const requestBid = JSON.parse(server.requests[0].requestBody); - expect(requestBid.id).to.equal(BID_REQUESTS[0].auctionId); - expect(requestBid.source.tid).to.equal(BID_REQUESTS[0].auctionId); - }); + adapter.callBids({...REQUEST, ortb2Fragments: {global: {source: {tid: 'mock-tid'}}}}, BID_REQUESTS, addBidResponse, done, ajax); + const req = JSON.parse(server.requests[0].requestBody) + expect(req.source.tid).to.eql('mock-tid'); + }) it('should set tmax to s2sConfig.timeout', () => { const cfg = {...CONFIG, timeout: 123}; diff --git a/test/spec/modules/scatteredBidAdapter_spec.js b/test/spec/modules/scatteredBidAdapter_spec.js index 7f0b13bc07b..1db2d98d326 100644 --- a/test/spec/modules/scatteredBidAdapter_spec.js +++ b/test/spec/modules/scatteredBidAdapter_spec.js @@ -97,9 +97,7 @@ describe('Scattered adapter', function () { it('has the right fields filled', function () { let request = spec.buildRequests(arrayOfValidBidRequests, validBidderRequest); const bidderRequest = request.data; - assert.equal(bidderRequest.id, validBidderRequest.auctionId); assert.ok(bidderRequest.site); - assert.ok(bidderRequest.source); assert.lengthOf(bidderRequest.imp, 1); }); diff --git a/test/spec/unit/core/adapterManager_spec.js b/test/spec/unit/core/adapterManager_spec.js index 8d887474180..9a2acd17998 100644 --- a/test/spec/unit/core/adapterManager_spec.js +++ b/test/spec/unit/core/adapterManager_spec.js @@ -1762,6 +1762,11 @@ describe('adapterManager tests', function () { requests.appnexus.bids.forEach((bid) => expect(bid.ortb2).to.eql(requests.appnexus.ortb2)); }); + it('should populate ortb2.source.tid with auctionId', () => { + const reqs = adapterManager.makeBidRequests(adUnits, 0, 'mockAuctionId', 1000, [], {global: {}}); + expect(reqs[0].ortb2.source.tid).to.equal('mockAuctionId'); + }) + it('should merge in bid-level ortb2Imp with adUnit-level ortb2Imp', () => { const adUnit = { ...adUnits[1], From 9d50ac70694dfbc16b8b820079ff61b40a802df7 Mon Sep 17 00:00:00 2001 From: Demetrio Girardi Date: Thu, 27 Apr 2023 08:41:49 -0700 Subject: [PATCH 2/2] enable codeql for prebid-8 --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9b7c39d53d0..aa413532307 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,10 @@ name: "CodeQL" on: push: - branches: [ "master" ] + branches: [ "master", "prebid-8" ] pull_request: # The branches below must be a subset of the branches above - branches: [ "master" ] + branches: [ "master", "prebid-8" ] schedule: - cron: '22 11 * * 0'