diff --git a/modules/oneVideoBidAdapter.js b/modules/oneVideoBidAdapter.js
deleted file mode 100644
index aeb19e7c32c..00000000000
--- a/modules/oneVideoBidAdapter.js
+++ /dev/null
@@ -1,408 +0,0 @@
-import { logError, logWarn, parseSizesInput, generateUUID, isFn, logMessage, isPlainObject, isStr, isNumber, isArray } from '../src/utils.js';
-import {registerBidder} from '../src/adapters/bidderFactory.js';
-
-const BIDDER_CODE = 'oneVideo';
-export const spec = {
- code: 'oneVideo',
- VERSION: '3.1.2',
- ENDPOINT: 'https://ads.adaptv.advertising.com/rtb/openrtb?ext_id=',
- E2ETESTENDPOINT: 'https://ads-wc.v.ssp.yahoo.com/rtb/openrtb?ext_id=',
- SYNC_ENDPOINT1: 'https://pixel.advertising.com/ups/57304/sync?gdpr=&gdpr_consent=&_origin=0&redir=true',
- SYNC_ENDPOINT2: 'https://match.adsrvr.org/track/cmf/generic?ttd_pid=adaptv&ttd_tpi=1',
- supportedMediaTypes: ['video', 'banner'],
- gvlid: 25,
- /**
- * Determines whether or not the given bid request is valid.
- *
- * @param {BidRequest} bid The bid params to validate.
- * @return boolean True if this is a valid bid, and false otherwise.
- */
- isBidRequestValid: function(bid) {
- // Bidder code validation
- if (bid.bidder !== BIDDER_CODE || typeof bid.params === 'undefined') {
- return false;
- }
-
- // E2E test skip validations
- if (bid.params && bid.params.video && bid.params.video.e2etest) {
- return true;
- }
- // MediaTypes Video / Banner validation
- if (typeof bid.mediaTypes.video === 'undefined' && typeof bid.mediaTypes.banner === 'undefined') {
- logError('Failed validation: adUnit mediaTypes.video OR mediaTypes.banner not declared');
- return false;
- };
-
- if (bid.mediaTypes.video) {
- // Player size validation
- if (typeof bid.mediaTypes.video.playerSize === 'undefined') {
- if (bid.params.video && (typeof bid.params.video.playerWidth === 'undefined' || typeof bid.params.video.playerHeight === 'undefined')) {
- logError('Failed validation: Player size not declared in either mediaTypes.playerSize OR bid.params.video.plauerWidth & bid.params.video.playerHeight.');
- return false;
- };
- };
- // Mimes validation
- if (typeof bid.mediaTypes.video.mimes === 'undefined') {
- if (!bid.params.video || typeof bid.params.video.mimes === 'undefined') {
- logError('Failed validation: adUnit mediaTypes.mimes OR params.video.mimes not declared');
- return false;
- };
- };
- // Prevend DAP Outstream validation, Banner DAP validation & Multi-Format adUnit support
- if (bid.mediaTypes.video.context === 'outstream' && bid.params.video && bid.params.video.display === 1) {
- logError('Failed validation: Dynamic Ad Placement cannot be used with context Outstream (params.video.display=1)');
- return false;
- };
- };
-
- // Publisher Id (Exchange) validation
- if (typeof bid.params.pubId === 'undefined') {
- logError('Failed validation: Adapter cannot send requests without bid.params.pubId');
- return false;
- }
-
- return true;
- },
- /**
- * Make a server request from the list of BidRequests.
- *
- * @param {validBidRequests[]} - an array of bids
- * @param bidderRequest
- * @return ServerRequest Info describing the request to the server.
- */
- buildRequests: function (bids, bidRequest) {
- let consentData = bidRequest ? bidRequest.gdprConsent : null;
-
- return bids.map(bid => {
- let url = spec.ENDPOINT
- let pubId = bid.params.pubId;
- if (bid.params.video.e2etest) {
- url = spec.E2ETESTENDPOINT;
- pubId = 'HBExchange';
- }
- return {
- method: 'POST',
- /** removing adding local protocal since we
- * can get cookie data only if we call with https. */
- url: url + pubId,
- data: getRequestData(bid, consentData, bidRequest),
- bidRequest: bid
- }
- })
- },
- /**
- * Unpack the response from the server into a list of bids.
- *
- * @param {*} serverResponse A successful response from the server.
- * @return {Bid[]} An array of bids which were nested inside the server.
- */
- interpretResponse: function(response, {bidRequest}) {
- let bid;
- let size;
- let bidResponse;
- try {
- response = response.body;
- bid = response.seatbid[0].bid[0];
- } catch (e) {
- response = null;
- }
- if (!response || !bid || (!bid.adm && !bid.nurl) || !bid.price) {
- logWarn(`No valid bids from ${spec.code} bidder`);
- return [];
- }
- size = getSize(bidRequest.sizes);
- bidResponse = {
- requestId: bidRequest.bidId,
- bidderCode: spec.code,
- cpm: bid.price,
- creativeId: bid.crid,
- width: size.width,
- height: size.height,
- currency: response.cur,
- ttl: (bidRequest.params.video.ttl > 0 && bidRequest.params.video.ttl <= 3600) ? bidRequest.params.video.ttl : 300,
- netRevenue: true,
- adUnitCode: bidRequest.adUnitCode,
- meta: {
- advertiserDomains: bid.adomain
- }
- };
-
- bidResponse.mediaType = (bidRequest.mediaTypes.banner) ? 'banner' : 'video'
-
- if (bid.nurl) {
- bidResponse.vastUrl = bid.nurl;
- } else if (bid.adm && bidRequest.params.video.display === 1) {
- bidResponse.ad = bid.adm
- } else if (bid.adm) {
- bidResponse.vastXml = bid.adm;
- }
- if (bidRequest.mediaTypes.video) {
- bidResponse.renderer = (bidRequest.mediaTypes.video.context === 'outstream') ? newRenderer(bidRequest, bidResponse) : undefined;
- }
-
- return bidResponse;
- },
- /**
- * Register the user sync pixels which should be dropped after the auction.
- *
- * @param {SyncOptions} syncOptions Which user syncs are allowed?
- * @param {ServerResponse[]} serverResponses List of server's responses.
- * @return {UserSync[]} The user syncs which should be dropped.
- */
- getUserSyncs: function(syncOptions, responses, consentData = {}) {
- let {
- gdprApplies,
- consentString = ''
- } = consentData;
-
- if (syncOptions.pixelEnabled) {
- return [{
- type: 'image',
- url: spec.SYNC_ENDPOINT1
- },
- {
- type: 'image',
- url: `https://sync-tm.everesttech.net/upi/pid/m7y5t93k?gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&redir=https%3A%2F%2Fpixel.advertising.com%2Fups%2F55986%2Fsync%3Fuid%3D%24%7BUSER_ID%7D%26_origin%3D0` + encodeURI(`&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}`)
- },
- {
- type: 'image',
- url: spec.SYNC_ENDPOINT2
- }];
- }
- }
-};
-
-function getSize(sizes) {
- let parsedSizes = parseSizesInput(sizes);
- let [ width, height ] = parsedSizes.length ? parsedSizes[0].split('x') : [];
- return {
- width: parseInt(width, 10) || undefined,
- height: parseInt(height, 10) || undefined
- };
-}
-
-function isConsentRequired(consentData) {
- return !!(consentData && consentData.gdprApplies);
-}
-
-function getRequestData(bid, consentData, bidRequest) {
- let loc = bidRequest.refererInfo.referer;
- let page = (bid.params.site && bid.params.site.page) ? (bid.params.site.page) : (loc.href);
- let ref = (bid.params.site && bid.params.site.referrer) ? bid.params.site.referrer : bidRequest.refererInfo.referer;
- let getFloorRequestObject = {
- currency: bid.params.cur || 'USD',
- mediaType: 'video',
- size: '*'
- };
- let bidData = {
- id: generateUUID(),
- at: 2,
- imp: [{
- id: '1',
- secure: isSecure(),
- ext: {
- hb: 1,
- prebidver: '$prebid.version$',
- adapterver: spec.VERSION,
- }
- }],
- site: {
- page: page,
- ref: ref
- },
- device: {
- ua: navigator.userAgent
- },
- tmax: 200
- };
-
- if (bid.params.video.display == undefined || bid.params.video.display != 1) {
- bidData.imp[0].video = {
- linearity: 1
- };
- if (bid.params.video.playerWidth && bid.params.video.playerHeight) {
- bidData.imp[0].video.w = bid.params.video.playerWidth;
- bidData.imp[0].video.h = bid.params.video.playerHeight;
- } else {
- const playerSize = getSize(bid.mediaTypes.video.playerSize);
- bidData.imp[0].video.w = playerSize.width;
- bidData.imp[0].video.h = playerSize.height;
- };
- if (bid.params.video.mimes) {
- bidData.imp[0].video.mimes = bid.params.video.mimes;
- } else {
- bidData.imp[0].video.mimes = bid.mediaTypes.video.mimes;
- };
- if (bid.mediaTypes.video.maxbitrate || bid.params.video.maxbitrate) {
- bidData.imp[0].video.maxbitrate = bid.params.video.maxbitrate || bid.mediaTypes.video.maxbitrate;
- }
- if (bid.mediaTypes.video.maxduration || bid.params.video.maxduration) {
- bidData.imp[0].video.maxduration = bid.params.video.maxduration || bid.mediaTypes.video.maxduration;
- }
- if (bid.mediaTypes.video.minduration || bid.params.video.minduration) {
- bidData.imp[0].video.minduration = bid.params.video.minduration || bid.mediaTypes.video.minduration;
- }
- if (bid.mediaTypes.video.api || bid.params.video.api) {
- bidData.imp[0].video.api = bid.params.video.api || bid.mediaTypes.video.api;
- }
- if (bid.mediaTypes.video.delivery || bid.params.video.delivery) {
- bidData.imp[0].video.delivery = bid.params.video.delivery || bid.mediaTypes.video.delivery;
- }
- if (bid.mediaTypes.video.position || bid.params.video.position) {
- bidData.imp[0].video.pos = bid.params.video.position || bid.mediaTypes.video.position;
- }
- if (bid.mediaTypes.video.playbackmethod || bid.params.video.playbackmethod) {
- bidData.imp[0].video.playbackmethod = bid.params.video.playbackmethod || bid.mediaTypes.video.playbackmethod;
- }
- if (bid.mediaTypes.video.placement || bid.params.video.placement) {
- bidData.imp[0].video.placement = bid.params.video.placement || bid.mediaTypes.video.placement;
- }
- if (bid.params.video.rewarded) {
- bidData.imp[0].ext.rewarded = bid.params.video.rewarded
- }
- if (bid.mediaTypes.video.linearity || bid.params.video.linearity) {
- bidData.imp[0].video.linearity = bid.params.video.linearity || bid.mediaTypes.video.linearity || 1;
- }
- if (bid.mediaTypes.video.protocols || bid.params.video.protocols) {
- bidData.imp[0].video.protocols = bid.params.video.protocols || bid.mediaTypes.video.protocols || [2, 5];
- }
- } else if (bid.params.video.display == 1) {
- getFloorRequestObject.mediaType = 'banner';
- bidData.imp[0].banner = {
- mimes: bid.params.video.mimes,
- w: bid.params.video.playerWidth,
- h: bid.params.video.playerHeight,
- pos: bid.params.video.position,
- };
- if (bid.params.video.placement) {
- bidData.imp[0].banner.placement = bid.params.video.placement
- }
- if (bid.params.video.maxduration) {
- bidData.imp[0].banner.ext = bidData.imp[0].banner.ext || {}
- bidData.imp[0].banner.ext.maxduration = bid.params.video.maxduration
- }
- if (bid.params.video.minduration) {
- bidData.imp[0].banner.ext = bidData.imp[0].banner.ext || {}
- bidData.imp[0].banner.ext.minduration = bid.params.video.minduration
- }
- }
-
- if (isFn(bid.getFloor)) {
- let floorData = bid.getFloor(getFloorRequestObject);
- bidData.imp[0].bidfloor = floorData.floor;
- bidData.cur = floorData.currency;
- } else {
- bidData.imp[0].bidfloor = bid.params.bidfloor;
- };
-
- if (bid.params.video.inventoryid) {
- bidData.imp[0].ext.inventoryid = bid.params.video.inventoryid
- }
- if (bid.params.video.sid) {
- bidData.source = {
- ext: {
- schain: {
- complete: 1,
- nodes: [{
- sid: bid.params.video.sid,
- rid: bidData.id,
- }]
- }
- }
- }
- if (bid.params.video.hp == 1) {
- bidData.source.ext.schain.nodes[0].hp = bid.params.video.hp;
- }
- } else if (bid.schain) {
- bidData.source = {
- ext: {
- schain: bid.schain
- }
- }
- bidData.source.ext.schain.nodes[0].rid = bidData.id;
- }
- if (bid.params.site && bid.params.site.id) {
- bidData.site.id = bid.params.site.id
- }
- if (isConsentRequired(consentData) || (bidRequest && bidRequest.uspConsent)) {
- bidData.regs = {
- ext: {}
- };
- if (isConsentRequired(consentData)) {
- bidData.regs.ext.gdpr = 1
- }
-
- if (consentData && consentData.consentString) {
- bidData.user = {
- ext: {
- consent: consentData.consentString
- }
- };
- }
- // ccpa support
- if (bidRequest && bidRequest.uspConsent) {
- bidData.regs.ext.us_privacy = bidRequest.uspConsent
- }
- }
- if (bid.params.video.e2etest) {
- logMessage('E2E test mode enabled: \n The following parameters are being overridden by e2etest mode:\n* bidfloor:null\n* width:300\n* height:250\n* mimes: video/mp4, application/javascript\n* api:2\n* site.page/ref: verizonmedia.com\n* tmax:1000');
- bidData.imp[0].bidfloor = null;
- bidData.imp[0].video.w = 300;
- bidData.imp[0].video.h = 250;
- bidData.imp[0].video.mimes = ['video/mp4', 'application/javascript'];
- bidData.imp[0].video.api = [2];
- bidData.site.page = 'https://verizonmedia.com';
- bidData.site.ref = 'https://verizonmedia.com';
- bidData.tmax = 1000;
- }
- if (bid.params.video.custom && isPlainObject(bid.params.video.custom)) {
- bidData.imp[0].ext.custom = {};
- for (const key in bid.params.video.custom) {
- if (isStr(bid.params.video.custom[key]) || isNumber(bid.params.video.custom[key])) {
- bidData.imp[0].ext.custom[key] = bid.params.video.custom[key];
- }
- }
- }
- if (bid.params.video.content && isPlainObject(bid.params.video.content)) {
- bidData.site.content = {};
- const contentStringKeys = ['id', 'title', 'series', 'season', 'genre', 'contentrating', 'language'];
- const contentNumberkeys = ['episode', 'prodq', 'context', 'livestream', 'len'];
- const contentArrayKeys = ['cat'];
- const contentObjectKeys = ['ext'];
- for (const contentKey in bid.params.video.content) {
- if (
- (contentStringKeys.indexOf(contentKey) > -1 && isStr(bid.params.video.content[contentKey])) ||
- (contentNumberkeys.indexOf(contentKey) > -1 && isNumber(bid.params.video.content[contentKey])) ||
- (contentObjectKeys.indexOf(contentKey) > -1 && isPlainObject(bid.params.video.content[contentKey])) ||
- (contentArrayKeys.indexOf(contentKey) > -1 && isArray(bid.params.video.content[contentKey]) &&
- bid.params.video.content[contentKey].every(catStr => isStr(catStr)))) {
- bidData.site.content[contentKey] = bid.params.video.content[contentKey];
- } else {
- logMessage('oneVideo bid adapter validation error: ', contentKey, ' is either not supported is OpenRTB V2.5 or value is undefined');
- }
- }
- }
- return bidData;
-}
-
-function isSecure() {
- return document.location.protocol === 'https:';
-}
-/**
- * Create oneVideo renderer
- * @returns {*}
- */
-function newRenderer(bidRequest, bid) {
- if (!bidRequest.renderer) {
- bidRequest.renderer = {};
- bidRequest.renderer.url = 'https://cdn.vidible.tv/prod/hb-outstream-renderer/renderer.js';
- bidRequest.renderer.render = function(bid) {
- setTimeout(function() {
- // eslint-disable-next-line no-undef
- o2PlayerRender(bid);
- }, 700)
- };
- }
-}
-
-registerBidder(spec);
diff --git a/modules/oneVideoBidAdapter.md b/modules/oneVideoBidAdapter.md
deleted file mode 100644
index 149a4b20e2f..00000000000
--- a/modules/oneVideoBidAdapter.md
+++ /dev/null
@@ -1,442 +0,0 @@
-# Overview
-
-**Module Name**: One Video Bidder Adapter
-**Module Type**: Bidder Adapter
-**Maintainer**: deepthi.neeladri.sravana@verizonmedia.com
- adam.browning@verizonmedia.com
-
-# Description
-Connects to Verizon Media's Video SSP (AKA ONE Video / Adap.tv) demand source to fetch bids.
-# Prebid.js V5.0 Support
-The oneVideo adapter now reads `mediaTypes.video` for mandatory parameters such as `playerSize` & `mimes`.
-Note: You can use the `bid.params.video` object to specify explicit overrides for whatever is declared in `mediaTypes.video`.
-Important: You must pass `bid.params.video = {}` as bare minimum for the adapter to work.
-# Integration Examples:
-
-## Instream Video adUnit using mediaTypes.video
-*Note:* By default, the adapter will read the mandatory parameters from mediaTypes.video.
-*Note:* The Video SSP ad server will respond with an VAST XML to load into your defined player.
-```
- var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'instream',
- playerSize: [480, 640],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2,5],
- api: [2],
- position: 1,
- delivery: [2],
- minduration: 10,
- maxduration: 30,
- placement: 1,
- playbackmethod: [1,5],
- protocols: [2,5],
- api: [2],
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- sid: YOUR_VSSP_ORG_ID,
- hp: 1,
- rewarded: 1,
- inventoryid: 123,
- ttl: 300,
- custom: {
- key1: "value1",
- key2: 123345
- }
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchange'
- }
- }
- ]
- }
- ]
-```
-## Instream Video adUnit using params.video overrides
-*Note:* If the mandatory parameters are not specified in mediaTypes.video the adapter will read check to see if overrides are set in params.video. Decalring values using params.video will always override the settings in mediaTypes.video.
-*Note:* The Video SSP ad server will respond with an VAST XML to load into your defined player.
-```
- var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'instream',
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- playerWidth: 640,
- playerHeight: 480,
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2,5],
- api: [2],
- position: 1,
- delivery: [2],
- minduration: 10,
- maxduration: 30,
- placement: 1,
- playbackmethod: [1,5],
- protocols: [2,5],
- api: [2],
- sid: YOUR_VSSP_ORG_ID,
- hp: 1,
- rewarded: 1,
- inventoryid: 123,
- ttl: 300,
- custom: {
- key1: "value1",
- key2: 123345
- }
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchange'
- }
- }
- ]
- }
- ]
-```
-## Outstream Video adUnit example & parameters
-*Note:* The Video SSP ad server will load it's own Outstream Renderer (player) as a fallback if no player is defined on the publisher page. The Outstream player will inject into the div id that has an identical adUnit code.
-```
- var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'outstream',
- playerSize: [480, 640],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2,5],
- api: [2],
- position: 1,
- delivery: [2],
- minduration: 10,
- maxduration: 30,
- placement: 1,
- playbackmethod: [1,5],
- protocols: [2,5],
- api: [2],
-
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- sid: YOUR_VSSP_ORG_ID,
- hp: 1,
- rewarded: 1,
- ttl: 250
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchange'
- }
- }
- ]
- }
- ]
-```
-
-## S2S / Video: Dynamic Ad Placement (DAP) adUnit example & parameters
-*Note:* The Video SSP ad server will respond with HTML embed tag to be injected into an iFrame you create.
-```
- var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: "instream",
- playerSize: [480, 640],
- mimes: ['video/mp4', 'application/javascript'],
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- ttl: 250
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchangeDAP'
- }
- }
- ]
- }
-]
-```
-## Prebid.js / Banner: Dynamic Ad Placement (DAP) adUnit example & parameters
-*Note:* The Video SSP ad server will respond with HTML embed tag to be injected into an iFrame created by Google Ad Manager (GAM).
-```
- var adUnits = [
- {
- code: 'banner-1',
- mediaTypes: {
- banner: {
- sizes: [300, 250]
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- playerWidth: 300,
- playerHeight: 250,
- mimes: ['video/mp4', 'application/javascript'],
- display: 1
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchangeDAP'
- }
- }
- ]
- }
-]
-```
-
-# End 2 End Testing Mode
-By passing bid.params.video.e2etest = true you will be able to receive a test creative when connecting via VPN location U.S West Coast. This will allow you to trubleshoot how your player/ad-server parses and uses the VAST XML response.
-This automatically sets default values for the outbound bid-request to respond from our test exchange.
-No need to override the site/ref urls or change your pubId
-```
-var adUnits = [
- {
- code: 'video-1',
- mediaTypes: {
- video: {
- context: "instream",
- playerSize: [480, 640]
- mimes: ['video/mp4', 'application/javascript'],
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- e2etest: true
- }
- }
- }
- ]
- }
-]
-```
-
-# Supply Chain Object Support
-The oneVideoBidAdapter supports 2 methods for passing/creating an schain object.
-1. By passing your Video SSP Org ID in the bid.video.params.sid - The adapter will create a new schain object and our ad-server will fill in the data for you.
-2. Using the Prebid Supply Chain Object Module - The adapter will capture the schain object
-*Note:* You cannot pass both schain object and bid.video.params.sid together. Option 1 will always be the default.
-
-## Create new schain using bid.video.params.sid
-sid = your Video SSP Organization ID.
-This is for direct publishers only.
-```
-var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'instream',
- playerSize: [480, 640],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2,5],
- api: [2],
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- sid: 123456
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchange'
- }
- }
- ]
- }
- ]
-```
-
-## Pass global schain using pbjs.setConfig(SCHAIN_OBJECT)
-For both Authorized resellers and direct publishers.
-```
-pbjs.setConfig({
- "schain": {
- "validation": "strict",
- "config": {
- "ver": "1.0",
- "complete": 1,
- "nodes": [{
- "asi": "some-platform.com",
- "sid": "111111",
- "hp": 1
- }]
- }
- }
-});
-
-var adUnits = [
- {
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'instream',
- playerSize: [480, 640],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2,5],
- api: [2],
- }
- },
- bids: [
- {
- bidder: 'oneVideo',
- params: {
- video: {
- ttl: 250
- },
- bidfloor: 0.5,
- site: {
- id: 1,
- page: 'https://verizonmedia.com',
- referrer: 'https://verizonmedia.com'
- },
- pubId: 'HBExchange'
- }
- }
- ]
- }
- ]
-```
-# Content Object Support
-The oneVideoBidAdapter supports passing of OpenRTB V2.5 Content Object.
-
-```
-const adUnits = [{
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'outstream',
- playerSize: [640, 480],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2, 5],
- api: [1, 2],
- }
- },
- bids: [{
- bidder: 'oneVideo',
- params: {
- video: {
- ttl: 300,
- content: {
- id: "1234",
- title: "Title",
- series: "Series",
- season: "Season",
- episode: 1
- cat: [
- "IAB1",
- "IAB1-1",
- "IAB1-2",
- "IAB2",
- "IAB2-1"
- ],
- genre: "Genre",
- contentrating: "C-Rating",
- language: "EN",
- prodq: 1,
- context: 1,
- livestream: 0,
- len: 360,
- ext: {
- network: "ext-network",
- channel: "ext-channel"
- }
- }
- },
- bidfloor: 0.5,
- pubId: 'HBExchange'
- }
- }
- }]
- }]
-```
-
-
-# TTL Support
-The oneVideoBidAdapter supports passing of "Time To Live" (ttl) that indicates to prebid chache for how long to keep the chaced winning bid alive.
-Value is Number in seconds
-You can enter any number between 1 - 3600 (seconds)
-```
-const adUnits = [{
- code: 'video1',
- mediaTypes: {
- video: {
- context: 'outstream',
- playerSize: [640, 480],
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2, 5],
- api: [1, 2],
- }
- },
- bids: [{
- bidder: 'oneVideo',
- params: {
- video: {
- ttl: 300
- },
- bidfloor: 0.5,
- pubId: 'HBExchange'
- }
- }]
- }]
-```
-
diff --git a/test/spec/modules/oneVideoBidAdapter_spec.js b/test/spec/modules/oneVideoBidAdapter_spec.js
deleted file mode 100644
index d6dacb44529..00000000000
--- a/test/spec/modules/oneVideoBidAdapter_spec.js
+++ /dev/null
@@ -1,1046 +0,0 @@
-import { expect } from 'chai';
-import { spec } from 'modules/oneVideoBidAdapter.js';
-
-describe('OneVideoBidAdapter', function () {
- let bidRequest;
- let bidderRequest = {
- 'bidderCode': 'oneVideo',
- 'auctionId': 'e158486f-8c7f-472f-94ce-b0cbfbb50ab4',
- 'bidderRequestId': '1e498b84fffc39',
- 'bids': bidRequest,
- 'auctionStart': 1520001292880,
- 'timeout': 3000,
- 'start': 1520001292884,
- 'doneCbCallCount': 0,
- 'refererInfo': {
- 'numIframes': 1,
- 'reachedTop': true,
- 'referer': 'test.com'
- }
- };
- let mockConfig;
-
- beforeEach(function () {
- bidRequest = {
- mediaTypes: {
- video: {
- context: 'instream',
- playerSize: [640, 480]
- }
- },
- bidder: 'oneVideo',
- sizes: [640, 480],
- bidId: '30b3efwfwe1e',
- adUnitCode: 'video1',
- params: {
- video: {
- playerWidth: 640,
- playerHeight: 480,
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2, 5],
- api: [2],
- position: 1,
- delivery: [2],
- playbackmethod: [1, 5],
- sid: 134,
- rewarded: 1,
- placement: 1,
- hp: 1,
- inventoryid: 123
- },
- site: {
- id: 1,
- page: 'https://news.yahoo.com/portfolios',
- referrer: 'http://www.yahoo.com'
- },
- pubId: 'brxd'
- }
- };
- });
-
- describe('spec.isBidRequestValid', function () {
- it('should return false when mediaTypes video OR banner not declared', function () {
- bidRequest.mediaTypes = {};
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- });
-
- it('should return true (skip validations) when e2etest = true', function () {
- bidRequest.params.video = {
- e2etest: true
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return true when mediaTypes.video has all mandatory params', function () {
- bidRequest.mediaTypes.video = {
- context: 'instream',
- playerSize: [640, 480],
- mimes: ['video/mp4', 'application/javascript'],
- }
- bidRequest.params.video = {};
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return true when params.video has all override params instead of mediaTypes.video', function () {
- bidRequest.mediaTypes.video = {
- context: 'instream'
- };
- bidRequest.params.video = {
- playerWidth: 640,
- playerHeight: 480,
- mimes: ['video/mp4', 'application/javascript']
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return true when playerWidth & playerHeight are passed in params.video', function () {
- bidRequest.mediaTypes.video = {
- context: 'instream',
- mimes: ['video/mp4', 'application/javascript']
- };
- bidRequest.params.video = {
- playerWidth: 640,
- playerHeight: 480,
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return true when mimes is passed in params.video', function () {
- bidRequest.mediaTypes.video = {
- context: 'instream',
- playerSizes: [640, 480]
- };
- bidRequest.video = {
- mimes: ['video/mp4', 'application/javascript']
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return false when both mediaTypes.video and params.video Objects are missing', function () {
- bidRequest.mediaTypes = {};
- bidRequest.params = {
- pubId: 'brxd'
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- });
-
- it('should return false when both mediaTypes.video and params.video are missing mimes and player size', function () {
- bidRequest.mediaTypes = {
- video: {
- context: 'instream'
- }
- };
- bidRequest.params = {
- pubId: 'brxd'
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- });
-
- it('should return false when the "pubId" param is missing', function () {
- bidRequest.params = {
- video: {
- playerWidth: 480,
- playerHeight: 640,
- mimes: ['video/mp4', 'application/javascript'],
- }
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- });
-
- it('should return true when the "pubId" param exists', function () {
- bidRequest.mediaTypes = {
- video: {
- playerSizes: [640, 480],
- mimes: ['video/mp4', 'application/javascript']
- },
- pubId: 'brxd'
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- });
-
- it('should return false when no bid params are passed', function () {
- bidRequest.params = {};
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- });
-
- it('should return false when the mediaType is "banner" and display="undefined" (DAP 3P)', function () {
- bidRequest = {
- mediaTypes: {
- banner: {
- sizes: [640, 480]
- }
- }
- }
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- })
-
- it('should return true when the mediaType is "banner" and display=1 (DAP 3P)', function () {
- bidRequest = {
- mediaTypes: {
- banner: {
- sizes: [640, 480]
- }
- },
- bidder: 'oneVideo',
- sizes: [640, 480],
- bidId: '30b3efwfwe1e',
- adUnitCode: 'video1',
- params: {
- video: {
- playerWidth: 640,
- playerHeight: 480,
- mimes: ['video/mp4', 'application/javascript'],
- protocols: [2, 5],
- api: [2],
- position: 1,
- delivery: [2],
- playbackmethod: [1, 5],
- sid: 134,
- rewarded: 1,
- placement: 1,
- inventoryid: 123,
- display: 1
- },
- site: {
- id: 1,
- page: 'https://news.yahoo.com/portfolios',
- referrer: 'http://www.yahoo.com'
- },
- pubId: 'brxd'
- }
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- })
-
- it('should return false when the mediaType is "video" and context="outstream" and display=1 (DAP 3P)', function () {
- bidRequest = {
- mediaTypes: {
- video: {
- context: 'outstream',
- playerSize: [640, 480]
- }
- },
- params: {
- video: {
- display: 1
- }
- }
- }
- expect(spec.isBidRequestValid(bidRequest)).to.equal(false);
- })
-
- it('should return true for Multi-Format AdUnits, when the mediaTypes are both "banner" and "video" (Multi-Format Support)', function () {
- bidRequest = {
- mediaTypes: {
- banner: {
- sizes: [640, 480]
- },
- video: {
- context: 'outstream',
- playerSize: [640, 480],
- mimes: ['video/mp4', 'application/javascript']
- }
- },
- bidder: 'oneVideo',
- sizes: [640, 480],
- bidId: '30b3efwfwe1e',
- adUnitCode: 'video1',
- params: {
- video: {
- protocols: [2, 5],
- api: [2]
- },
- site: {
- page: 'https://news.yahoo.com/portfolios',
- referrer: 'http://www.yahoo.com'
- },
- pubId: 'brxd'
- }
- };
- expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
- })
- });
-
- describe('spec.buildRequests', function () {
- it('should create a POST request for every bid', function () {
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- expect(requests[0].method).to.equal('POST');
- expect(requests[0].url).to.equal(spec.ENDPOINT + bidRequest.params.pubId);
- });
-
- it('should attach the bid request object', function () {
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- expect(requests[0].bidRequest).to.equal(bidRequest);
- });
-
- it('should attach request data', function () {
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- const [width, height] = bidRequest.sizes;
- const placement = bidRequest.params.video.placement;
- const rewarded = bidRequest.params.video.rewarded;
- const inventoryid = bidRequest.params.video.inventoryid;
- const VERSION = '3.1.2';
- expect(data.imp[0].video.w).to.equal(width);
- expect(data.imp[0].video.h).to.equal(height);
- expect(data.imp[0].bidfloor).to.equal(bidRequest.params.bidfloor);
- expect(data.imp[0].ext.rewarded).to.equal(rewarded);
- expect(data.imp[0].video.placement).to.equal(placement);
- expect(data.imp[0].ext.inventoryid).to.equal(inventoryid);
- expect(data.imp[0].ext.prebidver).to.equal('$prebid.version$');
- expect(data.imp[0].ext.adapterver).to.equal(VERSION);
- });
-
- it('must parse bid size from a nested array', function () {
- const width = 640;
- const height = 480;
- bidRequest.sizes = [
- [width, height]
- ];
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].video.w).to.equal(width);
- expect(data.imp[0].video.h).to.equal(height);
- });
-
- it('should set pubId to HBExchange when bid.params.video.e2etest = true', function () {
- bidRequest.params.video.e2etest = true;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- expect(requests[0].method).to.equal('POST');
- expect(requests[0].url).to.equal(spec.E2ETESTENDPOINT + 'HBExchange');
- });
-
- it('should attach End 2 End test data', function () {
- bidRequest.params.video.e2etest = true;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].bidfloor).to.not.exist;
- expect(data.imp[0].video.w).to.equal(300);
- expect(data.imp[0].video.h).to.equal(250);
- expect(data.imp[0].video.mimes).to.eql(['video/mp4', 'application/javascript']);
- expect(data.imp[0].video.api).to.eql([2]);
- expect(data.site.page).to.equal('https://verizonmedia.com');
- expect(data.site.ref).to.equal('https://verizonmedia.com');
- expect(data.tmax).to.equal(1000);
- });
-
- it('it should create new schain and send it if video.params.sid exists', function () {
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- const schain = data.source.ext.schain;
- expect(schain.nodes.length).to.equal(1);
- expect(schain.nodes[0].sid).to.equal(bidRequest.params.video.sid);
- expect(schain.nodes[0].rid).to.equal(data.id);
- })
-
- it('should send Global or Bidder specific schain if sid is not passed in video.params.sid', function () {
- bidRequest.params.video.sid = null;
- const globalSchain = {
- ver: '1.0',
- complete: 1,
- nodes: [{
- asi: 'some-platform.com',
- sid: '111111',
- rid: bidRequest.id,
- hp: 1
- }]
- };
- bidRequest.schain = globalSchain;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- const schain = data.source.ext.schain;
- expect(schain.nodes.length).to.equal(1);
- expect(schain).to.equal(globalSchain);
- });
-
- it('should ignore Global or Bidder specific schain if video.params.sid exists and send new schain', function () {
- const globalSchain = {
- ver: '1.0',
- complete: 1,
- nodes: [{
- asi: 'some-platform.com',
- sid: '111111',
- rid: bidRequest.id,
- hp: 1
- }]
- };
- bidRequest.schain = globalSchain;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- const schain = data.source.ext.schain;
- expect(schain.nodes.length).to.equal(1);
- expect(schain.complete).to.equal(1);
- expect(schain.nodes[0].sid).to.equal(bidRequest.params.video.sid);
- expect(schain.nodes[0].rid).to.equal(data.id);
- })
-
- it('should append hp to new schain created by sid if video.params.hp is passed', function () {
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- const schain = data.source.ext.schain;
- expect(schain.nodes[0].hp).to.equal(bidRequest.params.video.hp);
- })
- it('should not accept key values pairs if custom is Undefined ', function () {
- bidRequest.params.video.custom = null;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.undefined;
- });
- it('should not accept key values pairs if custom is Array ', function () {
- bidRequest.params.video.custom = [];
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.undefined;
- });
- it('should not accept key values pairs if custom is Number ', function () {
- bidRequest.params.video.custom = 123456;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.undefined;
- });
- it('should not accept key values pairs if custom is String ', function () {
- bidRequest.params.video.custom = 'keyValuePairs';
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.undefined;
- });
- it('should not accept key values pairs if custom is Boolean ', function () {
- bidRequest.params.video.custom = true;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.undefined;
- });
- it('should accept key values pairs if custom is Object ', function () {
- bidRequest.params.video.custom = {};
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.imp[0].ext.custom).to.be.a('object');
- });
- it('should accept key values pairs if custom is Object ', function () {
- bidRequest.params.video.custom = {
- key1: 'value1',
- key2: 'value2',
- key3: 4444444,
- key4: false,
- key5: {
- nested: 'object'
- },
- key6: ['string', 2, true, null],
- key7: null,
- key8: undefined
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const custom = requests[0].data.imp[0].ext.custom;
- expect(custom['key1']).to.be.a('string');
- expect(custom['key2']).to.be.a('string');
- expect(custom['key3']).to.be.a('number');
- expect(custom['key4']).to.not.exist;
- expect(custom['key5']).to.not.exist;
- expect(custom['key6']).to.not.exist;
- expect(custom['key7']).to.not.exist;
- expect(custom['key8']).to.not.exist;
- });
-
- describe('content object validations', function () {
- it('should not accept content object if value is Undefined ', function () {
- bidRequest.params.video.content = null;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.undefined;
- });
- it('should not accept content object if value is is Array ', function () {
- bidRequest.params.video.content = [];
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.undefined;
- });
- it('should not accept content object if value is Number ', function () {
- bidRequest.params.video.content = 123456;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.undefined;
- });
- it('should not accept content object if value is String ', function () {
- bidRequest.params.video.content = 'keyValuePairs';
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.undefined;
- });
- it('should not accept content object if value is Boolean ', function () {
- bidRequest.params.video.content = true;
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.undefined;
- });
- it('should accept content object if value is Object ', function () {
- bidRequest.params.video.content = {};
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.a('object');
- });
-
- it('should not append unsupported content object keys', function () {
- bidRequest.params.video.content = {
- fake: 'news',
- unreal: 'param',
- counterfit: 'data'
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.empty;
- });
-
- it('should not append content string parameters if value is not string ', function () {
- bidRequest.params.video.content = {
- id: 1234,
- title: ['Title'],
- series: ['Series'],
- season: ['Season'],
- genre: ['Genre'],
- contentrating: {1: 'C-Rating'},
- language: {1: 'EN'}
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.a('object');
- expect(data.site.content).to.be.empty
- });
- it('should not append content Number parameters if value is not Number ', function () {
- bidRequest.params.video.content = {
- episode: '1',
- context: 'context',
- livestream: {0: 'stream'},
- len: [360],
- prodq: [1],
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.a('object');
- expect(data.site.content).to.be.empty
- });
- it('should not append content Array parameters if value is not Array ', function () {
- bidRequest.params.video.content = {
- cat: 'categories',
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.a('object');
- expect(data.site.content).to.be.empty
- });
- it('should not append content ext if value is not Object ', function () {
- bidRequest.params.video.content = {
- ext: 'content.ext',
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.be.a('object');
- expect(data.site.content).to.be.empty
- });
- it('should append supported parameters if value match validations ', function () {
- bidRequest.params.video.content = {
- id: '1234',
- title: 'Title',
- series: 'Series',
- season: 'Season',
- cat: [
- 'IAB1'
- ],
- genre: 'Genre',
- contentrating: 'C-Rating',
- language: 'EN',
- episode: 1,
- prodq: 1,
- context: 1,
- livestream: 0,
- len: 360,
- ext: {}
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.site.content).to.deep.equal(bidRequest.params.video.content);
- });
- });
- });
-
- describe('price floor module validations', function () {
- beforeEach(function () {
- bidRequest.getFloor = (floorObj) => {
- return {
- floor: bidRequest.floors.values[floorObj.mediaType + '|640x480'],
- currency: floorObj.currency,
- mediaType: floorObj.mediaType
- }
- }
- });
-
- it('should get bidfloor from getFloor method', function () {
- bidRequest.params.cur = 'EUR';
- bidRequest.floors = {
- currency: 'EUR',
- values: {
- 'video|640x480': 5.55
- }
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.cur).is.a('string');
- expect(data.cur).to.equal('EUR');
- expect(data.imp[0].bidfloor).is.a('number');
- expect(data.imp[0].bidfloor).to.equal(5.55);
- });
-
- it('should use adUnit/module currency & floor instead of bid.params.bidfloor', function () {
- bidRequest.params.cur = 'EUR';
- bidRequest.params.bidfloor = 3.33;
- bidRequest.floors = {
- currency: 'EUR',
- values: {
- 'video|640x480': 5.55
- }
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.cur).is.a('string');
- expect(data.cur).to.equal('EUR');
- expect(data.imp[0].bidfloor).is.a('number');
- expect(data.imp[0].bidfloor).to.equal(5.55);
- });
-
- it('should load banner instead of video floor when DAP is active bid.params.video.display = 1', function () {
- bidRequest.params.video.display = 1;
- bidRequest.params.cur = 'EUR';
- bidRequest.mediaTypes = {
- banner: {
- sizes: [
- [640, 480]
- ]
- }
- };
- bidRequest.floors = {
- currency: 'EUR',
- values: {
- 'banner|640x480': 2.22,
- 'video|640x480': 9.99
- }
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.cur).is.a('string');
- expect(data.cur).to.equal('EUR');
- expect(data.imp[0].bidfloor).is.a('number');
- expect(data.imp[0].bidfloor).to.equal(2.22);
- })
-
- it('should load video floor when multi-format adUnit is present', function () {
- bidRequest.params.cur = 'EUR';
- bidRequest.mediaTypes.banner = {
- sizes: [
- [640, 480]
- ]
- };
- bidRequest.floors = {
- currency: 'EUR',
- values: {
- 'banner|640x480': 2.22,
- 'video|640x480': 9.99
- }
- };
- const requests = spec.buildRequests([bidRequest], bidderRequest);
- const data = requests[0].data;
- expect(data.cur).is.a('string');
- expect(data.cur).to.equal('EUR');
- expect(data.imp[0].bidfloor).is.a('number');
- expect(data.imp[0].bidfloor).to.equal(9.99);
- })
- })
-
- describe('spec.interpretResponse', function () {
- it('should return no bids if the response is not valid', function () {
- const bidResponse = spec.interpretResponse({
- body: null
- }, {
- bidRequest
- });
- expect(bidResponse.length).to.equal(0);
- });
-
- it('should return no bids if the response "nurl" and "adm" are missing', function () {
- const serverResponse = {
- seatbid: [{
- bid: [{
- price: 6.01
- }]
- }]
- };
- const bidResponse = spec.interpretResponse({
- body: serverResponse
- }, {
- bidRequest
- });
- expect(bidResponse.length).to.equal(0);
- });
-
- it('should return no bids if the response "price" is missing', function () {
- const serverResponse = {
- seatbid: [{
- bid: [{
- adm: '