@itentialopensource/adapter-nuage
Version:
Itential Nuage Adapter
1,299 lines (1,229 loc) • 65.3 kB
JavaScript
// 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