@itentialopensource/adapter-efficientip_solidserver 0.1.1 → 0.3.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.
Files changed (57) hide show
  1. package/AUTH.md +39 -0
  2. package/BROKER.md +199 -0
  3. package/CALLS.md +1465 -0
  4. package/CHANGELOG.md +17 -2
  5. package/CODE_OF_CONDUCT.md +12 -17
  6. package/CONTRIBUTING.md +3 -148
  7. package/ENHANCE.md +69 -0
  8. package/PROPERTIES.md +641 -0
  9. package/README.md +235 -576
  10. package/SUMMARY.md +9 -0
  11. package/SYSTEMINFO.md +11 -0
  12. package/TROUBLESHOOT.md +47 -0
  13. package/adapter.js +383 -263
  14. package/adapterBase.js +854 -408
  15. package/changelogs/changelog.md +16 -0
  16. package/entities/.generic/action.json +110 -5
  17. package/entities/.generic/schema.json +6 -1
  18. package/error.json +6 -0
  19. package/metadata.json +49 -0
  20. package/package.json +27 -22
  21. package/pronghorn.json +691 -88
  22. package/propertiesDecorators.json +14 -0
  23. package/propertiesSchema.json +828 -7
  24. package/refs?service=git-upload-pack +0 -0
  25. package/report/adapter-openapi.json +41906 -0
  26. package/report/adapter-openapi.yaml +23138 -0
  27. package/report/adapterInfo.json +10 -0
  28. package/report/updateReport1653233995404.json +120 -0
  29. package/report/updateReport1691508450223.json +120 -0
  30. package/report/updateReport1692202927301.json +120 -0
  31. package/report/updateReport1694465845842.json +120 -0
  32. package/report/updateReport1698421858198.json +120 -0
  33. package/sampleProperties.json +153 -3
  34. package/test/integration/adapterTestBasicGet.js +3 -5
  35. package/test/integration/adapterTestConnectivity.js +91 -42
  36. package/test/integration/adapterTestIntegration.js +155 -106
  37. package/test/unit/adapterBaseTestUnit.js +388 -308
  38. package/test/unit/adapterTestUnit.js +484 -243
  39. package/utils/adapterInfo.js +206 -0
  40. package/utils/addAuth.js +94 -0
  41. package/utils/artifactize.js +1 -1
  42. package/utils/basicGet.js +1 -14
  43. package/utils/checkMigrate.js +1 -1
  44. package/utils/entitiesToDB.js +179 -0
  45. package/utils/findPath.js +1 -1
  46. package/utils/methodDocumentor.js +273 -0
  47. package/utils/modify.js +14 -16
  48. package/utils/packModificationScript.js +1 -1
  49. package/utils/patches2bundledDeps.js +90 -0
  50. package/utils/pre-commit.sh +5 -0
  51. package/utils/removeHooks.js +20 -0
  52. package/utils/taskMover.js +309 -0
  53. package/utils/tbScript.js +129 -53
  54. package/utils/tbUtils.js +125 -25
  55. package/utils/testRunner.js +17 -17
  56. package/utils/troubleshootingAdapter.js +10 -31
  57. package/workflows/README.md +0 -3
@@ -4,36 +4,48 @@
4
4
  /* global describe it log pronghornProps */
5
5
  /* eslint global-require: warn */
6
6
  /* eslint no-unused-vars: warn */
7
+ /* eslint import/no-dynamic-require:warn */
7
8
 
8
9
  // include required items for testing & logging
9
10
  const assert = require('assert');
10
- const fs = require('fs-extra');
11
- const mocha = require('mocha');
12
11
  const path = require('path');
13
12
  const util = require('util');
14
- const winston = require('winston');
15
13
  const execute = require('child_process').execSync;
14
+ const fs = require('fs-extra');
15
+ const mocha = require('mocha');
16
+ const winston = require('winston');
16
17
  const { expect } = require('chai');
17
18
  const { use } = require('chai');
18
19
  const td = require('testdouble');
20
+ const Ajv = require('ajv');
19
21
 
22
+ const ajv = new Ajv({ strictSchema: false, allErrors: true, allowUnionTypes: true });
20
23
  const anything = td.matchers.anything();
21
-
22
- // stub and attemptTimeout are used throughout the code so set them here
23
24
  let logLevel = 'none';
24
- const stub = true;
25
25
  const isRapidFail = false;
26
- const attemptTimeout = 600000;
26
+
27
+ // read in the properties from the sampleProperties files
28
+ let adaptdir = __dirname;
29
+ if (adaptdir.endsWith('/test/integration')) {
30
+ adaptdir = adaptdir.substring(0, adaptdir.length - 17);
31
+ } else if (adaptdir.endsWith('/test/unit')) {
32
+ adaptdir = adaptdir.substring(0, adaptdir.length - 10);
33
+ }
34
+ const samProps = require(`${adaptdir}/sampleProperties.json`).properties;
27
35
 
28
36
  // these variables can be changed to run in integrated mode so easier to set them here
29
37
  // always check these in with bogus data!!!
30
- const host = 'replace.hostorip.here';
31
- const username = 'username';
32
- const password = 'password';
33
- const protocol = 'http';
34
- const port = 80;
35
- const sslenable = false;
36
- const sslinvalid = false;
38
+ samProps.stub = true;
39
+ samProps.host = 'replace.hostorip.here';
40
+ samProps.authentication.username = 'username';
41
+ samProps.authentication.password = 'password';
42
+ samProps.protocol = 'http';
43
+ samProps.port = 80;
44
+ samProps.ssl.enabled = false;
45
+ samProps.ssl.accept_invalid_cert = false;
46
+ samProps.request.attempt_timeout = 1200000;
47
+ const attemptTimeout = samProps.request.attempt_timeout;
48
+ const { stub } = samProps;
37
49
 
38
50
  // these are the adapter properties. You generally should not need to alter
39
51
  // any of these after they are initially set up
@@ -45,102 +57,7 @@ global.pronghornProps = {
45
57
  adapters: [{
46
58
  id: 'Test-efficientip_solidserver',
47
59
  type: 'EfficientipSolidserver',
48
- properties: {
49
- host,
50
- port,
51
- base_path: '/rest',
52
- version: '',
53
- cache_location: 'none',
54
- encode_pathvars: true,
55
- save_metric: false,
56
- stub,
57
- protocol,
58
- authentication: {
59
- auth_method: 'basic user_password',
60
- username,
61
- password,
62
- token: '',
63
- invalid_token_error: 401,
64
- token_timeout: -1,
65
- token_cache: 'local',
66
- auth_field: 'header.headers.Authorization',
67
- auth_field_format: 'Basic {b64}{username}:{password}{/b64}',
68
- auth_logging: false,
69
- client_id: '',
70
- client_secret: '',
71
- grant_type: ''
72
- },
73
- healthcheck: {
74
- type: 'intermittent',
75
- frequency: 600000,
76
- query_object: {}
77
- },
78
- throttle: {
79
- throttle_enabled: false,
80
- number_pronghorns: 1,
81
- sync_async: 'sync',
82
- max_in_queue: 1000,
83
- concurrent_max: 1,
84
- expire_timeout: 0,
85
- avg_runtime: 200,
86
- priorities: [
87
- {
88
- value: 0,
89
- percent: 100
90
- }
91
- ]
92
- },
93
- request: {
94
- number_redirects: 0,
95
- number_retries: 3,
96
- limit_retry_error: [0],
97
- failover_codes: [],
98
- attempt_timeout: attemptTimeout,
99
- global_request: {
100
- payload: {},
101
- uriOptions: {},
102
- addlHeaders: {},
103
- authData: {}
104
- },
105
- healthcheck_on_timeout: true,
106
- return_raw: true,
107
- archiving: false,
108
- return_request: false
109
- },
110
- proxy: {
111
- enabled: false,
112
- host: '',
113
- port: 1,
114
- protocol: 'http',
115
- username: '',
116
- password: ''
117
- },
118
- ssl: {
119
- ecdhCurve: '',
120
- enabled: sslenable,
121
- accept_invalid_cert: sslinvalid,
122
- ca_file: '',
123
- key_file: '',
124
- cert_file: '',
125
- secure_protocol: '',
126
- ciphers: ''
127
- },
128
- mongo: {
129
- host: '',
130
- port: 0,
131
- database: '',
132
- username: '',
133
- password: '',
134
- replSet: '',
135
- db_ssl: {
136
- enabled: false,
137
- accept_invalid_cert: false,
138
- ca_file: '',
139
- key_file: '',
140
- cert_file: ''
141
- }
142
- }
143
- }
60
+ properties: samProps
144
61
  }]
145
62
  }
146
63
  };
@@ -271,10 +188,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
271
188
  });
272
189
 
273
190
  let wffunctions = [];
274
- describe('#getWorkflowFunctions', () => {
191
+ describe('#iapGetAdapterWorkflowFunctions', () => {
275
192
  it('should retrieve workflow functions', (done) => {
276
193
  try {
277
- wffunctions = a.getWorkflowFunctions([]);
194
+ wffunctions = a.iapGetAdapterWorkflowFunctions([]);
278
195
 
279
196
  try {
280
197
  assert.notEqual(0, wffunctions.length);
@@ -305,19 +222,24 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
305
222
  it('package.json should be validated', (done) => {
306
223
  try {
307
224
  const packageDotJson = require('../../package.json');
308
- const { PJV } = require('package-json-validator');
309
- const options = {
310
- warnings: true, // show warnings
311
- recommendations: true // show recommendations
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']
312
234
  };
313
- const results = PJV.validate(JSON.stringify(packageDotJson), 'npm', options);
235
+ const validate = ajv.compile(packageJsonSchema);
236
+ const isValid = validate(packageDotJson);
314
237
 
315
- if (results.valid === false) {
316
- log.error('The package.json contains the following errors: ');
317
- log.error(util.inspect(results));
318
- assert.equal(true, results.valid);
238
+ if (isValid === false) {
239
+ log.error('The package.json contains errors');
240
+ assert.equal(true, isValid);
319
241
  } else {
320
- assert.equal(true, results.valid);
242
+ assert.equal(true, isValid);
321
243
  }
322
244
 
323
245
  done();
@@ -356,6 +278,7 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
356
278
  assert.notEqual(undefined, packageDotJson.scripts);
357
279
  assert.notEqual(null, packageDotJson.scripts);
358
280
  assert.notEqual('', packageDotJson.scripts);
281
+ assert.equal('node utils/setup.js', packageDotJson.scripts.preinstall);
359
282
  assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js', packageDotJson.scripts.lint);
360
283
  assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet', packageDotJson.scripts['lint:errors']);
361
284
  assert.equal('mocha test/unit/adapterBaseTestUnit.js --LOG=error', packageDotJson.scripts['test:baseunit']);
@@ -363,6 +286,8 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
363
286
  assert.equal('mocha test/integration/adapterTestIntegration.js --LOG=error', packageDotJson.scripts['test:integration']);
364
287
  assert.equal('nyc --reporter html --reporter text mocha --reporter dot test/*', packageDotJson.scripts['test:cover']);
365
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);
366
291
  done();
367
292
  } catch (error) {
368
293
  log.error(`Test Failure: ${error}`);
@@ -375,6 +300,9 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
375
300
  assert.notEqual(undefined, packageDotJson.repository);
376
301
  assert.notEqual(null, packageDotJson.repository);
377
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));
378
306
  done();
379
307
  } catch (error) {
380
308
  log.error(`Test Failure: ${error}`);
@@ -387,17 +315,17 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
387
315
  assert.notEqual(undefined, packageDotJson.dependencies);
388
316
  assert.notEqual(null, packageDotJson.dependencies);
389
317
  assert.notEqual('', packageDotJson.dependencies);
390
- assert.equal('^6.12.0', packageDotJson.dependencies.ajv);
391
- assert.equal('^0.21.0', packageDotJson.dependencies.axios);
392
- assert.equal('^2.20.0', packageDotJson.dependencies.commander);
393
- assert.equal('^8.1.0', packageDotJson.dependencies['fs-extra']);
394
- assert.equal('^9.0.1', packageDotJson.dependencies.mocha);
318
+ assert.equal('^8.12.0', packageDotJson.dependencies.ajv);
319
+ assert.equal('^1.6.3', 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);
395
323
  assert.equal('^2.0.1', packageDotJson.dependencies['mocha-param']);
396
- assert.equal('^0.5.3', packageDotJson.dependencies['network-diagnostics']);
397
324
  assert.equal('^15.1.0', packageDotJson.dependencies.nyc);
325
+ assert.equal('^0.4.4', packageDotJson.dependencies.ping);
398
326
  assert.equal('^1.4.10', packageDotJson.dependencies['readline-sync']);
399
- assert.equal('^7.3.2', packageDotJson.dependencies.semver);
400
- assert.equal('^3.3.3', packageDotJson.dependencies.winston);
327
+ assert.equal('^7.5.3', packageDotJson.dependencies.semver);
328
+ assert.equal('^3.9.0', packageDotJson.dependencies.winston);
401
329
  done();
402
330
  } catch (error) {
403
331
  log.error(`Test Failure: ${error}`);
@@ -410,13 +338,12 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
410
338
  assert.notEqual(undefined, packageDotJson.devDependencies);
411
339
  assert.notEqual(null, packageDotJson.devDependencies);
412
340
  assert.notEqual('', packageDotJson.devDependencies);
413
- assert.equal('^4.3.4', packageDotJson.devDependencies.chai);
414
- assert.equal('^7.29.0', packageDotJson.devDependencies.eslint);
415
- assert.equal('^14.2.1', packageDotJson.devDependencies['eslint-config-airbnb-base']);
416
- assert.equal('^2.23.4', packageDotJson.devDependencies['eslint-plugin-import']);
417
- assert.equal('^3.0.0', packageDotJson.devDependencies['eslint-plugin-json']);
418
- assert.equal('^0.6.3', packageDotJson.devDependencies['package-json-validator']);
419
- 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);
420
347
  done();
421
348
  } catch (error) {
422
349
  log.error(`Test Failure: ${error}`);
@@ -459,16 +386,31 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
459
386
  assert.notEqual('', pronghornDotJson.methods);
460
387
  assert.equal(true, Array.isArray(pronghornDotJson.methods));
461
388
  assert.notEqual(0, pronghornDotJson.methods.length);
462
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'updateAdapterConfiguration'));
463
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'findPath'));
464
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'troubleshoot'));
465
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runHealthcheck'));
466
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runConnectivity'));
467
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runBasicGet'));
468
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'suspend'));
469
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'unsuspend'));
470
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'getQueue'));
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'));
393
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapFindAdapterPath'));
394
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapTroubleshootAdapter'));
395
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterHealthcheck'));
396
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterConnectivity'));
397
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterBasicGet'));
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'));
471
409
  assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequest'));
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'));
472
414
  done();
473
415
  } catch (error) {
474
416
  log.error(`Test Failure: ${error}`);
@@ -589,6 +531,39 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
589
531
  done(error);
590
532
  }
591
533
  });
534
+ it('pronghorn.json verify input/output schema objects', (done) => {
535
+ const verifySchema = (methodName, schema) => {
536
+ try {
537
+ ajv.compile(schema);
538
+ } catch (error) {
539
+ const errorMessage = `Invalid schema found in '${methodName}' method.
540
+ Schema => ${JSON.stringify(schema)}.
541
+ Details => ${error.message}`;
542
+ throw new Error(errorMessage);
543
+ }
544
+ };
545
+
546
+ try {
547
+ const pronghornDotJson = require('../../pronghorn.json');
548
+ const { methods } = pronghornDotJson;
549
+ for (let i = 0; i < methods.length; i += 1) {
550
+ for (let j = 0; j < methods[i].input.length; j += 1) {
551
+ const inputSchema = methods[i].input[j].schema;
552
+ if (inputSchema) {
553
+ verifySchema(methods[i].name, inputSchema);
554
+ }
555
+ }
556
+ const outputSchema = methods[i].output.schema;
557
+ if (outputSchema) {
558
+ verifySchema(methods[i].name, outputSchema);
559
+ }
560
+ }
561
+ done();
562
+ } catch (error) {
563
+ log.error(`Adapter Exception: ${error}`);
564
+ done(error);
565
+ }
566
+ });
592
567
  });
593
568
 
594
569
  describe('propertiesSchema.json', () => {
@@ -624,6 +599,7 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
624
599
  assert.equal('string', propertiesDotJson.properties.host.type);
625
600
  assert.equal('integer', propertiesDotJson.properties.port.type);
626
601
  assert.equal('boolean', propertiesDotJson.properties.stub.type);
602
+ assert.equal('string', propertiesDotJson.properties.protocol.type);
627
603
  assert.notEqual(undefined, propertiesDotJson.definitions.authentication);
628
604
  assert.notEqual(null, propertiesDotJson.definitions.authentication);
629
605
  assert.notEqual('', propertiesDotJson.definitions.authentication);
@@ -640,6 +616,8 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
640
616
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_id.type);
641
617
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_secret.type);
642
618
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.grant_type.type);
619
+ assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
620
+ assert.notEqual(null, propertiesDotJson.definitions.ssl);
643
621
  assert.notEqual('', propertiesDotJson.definitions.ssl);
644
622
  assert.equal('string', propertiesDotJson.definitions.ssl.properties.ecdhCurve.type);
645
623
  assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.enabled.type);
@@ -653,8 +631,8 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
653
631
  assert.equal('string', propertiesDotJson.properties.version.type);
654
632
  assert.equal('string', propertiesDotJson.properties.cache_location.type);
655
633
  assert.equal('boolean', propertiesDotJson.properties.encode_pathvars.type);
634
+ assert.equal('boolean', propertiesDotJson.properties.encode_queryvars.type);
656
635
  assert.equal(true, Array.isArray(propertiesDotJson.properties.save_metric.type));
657
- assert.equal('string', propertiesDotJson.properties.protocol.type);
658
636
  assert.notEqual(undefined, propertiesDotJson.definitions);
659
637
  assert.notEqual(null, propertiesDotJson.definitions);
660
638
  assert.notEqual('', propertiesDotJson.definitions);
@@ -701,8 +679,6 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
701
679
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.protocol.type);
702
680
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.username.type);
703
681
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.password.type);
704
- assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
705
- assert.notEqual(null, propertiesDotJson.definitions.ssl);
706
682
  assert.notEqual(undefined, propertiesDotJson.definitions.mongo);
707
683
  assert.notEqual(null, propertiesDotJson.definitions.mongo);
708
684
  assert.notEqual('', propertiesDotJson.definitions.mongo);
@@ -718,6 +694,12 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
718
694
  assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.ca_file.type);
719
695
  assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.key_file.type);
720
696
  assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.cert_file.type);
697
+ assert.notEqual('', propertiesDotJson.definitions.devicebroker);
698
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getDevice.type);
699
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getDevicesFiltered.type);
700
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.isAlive.type);
701
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getConfig.type);
702
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getCount.type);
721
703
  done();
722
704
  } catch (error) {
723
705
  log.error(`Test Failure: ${error}`);
@@ -807,6 +789,7 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
807
789
  assert.notEqual(undefined, sampleDotJson.properties.host);
808
790
  assert.notEqual(undefined, sampleDotJson.properties.port);
809
791
  assert.notEqual(undefined, sampleDotJson.properties.stub);
792
+ assert.notEqual(undefined, sampleDotJson.properties.protocol);
810
793
  assert.notEqual(undefined, sampleDotJson.properties.authentication);
811
794
  assert.notEqual(null, sampleDotJson.properties.authentication);
812
795
  assert.notEqual('', sampleDotJson.properties.authentication);
@@ -834,17 +817,12 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
834
817
  assert.notEqual(undefined, sampleDotJson.properties.ssl.cert_file);
835
818
  assert.notEqual(undefined, sampleDotJson.properties.ssl.secure_protocol);
836
819
  assert.notEqual(undefined, sampleDotJson.properties.ssl.ciphers);
837
-
838
820
  assert.notEqual(undefined, sampleDotJson.properties.base_path);
839
821
  assert.notEqual(undefined, sampleDotJson.properties.version);
840
822
  assert.notEqual(undefined, sampleDotJson.properties.cache_location);
841
823
  assert.notEqual(undefined, sampleDotJson.properties.encode_pathvars);
824
+ assert.notEqual(undefined, sampleDotJson.properties.encode_queryvars);
842
825
  assert.notEqual(undefined, sampleDotJson.properties.save_metric);
843
- assert.notEqual(undefined, sampleDotJson.properties.protocol);
844
- assert.notEqual(undefined, sampleDotJson.properties.stub);
845
- assert.notEqual(undefined, sampleDotJson.properties.stub);
846
- assert.notEqual(undefined, sampleDotJson.properties.stub);
847
- assert.notEqual(undefined, sampleDotJson.properties.stub);
848
826
  assert.notEqual(undefined, sampleDotJson.properties.healthcheck);
849
827
  assert.notEqual(null, sampleDotJson.properties.healthcheck);
850
828
  assert.notEqual('', sampleDotJson.properties.healthcheck);
@@ -903,6 +881,14 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
903
881
  assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.ca_file);
904
882
  assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.key_file);
905
883
  assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.cert_file);
884
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker);
885
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getDevice);
886
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getDevicesFiltered);
887
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.isAlive);
888
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getConfig);
889
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getCount);
890
+ assert.notEqual(undefined, sampleDotJson.properties.cache);
891
+ assert.notEqual(undefined, sampleDotJson.properties.cache.entities);
906
892
  done();
907
893
  } catch (error) {
908
894
  log.error(`Test Failure: ${error}`);
@@ -996,10 +982,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
996
982
  });
997
983
  });
998
984
 
999
- describe('#updateAdapterConfiguration', () => {
1000
- it('should have a updateAdapterConfiguration function', (done) => {
985
+ describe('#iapUpdateAdapterConfiguration', () => {
986
+ it('should have a iapUpdateAdapterConfiguration function', (done) => {
1001
987
  try {
1002
- assert.equal(true, typeof a.updateAdapterConfiguration === 'function');
988
+ assert.equal(true, typeof a.iapUpdateAdapterConfiguration === 'function');
1003
989
  done();
1004
990
  } catch (error) {
1005
991
  log.error(`Test Failure: ${error}`);
@@ -1008,44 +994,34 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1008
994
  });
1009
995
  });
1010
996
 
1011
- describe('#findPath', () => {
1012
- it('should have a findPath function', (done) => {
997
+ describe('#iapSuspendAdapter', () => {
998
+ it('should have a iapSuspendAdapter function', (done) => {
1013
999
  try {
1014
- assert.equal(true, typeof a.findPath === 'function');
1000
+ assert.equal(true, typeof a.iapSuspendAdapter === 'function');
1015
1001
  done();
1016
1002
  } catch (error) {
1017
1003
  log.error(`Test Failure: ${error}`);
1018
1004
  done(error);
1019
1005
  }
1020
1006
  });
1021
- it('findPath should find atleast one path that matches', (done) => {
1007
+ });
1008
+
1009
+ describe('#iapUnsuspendAdapter', () => {
1010
+ it('should have a iapUnsuspendAdapter function', (done) => {
1022
1011
  try {
1023
- a.findPath('{base_path}/{version}', (data, error) => {
1024
- try {
1025
- assert.equal(undefined, error);
1026
- assert.notEqual(undefined, data);
1027
- assert.notEqual(null, data);
1028
- assert.equal(true, data.found);
1029
- assert.notEqual(undefined, data.foundIn);
1030
- assert.notEqual(null, data.foundIn);
1031
- assert.notEqual(0, data.foundIn.length);
1032
- done();
1033
- } catch (err) {
1034
- log.error(`Test Failure: ${err}`);
1035
- done(err);
1036
- }
1037
- });
1012
+ assert.equal(true, typeof a.iapUnsuspendAdapter === 'function');
1013
+ done();
1038
1014
  } catch (error) {
1039
- log.error(`Adapter Exception: ${error}`);
1015
+ log.error(`Test Failure: ${error}`);
1040
1016
  done(error);
1041
1017
  }
1042
- }).timeout(attemptTimeout);
1018
+ });
1043
1019
  });
1044
1020
 
1045
- describe('#suspend', () => {
1046
- it('should have a suspend function', (done) => {
1021
+ describe('#iapGetAdapterQueue', () => {
1022
+ it('should have a iapGetAdapterQueue function', (done) => {
1047
1023
  try {
1048
- assert.equal(true, typeof a.suspend === 'function');
1024
+ assert.equal(true, typeof a.iapGetAdapterQueue === 'function');
1049
1025
  done();
1050
1026
  } catch (error) {
1051
1027
  log.error(`Test Failure: ${error}`);
@@ -1054,22 +1030,44 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1054
1030
  });
1055
1031
  });
1056
1032
 
1057
- describe('#unsuspend', () => {
1058
- it('should have a unsuspend function', (done) => {
1033
+ describe('#iapFindAdapterPath', () => {
1034
+ it('should have a iapFindAdapterPath function', (done) => {
1059
1035
  try {
1060
- assert.equal(true, typeof a.unsuspend === 'function');
1036
+ assert.equal(true, typeof a.iapFindAdapterPath === 'function');
1061
1037
  done();
1062
1038
  } catch (error) {
1063
1039
  log.error(`Test Failure: ${error}`);
1064
1040
  done(error);
1065
1041
  }
1066
1042
  });
1043
+ it('iapFindAdapterPath should find atleast one path that matches', (done) => {
1044
+ try {
1045
+ a.iapFindAdapterPath('{base_path}/{version}', (data, error) => {
1046
+ try {
1047
+ assert.equal(undefined, error);
1048
+ assert.notEqual(undefined, data);
1049
+ assert.notEqual(null, data);
1050
+ assert.equal(true, data.found);
1051
+ assert.notEqual(undefined, data.foundIn);
1052
+ assert.notEqual(null, data.foundIn);
1053
+ assert.notEqual(0, data.foundIn.length);
1054
+ done();
1055
+ } catch (err) {
1056
+ log.error(`Test Failure: ${err}`);
1057
+ done(err);
1058
+ }
1059
+ });
1060
+ } catch (error) {
1061
+ log.error(`Adapter Exception: ${error}`);
1062
+ done(error);
1063
+ }
1064
+ }).timeout(attemptTimeout);
1067
1065
  });
1068
1066
 
1069
- describe('#getQueue', () => {
1070
- it('should have a getQueue function', (done) => {
1067
+ describe('#iapTroubleshootAdapter', () => {
1068
+ it('should have a iapTroubleshootAdapter function', (done) => {
1071
1069
  try {
1072
- assert.equal(true, typeof a.getQueue === 'function');
1070
+ assert.equal(true, typeof a.iapTroubleshootAdapter === 'function');
1073
1071
  done();
1074
1072
  } catch (error) {
1075
1073
  log.error(`Test Failure: ${error}`);
@@ -1078,10 +1076,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1078
1076
  });
1079
1077
  });
1080
1078
 
1081
- describe('#troubleshoot', () => {
1082
- it('should have a troubleshoot function', (done) => {
1079
+ describe('#iapRunAdapterHealthcheck', () => {
1080
+ it('should have a iapRunAdapterHealthcheck function', (done) => {
1083
1081
  try {
1084
- assert.equal(true, typeof a.troubleshoot === 'function');
1082
+ assert.equal(true, typeof a.iapRunAdapterHealthcheck === 'function');
1085
1083
  done();
1086
1084
  } catch (error) {
1087
1085
  log.error(`Test Failure: ${error}`);
@@ -1090,10 +1088,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1090
1088
  });
1091
1089
  });
1092
1090
 
1093
- describe('#runHealthcheck', () => {
1094
- it('should have a runHealthcheck function', (done) => {
1091
+ describe('#iapRunAdapterConnectivity', () => {
1092
+ it('should have a iapRunAdapterConnectivity function', (done) => {
1095
1093
  try {
1096
- assert.equal(true, typeof a.runHealthcheck === 'function');
1094
+ assert.equal(true, typeof a.iapRunAdapterConnectivity === 'function');
1097
1095
  done();
1098
1096
  } catch (error) {
1099
1097
  log.error(`Test Failure: ${error}`);
@@ -1102,10 +1100,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1102
1100
  });
1103
1101
  });
1104
1102
 
1105
- describe('#runConnectivity', () => {
1106
- it('should have a runConnectivity function', (done) => {
1103
+ describe('#iapRunAdapterBasicGet', () => {
1104
+ it('should have a iapRunAdapterBasicGet function', (done) => {
1107
1105
  try {
1108
- assert.equal(true, typeof a.runConnectivity === 'function');
1106
+ assert.equal(true, typeof a.iapRunAdapterBasicGet === 'function');
1109
1107
  done();
1110
1108
  } catch (error) {
1111
1109
  log.error(`Test Failure: ${error}`);
@@ -1114,10 +1112,10 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1114
1112
  });
1115
1113
  });
1116
1114
 
1117
- describe('#runBasicGet', () => {
1118
- it('should have a runBasicGet function', (done) => {
1115
+ describe('#iapMoveAdapterEntitiesToDB', () => {
1116
+ it('should have a iapMoveAdapterEntitiesToDB function', (done) => {
1119
1117
  try {
1120
- assert.equal(true, typeof a.runBasicGet === 'function');
1118
+ assert.equal(true, typeof a.iapMoveAdapterEntitiesToDB === 'function');
1121
1119
  done();
1122
1120
  } catch (error) {
1123
1121
  log.error(`Test Failure: ${error}`);
@@ -1211,50 +1209,293 @@ describe('[unit] Efficientip_solidserver Adapter Test', () => {
1211
1209
  }).timeout(attemptTimeout);
1212
1210
  });
1213
1211
 
1214
- // describe('#hasEntity', () => {
1215
- // it('should have a hasEntity function', (done) => {
1216
- // try {
1217
- // assert.equal(true, typeof a.hasEntity === 'function');
1218
- // done();
1219
- // } catch (error) {
1220
- // log.error(`Test Failure: ${error}`);
1221
- // done(error);
1222
- // }
1223
- // });
1224
- // it('should find entity', (done) => {
1225
- // try {
1226
- // a.hasEntity('template_entity', // 'a9e9c33dc61122760072455df62663d2', (data) => {
1227
- // try {
1228
- // assert.equal(true, data[0]);
1229
- // done();
1230
- // } catch (err) {
1231
- // log.error(`Test Failure: ${err}`);
1232
- // done(err);
1233
- // }
1234
- // });
1235
- // } catch (error) {
1236
- // log.error(`Adapter Exception: ${error}`);
1237
- // done(error);
1238
- // }
1239
- // }).timeout(attemptTimeout);
1240
- // it('should not find entity', (done) => {
1241
- // try {
1242
- // a.hasEntity('template_entity', 'blah', (data) => {
1243
- // try {
1244
- // assert.equal(false, data[0]);
1245
- // done();
1246
- // } catch (err) {
1247
- // log.error(`Test Failure: ${err}`);
1248
- // done(err);
1249
- // }
1250
- // });
1251
- // } catch (error) {
1252
- // log.error(`Adapter Exception: ${error}`);
1253
- // done(error);
1254
- // }
1255
- // }).timeout(attemptTimeout);
1256
- // });
1212
+ describe('#iapDeactivateTasks', () => {
1213
+ it('should have a iapDeactivateTasks function', (done) => {
1214
+ try {
1215
+ assert.equal(true, typeof a.iapDeactivateTasks === 'function');
1216
+ done();
1217
+ } catch (error) {
1218
+ log.error(`Test Failure: ${error}`);
1219
+ done(error);
1220
+ }
1221
+ });
1222
+ });
1223
+
1224
+ describe('#iapActivateTasks', () => {
1225
+ it('should have a iapActivateTasks function', (done) => {
1226
+ try {
1227
+ assert.equal(true, typeof a.iapActivateTasks === 'function');
1228
+ done();
1229
+ } catch (error) {
1230
+ log.error(`Test Failure: ${error}`);
1231
+ done(error);
1232
+ }
1233
+ });
1234
+ });
1235
+
1236
+ describe('#iapPopulateEntityCache', () => {
1237
+ it('should have a iapPopulateEntityCache function', (done) => {
1238
+ try {
1239
+ assert.equal(true, typeof a.iapPopulateEntityCache === 'function');
1240
+ done();
1241
+ } catch (error) {
1242
+ log.error(`Test Failure: ${error}`);
1243
+ done(error);
1244
+ }
1245
+ });
1246
+ });
1247
+
1248
+ describe('#iapRetrieveEntitiesCache', () => {
1249
+ it('should have a iapRetrieveEntitiesCache function', (done) => {
1250
+ try {
1251
+ assert.equal(true, typeof a.iapRetrieveEntitiesCache === 'function');
1252
+ done();
1253
+ } catch (error) {
1254
+ log.error(`Test Failure: ${error}`);
1255
+ done(error);
1256
+ }
1257
+ });
1258
+ });
1259
+
1260
+ describe('#hasEntities', () => {
1261
+ it('should have a hasEntities function', (done) => {
1262
+ try {
1263
+ assert.equal(true, typeof a.hasEntities === 'function');
1264
+ done();
1265
+ } catch (error) {
1266
+ log.error(`Test Failure: ${error}`);
1267
+ done(error);
1268
+ }
1269
+ });
1270
+ });
1271
+
1272
+ describe('#getDevice', () => {
1273
+ it('should have a getDevice function', (done) => {
1274
+ try {
1275
+ assert.equal(true, typeof a.getDevice === 'function');
1276
+ done();
1277
+ } catch (error) {
1278
+ log.error(`Test Failure: ${error}`);
1279
+ done(error);
1280
+ }
1281
+ });
1282
+ });
1283
+
1284
+ describe('#getDevicesFiltered', () => {
1285
+ it('should have a getDevicesFiltered function', (done) => {
1286
+ try {
1287
+ assert.equal(true, typeof a.getDevicesFiltered === 'function');
1288
+ done();
1289
+ } catch (error) {
1290
+ log.error(`Test Failure: ${error}`);
1291
+ done(error);
1292
+ }
1293
+ });
1294
+ });
1295
+
1296
+ describe('#isAlive', () => {
1297
+ it('should have a isAlive function', (done) => {
1298
+ try {
1299
+ assert.equal(true, typeof a.isAlive === 'function');
1300
+ done();
1301
+ } catch (error) {
1302
+ log.error(`Test Failure: ${error}`);
1303
+ done(error);
1304
+ }
1305
+ });
1306
+ });
1307
+
1308
+ describe('#getConfig', () => {
1309
+ it('should have a getConfig function', (done) => {
1310
+ try {
1311
+ assert.equal(true, typeof a.getConfig === 'function');
1312
+ done();
1313
+ } catch (error) {
1314
+ log.error(`Test Failure: ${error}`);
1315
+ done(error);
1316
+ }
1317
+ });
1318
+ });
1319
+
1320
+ describe('#iapGetDeviceCount', () => {
1321
+ it('should have a iapGetDeviceCount function', (done) => {
1322
+ try {
1323
+ assert.equal(true, typeof a.iapGetDeviceCount === 'function');
1324
+ done();
1325
+ } catch (error) {
1326
+ log.error(`Test Failure: ${error}`);
1327
+ done(error);
1328
+ }
1329
+ });
1330
+ });
1331
+
1332
+ describe('#iapExpandedGenericAdapterRequest', () => {
1333
+ it('should have a iapExpandedGenericAdapterRequest function', (done) => {
1334
+ try {
1335
+ assert.equal(true, typeof a.iapExpandedGenericAdapterRequest === 'function');
1336
+ done();
1337
+ } catch (error) {
1338
+ log.error(`Test Failure: ${error}`);
1339
+ done(error);
1340
+ }
1341
+ });
1342
+ });
1343
+
1344
+ describe('#genericAdapterRequest', () => {
1345
+ it('should have a genericAdapterRequest function', (done) => {
1346
+ try {
1347
+ assert.equal(true, typeof a.genericAdapterRequest === 'function');
1348
+ done();
1349
+ } catch (error) {
1350
+ log.error(`Test Failure: ${error}`);
1351
+ done(error);
1352
+ }
1353
+ });
1354
+ });
1355
+
1356
+ describe('#genericAdapterRequestNoBasePath', () => {
1357
+ it('should have a genericAdapterRequestNoBasePath function', (done) => {
1358
+ try {
1359
+ assert.equal(true, typeof a.genericAdapterRequestNoBasePath === 'function');
1360
+ done();
1361
+ } catch (error) {
1362
+ log.error(`Test Failure: ${error}`);
1363
+ done(error);
1364
+ }
1365
+ });
1366
+ });
1367
+
1368
+ describe('#iapRunAdapterLint', () => {
1369
+ it('should have a iapRunAdapterLint function', (done) => {
1370
+ try {
1371
+ assert.equal(true, typeof a.iapRunAdapterLint === 'function');
1372
+ done();
1373
+ } catch (error) {
1374
+ log.error(`Test Failure: ${error}`);
1375
+ done(error);
1376
+ }
1377
+ });
1378
+ it('retrieve the lint results', (done) => {
1379
+ try {
1380
+ a.iapRunAdapterLint((data, error) => {
1381
+ try {
1382
+ assert.equal(undefined, error);
1383
+ assert.notEqual(undefined, data);
1384
+ assert.notEqual(null, data);
1385
+ assert.notEqual(undefined, data.status);
1386
+ assert.notEqual(null, data.status);
1387
+ assert.equal('SUCCESS', data.status);
1388
+ done();
1389
+ } catch (err) {
1390
+ log.error(`Test Failure: ${err}`);
1391
+ done(err);
1392
+ }
1393
+ });
1394
+ } catch (error) {
1395
+ log.error(`Adapter Exception: ${error}`);
1396
+ done(error);
1397
+ }
1398
+ }).timeout(attemptTimeout);
1399
+ });
1400
+
1401
+ describe('#iapRunAdapterTests', () => {
1402
+ it('should have a iapRunAdapterTests function', (done) => {
1403
+ try {
1404
+ assert.equal(true, typeof a.iapRunAdapterTests === 'function');
1405
+ done();
1406
+ } catch (error) {
1407
+ log.error(`Test Failure: ${error}`);
1408
+ done(error);
1409
+ }
1410
+ });
1411
+ });
1257
1412
 
1413
+ describe('#iapGetAdapterInventory', () => {
1414
+ it('should have a iapGetAdapterInventory function', (done) => {
1415
+ try {
1416
+ assert.equal(true, typeof a.iapGetAdapterInventory === 'function');
1417
+ done();
1418
+ } catch (error) {
1419
+ log.error(`Test Failure: ${error}`);
1420
+ done(error);
1421
+ }
1422
+ });
1423
+ it('retrieve the inventory', (done) => {
1424
+ try {
1425
+ a.iapGetAdapterInventory((data, error) => {
1426
+ try {
1427
+ assert.equal(undefined, error);
1428
+ assert.notEqual(undefined, data);
1429
+ assert.notEqual(null, data);
1430
+ done();
1431
+ } catch (err) {
1432
+ log.error(`Test Failure: ${err}`);
1433
+ done(err);
1434
+ }
1435
+ });
1436
+ } catch (error) {
1437
+ log.error(`Adapter Exception: ${error}`);
1438
+ done(error);
1439
+ }
1440
+ }).timeout(attemptTimeout);
1441
+ });
1442
+ describe('metadata.json', () => {
1443
+ it('should have a metadata.json', (done) => {
1444
+ try {
1445
+ fs.exists('metadata.json', (val) => {
1446
+ assert.equal(true, val);
1447
+ done();
1448
+ });
1449
+ } catch (error) {
1450
+ log.error(`Test Failure: ${error}`);
1451
+ done(error);
1452
+ }
1453
+ });
1454
+ it('metadata.json is customized', (done) => {
1455
+ try {
1456
+ const metadataDotJson = require('../../metadata.json');
1457
+ assert.equal('adapter-efficientip_solidserver', metadataDotJson.name);
1458
+ assert.notEqual(undefined, metadataDotJson.webName);
1459
+ assert.notEqual(null, metadataDotJson.webName);
1460
+ assert.notEqual('', metadataDotJson.webName);
1461
+ assert.equal('Adapter', metadataDotJson.type);
1462
+ done();
1463
+ } catch (error) {
1464
+ log.error(`Test Failure: ${error}`);
1465
+ done(error);
1466
+ }
1467
+ });
1468
+ it('metadata.json contains accurate documentation', (done) => {
1469
+ try {
1470
+ const metadataDotJson = require('../../metadata.json');
1471
+ assert.notEqual(undefined, metadataDotJson.documentation);
1472
+ assert.equal('https://www.npmjs.com/package/@itentialopensource/adapter-efficientip_solidserver', metadataDotJson.documentation.npmLink);
1473
+ assert.equal('https://docs.itential.com/opensource/docs/troubleshooting-an-adapter', metadataDotJson.documentation.faqLink);
1474
+ assert.equal('https://gitlab.com/itentialopensource/adapters/contributing-guide', metadataDotJson.documentation.contributeLink);
1475
+ assert.equal('https://itential.atlassian.net/servicedesk/customer/portals', metadataDotJson.documentation.issueLink);
1476
+ done();
1477
+ } catch (error) {
1478
+ log.error(`Test Failure: ${error}`);
1479
+ done(error);
1480
+ }
1481
+ });
1482
+ it('metadata.json has related items', (done) => {
1483
+ try {
1484
+ const metadataDotJson = require('../../metadata.json');
1485
+ assert.notEqual(undefined, metadataDotJson.relatedItems);
1486
+ assert.notEqual(undefined, metadataDotJson.relatedItems.adapters);
1487
+ assert.notEqual(undefined, metadataDotJson.relatedItems.integrations);
1488
+ assert.notEqual(undefined, metadataDotJson.relatedItems.ecosystemApplications);
1489
+ assert.notEqual(undefined, metadataDotJson.relatedItems.workflowProjects);
1490
+ assert.notEqual(undefined, metadataDotJson.relatedItems.transformationProjects);
1491
+ assert.notEqual(undefined, metadataDotJson.relatedItems.exampleProjects);
1492
+ done();
1493
+ } catch (error) {
1494
+ log.error(`Test Failure: ${error}`);
1495
+ done(error);
1496
+ }
1497
+ });
1498
+ });
1258
1499
  /*
1259
1500
  -----------------------------------------------------------------------
1260
1501
  -----------------------------------------------------------------------