@itentialopensource/adapter-meraki 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -0
- package/README.md +84 -11
- package/adapter.js +469 -1
- package/adapterBase.js +24 -2
- package/entities/.generic/action.json +5 -5
- package/error.json +6 -0
- package/package.json +18 -13
- package/pronghorn.json +192 -0
- package/propertiesSchema.json +15 -0
- package/refs?service=git-upload-pack +0 -0
- package/report/updateReport1642739939352.json +95 -0
- package/sampleProperties.json +4 -1
- package/test/integration/adapterTestIntegration.js +9 -1
- package/test/unit/adapterBaseTestUnit.js +5 -2
- package/test/unit/adapterTestUnit.js +618 -3
- package/utils/addAuth.js +94 -0
- package/utils/basicGet.js +1 -14
- package/utils/entitiesToDB.js +224 -0
- package/utils/modify.js +1 -1
- package/utils/patches2bundledDeps.js +90 -0
- package/utils/removeHooks.js +20 -0
- package/utils/tbScript.js +14 -8
- package/utils/tbUtils.js +98 -19
- package/utils/troubleshootingAdapter.js +2 -26
package/adapterBase.js
CHANGED
@@ -22,6 +22,7 @@ const AjvCl = require('ajv');
|
|
22
22
|
const PropUtilCl = require('@itentialopensource/adapter-utils').PropertyUtility;
|
23
23
|
const RequestHandlerCl = require('@itentialopensource/adapter-utils').RequestHandler;
|
24
24
|
|
25
|
+
const entitiesToDB = require(path.join(__dirname, 'utils/entitiesToDB'));
|
25
26
|
const troubleshootingAdapter = require(path.join(__dirname, 'utils/troubleshootingAdapter'));
|
26
27
|
const tbUtils = require(path.join(__dirname, 'utils/tbUtils'));
|
27
28
|
|
@@ -687,7 +688,7 @@ class AdapterBase extends EventEmitterCl {
|
|
687
688
|
log.info(` method: ${actions.actions[a].method} path: ${actions.actions[a].entitypath}`);
|
688
689
|
const fitem = {
|
689
690
|
entity: entities[e],
|
690
|
-
action: actions[a].name,
|
691
|
+
action: actions.actions[a].name,
|
691
692
|
method: actions.actions[a].method,
|
692
693
|
path: actions.actions[a].entitypath
|
693
694
|
};
|
@@ -821,7 +822,7 @@ class AdapterBase extends EventEmitterCl {
|
|
821
822
|
*/
|
822
823
|
async runConnectivity(callback) {
|
823
824
|
try {
|
824
|
-
const { serviceItem } = await
|
825
|
+
const { serviceItem } = await tbUtils.getAdapterConfig();
|
825
826
|
const { host } = serviceItem.properties.properties;
|
826
827
|
const result = tbUtils.runConnectivity(host, false);
|
827
828
|
if (result.failCount > 0) {
|
@@ -1001,6 +1002,27 @@ class AdapterBase extends EventEmitterCl {
|
|
1001
1002
|
return [];
|
1002
1003
|
}
|
1003
1004
|
}
|
1005
|
+
|
1006
|
+
/**
|
1007
|
+
* @summary moves entities to mongo database
|
1008
|
+
*
|
1009
|
+
* @function moveEntitiesToDB
|
1010
|
+
*
|
1011
|
+
* @return {Callback} - containing the response from the mongo transaction
|
1012
|
+
*/
|
1013
|
+
moveEntitiesToDB(callback) {
|
1014
|
+
const meth = 'adapterBase-moveEntitiesToDB';
|
1015
|
+
const origin = `${this.id}-${meth}`;
|
1016
|
+
log.trace(origin);
|
1017
|
+
|
1018
|
+
try {
|
1019
|
+
return callback(entitiesToDB.moveEntitiesToDB(__dirname, { pronghornProps: this.allProps, id: this.id }), null);
|
1020
|
+
} catch (err) {
|
1021
|
+
const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, err);
|
1022
|
+
log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
|
1023
|
+
return callback(null, errorObj);
|
1024
|
+
}
|
1025
|
+
}
|
1004
1026
|
}
|
1005
1027
|
|
1006
1028
|
module.exports = AdapterBase;
|
@@ -4,7 +4,7 @@
|
|
4
4
|
"name": "getGenerics",
|
5
5
|
"protocol": "REST",
|
6
6
|
"method": "GET",
|
7
|
-
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
|
7
|
+
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
|
8
8
|
"requestSchema": "schema.json",
|
9
9
|
"responseSchema": "schema.json",
|
10
10
|
"timeout": 0,
|
@@ -25,7 +25,7 @@
|
|
25
25
|
"name": "createGeneric",
|
26
26
|
"protocol": "REST",
|
27
27
|
"method": "POST",
|
28
|
-
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
|
28
|
+
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
|
29
29
|
"requestSchema": "schema.json",
|
30
30
|
"responseSchema": "schema.json",
|
31
31
|
"timeout": 0,
|
@@ -46,7 +46,7 @@
|
|
46
46
|
"name": "updateGeneric",
|
47
47
|
"protocol": "REST",
|
48
48
|
"method": "PUT",
|
49
|
-
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
|
49
|
+
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
|
50
50
|
"requestSchema": "schema.json",
|
51
51
|
"responseSchema": "schema.json",
|
52
52
|
"timeout": 0,
|
@@ -67,7 +67,7 @@
|
|
67
67
|
"name": "patchGeneric",
|
68
68
|
"protocol": "REST",
|
69
69
|
"method": "PATCH",
|
70
|
-
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
|
70
|
+
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
|
71
71
|
"requestSchema": "schema.json",
|
72
72
|
"responseSchema": "schema.json",
|
73
73
|
"timeout": 0,
|
@@ -88,7 +88,7 @@
|
|
88
88
|
"name": "deleteGeneric",
|
89
89
|
"protocol": "REST",
|
90
90
|
"method": "DELETE",
|
91
|
-
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
|
91
|
+
"entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
|
92
92
|
"requestSchema": "schema.json",
|
93
93
|
"responseSchema": "schema.json",
|
94
94
|
"timeout": 0,
|
package/error.json
CHANGED
@@ -168,6 +168,12 @@
|
|
168
168
|
"displayString": "Failure response received for $VARIABLE$",
|
169
169
|
"recommendation": "Check the reason for failure in the stack trace"
|
170
170
|
},
|
171
|
+
{
|
172
|
+
"key": "Suspended Adapter",
|
173
|
+
"icode": "AD.600",
|
174
|
+
"displayString": "Adapter is suspended",
|
175
|
+
"recommendation": "Check if external system is functional and unsuspend if appropriate"
|
176
|
+
},
|
171
177
|
{
|
172
178
|
"key": "Caught Exception",
|
173
179
|
"icode": "AD.900",
|
package/package.json
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"name": "@itentialopensource/adapter-meraki",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.8.0",
|
4
4
|
"description": "This adapter integrates with system described as: merakiDashboardApi.",
|
5
5
|
"main": "adapter.js",
|
6
|
-
"wizardVersion": "2.
|
7
|
-
"engineVersion": "1.
|
6
|
+
"wizardVersion": "2.44.7",
|
7
|
+
"engineVersion": "1.59.55",
|
8
|
+
"adapterType": "http",
|
8
9
|
"scripts": {
|
9
10
|
"artifactize": "npm i && node utils/packModificationScript.js",
|
10
|
-
"preinstall": "node utils/setup.js",
|
11
|
+
"preinstall": "node utils/setup.js && npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions",
|
11
12
|
"lint": "node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js",
|
12
13
|
"lint:errors": "node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet",
|
13
14
|
"test:baseunit": "mocha test/unit/adapterBaseTestUnit.js --LOG=error",
|
@@ -15,7 +16,7 @@
|
|
15
16
|
"test:integration": "mocha test/integration/adapterTestIntegration.js --LOG=error",
|
16
17
|
"test:cover": "nyc --reporter html --reporter text mocha --reporter dot test/*",
|
17
18
|
"test": "npm run test:baseunit && npm run test:unit && npm run test:integration",
|
18
|
-
"adapter:install": "node utils/tbScript.js install",
|
19
|
+
"adapter:install": "npm i && node utils/tbScript.js install",
|
19
20
|
"adapter:checkMigrate": "node utils/checkMigrate.js",
|
20
21
|
"adapter:findPath": "node utils/findPath.js",
|
21
22
|
"adapter:migrate": "node utils/modify.js -m",
|
@@ -25,7 +26,7 @@
|
|
25
26
|
"healthcheck": "node utils/tbScript.js healthcheck",
|
26
27
|
"basicget": "node utils/tbScript.js basicget",
|
27
28
|
"connectivity": "node utils/tbScript.js connectivity",
|
28
|
-
"deploy": "npm publish --registry=
|
29
|
+
"deploy": "npm publish --registry=https://registry.npmjs.org --access=public",
|
29
30
|
"build": "npm run deploy"
|
30
31
|
},
|
31
32
|
"keywords": [
|
@@ -51,13 +52,14 @@
|
|
51
52
|
"author": "Itential",
|
52
53
|
"homepage": "https://gitlab.com/itentialopensource/adapters/sd-wan/adapter-meraki#readme",
|
53
54
|
"dependencies": {
|
54
|
-
"@itentialopensource/adapter-utils": "^4.
|
55
|
+
"@itentialopensource/adapter-utils": "^4.44.11",
|
55
56
|
"ajv": "^6.12.0",
|
56
57
|
"axios": "^0.21.0",
|
57
58
|
"commander": "^2.20.0",
|
58
59
|
"fs-extra": "^8.1.0",
|
59
|
-
"mocha": "^
|
60
|
+
"mocha": "^9.0.1",
|
60
61
|
"mocha-param": "^2.0.1",
|
62
|
+
"mongodb": "^4.1.0",
|
61
63
|
"network-diagnostics": "^0.5.3",
|
62
64
|
"nyc": "^15.1.0",
|
63
65
|
"readline-sync": "^1.4.10",
|
@@ -65,13 +67,16 @@
|
|
65
67
|
"winston": "^3.3.3"
|
66
68
|
},
|
67
69
|
"devDependencies": {
|
68
|
-
"chai": "^4.
|
69
|
-
"eslint": "^7.
|
70
|
-
"eslint-config-airbnb-base": "^14.2.
|
71
|
-
"eslint-plugin-import": "^2.
|
72
|
-
"eslint-plugin-json": "^
|
70
|
+
"chai": "^4.3.4",
|
71
|
+
"eslint": "^7.29.0",
|
72
|
+
"eslint-config-airbnb-base": "^14.2.1",
|
73
|
+
"eslint-plugin-import": "^2.23.4",
|
74
|
+
"eslint-plugin-json": "^3.0.0",
|
73
75
|
"package-json-validator": "^0.6.3",
|
74
76
|
"testdouble": "^3.16.1"
|
75
77
|
},
|
78
|
+
"resolutions": {
|
79
|
+
"minimist": "^1.2.5"
|
80
|
+
},
|
76
81
|
"private": false
|
77
82
|
}
|
package/pronghorn.json
CHANGED
@@ -386,6 +386,198 @@
|
|
386
386
|
},
|
387
387
|
"task": true
|
388
388
|
},
|
389
|
+
{
|
390
|
+
"name": "moveEntitiesToDB",
|
391
|
+
"summary": "Moves entities from an adapter into the IAP database",
|
392
|
+
"description": "Moves entities from an adapter into the IAP database",
|
393
|
+
"input": [],
|
394
|
+
"output": {
|
395
|
+
"name": "res",
|
396
|
+
"type": "object",
|
397
|
+
"description": "A JSON Object containing status, code and the response from the mongo transaction",
|
398
|
+
"schema": {
|
399
|
+
"title": "res",
|
400
|
+
"type": "object"
|
401
|
+
}
|
402
|
+
},
|
403
|
+
"roles": [
|
404
|
+
"admin"
|
405
|
+
],
|
406
|
+
"route": {
|
407
|
+
"verb": "POST",
|
408
|
+
"path": "/moveEntitiesToDB"
|
409
|
+
},
|
410
|
+
"task": true
|
411
|
+
},
|
412
|
+
{
|
413
|
+
"name": "getDevice",
|
414
|
+
"summary": "Get the Appliance",
|
415
|
+
"description": "Get the Appliance",
|
416
|
+
"input": [
|
417
|
+
{
|
418
|
+
"name": "deviceName",
|
419
|
+
"type": "string",
|
420
|
+
"info": "An Appliance Device Name",
|
421
|
+
"required": true,
|
422
|
+
"schema": {
|
423
|
+
"title": "deviceName",
|
424
|
+
"type": "string"
|
425
|
+
}
|
426
|
+
}
|
427
|
+
],
|
428
|
+
"output": {
|
429
|
+
"name": "result",
|
430
|
+
"type": "object",
|
431
|
+
"description": "A JSON Object containing status, code and the result",
|
432
|
+
"schema": {
|
433
|
+
"title": "result",
|
434
|
+
"type": "object"
|
435
|
+
}
|
436
|
+
},
|
437
|
+
"roles": [
|
438
|
+
"admin"
|
439
|
+
],
|
440
|
+
"route": {
|
441
|
+
"verb": "POST",
|
442
|
+
"path": "/getDevice"
|
443
|
+
},
|
444
|
+
"task": false
|
445
|
+
},
|
446
|
+
{
|
447
|
+
"name": "getDevicesFiltered",
|
448
|
+
"summary": "Get Appliances that match the filter",
|
449
|
+
"description": "Get Appliances that match the filter",
|
450
|
+
"input": [
|
451
|
+
{
|
452
|
+
"name": "options",
|
453
|
+
"type": "object",
|
454
|
+
"info": "options - e.g. { 'start': 1, 'limit': 20, 'filter': { 'name': 'abc123' } }",
|
455
|
+
"required": true,
|
456
|
+
"schema": {
|
457
|
+
"title": "options",
|
458
|
+
"type": "object"
|
459
|
+
}
|
460
|
+
}
|
461
|
+
],
|
462
|
+
"output": {
|
463
|
+
"name": "result",
|
464
|
+
"type": "array",
|
465
|
+
"description": "A JSON Object containing status, code and the result",
|
466
|
+
"schema": {
|
467
|
+
"title": "result",
|
468
|
+
"type": "array"
|
469
|
+
}
|
470
|
+
},
|
471
|
+
"roles": [
|
472
|
+
"admin"
|
473
|
+
],
|
474
|
+
"route": {
|
475
|
+
"verb": "POST",
|
476
|
+
"path": "/getDevicesFiltered"
|
477
|
+
},
|
478
|
+
"task": false
|
479
|
+
},
|
480
|
+
{
|
481
|
+
"name": "isAlive",
|
482
|
+
"summary": "Checks the status for the provided Appliance",
|
483
|
+
"description": "Checks the status for the provided Appliance",
|
484
|
+
"input": [
|
485
|
+
{
|
486
|
+
"name": "deviceName",
|
487
|
+
"type": "string",
|
488
|
+
"info": "An Appliance Device Name",
|
489
|
+
"required": true,
|
490
|
+
"schema": {
|
491
|
+
"title": "deviceName",
|
492
|
+
"type": "string"
|
493
|
+
}
|
494
|
+
}
|
495
|
+
],
|
496
|
+
"output": {
|
497
|
+
"name": "result",
|
498
|
+
"type": "boolean",
|
499
|
+
"description": "A JSON Object containing status, code and the result",
|
500
|
+
"schema": {
|
501
|
+
"title": "result",
|
502
|
+
"type": "boolean"
|
503
|
+
}
|
504
|
+
},
|
505
|
+
"roles": [
|
506
|
+
"admin"
|
507
|
+
],
|
508
|
+
"route": {
|
509
|
+
"verb": "POST",
|
510
|
+
"path": "/isAlive"
|
511
|
+
},
|
512
|
+
"task": false
|
513
|
+
},
|
514
|
+
{
|
515
|
+
"name": "getConfig",
|
516
|
+
"summary": "Gets a config for the provided Appliance",
|
517
|
+
"description": "Gets a config for the provided Appliance",
|
518
|
+
"input": [
|
519
|
+
{
|
520
|
+
"name": "deviceName",
|
521
|
+
"type": "string",
|
522
|
+
"info": "An Appliance Device Name",
|
523
|
+
"required": true,
|
524
|
+
"schema": {
|
525
|
+
"title": "deviceName",
|
526
|
+
"type": "string"
|
527
|
+
}
|
528
|
+
},
|
529
|
+
{
|
530
|
+
"name": "format",
|
531
|
+
"type": "string",
|
532
|
+
"info": "The format to be returned - this is ignored as we always return json",
|
533
|
+
"required": false,
|
534
|
+
"schema": {
|
535
|
+
"title": "format",
|
536
|
+
"type": "string"
|
537
|
+
}
|
538
|
+
}
|
539
|
+
],
|
540
|
+
"output": {
|
541
|
+
"name": "result",
|
542
|
+
"type": "object",
|
543
|
+
"description": "A JSON Object containing status, code and the result",
|
544
|
+
"schema": {
|
545
|
+
"title": "result",
|
546
|
+
"type": "object"
|
547
|
+
}
|
548
|
+
},
|
549
|
+
"roles": [
|
550
|
+
"admin"
|
551
|
+
],
|
552
|
+
"route": {
|
553
|
+
"verb": "POST",
|
554
|
+
"path": "/getConfig"
|
555
|
+
},
|
556
|
+
"task": false
|
557
|
+
},
|
558
|
+
{
|
559
|
+
"name": "getCount",
|
560
|
+
"summary": "Gets a device count from the system",
|
561
|
+
"description": "Gets a device count from the system",
|
562
|
+
"input": [],
|
563
|
+
"output": {
|
564
|
+
"name": "result",
|
565
|
+
"type": "object",
|
566
|
+
"description": "A JSON Object containing status, code and the result",
|
567
|
+
"schema": {
|
568
|
+
"title": "result",
|
569
|
+
"type": "object"
|
570
|
+
}
|
571
|
+
},
|
572
|
+
"roles": [
|
573
|
+
"admin"
|
574
|
+
],
|
575
|
+
"route": {
|
576
|
+
"verb": "POST",
|
577
|
+
"path": "/getCount"
|
578
|
+
},
|
579
|
+
"task": false
|
580
|
+
},
|
389
581
|
{
|
390
582
|
"name": "createOrganizationActionBatch",
|
391
583
|
"summary": "Create an action batch",
|
package/propertiesSchema.json
CHANGED
@@ -232,6 +232,21 @@
|
|
232
232
|
"type": "boolean",
|
233
233
|
"description": "This property turns on logging of Authentication Information and should only be true when debugging authentication and connectivity",
|
234
234
|
"default": false
|
235
|
+
},
|
236
|
+
"client_id": {
|
237
|
+
"type": "string",
|
238
|
+
"description": "The client id for OAuth requests - can also use username depending on schema",
|
239
|
+
"default": ""
|
240
|
+
},
|
241
|
+
"client_secret": {
|
242
|
+
"type": "string",
|
243
|
+
"description": "The client secret for OAuth requests - can also use password depending on schema",
|
244
|
+
"default": ""
|
245
|
+
},
|
246
|
+
"grant_type": {
|
247
|
+
"type": "string",
|
248
|
+
"description": "The grant type for OAuth requests - can also provide in schema",
|
249
|
+
"default": ""
|
235
250
|
}
|
236
251
|
},
|
237
252
|
"required": [
|
Binary file
|
@@ -0,0 +1,95 @@
|
|
1
|
+
{
|
2
|
+
"errors": [],
|
3
|
+
"statistics": [
|
4
|
+
{
|
5
|
+
"owner": "errorJson",
|
6
|
+
"description": "New adapter errors available for use",
|
7
|
+
"value": 1
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"owner": "errorJson",
|
11
|
+
"description": "Adapter errors no longer available for use",
|
12
|
+
"value": 0
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"owner": "errorJson",
|
16
|
+
"description": "Adapter errors that have been updated (e.g. recommendation changes)",
|
17
|
+
"value": 29
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"owner": "packageJson",
|
21
|
+
"description": "Number of production dependencies",
|
22
|
+
"value": 13
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"owner": "packageJson",
|
26
|
+
"description": "Number of development dependencies",
|
27
|
+
"value": 7
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"owner": "packageJson",
|
31
|
+
"description": "Number of npm scripts",
|
32
|
+
"value": 23
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"owner": "packageJson",
|
36
|
+
"description": "Runtime Library dependency",
|
37
|
+
"value": "^4.44.11"
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"owner": "propertiesSchemaJson",
|
41
|
+
"description": "Adapter properties defined in the propertiesSchema file",
|
42
|
+
"value": 64
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"owner": "readmeMd",
|
46
|
+
"description": "Number of lines in the README.md",
|
47
|
+
"value": 688
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"owner": "unitTestJS",
|
51
|
+
"description": "Number of lines of code in unit tests",
|
52
|
+
"value": 13271
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"owner": "unitTestJS",
|
56
|
+
"description": "Number of unit tests",
|
57
|
+
"value": 852
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"owner": "integrationTestJS",
|
61
|
+
"description": "Number of lines of code in integration tests",
|
62
|
+
"value": 9674
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"owner": "integrationTestJS",
|
66
|
+
"description": "Number of integration tests",
|
67
|
+
"value": 334
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"owner": "staticFile",
|
71
|
+
"description": "Number of lines of code in adapterBase.js",
|
72
|
+
"value": 1029
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"owner": "staticFile",
|
76
|
+
"description": "Number of static files added",
|
77
|
+
"value": 34
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"owner": "Overall",
|
81
|
+
"description": "Total lines of Code",
|
82
|
+
"value": 23974
|
83
|
+
},
|
84
|
+
{
|
85
|
+
"owner": "Overall",
|
86
|
+
"description": "Total Tests",
|
87
|
+
"value": 1186
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"owner": "Overall",
|
91
|
+
"description": "Total Files",
|
92
|
+
"value": 6
|
93
|
+
}
|
94
|
+
]
|
95
|
+
}
|
package/sampleProperties.json
CHANGED
@@ -21,7 +21,10 @@
|
|
21
21
|
"invalid_token_error": 401,
|
22
22
|
"auth_field": "header.headers.Authorization",
|
23
23
|
"auth_field_format": "Basic {b64}{username}:{password}{/b64}",
|
24
|
-
"auth_logging": false
|
24
|
+
"auth_logging": false,
|
25
|
+
"client_id": "",
|
26
|
+
"client_secret": "",
|
27
|
+
"grant_type": ""
|
25
28
|
},
|
26
29
|
"healthcheck": {
|
27
30
|
"type": "none",
|
@@ -13,7 +13,10 @@ const winston = require('winston');
|
|
13
13
|
const { expect } = require('chai');
|
14
14
|
const { use } = require('chai');
|
15
15
|
const td = require('testdouble');
|
16
|
+
const util = require('util');
|
17
|
+
const pronghorn = require('../../pronghorn.json');
|
16
18
|
|
19
|
+
pronghorn.methodsByName = pronghorn.methods.reduce((result, meth) => ({ ...result, [meth.name]: meth }), {});
|
17
20
|
const anything = td.matchers.anything();
|
18
21
|
|
19
22
|
// stub and attemptTimeout are used throughout the code so set them here
|
@@ -63,7 +66,10 @@ global.pronghornProps = {
|
|
63
66
|
invalid_token_error: 401,
|
64
67
|
auth_field: 'header.headers.Authorization',
|
65
68
|
auth_field_format: 'Basic {b64}{username}:{password}{/b64}',
|
66
|
-
auth_logging: false
|
69
|
+
auth_logging: false,
|
70
|
+
client_id: '',
|
71
|
+
client_secret: '',
|
72
|
+
grant_type: ''
|
67
73
|
},
|
68
74
|
healthcheck: {
|
69
75
|
type: 'none',
|
@@ -341,6 +347,8 @@ describe('[integration] Meraki Adapter Test', () => {
|
|
341
347
|
try {
|
342
348
|
assert.notEqual(null, a);
|
343
349
|
assert.notEqual(undefined, a);
|
350
|
+
const checkId = global.pronghornProps.adapterProps.adapters[0].id;
|
351
|
+
assert.equal(checkId, a.id);
|
344
352
|
assert.notEqual(null, a.allProps);
|
345
353
|
const check = global.pronghornProps.adapterProps.adapters[0].properties.healthcheck.type;
|
346
354
|
assert.equal(check, a.healthcheckType);
|
@@ -61,7 +61,10 @@ global.pronghornProps = {
|
|
61
61
|
token_cache: 'local',
|
62
62
|
auth_field: 'header.headers.Authorization',
|
63
63
|
auth_field_format: 'Basic {b64}{username}:{password}{/b64}',
|
64
|
-
auth_logging: false
|
64
|
+
auth_logging: false,
|
65
|
+
client_id: '',
|
66
|
+
client_secret: '',
|
67
|
+
grant_type: ''
|
65
68
|
},
|
66
69
|
healthcheck: {
|
67
70
|
type: 'none',
|
@@ -314,7 +317,7 @@ describe('[unit] Adapter Base Test', () => {
|
|
314
317
|
});
|
315
318
|
it('should return a list of functions', (done) => {
|
316
319
|
const returnedFunctions = ['addEntityCache', 'capabilityResults', 'checkActionFiles', 'checkProperties', 'connect', 'encryptProperty',
|
317
|
-
'entityInList', 'findPath', 'getAllCapabilities', 'getAllFunctions', 'getQueue', 'getWorkflowFunctions', 'healthCheck',
|
320
|
+
'entityInList', 'findPath', 'getAllCapabilities', 'getAllFunctions', 'getQueue', 'getWorkflowFunctions', 'healthCheck', 'moveEntitiesToDB',
|
318
321
|
'refreshProperties', 'runBasicGet', 'runConnectivity', 'runHealthcheck', 'suspend', 'troubleshoot', 'unsuspend', 'updateAdapterConfiguration', 'addListener',
|
319
322
|
'emit', 'eventNames', 'getMaxListeners', 'listenerCount', 'listeners', 'off', 'on', 'once', 'prependListener',
|
320
323
|
'prependOnceListener', 'rawListeners', 'removeAllListeners', 'removeListener', 'setMaxListeners'];
|