UNPKG

mk9-prebid

Version:

Header Bidding Management Library

212 lines (208 loc) 9.21 kB
import {expect} from 'chai'; import {spec} from 'modules/deepintentBidAdapter.js'; import * as utils from '../../../src/utils.js'; describe('Deepintent adapter', function () { let request; let bannerResponse; beforeEach(function () { request = [ { bidder: 'deepintent', mediaTypes: { banner: { sizes: [[300, 250]] } }, params: { tagId: '100013', w: 728, h: 90, pos: 1, user: { id: 'di_testuid', buyeruid: 'di_testbuyeruid', yob: 2002, gender: 'F' }, custom: { 'position': 'right-box' } } } ]; bannerResponse = { 'body': { 'id': '303e1fae-9677-41e2-9a92-15a23445363f', 'seatbid': [{ 'bid': [{ 'id': '11447bb1-a266-470d-b0d7-8810f5b1b75f', 'impid': 'a7e92b9b-d9db-4de8-9c3f-f90737335445', 'price': 0.6, 'adid': '10001', 'adm': "<span id='deepintent_wrapper_a7e92b9b-d9db-4de8-9c3f-f90737335445' onclick=DeepIntentExecuteClicks('%%CLICK_URL_UNESC%%')><span id='deepintent_wrapper_span_9-1bfd-4764-b4cf-0bb1a74e554e'><a href='https://test-beacon.deepintent.com/click?id=11447bb1-a266-470d-b0d7-8810f5b1b75f&ts=1565252378497&r=http%3A%2F%2Ftest.com' target='_blank'><img src='https://storage.googleapis.com/deepintent-test/adv/10001/asset/a640bcb5c0d5416096290d1c1097a1e9.jpg'></img></a></span><noscript class=\"MOAT-deepintentdisplay440800993657?moatClientLevel1=10001&amp;moatClientLevel2=103389&amp;moatClientLevel3=13665&amp;moatClientSlicer1=washingtonpost.com&amp;zMoatBID=11447bb1-a266-470d-b0d7-8810f5b1b75f&amp;zMoatTIME=1565252378495&amp;zMoatCGRP=530\"></noscript>\r\n<script src=\"https://z.moatads.com/deepintentdisplay440800993657/moatad.js#moatClientLevel1=10001&moatClientLevel2=103389&moatClientLevel3=13665&moatClientSlicer1=washingtonpost.com&zMoatBID=11447bb1-a266-470d-b0d7-8810f5b1b75f&zMoatTIME=1565252378495&zMoatCGRP=530\" type=\"text/javascript\"></script><img src='https://tracking.com' height='0px' width='0px' style='display:none'></img></span><script type='text/javascript'>window.DeepIntentExecuteClicks=window.DeepIntentExecuteClicks||function(e){if(e)for(var n=e.split(','),t=0;t<n.length;t++)(new Image).src=n[t]};</script><img src='https://test-beacon.deepintent.com/impression?id=11447bb1-a266-470d-b0d7-8810f5b1b75f&ts=1565252378497&wp=%%WINNING_PRICE%%' height='0px' width='0px' style='display:none'></img><iframe src='https://cdn.deepintent.com/sync/adx.html' width='0' height='0' style='display:none;'></iframe>", 'adomain': ['deepintent.com'], 'cid': '103389', 'crid': '13665', 'w': 300, 'h': 250, 'dealId': 'dee_12312stdszzsx' }], 'seat': '10000' }], 'bidid': '0b08b09f-aaa1-4c14-b1c8-7debb1a7c1cd' } } }); describe('validations', function () { it('validBid : tagId is passed', function () { let bid = { bidder: 'deepintent', params: { tagId: '1232' } }, isValid = spec.isBidRequestValid(bid); expect(isValid).to.equals(true); }); it('invalidBid : tagId is not passed', function () { let bid = { bidder: 'deepintent', params: { h: 200, w: 300 } }, isValid = spec.isBidRequestValid(bid); expect(isValid).to.equals(false); }); it('invalidBid : tagId is not a string', function () { let bid = { bidder: 'deepintent', params: { tagId: 12345 } }, isValid = spec.isBidRequestValid(bid); expect(isValid).to.equals(false); }); }); describe('request check', function () { it('unmutaable bid request check', function () { let oRequest = utils.deepClone(request), bidRequest = spec.buildRequests(request); expect(request).to.deep.equal(oRequest); }); it('bidder connection check', function () { let bRequest = spec.buildRequests(request); expect(bRequest.url).to.equal('https://prebid.deepintent.com/prebid'); expect(bRequest.method).to.equal('POST'); expect(bRequest.options.contentType).to.equal('application/json'); }); it('bid request check : Device', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.device.ua).to.be.a('string'); expect(data.device.js).to.equal(1); expect(data.device.dnt).to.be.a('number'); expect(data.device.h).to.be.a('number'); expect(data.device.w).to.be.a('number'); }); it('bid request check : Impression', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.at).to.equal(1); // auction type expect(data.imp[0].id).to.equal(request[0].bidId); expect(data.imp[0].tagid).to.equal('100013'); }); it('bid request check : ad size', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.imp[0].banner).to.be.a('object'); expect(data.imp[0].banner.w).to.equal(300); expect(data.imp[0].banner.h).to.equal(250); }); it('bid request check : custom params', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.imp[0].ext).to.be.a('object'); expect(data.imp[0].ext.deepintent.position).to.equal('right-box'); }); it('bid request check: position check', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.imp[0].banner.pos).to.equal(1); }); it('bid request check: displaymanager check', function() { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.imp[0].displaymanager).to.equal('di_prebid'); expect(data.imp[0].displaymanagerver).to.equal('1.0.0'); }); it('bid request check: user object check', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); expect(data.user).to.be.a('object'); expect(data.user.id).to.equal('di_testuid'); expect(data.user.buyeruid).to.equal('di_testbuyeruid'); expect(data.user.yob).to.equal(2002); expect(data.user.gender).to.equal('F'); }); it('bid request check: CCPA Check', function () { let bidRequest = { uspConsent: '1NYN' }; let bRequest = spec.buildRequests(request, bidRequest); let data = JSON.parse(bRequest.data); expect(data.regs.ext.us_privacy).to.equal('1NYN'); let bidRequest2 = {}; let bRequest2 = spec.buildRequests(request, bidRequest2); let data2 = JSON.parse(bRequest2.data); expect(data2.regs).to.equal(undefined); }); it('bid Request check: GDPR Check', function () { let bidRequest = { gdprConsent: { consentString: 'kjfdnidasd123sadsd', gdprApplies: true } }; let bRequest = spec.buildRequests(request, bidRequest); let data = JSON.parse(bRequest.data); expect(data.user.ext.consent).to.equal('kjfdnidasd123sadsd'); expect(data.regs.ext.gdpr).to.equal(1); let bidRequest2 = {}; let bRequest2 = spec.buildRequests(request, bidRequest2); let data2 = JSON.parse(bRequest2.data); expect(data2.regs).to.equal(undefined); expect(data2.user.ext).to.equal(undefined); }); }); describe('user sync check', function () { it('user sync url check', function () { let syncOptions = { iframeEnabled: true }; let userSync = spec.getUserSyncs(syncOptions); expect(userSync).to.be.an('array').with.length.above(0); expect(userSync[0].type).to.equal('iframe'); expect(userSync[0].url).to.equal('https://cdn.deepintent.com/syncpixel.html'); }); }); describe('response check', function () { it('bid response check: valid bid response', function () { let bRequest = spec.buildRequests(request); let data = JSON.parse(bRequest.data); let bResponse = spec.interpretResponse(bannerResponse, request); expect(bResponse).to.be.an('array').with.length.above(0); expect(bResponse[0].requestId).to.equal(bannerResponse.body.seatbid[0].bid[0].impid); expect(bResponse[0].width).to.equal(bannerResponse.body.seatbid[0].bid[0].w); expect(bResponse[0].height).to.equal(bannerResponse.body.seatbid[0].bid[0].h); expect(bResponse[0].currency).to.equal('USD'); expect(bResponse[0].netRevenue).to.equal(false); expect(bResponse[0].meta.advertiserDomains).to.deep.equal(['deepintent.com']); expect(bResponse[0].ttl).to.equal(300); expect(bResponse[0].creativeId).to.equal(bannerResponse.body.seatbid[0].bid[0].crid); expect(bResponse[0].dealId).to.equal(bannerResponse.body.seatbid[0].bid[0].dealId); }); }) });