UNPKG

mk9-prebid

Version:

Header Bidding Management Library

170 lines (162 loc) 5.81 kB
import { expect } from 'chai'; import { spec } from 'modules/proxistoreBidAdapter.js'; import { newBidder } from 'src/adapters/bidderFactory.js'; import { config } from '../../../src/config.js'; const BIDDER_CODE = 'proxistore'; describe('ProxistoreBidAdapter', function () { const consentString = 'BOJ8RZsOJ8RZsABAB8AAAAAZ+A=='; const bidderRequest = { bidderCode: BIDDER_CODE, auctionId: '1025ba77-5463-4877-b0eb-14b205cb9304', bidderRequestId: '10edf38ec1a719', gdprConsent: { apiVersion: 2, gdprApplies: true, consentString: consentString, vendorData: { vendor: { consents: { 418: true, }, }, }, }, }; let bid = { sizes: [[300, 600]], params: { website: 'example.fr', language: 'fr', }, ortb2: { user: { ext: { data: { segments: [], contextual_categories: {} } } }, }, auctionId: 442133079, bidId: 464646969, transactionId: 511916005, }; describe('isBidRequestValid', function () { it('it should be true if required params are presents and there is no info in the local storage', function () { expect(spec.isBidRequestValid(bid)).to.equal(true); }); it('it should be false if the value in the localstorage is less than 5minutes of the actual time', function () { const date = new Date(); date.setMinutes(date.getMinutes() - 1); localStorage.setItem(`PX_NoAds_${bid.params.website}`, date); expect(spec.isBidRequestValid(bid)).to.equal(true); }); it('it should be true if the value in the localstorage is more than 5minutes of the actual time', function () { const date = new Date(); date.setMinutes(date.getMinutes() - 10); localStorage.setItem(`PX_NoAds_${bid.params.website}`, date); expect(spec.isBidRequestValid(bid)).to.equal(true); }); }); describe('buildRequests', function () { const url = { cookieBase: 'https://abs.proxistore.com/v3/rtb/prebid/multi', cookieLess: 'https://abs.cookieless-proxistore.com/v3/rtb/prebid/multi', }; let request = spec.buildRequests([bid], bidderRequest); it('should return a valid object', function () { expect(request).to.be.an('object'); expect(request.method).to.exist; expect(request.url).to.exist; expect(request.data).to.exist; }); it('request method should be POST', function () { expect(request.method).to.equal('POST'); }); it('should have the value consentGiven to true bc we have 418 in the vendor list', function () { const data = JSON.parse(request.data); expect(data.gdpr.consentString).equal( bidderRequest.gdprConsent.consentString ); expect(data.gdpr.applies).to.be.true; expect(data.gdpr.consentGiven).to.be.true; }); it('should contain a valid url', function () { // has gdpr consent expect(request.url).equal(url.cookieBase); // doens't have gpdr consent bidderRequest.gdprConsent.vendorData = null; request = spec.buildRequests([bid], bidderRequest); expect(request.url).equal(url.cookieLess); // api v2 bidderRequest.gdprConsent = { gdprApplies: true, allowAuctionWithoutConsent: true, consentString: consentString, vendorData: { vendor: { consents: { 418: true, }, }, }, apiVersion: 2, }; // has gdpr consent request = spec.buildRequests([bid], bidderRequest); expect(request.url).equal(url.cookieBase); bidderRequest.gdprConsent.vendorData.vendor = {}; request = spec.buildRequests([bid], bidderRequest); expect(request.url).equal(url.cookieLess); }); it('should have a property a length of bids equal to one if there is only one bid', function () { const data = JSON.parse(request.data); expect(data.hasOwnProperty('bids')).to.be.true; expect(data.bids).to.be.an('array'); expect(data.bids.length).equal(1); expect(data.bids[0].hasOwnProperty('id')).to.be.true; expect(data.bids[0].sizes).to.be.an('array'); }); it('should correctly set bidfloor on imp when getfloor in scope', function () { let data = JSON.parse(request.data); expect(data.bids[0].floor).to.be.null; bid.params['bidFloor'] = 1; let req = spec.buildRequests([bid], bidderRequest); data = JSON.parse(req.data); // eslint-disable-next-line no-console console.log(data.bids[0]); expect(data.bids[0].floor).equal(1); bid.getFloor = function () { return { currency: 'USD', floor: 1.0 }; }; req = spec.buildRequests([bid], bidderRequest); data = JSON.parse(req.data); expect(data.bids[0].floor).to.be.null; }); }); describe('interpretResponse', function () { const emptyResponseParam = { body: [] }; const fakeResponseParam = { body: [ { ad: '', cpm: 6.25, creativeId: '22c3290b-8cd5-4cd6-8e8c-28a2de180ccd', currency: 'EUR', dealId: '2021-03_a63ec55e-b9bb-4ca4-b2c9-f456be67e656', height: 600, netRevenue: true, requestId: '3543724f2a033c9', segments: [], ttl: 10, vastUrl: null, vastXml: null, width: 300, }, ], }; it('should always return an array', function () { let response = spec.interpretResponse(emptyResponseParam, bid); expect(response).to.be.an('array'); expect(response.length).equal(0); response = spec.interpretResponse(fakeResponseParam, bid); expect(response).to.be.an('array'); expect(response.length).equal(1); }); }); });