@itentialopensource/adapter-meraki 0.8.1 → 0.8.4
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/AUTH.md +14 -15
- package/BROKER.md +199 -0
- package/CALLS.md +158 -89
- package/CHANGELOG.md +68 -26
- package/CODE_OF_CONDUCT.md +12 -17
- package/CONTRIBUTING.md +88 -74
- package/ENHANCE.md +14 -14
- package/PROPERTIES.md +483 -89
- package/README.md +131 -51
- package/SUMMARY.md +2 -2
- package/TROUBLESHOOT.md +4 -3
- package/adapter.js +174 -732
- package/adapterBase.js +841 -88
- package/entities/.generic/action.json +105 -0
- package/entities/.generic/schema.json +6 -1
- package/package.json +5 -3
- package/pronghorn.json +642 -563
- package/propertiesDecorators.json +14 -0
- package/propertiesSchema.json +393 -195
- package/refs?service=git-upload-pack +0 -0
- package/report/adapterInfo.json +10 -0
- package/report/updateReport1651511176919.json +115 -0
- package/report/updateReport1652488414759.json +120 -0
- package/sampleProperties.json +132 -3
- package/test/integration/adapterTestBasicGet.js +1 -1
- package/test/integration/adapterTestIntegration.js +24 -107
- package/test/unit/adapterBaseTestUnit.js +10 -3
- package/test/unit/adapterTestUnit.js +38 -131
- package/utils/adapterInfo.js +206 -0
- package/utils/entitiesToDB.js +12 -57
- package/utils/pre-commit.sh +3 -0
- package/utils/tbScript.js +35 -20
- package/utils/tbUtils.js +49 -31
- package/utils/testRunner.js +16 -16
package/utils/tbUtils.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
/* eslint import/no-extraneous-dependencies: warn */
|
4
4
|
/* eslint global-require: warn */
|
5
5
|
/* eslint import/no-dynamic-require: warn */
|
6
|
+
/* eslint-disable no-console */
|
6
7
|
|
7
8
|
const path = require('path');
|
8
9
|
const fs = require('fs-extra');
|
@@ -305,9 +306,9 @@ module.exports = {
|
|
305
306
|
* @param {Object} sampleProperties - './sampleProperties.json' in adapter dir
|
306
307
|
*/
|
307
308
|
createAdapter: function createAdapter(pronghornProps, profileItem, sampleProperties, adapterPronghorn) {
|
308
|
-
const
|
309
|
-
const
|
310
|
-
const info = JSON.parse(fs.readFileSync(
|
309
|
+
const iapDir = this.getIAPHome();
|
310
|
+
const packageFile = path.join(iapDir, 'package.json');
|
311
|
+
const info = JSON.parse(fs.readFileSync(packageFile));
|
311
312
|
const version = parseInt(info.version.split('.')[0], 10);
|
312
313
|
|
313
314
|
let adapter = {};
|
@@ -352,13 +353,7 @@ module.exports = {
|
|
352
353
|
|
353
354
|
// get database connection and existing adapter config
|
354
355
|
getAdapterConfig: async function getAdapterConfig() {
|
355
|
-
const
|
356
|
-
let iapDir;
|
357
|
-
if (this.withinIAP(newDirname)) { // when this script is called from IAP
|
358
|
-
iapDir = newDirname;
|
359
|
-
} else {
|
360
|
-
iapDir = path.join(this.getDirname(), 'utils', '../../../../');
|
361
|
-
}
|
356
|
+
const iapDir = this.getIAPHome();
|
362
357
|
const pronghornProps = this.getPronghornProps(iapDir);
|
363
358
|
console.log('Connecting to Database...');
|
364
359
|
const database = await this.connect(iapDir, pronghornProps);
|
@@ -405,35 +400,44 @@ module.exports = {
|
|
405
400
|
},
|
406
401
|
|
407
402
|
/**
|
408
|
-
* @summary
|
409
|
-
*
|
410
|
-
* @
|
411
|
-
* @
|
403
|
+
* @summary Obtain the IAP installation directory depending on how adapter is used:
|
404
|
+
* by IAP, or by npm run CLI interface
|
405
|
+
* @returns IAP installation directory or null if adapter running without IAP
|
406
|
+
* @function getIAPHome
|
412
407
|
*/
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
408
|
+
getIAPHome: function getIAPHome() {
|
409
|
+
let IAPHomePath = null;
|
410
|
+
// check if adapter started via IAP, use path injected by core
|
411
|
+
if (process.env.iap_home) IAPHomePath = process.env.iap_home;
|
412
|
+
// check if adapter started via CLI `npm run <command>` so we have to be located under
|
413
|
+
// <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ directory
|
414
|
+
const currentExecutionPath = this.getCurrentExecutionPath();
|
415
|
+
if (currentExecutionPath.indexOf('/node_modules') >= 0) {
|
416
|
+
[IAPHomePath] = currentExecutionPath.split('/node_modules');
|
419
417
|
}
|
418
|
+
return IAPHomePath;
|
420
419
|
},
|
421
420
|
|
422
421
|
/**
|
423
|
-
* @summary
|
424
|
-
*
|
425
|
-
* @returns
|
426
|
-
*
|
427
|
-
* @function getDirname
|
422
|
+
* @summary get current execution path without resolving symbolic links,
|
423
|
+
* use `pwd` command wihout '-P' option (resolving symlinks) https://linux.die.net/man/1/pwd
|
424
|
+
* @returns
|
425
|
+
* @function getCurrentExecutionPAth
|
428
426
|
*/
|
429
|
-
|
430
|
-
if (this.withinIAP(path.join(__dirname, '../../../../'))) {
|
431
|
-
return __dirname;
|
432
|
-
}
|
427
|
+
getCurrentExecutionPath: function getCurrentExecutionPAth() {
|
433
428
|
const { stdout } = this.systemSync('pwd', true);
|
434
429
|
return stdout.trim();
|
435
430
|
},
|
436
431
|
|
432
|
+
/**
|
433
|
+
* @summary checks if command executed from <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ location
|
434
|
+
* @returns true if command executed under <IAP_HOME>/node_modules/@itentialopensource/<adapter_name>/ path
|
435
|
+
* @function areWeUnderIAPinstallationDirectory
|
436
|
+
*/
|
437
|
+
areWeUnderIAPinstallationDirectory: function areWeUnderIAPinstallationDirectory() {
|
438
|
+
return path.join(this.getCurrentExecutionPath(), '../../..') === this.getIAPHome();
|
439
|
+
},
|
440
|
+
|
437
441
|
/**
|
438
442
|
* @summary connect to mongodb
|
439
443
|
*
|
@@ -441,9 +445,23 @@ module.exports = {
|
|
441
445
|
* @param {Object} properties - pronghornProps
|
442
446
|
*/
|
443
447
|
connect: async function connect(iapDir, properties) {
|
444
|
-
|
448
|
+
let dbConnectionProperties = {};
|
449
|
+
if (properties.mongoProps) {
|
450
|
+
dbConnectionProperties = properties.mongoProps;
|
451
|
+
} else if (properties.mongo) {
|
452
|
+
if (properties.mongo.url) {
|
453
|
+
dbConnectionProperties.url = properties.mongo.url;
|
454
|
+
} else {
|
455
|
+
dbConnectionProperties.url = `mongodb://${properties.mongo.host}:${properties.mongo.port}`;
|
456
|
+
}
|
457
|
+
dbConnectionProperties.db = properties.mongo.database;
|
458
|
+
}
|
459
|
+
if (!dbConnectionProperties.url || !dbConnectionProperties.db) {
|
460
|
+
throw new Error('Mongo properties are not specified in IAP configuration!');
|
461
|
+
}
|
462
|
+
|
445
463
|
const { MongoDBConnection } = require(path.join(iapDir, 'node_modules/@itential/database'));
|
446
|
-
const connection = new MongoDBConnection(
|
464
|
+
const connection = new MongoDBConnection(dbConnectionProperties);
|
447
465
|
const database = await connection.connect(true);
|
448
466
|
return database;
|
449
467
|
}
|
package/utils/testRunner.js
CHANGED
@@ -47,11 +47,11 @@ function replaceTestVars(test) {
|
|
47
47
|
let intTest = fs.readFileSync(test, 'utf8');
|
48
48
|
|
49
49
|
// replace stub variable but check if it exists first
|
50
|
-
let sindex = intTest.indexOf('
|
50
|
+
let sindex = intTest.indexOf('samProps.stub');
|
51
51
|
let eindex = intTest.indexOf(';', sindex);
|
52
52
|
let replStr = intTest.substring(sindex, eindex + 1);
|
53
53
|
if (sindex > -1) {
|
54
|
-
intTest = intTest.replace(replStr, `
|
54
|
+
intTest = intTest.replace(replStr, `samProps.stub = ${stub};`);
|
55
55
|
}
|
56
56
|
|
57
57
|
// replace isRapidFail variable but check if it exists first
|
@@ -71,46 +71,46 @@ function replaceTestVars(test) {
|
|
71
71
|
}
|
72
72
|
|
73
73
|
// replace host variable
|
74
|
-
sindex = intTest.indexOf('
|
74
|
+
sindex = intTest.indexOf('samProps.host');
|
75
75
|
eindex = intTest.indexOf(';', sindex);
|
76
76
|
replStr = intTest.substring(sindex, eindex + 1);
|
77
|
-
intTest = intTest.replace(replStr, `
|
77
|
+
intTest = intTest.replace(replStr, `samProps.host = '${host}';`);
|
78
78
|
|
79
79
|
// replace username variable
|
80
|
-
sindex = intTest.indexOf('
|
80
|
+
sindex = intTest.indexOf('samProps.authentication.username');
|
81
81
|
eindex = intTest.indexOf(';', sindex);
|
82
82
|
replStr = intTest.substring(sindex, eindex + 1);
|
83
|
-
intTest = intTest.replace(replStr, `
|
83
|
+
intTest = intTest.replace(replStr, `samProps.authentication.username = '${username}';`);
|
84
84
|
|
85
85
|
// replace password variable
|
86
|
-
sindex = intTest.indexOf('
|
86
|
+
sindex = intTest.indexOf('samProps.authentication.password');
|
87
87
|
eindex = intTest.indexOf(';', sindex);
|
88
88
|
replStr = intTest.substring(sindex, eindex + 1);
|
89
|
-
intTest = intTest.replace(replStr, `
|
89
|
+
intTest = intTest.replace(replStr, `samProps.authentication.password = '${password}';`);
|
90
90
|
|
91
91
|
// replace protocol variable
|
92
|
-
sindex = intTest.indexOf('
|
92
|
+
sindex = intTest.indexOf('samProps.protocol');
|
93
93
|
eindex = intTest.indexOf(';', sindex);
|
94
94
|
replStr = intTest.substring(sindex, eindex + 1);
|
95
|
-
intTest = intTest.replace(replStr, `
|
95
|
+
intTest = intTest.replace(replStr, `samProps.protocol = '${protocol}';`);
|
96
96
|
|
97
97
|
// replace port variable
|
98
|
-
sindex = intTest.indexOf('
|
98
|
+
sindex = intTest.indexOf('samProps.port');
|
99
99
|
eindex = intTest.indexOf(';', sindex);
|
100
100
|
replStr = intTest.substring(sindex, eindex + 1);
|
101
|
-
intTest = intTest.replace(replStr, `
|
101
|
+
intTest = intTest.replace(replStr, `samProps.port = ${port};`);
|
102
102
|
|
103
103
|
// replace sslenable variable
|
104
|
-
sindex = intTest.indexOf('
|
104
|
+
sindex = intTest.indexOf('samProps.ssl.enabled');
|
105
105
|
eindex = intTest.indexOf(';', sindex);
|
106
106
|
replStr = intTest.substring(sindex, eindex + 1);
|
107
|
-
intTest = intTest.replace(replStr, `
|
107
|
+
intTest = intTest.replace(replStr, `samProps.ssl.enabled = ${sslenable};`);
|
108
108
|
|
109
109
|
// replace sslinvalid variable
|
110
|
-
sindex = intTest.indexOf('
|
110
|
+
sindex = intTest.indexOf('samProps.ssl.accept_invalid_cert');
|
111
111
|
eindex = intTest.indexOf(';', sindex);
|
112
112
|
replStr = intTest.substring(sindex, eindex + 1);
|
113
|
-
intTest = intTest.replace(replStr, `
|
113
|
+
intTest = intTest.replace(replStr, `samProps.ssl.accept_invalid_cert = ${sslinvalid};`);
|
114
114
|
|
115
115
|
console.log(`Updates to ${test} complete`);
|
116
116
|
fs.writeFileSync(test, intTest);
|