UNPKG

@itentialopensource/adapter-nuage

Version:
1,299 lines (1,229 loc) 65.3 kB
// Set globals /* global describe it log pronghornProps */ /* eslint global-require:warn */ // include required items for testing & logging const assert = require('assert'); const fs = require('fs-extra'); const winston = require('winston'); const path = require('path'); const execute = require('child_process').execSync; // stub and attemptTimeout are used throughout the code so set them here let logLevel = 'none'; const stub = true; const attemptTimeout = 30000; // these variables can be changed to run in integrated mode so easier to set them here // always check these in with bogus data!!! const host = 'replace.hostorip.here'; const username = 'username'; const password = 'password'; const protocol = 'http'; const port = 80; const sslenable = false; const sslinvalid = false; // these are the adapter properties. You generally should not need to alter any of these // after they are initially set up global.pronghornProps = { pathProps: { encrypted: false }, adapterProps: { adapters: [{ id: 'Test-nuage', properties: { host, port, base_path: '/nuage/api', version: 'v5_0', cache_location: 'local', protocol, stub, authentication: { auth_method: 'request_token', username, password, token: 'token', token_timeout: 1800000, token_cache: 'local', invalid_token_error: 401, auth_field: 'header.headers.Authorization', auth_field_format: 'Basic {b64}{username}:{token}{/b64}' }, throttle: { throttle_enabled: false, number_pronghorns: 1, sync_async: 'sync', max_in_queue: 1000, concurrent_max: 1, expire_timeout: 0, avg_runtime: 200 }, request: { number_retries: 3, limit_retry_error: 0, attempt_timeout: attemptTimeout, healthcheck_on_timeout: false, archiving: false }, proxy: { enabled: false, host: '', port: 1 }, ssl: { enabled: sslenable, accept_invalid_cert: sslinvalid, ca_file: '', ciphers: '' }, healthcheck: { type: 'startup', frequency: 60000 } }, type: 'Nuage' }] } }; global.$HOME = `${__dirname}/../..`; // set the log levels that Pronghorn uses, spam and trace are not defaulted in so without // this you may error on log.trace calls. const myCustomLevels = { levels: { spam: 6, trace: 5, debug: 4, info: 3, warn: 2, error: 1, none: 0 } }; // need to see if there is a log level passed in process.argv.forEach((val) => { // is there a log level defined to be passed in? if (val.indexOf('--LOG') === 0) { // get the desired log level const inputVal = val.split('=')[1]; // validate the log level is supported, if so set it if (Object.hasOwnProperty.call(myCustomLevels.levels, inputVal)) { logLevel = inputVal; } } }); // need to set global logging global.log = new (winston.Logger)({ level: logLevel, levels: myCustomLevels.levels, transports: [ new winston.transports.Console() ] }); // define data used throughout the test const fakeString = 'foobar'; const fakeNumber = 123; const fakeObject = { fakeString, fakeNumber }; /** * Runs the error asserts for the test */ function runErrorAsserts(data, error, code, origin, displayStr) { assert.equal(null, data); assert.notEqual(undefined, error); assert.notEqual(null, error); assert.notEqual(undefined, error.IAPerror); assert.notEqual(null, error.IAPerror); assert.notEqual(undefined, error.IAPerror.displayString); assert.notEqual(null, error.IAPerror.displayString); assert.equal(code, error.icode); assert.equal(origin, error.IAPerror.origin); assert.equal(displayStr, error.IAPerror.displayString); } // require the adapter that we are going to be using const Nuage = require('../../adapter.js'); // delete the .DS_Store directory in entities -- otherwise this will cause errors const dirPath = path.join(__dirname, '../../entities/.DS_Store'); if (fs.existsSync(dirPath)) { try { fs.removeSync(dirPath); console.log('.DS_Store deleted'); } catch (e) { console.log('Error when deleting .DS_Store:', e); } } // begin the testing - these should be pretty well defined between the describe and the it! describe('[unit] Nuage Adapter Test', () => { describe('Nuage Class Tests', () => { const a = new Nuage( pronghornProps.adapterProps.adapters[0].id, pronghornProps.adapterProps.adapters[0].properties ); describe('#class instance created', () => { it('should be a class with properties', (done) => { assert.notEqual(null, a); assert.notEqual(undefined, a); assert.notEqual(null, a.allProps); const check = global.pronghornProps.adapterProps.adapters[0].properties.healthcheck.type; assert.equal(check, a.healthcheckType); done(); }).timeout(attemptTimeout); }); describe('adapterBase.js', () => { it('should have an adapterBase.js', (done) => { fs.exists('adapterBase.js', (val) => { assert.equal(true, val); done(); }); }); }); let wffunctions = []; describe('#getWorkflowFunctions', () => { it('should retrieve workflow functions', (done) => { const p = new Promise((resolve) => { wffunctions = a.getWorkflowFunctions(); resolve(); assert.notEqual(0, wffunctions.length); done(); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('package.json', () => { it('should have a package.json', (done) => { fs.exists('package.json', (val) => { assert.equal(true, val); done(); }); }); it('package.json should be customized', (done) => { const packageDotJson = require('../../package.json'); assert.notEqual(-1, packageDotJson.name.indexOf('nuage')); assert.notEqual(undefined, packageDotJson.version); assert.notEqual(null, packageDotJson.version); assert.notEqual('', packageDotJson.version); done(); }); }); describe('pronghorn.json', () => { it('should have a pronghorn.json', (done) => { fs.exists('pronghorn.json', (val) => { assert.equal(true, val); done(); }); }); it('pronghorn.json should be customized', (done) => { const pronghornDotJson = require('../../pronghorn.json'); assert.notEqual(-1, pronghornDotJson.id.indexOf('nuage')); assert.equal('Nuage', pronghornDotJson.export); assert.equal('Nuage', pronghornDotJson.displayName); assert.equal('Nuage', pronghornDotJson.title); done(); }); it('pronghorn.json should only expose workflow functions', (done) => { const pronghornDotJson = require('../../pronghorn.json'); for (let m = 0; m < pronghornDotJson.methods.length; m += 1) { let found = false; let paramissue = false; for (let w = 0; w < wffunctions.length; w += 1) { if (pronghornDotJson.methods[m].name === wffunctions[w]) { found = true; const methLine = execute(`grep "${wffunctions[w]}(" adapter.js | grep "{"`).toString(); let wfparams = []; if (methLine.indexOf('(') >= 0 && methLine.indexOf(')') >= 0) { const temp = methLine.substring(methLine.indexOf('(') + 1, methLine.indexOf(')')); wfparams = temp.split(','); for (let t = 0; t < wfparams.length; t += 1) { wfparams[t] = wfparams[t].trim(); if (wfparams[t] === 'callback') { wfparams.splice(t, 1); } } } // if there are inputs defined but not on the method line if (wfparams.length === 0 && (pronghornDotJson.methods[m].input && pronghornDotJson.methods[m].input.length > 0)) { paramissue = true; } else if (wfparams.length > 0 && (!pronghornDotJson.methods[m].input || pronghornDotJson.methods[m].input.length === 0)) { // if there are no inputs defined but there are on the method line paramissue = true; } else { for (let p = 0; p < pronghornDotJson.methods[m].input.length; p += 1) { let pfound = false; for (let wfp = 0; wfp < wfparams.length; wfp += 1) { if (pronghornDotJson.methods[m].input[p].name === wfparams[wfp]) { pfound = true; } } if (!pfound) { paramissue = true; } } for (let wfp = 0; wfp < wfparams.length; wfp += 1) { let pfound = false; for (let p = 0; p < pronghornDotJson.methods[m].input.length; p += 1) { if (pronghornDotJson.methods[m].input[p].name === wfparams[wfp]) { pfound = true; } } if (!pfound) { paramissue = true; } } } break; } } if (!found) { // this is the reason to go through both loops - log which ones are not found so // they can be worked log.error(`${pronghornDotJson.methods[m].name} not found in workflow functions`); } if (paramissue) { // this is the reason to go through both loops - log which ones are not found so // they can be worked log.error(`${pronghornDotJson.methods[m].name} has a parameter mismatch`); } assert.equal(true, found); assert.equal(false, paramissue); } done(); }).timeout(attemptTimeout); it('pronghorn.json should expose all workflow functions', (done) => { const pronghornDotJson = require('../../pronghorn.json'); for (let w = 0; w < wffunctions.length; w += 1) { let found = false; for (let m = 0; m < pronghornDotJson.methods.length; m += 1) { if (pronghornDotJson.methods[m].name === wffunctions[w]) { found = true; break; } } if (!found) { // this is the reason to go through both loops - log which ones are not found so // they can be worked log.error(`${wffunctions[w]} not found in pronghorn.json`); } assert.equal(true, found); } done(); }); }); describe('propertiesSchema.json', () => { it('should have a propertiesSchema.json', (done) => { fs.exists('propertiesSchema.json', (val) => { assert.equal(true, val); done(); }); }); it('propertiesSchema.json should be customized', (done) => { const propertiesDotJson = require('../../propertiesSchema.json'); assert.equal('adapter-nuage', propertiesDotJson.$id); done(); }); }); describe('error.json', () => { it('should have an error.json', (done) => { fs.exists('error.json', (val) => { assert.equal(true, val); done(); }); }); }); describe('README.md', () => { it('should have a README', (done) => { fs.exists('README.md', (val) => { assert.equal(true, val); done(); }); }); it('README.md should be customized', (done) => { fs.readFile('README.md', 'utf8', (err, data) => { assert.equal(-1, data.indexOf('[System]')); assert.equal(-1, data.indexOf('[system]')); assert.equal(-1, data.indexOf('[version]')); assert.equal(-1, data.indexOf('[namespace]')); done(); }); }); }); describe('#connect', () => { it('should have a connect function', (done) => { assert.equal(true, typeof a.connect === 'function'); done(); }); }); describe('#healthCheck', () => { it('should have a healthCheck function', (done) => { assert.equal(true, typeof a.healthCheck === 'function'); done(); }); }); describe('#checkActionFiles', () => { it('should have a checkActionFiles function', (done) => { assert.equal(true, typeof a.checkActionFiles === 'function'); done(); }); it('should be good', (done) => { const clean = a.checkActionFiles(); assert.equal(true, clean); done(); }).timeout(attemptTimeout); }); describe('#encryptProperty', () => { it('should have a encryptProperty function', (done) => { assert.equal(true, typeof a.encryptProperty === 'function'); done(); }); it('should get base64 encoded property', (done) => { const p = new Promise((resolve) => { a.encryptProperty('testing', 'base64', (data, error) => { resolve(data); assert.equal(undefined, error); assert.notEqual(undefined, data); assert.notEqual(null, data); assert.notEqual(undefined, data.response); assert.notEqual(null, data.response); assert.equal(0, data.response.indexOf('{code}')); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should get encrypted property', (done) => { const p = new Promise((resolve) => { a.encryptProperty('testing', 'encrypt', (data, error) => { resolve(data); assert.equal(undefined, error); assert.notEqual(undefined, data); assert.notEqual(null, data); assert.notEqual(undefined, data.response); assert.notEqual(null, data.response); assert.equal(0, data.response.indexOf('{crypt}')); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); // describe('#hasEntity', () => { // it('should have a hasEntity function', (done) => { // assert.equal(true, typeof a.hasEntity === 'function'); // done(); // }); // it('should find entity', (done) => { // const p = new Promise((resolve) => { // a.hasEntity('template_entity', // 'a9e9c33dc61122760072455df62663d2', (data) => { // resolve(data); // assert.equal(true, data[0]); // done(); // }); // }); // // log just done to get rid of const lint issue! // log.debug(p); // }).timeout(attemptTimeout); // it('should not find entity', (done) => { // const p = new Promise((resolve) => { // a.hasEntity('template_entity', 'blah', (data) => { // resolve(data); // assert.equal(false, data[0]); // done(); // }); // }); // // log just done to get rid of const lint issue! // log.debug(p); // }).timeout(attemptTimeout); // }); describe('#getEnterprises - errors', () => { it('should have a getEnterprises function', (done) => { assert.equal(true, typeof a.getEnterprises === 'function'); done(); }).timeout(attemptTimeout); }); describe('#createEnterprise - errors', () => { it('should have a createEnterprise function', (done) => { assert.equal(true, typeof a.createEnterprise === 'function'); done(); }).timeout(attemptTimeout); it('should error on create an enterprise - no enterprise', (done) => { const p = new Promise((resolve) => { a.createEnterprise(null, (data, error) => { resolve(data); const displayE = 'enterprise is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createEnterprise', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create an enterprise - no name', (done) => { const p = new Promise((resolve) => { a.createEnterprise(fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#updateEnterprise - errors', () => { it('should have a updateEnterprise function', (done) => { assert.equal(true, typeof a.updateEnterprise === 'function'); done(); }).timeout(attemptTimeout); it('should error on update an enterprise - no enterprise id', (done) => { const p = new Promise((resolve) => { a.updateEnterprise(null, null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateEnterprise', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update an enterprise - no enterprise', (done) => { const p = new Promise((resolve) => { a.updateEnterprise(fakeString, null, (data, error) => { resolve(data); const displayE = 'enterprise is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateEnterprise', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update an enterprise - no name', (done) => { const p = new Promise((resolve) => { a.updateEnterprise(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#deleteEnterprise - errors', () => { it('should have a deleteEnterprise function', (done) => { assert.equal(true, typeof a.deleteEnterprise === 'function'); done(); }).timeout(attemptTimeout); it('should error on delete an enterprise - no enterprise id', (done) => { const p = new Promise((resolve) => { a.deleteEnterprise(null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-deleteEnterprise', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getDomains - errors', () => { it('should have a getDomains function', (done) => { assert.equal(true, typeof a.getDomains === 'function'); done(); }).timeout(attemptTimeout); }); describe('#getEnterpriseDomains - errors', () => { it('should have a getEnterpriseDomains function', (done) => { assert.equal(true, typeof a.getEnterpriseDomains === 'function'); done(); }).timeout(attemptTimeout); it('should error on get an enterprise domain - no enterprise id', (done) => { const p = new Promise((resolve) => { a.getEnterpriseDomains(null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getEnterpriseDomains', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getDomainTemplates - errors', () => { it('should have a getDomainTemplates function', (done) => { assert.equal(true, typeof a.getDomainTemplates === 'function'); done(); }).timeout(attemptTimeout); it('should error on get all domain template - no enterprise id', (done) => { const p = new Promise((resolve) => { a.getDomainTemplates(null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getDomainTemplates', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getDomainTemplate - errors', () => { it('should have a getDomainTemplate function', (done) => { assert.equal(true, typeof a.getDomainTemplate === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a specific domain template - no template id', (done) => { const p = new Promise((resolve) => { a.getDomainTemplate(null, (data, error) => { resolve(data); const displayE = 'templateId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#createDomain - errors', () => { it('should have a createDomain function', (done) => { assert.equal(true, typeof a.createDomain === 'function'); done(); }).timeout(attemptTimeout); it('should error on create a domain - no enterprise id', (done) => { const p = new Promise((resolve) => { a.createDomain(null, null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createDomain', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a domain - no domain', (done) => { const p = new Promise((resolve) => { a.createDomain(fakeString, null, (data, error) => { resolve(data); const displayE = 'domain is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createDomain', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a domain - no name', (done) => { const p = new Promise((resolve) => { a.createDomain(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a domain - no template', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'blah'; a.createDomain(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; const displayE = 'Schema validation failed on should have required property \'.template\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#createDomainTemplate - errors', () => { it('should have a createDomainTemplate function', (done) => { assert.equal(true, typeof a.createDomainTemplate === 'function'); done(); }).timeout(attemptTimeout); it('should error on create a domain template - no enterprise id', (done) => { const p = new Promise((resolve) => { a.createDomainTemplate(null, null, (data, error) => { resolve(data); const displayE = 'enterpriseId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a domain template - no template', (done) => { const p = new Promise((resolve) => { a.createDomainTemplate(fakeString, null, (data, error) => { resolve(data); const displayE = 'template is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a domain template - no name', (done) => { const p = new Promise((resolve) => { a.createDomainTemplate(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#updateDomain - errors', () => { it('should have a updateDomain function', (done) => { assert.equal(true, typeof a.updateDomain === 'function'); done(); }).timeout(attemptTimeout); it('should error on update a domain - no domain id', (done) => { const p = new Promise((resolve) => { a.updateDomain(null, null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateDomain', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a domain - no domain', (done) => { const p = new Promise((resolve) => { a.updateDomain(fakeString, null, (data, error) => { resolve(data); const displayE = 'domain is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateDomain', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a domain - no name', (done) => { const p = new Promise((resolve) => { a.updateDomain(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a domain - no template', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'blah'; a.updateDomain(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; const displayE = 'Schema validation failed on should have required property \'.template\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#updateDomainTemplate - errors', () => { it('should have a updateDomainTemplate function', (done) => { assert.equal(true, typeof a.updateDomainTemplate === 'function'); done(); }).timeout(attemptTimeout); it('should error on update a domain template - no template id', (done) => { const p = new Promise((resolve) => { a.updateDomainTemplate(null, null, (data, error) => { resolve(data); const displayE = 'templateId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a domain template - no template', (done) => { const p = new Promise((resolve) => { a.updateDomainTemplate(fakeString, null, (data, error) => { resolve(data); const displayE = 'template is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a domain template - no name', (done) => { const p = new Promise((resolve) => { a.updateDomainTemplate(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#deleteDomain - errors', () => { it('should have a deleteDomain function', (done) => { assert.equal(true, typeof a.deleteDomain === 'function'); done(); }).timeout(attemptTimeout); it('should error on delete a domain - no domain id', (done) => { const p = new Promise((resolve) => { a.deleteDomain(null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-deleteDomain', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#deleteDomainTemplate - errors', () => { it('should have a deleteDomainTemplate function', (done) => { assert.equal(true, typeof a.deleteDomainTemplate === 'function'); done(); }).timeout(attemptTimeout); it('should error on delete a domain template - no template id', (done) => { const p = new Promise((resolve) => { a.deleteDomainTemplate(null, (data, error) => { resolve(data); const displayE = 'templateId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-deleteDomainTemplate', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getZones - errors', () => { it('should have a getZones function', (done) => { assert.equal(true, typeof a.getZones === 'function'); done(); }).timeout(attemptTimeout); }); describe('#getDomainZones - errors', () => { it('should have a getDomainZones function', (done) => { assert.equal(true, typeof a.getDomainZones === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a domains zones - no domain id', (done) => { const p = new Promise((resolve) => { a.getDomainZones(null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getDomainZones', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#createZone - errors', () => { it('should have a createZone function', (done) => { assert.equal(true, typeof a.createZone === 'function'); done(); }).timeout(attemptTimeout); it('should error on create a zone - no domain id', (done) => { const p = new Promise((resolve) => { a.createZone(null, null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createZone', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a zone - no zone', (done) => { const p = new Promise((resolve) => { a.createZone(fakeString, null, (data, error) => { resolve(data); const displayE = 'zone is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createZone', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a zone - no name', (done) => { const p = new Promise((resolve) => { a.createZone(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#updateZone - errors', () => { it('should have a updateZone function', (done) => { assert.equal(true, typeof a.updateZone === 'function'); done(); }).timeout(attemptTimeout); it('should error on update a zone - no zone id', (done) => { const p = new Promise((resolve) => { a.updateZone(null, null, (data, error) => { resolve(data); const displayE = 'zoneId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateZone', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a zone - no zone', (done) => { const p = new Promise((resolve) => { a.updateZone(fakeString, null, (data, error) => { resolve(data); const displayE = 'zone is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateZone', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a zone - no name', (done) => { const p = new Promise((resolve) => { a.updateZone(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#deleteZone - errors', () => { it('should have a deleteZone function', (done) => { assert.equal(true, typeof a.deleteZone === 'function'); done(); }).timeout(attemptTimeout); it('should error on delete a zone - no zone id', (done) => { const p = new Promise((resolve) => { a.deleteZone(null, (data, error) => { resolve(data); const displayE = 'zoneId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-deleteZone', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getSubnets - errors', () => { it('should have a getSubnets function', (done) => { assert.equal(true, typeof a.getSubnets === 'function'); done(); }).timeout(attemptTimeout); }); describe('#getDomainSubnets - errors', () => { it('should have a getDomainSubnets function', (done) => { assert.equal(true, typeof a.getDomainSubnets === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a domain subnets - no domain id', (done) => { const p = new Promise((resolve) => { a.getDomainSubnets(null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getDomainSubnets', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getZoneSubnets - errors', () => { it('should have a getZoneSubnets function', (done) => { assert.equal(true, typeof a.getZoneSubnets === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a zones subnets - no zone id', (done) => { const p = new Promise((resolve) => { a.getZoneSubnets(null, (data, error) => { resolve(data); const displayE = 'zoneId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getZoneSubnets', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#createSubnet - errors', () => { it('should have a createSubnet function', (done) => { assert.equal(true, typeof a.createSubnet === 'function'); done(); }).timeout(attemptTimeout); it('should error on create a subnet - no zone id', (done) => { const p = new Promise((resolve) => { a.createSubnet(null, null, (data, error) => { resolve(data); const displayE = 'zoneId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createSubnet', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a subnet - no subnet', (done) => { const p = new Promise((resolve) => { a.createSubnet(fakeString, null, (data, error) => { resolve(data); const displayE = 'subnet is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-createSubnet', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a subnet - no name', (done) => { const p = new Promise((resolve) => { a.createSubnet(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a subnet - no network address', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'BLAH'; a.createSubnet(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; const displayE = 'Schema validation failed on should have required property \'.networkaddress\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on create a subnet - no netmask', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'BLAH'; fakeObject.networkaddress = '10.10.10.0'; a.createSubnet(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; delete fakeObject.networkaddress; const displayE = 'Schema validation failed on should have required property \'.netmask\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#updateSubnet - errors', () => { it('should have a updateSubnet function', (done) => { assert.equal(true, typeof a.updateSubnet === 'function'); done(); }).timeout(attemptTimeout); it('should error on update a subnet - no subnet id', (done) => { const p = new Promise((resolve) => { a.updateSubnet(null, null, (data, error) => { resolve(data); const displayE = 'subnetId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateSubnet', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a subnet - no subnet', (done) => { const p = new Promise((resolve) => { a.updateSubnet(fakeString, null, (data, error) => { resolve(data); const displayE = 'subnet is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-updateSubnet', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a subnet - no name', (done) => { const p = new Promise((resolve) => { a.updateSubnet(fakeString, fakeObject, (data, error) => { resolve(data); const displayE = 'Schema validation failed on should have required property \'.name\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a subnet - no network address', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'BLAH'; a.updateSubnet(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; const displayE = 'Schema validation failed on should have required property \'.networkaddress\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); it('should error on update a subnet - no netmask', (done) => { const p = new Promise((resolve) => { fakeObject.name = 'BLAH'; fakeObject.networkaddress = '10.10.10.0'; a.updateSubnet(fakeString, fakeObject, (data, error) => { resolve(data); delete fakeObject.name; delete fakeObject.networkaddress; const displayE = 'Schema validation failed on should have required property \'.netmask\''; runErrorAsserts(data, error, 'AD.312', 'Test-nuage-translatorUtil-buildJSONEntity', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#deleteSubnet - errors', () => { it('should have a deleteSubnet function', (done) => { assert.equal(true, typeof a.deleteSubnet === 'function'); done(); }).timeout(attemptTimeout); it('should error on delete a subnet - no subnet id', (done) => { const p = new Promise((resolve) => { a.deleteSubnet(null, (data, error) => { resolve(data); const displayE = 'subnetId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-deleteSubnet', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getVports - errors', () => { it('should have a getVports function', (done) => { assert.equal(true, typeof a.getVports === 'function'); done(); }).timeout(attemptTimeout); it('should error on get vports - no domain id', (done) => { const p = new Promise((resolve) => { a.getVports(null, (data, error) => { resolve(data); const displayE = 'domainId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getVports', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getVport - errors', () => { it('should have a getVport function', (done) => { assert.equal(true, typeof a.getVport === 'function'); done(); }).timeout(attemptTimeout); it('should error on get specific vport - no vport id', (done) => { const p = new Promise((resolve) => { a.getVport(null, (data, error) => { resolve(data); const displayE = 'vportId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getVport', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getZoneVports - errors', () => { it('should have a getZoneVports function', (done) => { assert.equal(true, typeof a.getZoneVports === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a zone vports - no zone id', (done) => { const p = new Promise((resolve) => { a.getZoneVports(null, (data, error) => { resolve(data); const displayE = 'zoneId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getZoneVports', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#getSubnetVports - errors', () => { it('should have a getSubnetVports function', (done) => { assert.equal(true, typeof a.getSubnetVports === 'function'); done(); }).timeout(attemptTimeout); it('should error on get a subnets vports - no subnet id', (done) => { const p = new Promise((resolve) => { a.getSubnetVports(null, (data, error) => { resolve(data); const displayE = 'subnetId is required'; runErrorAsserts(data, error, 'AD.300', 'Test-nuage-adapter-getSubnetVports', displayE); done(); }); }); // log just done to get rid of const lint issue! log.debug(p); }).timeout(attemptTimeout); }); describe('#createVport - errors', () => { it('should have a createVport func