@itentialopensource/adapter-meraki 0.7.3 → 0.8.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/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'];
|