@itentialopensource/adapter-alkira 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +0 -1
- package/.jshintrc +3 -0
- package/AUTH.md +8 -35
- package/CHANGELOG.md +8 -0
- package/CONTRIBUTING.md +1 -160
- package/ENHANCE.md +2 -2
- package/README.md +22 -17
- package/SYSTEMINFO.md +16 -3
- package/adapter.js +164 -334
- package/adapterBase.js +411 -913
- package/changelogs/changelog.md +56 -0
- package/metadata.json +101 -0
- package/package.json +22 -24
- package/pronghorn.json +586 -254
- package/propertiesSchema.json +380 -40
- package/refs?service=git-upload-pack +0 -0
- package/report/adapterInfo.json +8 -8
- package/report/updateReport1691170238076.json +120 -0
- package/sampleProperties.json +82 -18
- package/test/integration/adapterTestBasicGet.js +1 -1
- package/test/integration/adapterTestConnectivity.js +91 -42
- package/test/integration/adapterTestIntegration.js +130 -2
- package/test/unit/adapterBaseTestUnit.js +388 -313
- package/test/unit/adapterTestUnit.js +300 -109
- package/utils/adapterInfo.js +1 -1
- package/utils/addAuth.js +1 -1
- package/utils/artifactize.js +1 -1
- package/utils/checkMigrate.js +1 -1
- package/utils/entitiesToDB.js +1 -0
- package/utils/findPath.js +1 -1
- package/utils/modify.js +13 -15
- package/utils/packModificationScript.js +1 -1
- package/utils/taskMover.js +309 -0
- package/utils/tbScript.js +3 -10
- package/utils/tbUtils.js +2 -3
- package/utils/testRunner.js +1 -1
- package/utils/troubleshootingAdapter.js +1 -3
- package/workflows/README.md +0 -3
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
|
|
9
9
|
// include required items for testing & logging
|
|
10
10
|
const assert = require('assert');
|
|
11
|
-
const fs = require('fs-extra');
|
|
12
|
-
const mocha = require('mocha');
|
|
13
11
|
const path = require('path');
|
|
14
12
|
const util = require('util');
|
|
15
|
-
const winston = require('winston');
|
|
16
13
|
const execute = require('child_process').execSync;
|
|
14
|
+
const fs = require('fs-extra');
|
|
15
|
+
const mocha = require('mocha');
|
|
16
|
+
const winston = require('winston');
|
|
17
17
|
const { expect } = require('chai');
|
|
18
18
|
const { use } = require('chai');
|
|
19
19
|
const td = require('testdouble');
|
|
20
20
|
const Ajv = require('ajv');
|
|
21
21
|
|
|
22
|
-
const ajv = new Ajv({ allErrors: true,
|
|
22
|
+
const ajv = new Ajv({ strictSchema: false, allErrors: true, allowUnionTypes: true });
|
|
23
23
|
const anything = td.matchers.anything();
|
|
24
24
|
let logLevel = 'none';
|
|
25
25
|
const isRapidFail = false;
|
|
@@ -222,19 +222,24 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
222
222
|
it('package.json should be validated', (done) => {
|
|
223
223
|
try {
|
|
224
224
|
const packageDotJson = require('../../package.json');
|
|
225
|
-
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
225
|
+
// Define the JSON schema for package.json
|
|
226
|
+
const packageJsonSchema = {
|
|
227
|
+
type: 'object',
|
|
228
|
+
properties: {
|
|
229
|
+
name: { type: 'string' },
|
|
230
|
+
version: { type: 'string' }
|
|
231
|
+
// May need to add more properties as needed
|
|
232
|
+
},
|
|
233
|
+
required: ['name', 'version']
|
|
229
234
|
};
|
|
230
|
-
const
|
|
235
|
+
const validate = ajv.compile(packageJsonSchema);
|
|
236
|
+
const isValid = validate(packageDotJson);
|
|
231
237
|
|
|
232
|
-
if (
|
|
233
|
-
log.error('The package.json contains
|
|
234
|
-
|
|
235
|
-
assert.equal(true, results.valid);
|
|
238
|
+
if (isValid === false) {
|
|
239
|
+
log.error('The package.json contains errors');
|
|
240
|
+
assert.equal(true, isValid);
|
|
236
241
|
} else {
|
|
237
|
-
assert.equal(true,
|
|
242
|
+
assert.equal(true, isValid);
|
|
238
243
|
}
|
|
239
244
|
|
|
240
245
|
done();
|
|
@@ -273,6 +278,7 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
273
278
|
assert.notEqual(undefined, packageDotJson.scripts);
|
|
274
279
|
assert.notEqual(null, packageDotJson.scripts);
|
|
275
280
|
assert.notEqual('', packageDotJson.scripts);
|
|
281
|
+
assert.equal('node utils/setup.js', packageDotJson.scripts.preinstall);
|
|
276
282
|
assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js', packageDotJson.scripts.lint);
|
|
277
283
|
assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet', packageDotJson.scripts['lint:errors']);
|
|
278
284
|
assert.equal('mocha test/unit/adapterBaseTestUnit.js --LOG=error', packageDotJson.scripts['test:baseunit']);
|
|
@@ -280,6 +286,8 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
280
286
|
assert.equal('mocha test/integration/adapterTestIntegration.js --LOG=error', packageDotJson.scripts['test:integration']);
|
|
281
287
|
assert.equal('nyc --reporter html --reporter text mocha --reporter dot test/*', packageDotJson.scripts['test:cover']);
|
|
282
288
|
assert.equal('npm run test:baseunit && npm run test:unit && npm run test:integration', packageDotJson.scripts.test);
|
|
289
|
+
assert.equal('npm publish --registry=https://registry.npmjs.org --access=public', packageDotJson.scripts.deploy);
|
|
290
|
+
assert.equal('npm run deploy', packageDotJson.scripts.build);
|
|
283
291
|
done();
|
|
284
292
|
} catch (error) {
|
|
285
293
|
log.error(`Test Failure: ${error}`);
|
|
@@ -292,6 +300,9 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
292
300
|
assert.notEqual(undefined, packageDotJson.repository);
|
|
293
301
|
assert.notEqual(null, packageDotJson.repository);
|
|
294
302
|
assert.notEqual('', packageDotJson.repository);
|
|
303
|
+
assert.equal('git', packageDotJson.repository.type);
|
|
304
|
+
assert.equal('git@gitlab.com:itentialopensource/adapters/', packageDotJson.repository.url.substring(0, 43));
|
|
305
|
+
assert.equal('https://gitlab.com/itentialopensource/adapters/', packageDotJson.homepage.substring(0, 47));
|
|
295
306
|
done();
|
|
296
307
|
} catch (error) {
|
|
297
308
|
log.error(`Test Failure: ${error}`);
|
|
@@ -304,17 +315,17 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
304
315
|
assert.notEqual(undefined, packageDotJson.dependencies);
|
|
305
316
|
assert.notEqual(null, packageDotJson.dependencies);
|
|
306
317
|
assert.notEqual('', packageDotJson.dependencies);
|
|
307
|
-
assert.equal('^
|
|
308
|
-
assert.equal('^
|
|
309
|
-
assert.equal('^
|
|
310
|
-
assert.equal('^
|
|
311
|
-
assert.equal('^
|
|
318
|
+
assert.equal('^8.12.0', packageDotJson.dependencies.ajv);
|
|
319
|
+
assert.equal('^1.4.0', packageDotJson.dependencies.axios);
|
|
320
|
+
assert.equal('^11.0.0', packageDotJson.dependencies.commander);
|
|
321
|
+
assert.equal('^11.1.1', packageDotJson.dependencies['fs-extra']);
|
|
322
|
+
assert.equal('^10.2.0', packageDotJson.dependencies.mocha);
|
|
312
323
|
assert.equal('^2.0.1', packageDotJson.dependencies['mocha-param']);
|
|
313
|
-
assert.equal('^0.5.3', packageDotJson.dependencies['network-diagnostics']);
|
|
314
324
|
assert.equal('^15.1.0', packageDotJson.dependencies.nyc);
|
|
325
|
+
assert.equal('^0.4.4', packageDotJson.dependencies.ping);
|
|
315
326
|
assert.equal('^1.4.10', packageDotJson.dependencies['readline-sync']);
|
|
316
|
-
assert.equal('^7.3
|
|
317
|
-
assert.equal('^3.
|
|
327
|
+
assert.equal('^7.5.3', packageDotJson.dependencies.semver);
|
|
328
|
+
assert.equal('^3.9.0', packageDotJson.dependencies.winston);
|
|
318
329
|
done();
|
|
319
330
|
} catch (error) {
|
|
320
331
|
log.error(`Test Failure: ${error}`);
|
|
@@ -327,13 +338,12 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
327
338
|
assert.notEqual(undefined, packageDotJson.devDependencies);
|
|
328
339
|
assert.notEqual(null, packageDotJson.devDependencies);
|
|
329
340
|
assert.notEqual('', packageDotJson.devDependencies);
|
|
330
|
-
assert.equal('^4.3.
|
|
331
|
-
assert.equal('^
|
|
332
|
-
assert.equal('^
|
|
333
|
-
assert.equal('^2.
|
|
334
|
-
assert.equal('^3.
|
|
335
|
-
assert.equal('^
|
|
336
|
-
assert.equal('^3.16.1', packageDotJson.devDependencies.testdouble);
|
|
341
|
+
assert.equal('^4.3.7', packageDotJson.devDependencies.chai);
|
|
342
|
+
assert.equal('^8.44.0', packageDotJson.devDependencies.eslint);
|
|
343
|
+
assert.equal('^15.0.0', packageDotJson.devDependencies['eslint-config-airbnb-base']);
|
|
344
|
+
assert.equal('^2.27.5', packageDotJson.devDependencies['eslint-plugin-import']);
|
|
345
|
+
assert.equal('^3.1.0', packageDotJson.devDependencies['eslint-plugin-json']);
|
|
346
|
+
assert.equal('^3.18.0', packageDotJson.devDependencies.testdouble);
|
|
337
347
|
done();
|
|
338
348
|
} catch (error) {
|
|
339
349
|
log.error(`Test Failure: ${error}`);
|
|
@@ -377,16 +387,30 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
377
387
|
assert.equal(true, Array.isArray(pronghornDotJson.methods));
|
|
378
388
|
assert.notEqual(0, pronghornDotJson.methods.length);
|
|
379
389
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapUpdateAdapterConfiguration'));
|
|
390
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapSuspendAdapter'));
|
|
391
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapUnsuspendAdapter'));
|
|
392
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapGetAdapterQueue'));
|
|
380
393
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapFindAdapterPath'));
|
|
381
394
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapTroubleshootAdapter'));
|
|
382
395
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterHealthcheck'));
|
|
383
396
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterConnectivity'));
|
|
384
397
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterBasicGet'));
|
|
385
|
-
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === '
|
|
386
|
-
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === '
|
|
387
|
-
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === '
|
|
398
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapMoveAdapterEntitiesToDB'));
|
|
399
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapDeactivateTasks'));
|
|
400
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapActivateTasks'));
|
|
401
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapPopulateEntityCache'));
|
|
402
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRetrieveEntitiesCache'));
|
|
403
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'getDevice'));
|
|
404
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'getDevicesFiltered'));
|
|
405
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'isAlive'));
|
|
406
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'getConfig'));
|
|
407
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapGetDeviceCount'));
|
|
408
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapExpandedGenericAdapterRequest'));
|
|
388
409
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequest'));
|
|
389
410
|
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequestNoBasePath'));
|
|
411
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterLint'));
|
|
412
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterTests'));
|
|
413
|
+
assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapGetAdapterInventory'));
|
|
390
414
|
done();
|
|
391
415
|
} catch (error) {
|
|
392
416
|
log.error(`Test Failure: ${error}`);
|
|
@@ -968,40 +992,6 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
968
992
|
});
|
|
969
993
|
});
|
|
970
994
|
|
|
971
|
-
describe('#iapFindAdapterPath', () => {
|
|
972
|
-
it('should have a iapFindAdapterPath function', (done) => {
|
|
973
|
-
try {
|
|
974
|
-
assert.equal(true, typeof a.iapFindAdapterPath === 'function');
|
|
975
|
-
done();
|
|
976
|
-
} catch (error) {
|
|
977
|
-
log.error(`Test Failure: ${error}`);
|
|
978
|
-
done(error);
|
|
979
|
-
}
|
|
980
|
-
});
|
|
981
|
-
it('iapFindAdapterPath should find atleast one path that matches', (done) => {
|
|
982
|
-
try {
|
|
983
|
-
a.iapFindAdapterPath('{base_path}/{version}', (data, error) => {
|
|
984
|
-
try {
|
|
985
|
-
assert.equal(undefined, error);
|
|
986
|
-
assert.notEqual(undefined, data);
|
|
987
|
-
assert.notEqual(null, data);
|
|
988
|
-
assert.equal(true, data.found);
|
|
989
|
-
assert.notEqual(undefined, data.foundIn);
|
|
990
|
-
assert.notEqual(null, data.foundIn);
|
|
991
|
-
assert.notEqual(0, data.foundIn.length);
|
|
992
|
-
done();
|
|
993
|
-
} catch (err) {
|
|
994
|
-
log.error(`Test Failure: ${err}`);
|
|
995
|
-
done(err);
|
|
996
|
-
}
|
|
997
|
-
});
|
|
998
|
-
} catch (error) {
|
|
999
|
-
log.error(`Adapter Exception: ${error}`);
|
|
1000
|
-
done(error);
|
|
1001
|
-
}
|
|
1002
|
-
}).timeout(attemptTimeout);
|
|
1003
|
-
});
|
|
1004
|
-
|
|
1005
995
|
describe('#iapSuspendAdapter', () => {
|
|
1006
996
|
it('should have a iapSuspendAdapter function', (done) => {
|
|
1007
997
|
try {
|
|
@@ -1038,6 +1028,40 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
1038
1028
|
});
|
|
1039
1029
|
});
|
|
1040
1030
|
|
|
1031
|
+
describe('#iapFindAdapterPath', () => {
|
|
1032
|
+
it('should have a iapFindAdapterPath function', (done) => {
|
|
1033
|
+
try {
|
|
1034
|
+
assert.equal(true, typeof a.iapFindAdapterPath === 'function');
|
|
1035
|
+
done();
|
|
1036
|
+
} catch (error) {
|
|
1037
|
+
log.error(`Test Failure: ${error}`);
|
|
1038
|
+
done(error);
|
|
1039
|
+
}
|
|
1040
|
+
});
|
|
1041
|
+
it('iapFindAdapterPath should find atleast one path that matches', (done) => {
|
|
1042
|
+
try {
|
|
1043
|
+
a.iapFindAdapterPath('{base_path}/{version}', (data, error) => {
|
|
1044
|
+
try {
|
|
1045
|
+
assert.equal(undefined, error);
|
|
1046
|
+
assert.notEqual(undefined, data);
|
|
1047
|
+
assert.notEqual(null, data);
|
|
1048
|
+
assert.equal(true, data.found);
|
|
1049
|
+
assert.notEqual(undefined, data.foundIn);
|
|
1050
|
+
assert.notEqual(null, data.foundIn);
|
|
1051
|
+
assert.notEqual(0, data.foundIn.length);
|
|
1052
|
+
done();
|
|
1053
|
+
} catch (err) {
|
|
1054
|
+
log.error(`Test Failure: ${err}`);
|
|
1055
|
+
done(err);
|
|
1056
|
+
}
|
|
1057
|
+
});
|
|
1058
|
+
} catch (error) {
|
|
1059
|
+
log.error(`Adapter Exception: ${error}`);
|
|
1060
|
+
done(error);
|
|
1061
|
+
}
|
|
1062
|
+
}).timeout(attemptTimeout);
|
|
1063
|
+
});
|
|
1064
|
+
|
|
1041
1065
|
describe('#iapTroubleshootAdapter', () => {
|
|
1042
1066
|
it('should have a iapTroubleshootAdapter function', (done) => {
|
|
1043
1067
|
try {
|
|
@@ -1183,49 +1207,53 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
1183
1207
|
}).timeout(attemptTimeout);
|
|
1184
1208
|
});
|
|
1185
1209
|
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1210
|
+
describe('#iapDeactivateTasks', () => {
|
|
1211
|
+
it('should have a iapDeactivateTasks function', (done) => {
|
|
1212
|
+
try {
|
|
1213
|
+
assert.equal(true, typeof a.iapDeactivateTasks === 'function');
|
|
1214
|
+
done();
|
|
1215
|
+
} catch (error) {
|
|
1216
|
+
log.error(`Test Failure: ${error}`);
|
|
1217
|
+
done(error);
|
|
1218
|
+
}
|
|
1219
|
+
});
|
|
1220
|
+
});
|
|
1221
|
+
|
|
1222
|
+
describe('#iapActivateTasks', () => {
|
|
1223
|
+
it('should have a iapActivateTasks function', (done) => {
|
|
1224
|
+
try {
|
|
1225
|
+
assert.equal(true, typeof a.iapActivateTasks === 'function');
|
|
1226
|
+
done();
|
|
1227
|
+
} catch (error) {
|
|
1228
|
+
log.error(`Test Failure: ${error}`);
|
|
1229
|
+
done(error);
|
|
1230
|
+
}
|
|
1231
|
+
});
|
|
1232
|
+
});
|
|
1233
|
+
|
|
1234
|
+
describe('#iapPopulateEntityCache', () => {
|
|
1235
|
+
it('should have a iapPopulateEntityCache function', (done) => {
|
|
1236
|
+
try {
|
|
1237
|
+
assert.equal(true, typeof a.iapPopulateEntityCache === 'function');
|
|
1238
|
+
done();
|
|
1239
|
+
} catch (error) {
|
|
1240
|
+
log.error(`Test Failure: ${error}`);
|
|
1241
|
+
done(error);
|
|
1242
|
+
}
|
|
1243
|
+
});
|
|
1244
|
+
});
|
|
1245
|
+
|
|
1246
|
+
describe('#iapRetrieveEntitiesCache', () => {
|
|
1247
|
+
it('should have a iapRetrieveEntitiesCache function', (done) => {
|
|
1248
|
+
try {
|
|
1249
|
+
assert.equal(true, typeof a.iapRetrieveEntitiesCache === 'function');
|
|
1250
|
+
done();
|
|
1251
|
+
} catch (error) {
|
|
1252
|
+
log.error(`Test Failure: ${error}`);
|
|
1253
|
+
done(error);
|
|
1254
|
+
}
|
|
1255
|
+
});
|
|
1256
|
+
});
|
|
1229
1257
|
|
|
1230
1258
|
describe('#hasEntities', () => {
|
|
1231
1259
|
it('should have a hasEntities function', (done) => {
|
|
@@ -1299,6 +1327,169 @@ describe('[unit] Alkira Adapter Test', () => {
|
|
|
1299
1327
|
});
|
|
1300
1328
|
});
|
|
1301
1329
|
|
|
1330
|
+
describe('#iapExpandedGenericAdapterRequest', () => {
|
|
1331
|
+
it('should have a iapExpandedGenericAdapterRequest function', (done) => {
|
|
1332
|
+
try {
|
|
1333
|
+
assert.equal(true, typeof a.iapExpandedGenericAdapterRequest === 'function');
|
|
1334
|
+
done();
|
|
1335
|
+
} catch (error) {
|
|
1336
|
+
log.error(`Test Failure: ${error}`);
|
|
1337
|
+
done(error);
|
|
1338
|
+
}
|
|
1339
|
+
});
|
|
1340
|
+
});
|
|
1341
|
+
|
|
1342
|
+
describe('#genericAdapterRequest', () => {
|
|
1343
|
+
it('should have a genericAdapterRequest function', (done) => {
|
|
1344
|
+
try {
|
|
1345
|
+
assert.equal(true, typeof a.genericAdapterRequest === 'function');
|
|
1346
|
+
done();
|
|
1347
|
+
} catch (error) {
|
|
1348
|
+
log.error(`Test Failure: ${error}`);
|
|
1349
|
+
done(error);
|
|
1350
|
+
}
|
|
1351
|
+
});
|
|
1352
|
+
});
|
|
1353
|
+
|
|
1354
|
+
describe('#genericAdapterRequestNoBasePath', () => {
|
|
1355
|
+
it('should have a genericAdapterRequestNoBasePath function', (done) => {
|
|
1356
|
+
try {
|
|
1357
|
+
assert.equal(true, typeof a.genericAdapterRequestNoBasePath === 'function');
|
|
1358
|
+
done();
|
|
1359
|
+
} catch (error) {
|
|
1360
|
+
log.error(`Test Failure: ${error}`);
|
|
1361
|
+
done(error);
|
|
1362
|
+
}
|
|
1363
|
+
});
|
|
1364
|
+
});
|
|
1365
|
+
|
|
1366
|
+
describe('#iapRunAdapterLint', () => {
|
|
1367
|
+
it('should have a iapRunAdapterLint function', (done) => {
|
|
1368
|
+
try {
|
|
1369
|
+
assert.equal(true, typeof a.iapRunAdapterLint === 'function');
|
|
1370
|
+
done();
|
|
1371
|
+
} catch (error) {
|
|
1372
|
+
log.error(`Test Failure: ${error}`);
|
|
1373
|
+
done(error);
|
|
1374
|
+
}
|
|
1375
|
+
});
|
|
1376
|
+
it('retrieve the lint results', (done) => {
|
|
1377
|
+
try {
|
|
1378
|
+
a.iapRunAdapterLint((data, error) => {
|
|
1379
|
+
try {
|
|
1380
|
+
assert.equal(undefined, error);
|
|
1381
|
+
assert.notEqual(undefined, data);
|
|
1382
|
+
assert.notEqual(null, data);
|
|
1383
|
+
assert.notEqual(undefined, data.status);
|
|
1384
|
+
assert.notEqual(null, data.status);
|
|
1385
|
+
assert.equal('SUCCESS', data.status);
|
|
1386
|
+
done();
|
|
1387
|
+
} catch (err) {
|
|
1388
|
+
log.error(`Test Failure: ${err}`);
|
|
1389
|
+
done(err);
|
|
1390
|
+
}
|
|
1391
|
+
});
|
|
1392
|
+
} catch (error) {
|
|
1393
|
+
log.error(`Adapter Exception: ${error}`);
|
|
1394
|
+
done(error);
|
|
1395
|
+
}
|
|
1396
|
+
}).timeout(attemptTimeout);
|
|
1397
|
+
});
|
|
1398
|
+
|
|
1399
|
+
describe('#iapRunAdapterTests', () => {
|
|
1400
|
+
it('should have a iapRunAdapterTests function', (done) => {
|
|
1401
|
+
try {
|
|
1402
|
+
assert.equal(true, typeof a.iapRunAdapterTests === 'function');
|
|
1403
|
+
done();
|
|
1404
|
+
} catch (error) {
|
|
1405
|
+
log.error(`Test Failure: ${error}`);
|
|
1406
|
+
done(error);
|
|
1407
|
+
}
|
|
1408
|
+
});
|
|
1409
|
+
});
|
|
1410
|
+
|
|
1411
|
+
describe('#iapGetAdapterInventory', () => {
|
|
1412
|
+
it('should have a iapGetAdapterInventory function', (done) => {
|
|
1413
|
+
try {
|
|
1414
|
+
assert.equal(true, typeof a.iapGetAdapterInventory === 'function');
|
|
1415
|
+
done();
|
|
1416
|
+
} catch (error) {
|
|
1417
|
+
log.error(`Test Failure: ${error}`);
|
|
1418
|
+
done(error);
|
|
1419
|
+
}
|
|
1420
|
+
});
|
|
1421
|
+
it('retrieve the inventory', (done) => {
|
|
1422
|
+
try {
|
|
1423
|
+
a.iapGetAdapterInventory((data, error) => {
|
|
1424
|
+
try {
|
|
1425
|
+
assert.equal(undefined, error);
|
|
1426
|
+
assert.notEqual(undefined, data);
|
|
1427
|
+
assert.notEqual(null, data);
|
|
1428
|
+
done();
|
|
1429
|
+
} catch (err) {
|
|
1430
|
+
log.error(`Test Failure: ${err}`);
|
|
1431
|
+
done(err);
|
|
1432
|
+
}
|
|
1433
|
+
});
|
|
1434
|
+
} catch (error) {
|
|
1435
|
+
log.error(`Adapter Exception: ${error}`);
|
|
1436
|
+
done(error);
|
|
1437
|
+
}
|
|
1438
|
+
}).timeout(attemptTimeout);
|
|
1439
|
+
});
|
|
1440
|
+
describe('metadata.json', () => {
|
|
1441
|
+
it('should have a metadata.json', (done) => {
|
|
1442
|
+
try {
|
|
1443
|
+
fs.exists('metadata.json', (val) => {
|
|
1444
|
+
assert.equal(true, val);
|
|
1445
|
+
done();
|
|
1446
|
+
});
|
|
1447
|
+
} catch (error) {
|
|
1448
|
+
log.error(`Test Failure: ${error}`);
|
|
1449
|
+
done(error);
|
|
1450
|
+
}
|
|
1451
|
+
});
|
|
1452
|
+
it('metadata.json is customized', (done) => {
|
|
1453
|
+
try {
|
|
1454
|
+
const metadataDotJson = require('../../metadata.json');
|
|
1455
|
+
assert.equal('adapter-alkira', metadataDotJson.name);
|
|
1456
|
+
done();
|
|
1457
|
+
} catch (error) {
|
|
1458
|
+
log.error(`Test Failure: ${error}`);
|
|
1459
|
+
done(error);
|
|
1460
|
+
}
|
|
1461
|
+
});
|
|
1462
|
+
it('metadata.json contains accurate documentation', (done) => {
|
|
1463
|
+
try {
|
|
1464
|
+
const metadataDotJson = require('../../metadata.json');
|
|
1465
|
+
assert.notEqual(undefined, metadataDotJson.documentation);
|
|
1466
|
+
assert.equal('https://www.npmjs.com/package/@itentialopensource/adapter-alkira', metadataDotJson.documentation.npmLink);
|
|
1467
|
+
assert.equal('https://docs.itential.com/opensource/docs/troubleshooting-an-adapter', metadataDotJson.documentation.faqLink);
|
|
1468
|
+
assert.equal('https://gitlab.com/itentialopensource/adapters/contributing-guide', metadataDotJson.documentation.contributeLink);
|
|
1469
|
+
assert.equal('https://itential.atlassian.net/servicedesk/customer/portals', metadataDotJson.documentation.issueLink);
|
|
1470
|
+
done();
|
|
1471
|
+
} catch (error) {
|
|
1472
|
+
log.error(`Test Failure: ${error}`);
|
|
1473
|
+
done(error);
|
|
1474
|
+
}
|
|
1475
|
+
});
|
|
1476
|
+
it('metadata.json has related items', (done) => {
|
|
1477
|
+
try {
|
|
1478
|
+
const metadataDotJson = require('../../metadata.json');
|
|
1479
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems);
|
|
1480
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.adapters);
|
|
1481
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.integrations);
|
|
1482
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.ecosystemApplications);
|
|
1483
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.automations);
|
|
1484
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.transformations);
|
|
1485
|
+
assert.notEqual(undefined, metadataDotJson.relatedItems.useCases);
|
|
1486
|
+
done();
|
|
1487
|
+
} catch (error) {
|
|
1488
|
+
log.error(`Test Failure: ${error}`);
|
|
1489
|
+
done(error);
|
|
1490
|
+
}
|
|
1491
|
+
});
|
|
1492
|
+
});
|
|
1302
1493
|
/*
|
|
1303
1494
|
-----------------------------------------------------------------------
|
|
1304
1495
|
-----------------------------------------------------------------------
|
package/utils/adapterInfo.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
/* eslint import/no-dynamic-require:warn */
|
|
5
5
|
/* eslint prefer-destructuring:warn */
|
|
6
6
|
|
|
7
|
-
const fs = require('fs-extra');
|
|
8
7
|
const path = require('path');
|
|
8
|
+
const fs = require('fs-extra');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* This script will determine the information about the adapter and store
|
package/utils/addAuth.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/* eslint global-require: warn */
|
|
3
3
|
/* eslint import/no-dynamic-require: warn */
|
|
4
4
|
|
|
5
|
-
const rls = require('readline-sync');
|
|
6
5
|
const path = require('path');
|
|
7
6
|
const fs = require('fs');
|
|
7
|
+
const rls = require('readline-sync');
|
|
8
8
|
|
|
9
9
|
function getQuestions(props, obj) {
|
|
10
10
|
const questions = props.map((p) => `${p}: ${(obj[p] !== undefined) ? `(${obj[p]})` : ''} `);
|
package/utils/artifactize.js
CHANGED
package/utils/checkMigrate.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { execSync } = require('child_process');
|
|
2
|
+
const fs = require('fs');
|
|
2
3
|
const semver = require('semver');
|
|
3
4
|
const axios = require('axios');
|
|
4
|
-
const fs = require('fs');
|
|
5
5
|
const packageJson = require('../package.json');
|
|
6
6
|
|
|
7
7
|
const localEngineVer = packageJson.engineVersion;
|
package/utils/entitiesToDB.js
CHANGED
package/utils/findPath.js
CHANGED
package/utils/modify.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
const { execSync } = require('child_process');
|
|
1
2
|
const fs = require('fs-extra');
|
|
2
3
|
const Ajv = require('ajv');
|
|
3
4
|
const rls = require('readline-sync');
|
|
4
|
-
const { execSync } = require('child_process');
|
|
5
5
|
const { existsSync } = require('fs-extra');
|
|
6
6
|
const { getAdapterConfig } = require('./tbUtils');
|
|
7
7
|
const { name } = require('../package.json');
|
|
@@ -21,9 +21,7 @@ async function updateServiceItem() {
|
|
|
21
21
|
const validate = ajv.compile(propertiesSchema);
|
|
22
22
|
validate(currentProps);
|
|
23
23
|
console.log('Updating Properties...');
|
|
24
|
-
await database.collection('service_configs').updateOne(
|
|
25
|
-
{ model: name }, { $set: serviceItem }
|
|
26
|
-
);
|
|
24
|
+
await database.collection('service_configs').updateOne({ model: name }, { $set: serviceItem });
|
|
27
25
|
console.log('Properties Updated');
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -35,7 +33,7 @@ async function updateServiceItem() {
|
|
|
35
33
|
function backup() {
|
|
36
34
|
// zip all files except node_modules and package-lock
|
|
37
35
|
const backupCmd = 'zip -r previousVersion.zip .';
|
|
38
|
-
execSync(backupCmd, { encoding: 'utf-8' });
|
|
36
|
+
execSync(backupCmd, { encoding: 'utf-8', maxBuffer: 1024 * 1024 * 2 });
|
|
39
37
|
}
|
|
40
38
|
|
|
41
39
|
/**
|
|
@@ -53,9 +51,9 @@ function archiveMod(modType) {
|
|
|
53
51
|
const archiveName = `${modType}-${now.toISOString()}`;
|
|
54
52
|
execSync(`mkdir adapter_modifications/archive/${archiveName}`);
|
|
55
53
|
const archiveCmd = 'mv adapter_modifications/archive .'
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
+ ` && mv adapter_modifications/* archive/${archiveName}`
|
|
55
|
+
+ ' && mv archive adapter_modifications'
|
|
56
|
+
+ ` && rm ${zipFile}`;
|
|
59
57
|
execSync(archiveCmd, { encoding: 'utf-8' });
|
|
60
58
|
}
|
|
61
59
|
|
|
@@ -73,7 +71,7 @@ function revertMod() {
|
|
|
73
71
|
}
|
|
74
72
|
});
|
|
75
73
|
// // unzip previousVersion, reinstall dependencies and delete zipfile
|
|
76
|
-
execSync('unzip -o previousVersion.zip && rm -rf node_modules && rm package-lock.json && npm install');
|
|
74
|
+
execSync('unzip -o previousVersion.zip && rm -rf node_modules && rm package-lock.json && npm install', { maxBuffer: 1024 * 1024 * 2 });
|
|
77
75
|
execSync('rm previousVersion.zip');
|
|
78
76
|
console.log('Changes have been reverted');
|
|
79
77
|
}
|
|
@@ -90,12 +88,12 @@ if (flags === '-m') {
|
|
|
90
88
|
backup();
|
|
91
89
|
console.log('Migrating adapter and running tests...');
|
|
92
90
|
const migrateCmd = 'unzip -o migrationPackage.zip'
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
+ ' && cd adapter_modifications'
|
|
92
|
+
+ ' && node migrate';
|
|
95
93
|
const migrateOutput = execSync(migrateCmd, { encoding: 'utf-8' });
|
|
96
94
|
console.log(migrateOutput);
|
|
97
95
|
if (migrateOutput.indexOf('Lint exited with code 1') >= 0
|
|
98
|
-
|
|
96
|
+
|| migrateOutput.indexOf('Tests exited with code 1') >= 0) {
|
|
99
97
|
if (rls.keyInYN('Adapter failed tests or lint after migrating. Would you like to revert the changes?')) {
|
|
100
98
|
console.log('Reverting changes...');
|
|
101
99
|
revertMod();
|
|
@@ -125,12 +123,12 @@ if (flags === '-u') {
|
|
|
125
123
|
// Backup current adapter
|
|
126
124
|
backup();
|
|
127
125
|
const updateCmd = 'unzip -o updatePackage.zip'
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
+ ' && cd adapter_modifications'
|
|
127
|
+
+ ' && node update.js updateFiles';
|
|
130
128
|
execSync(updateCmd, { encoding: 'utf-8' });
|
|
131
129
|
const updateOutput = execSync(updateCmd, { encoding: 'utf-8' });
|
|
132
130
|
if (updateOutput.indexOf('Lint exited with code 1') >= 0
|
|
133
|
-
|
|
131
|
+
|| updateOutput.indexOf('Tests exited with code 1') >= 0) {
|
|
134
132
|
if (rls.keyInYN('Adapter failed tests or lint after updating. Would you like to revert the changes?')) {
|
|
135
133
|
console.log('Reverting changes...');
|
|
136
134
|
revertMod();
|