@itentialopensource/adapter-okta 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 +1735 -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 +237 -574
  10. package/SUMMARY.md +9 -0
  11. package/SYSTEMINFO.md +11 -0
  12. package/TROUBLESHOOT.md +47 -0
  13. package/adapter.js +380 -261
  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 -24
  21. package/pronghorn.json +691 -88
  22. package/propertiesDecorators.json +14 -0
  23. package/propertiesSchema.json +843 -7
  24. package/refs?service=git-upload-pack +0 -0
  25. package/report/adapter-openapi.json +22861 -0
  26. package/report/adapter-openapi.yaml +15054 -0
  27. package/report/adapterInfo.json +10 -0
  28. package/report/updateReport1654086669778.json +120 -0
  29. package/report/updateReport1691508740078.json +120 -0
  30. package/report/updateReport1692203198064.json +120 -0
  31. package/report/updateReport1694468322367.json +120 -0
  32. package/report/updateReport1698422603278.json +120 -0
  33. package/sampleProperties.json +156 -3
  34. package/test/integration/adapterTestBasicGet.js +3 -5
  35. package/test/integration/adapterTestConnectivity.js +91 -42
  36. package/test/integration/adapterTestIntegration.js +155 -104
  37. package/test/unit/adapterBaseTestUnit.js +392 -309
  38. package/test/unit/adapterTestUnit.js +521 -273
  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 +152 -35
  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,99 +57,7 @@ global.pronghornProps = {
45
57
  adapters: [{
46
58
  id: 'Test-okta',
47
59
  type: 'Okta',
48
- properties: {
49
- host,
50
- port,
51
- base_path: '/',
52
- version: '',
53
- cache_location: 'none',
54
- encode_pathvars: true,
55
- save_metric: false,
56
- stub,
57
- protocol,
58
- authentication: {
59
- auth_method: 'no_authentication',
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
- },
70
- healthcheck: {
71
- type: 'none',
72
- frequency: 60000,
73
- query_object: {}
74
- },
75
- throttle: {
76
- throttle_enabled: false,
77
- number_pronghorns: 1,
78
- sync_async: 'sync',
79
- max_in_queue: 1000,
80
- concurrent_max: 1,
81
- expire_timeout: 0,
82
- avg_runtime: 200,
83
- priorities: [
84
- {
85
- value: 0,
86
- percent: 100
87
- }
88
- ]
89
- },
90
- request: {
91
- number_redirects: 0,
92
- number_retries: 3,
93
- limit_retry_error: [0],
94
- failover_codes: [],
95
- attempt_timeout: attemptTimeout,
96
- global_request: {
97
- payload: {},
98
- uriOptions: {},
99
- addlHeaders: {},
100
- authData: {}
101
- },
102
- healthcheck_on_timeout: true,
103
- return_raw: true,
104
- archiving: false,
105
- return_request: false
106
- },
107
- proxy: {
108
- enabled: false,
109
- host: '',
110
- port: 1,
111
- protocol: 'http',
112
- username: '',
113
- password: ''
114
- },
115
- ssl: {
116
- ecdhCurve: '',
117
- enabled: sslenable,
118
- accept_invalid_cert: sslinvalid,
119
- ca_file: '',
120
- key_file: '',
121
- cert_file: '',
122
- secure_protocol: '',
123
- ciphers: ''
124
- },
125
- mongo: {
126
- host: '',
127
- port: 0,
128
- database: '',
129
- username: '',
130
- password: '',
131
- replSet: '',
132
- db_ssl: {
133
- enabled: false,
134
- accept_invalid_cert: false,
135
- ca_file: '',
136
- key_file: '',
137
- cert_file: ''
138
- }
139
- }
140
- }
60
+ properties: samProps
141
61
  }]
142
62
  }
143
63
  };
@@ -268,10 +188,10 @@ describe('[unit] Okta Adapter Test', () => {
268
188
  });
269
189
 
270
190
  let wffunctions = [];
271
- describe('#getWorkflowFunctions', () => {
191
+ describe('#iapGetAdapterWorkflowFunctions', () => {
272
192
  it('should retrieve workflow functions', (done) => {
273
193
  try {
274
- wffunctions = a.getWorkflowFunctions([]);
194
+ wffunctions = a.iapGetAdapterWorkflowFunctions([]);
275
195
 
276
196
  try {
277
197
  assert.notEqual(0, wffunctions.length);
@@ -302,19 +222,24 @@ describe('[unit] Okta Adapter Test', () => {
302
222
  it('package.json should be validated', (done) => {
303
223
  try {
304
224
  const packageDotJson = require('../../package.json');
305
- const { PJV } = require('package-json-validator');
306
- const options = {
307
- warnings: true, // show warnings
308
- 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']
309
234
  };
310
- const results = PJV.validate(JSON.stringify(packageDotJson), 'npm', options);
235
+ const validate = ajv.compile(packageJsonSchema);
236
+ const isValid = validate(packageDotJson);
311
237
 
312
- if (results.valid === false) {
313
- log.error('The package.json contains the following errors: ');
314
- log.error(util.inspect(results));
315
- assert.equal(true, results.valid);
238
+ if (isValid === false) {
239
+ log.error('The package.json contains errors');
240
+ assert.equal(true, isValid);
316
241
  } else {
317
- assert.equal(true, results.valid);
242
+ assert.equal(true, isValid);
318
243
  }
319
244
 
320
245
  done();
@@ -353,6 +278,7 @@ describe('[unit] Okta Adapter Test', () => {
353
278
  assert.notEqual(undefined, packageDotJson.scripts);
354
279
  assert.notEqual(null, packageDotJson.scripts);
355
280
  assert.notEqual('', packageDotJson.scripts);
281
+ assert.equal('node utils/setup.js', packageDotJson.scripts.preinstall);
356
282
  assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js', packageDotJson.scripts.lint);
357
283
  assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet', packageDotJson.scripts['lint:errors']);
358
284
  assert.equal('mocha test/unit/adapterBaseTestUnit.js --LOG=error', packageDotJson.scripts['test:baseunit']);
@@ -360,6 +286,8 @@ describe('[unit] Okta Adapter Test', () => {
360
286
  assert.equal('mocha test/integration/adapterTestIntegration.js --LOG=error', packageDotJson.scripts['test:integration']);
361
287
  assert.equal('nyc --reporter html --reporter text mocha --reporter dot test/*', packageDotJson.scripts['test:cover']);
362
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);
363
291
  done();
364
292
  } catch (error) {
365
293
  log.error(`Test Failure: ${error}`);
@@ -372,6 +300,9 @@ describe('[unit] Okta Adapter Test', () => {
372
300
  assert.notEqual(undefined, packageDotJson.repository);
373
301
  assert.notEqual(null, packageDotJson.repository);
374
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));
375
306
  done();
376
307
  } catch (error) {
377
308
  log.error(`Test Failure: ${error}`);
@@ -384,17 +315,17 @@ describe('[unit] Okta Adapter Test', () => {
384
315
  assert.notEqual(undefined, packageDotJson.dependencies);
385
316
  assert.notEqual(null, packageDotJson.dependencies);
386
317
  assert.notEqual('', packageDotJson.dependencies);
387
- assert.equal('^6.12.0', packageDotJson.dependencies.ajv);
388
- assert.equal('^0.21.0', packageDotJson.dependencies.axios);
389
- assert.equal('^2.20.0', packageDotJson.dependencies.commander);
390
- assert.equal('^8.1.0', packageDotJson.dependencies['fs-extra']);
391
- assert.equal('^8.1.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);
392
323
  assert.equal('^2.0.1', packageDotJson.dependencies['mocha-param']);
393
- assert.equal('^0.5.3', packageDotJson.dependencies['network-diagnostics']);
394
324
  assert.equal('^15.1.0', packageDotJson.dependencies.nyc);
325
+ assert.equal('^0.4.4', packageDotJson.dependencies.ping);
395
326
  assert.equal('^1.4.10', packageDotJson.dependencies['readline-sync']);
396
- assert.equal('^7.3.2', packageDotJson.dependencies.semver);
397
- 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);
398
329
  done();
399
330
  } catch (error) {
400
331
  log.error(`Test Failure: ${error}`);
@@ -407,15 +338,12 @@ describe('[unit] Okta Adapter Test', () => {
407
338
  assert.notEqual(undefined, packageDotJson.devDependencies);
408
339
  assert.notEqual(null, packageDotJson.devDependencies);
409
340
  assert.notEqual('', packageDotJson.devDependencies);
410
- assert.equal('^7.14.2', packageDotJson.devDependencies['@babel/helper-function-name']);
411
- assert.equal('^4.2.0', packageDotJson.devDependencies.chai);
412
- assert.equal('^7.26.0', packageDotJson.devDependencies.eslint);
413
- assert.equal('^14.2.1', packageDotJson.devDependencies['eslint-config-airbnb-base']);
414
- assert.equal('^2.6.1', packageDotJson.devDependencies['eslint-module-utils']);
415
- assert.equal('^2.23.0', packageDotJson.devDependencies['eslint-plugin-import']);
416
- assert.equal('^3.0.0', packageDotJson.devDependencies['eslint-plugin-json']);
417
- assert.equal('^0.6.3', packageDotJson.devDependencies['package-json-validator']);
418
- 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);
419
347
  done();
420
348
  } catch (error) {
421
349
  log.error(`Test Failure: ${error}`);
@@ -458,16 +386,31 @@ describe('[unit] Okta Adapter Test', () => {
458
386
  assert.notEqual('', pronghornDotJson.methods);
459
387
  assert.equal(true, Array.isArray(pronghornDotJson.methods));
460
388
  assert.notEqual(0, pronghornDotJson.methods.length);
461
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'updateAdapterConfiguration'));
462
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'findPath'));
463
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'troubleshoot'));
464
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runHealthcheck'));
465
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runConnectivity'));
466
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'runBasicGet'));
467
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'suspend'));
468
- assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'unsuspend'));
469
- 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'));
470
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'));
471
414
  done();
472
415
  } catch (error) {
473
416
  log.error(`Test Failure: ${error}`);
@@ -588,6 +531,39 @@ describe('[unit] Okta Adapter Test', () => {
588
531
  done(error);
589
532
  }
590
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
+ });
591
567
  });
592
568
 
593
569
  describe('propertiesSchema.json', () => {
@@ -623,15 +599,7 @@ describe('[unit] Okta Adapter Test', () => {
623
599
  assert.equal('string', propertiesDotJson.properties.host.type);
624
600
  assert.equal('integer', propertiesDotJson.properties.port.type);
625
601
  assert.equal('boolean', propertiesDotJson.properties.stub.type);
626
- assert.equal('string', propertiesDotJson.properties.base_path.type);
627
- assert.equal('string', propertiesDotJson.properties.version.type);
628
- assert.equal('string', propertiesDotJson.properties.cache_location.type);
629
- assert.equal('boolean', propertiesDotJson.properties.encode_pathvars.type);
630
- assert.equal(true, Array.isArray(propertiesDotJson.properties.save_metric.type));
631
602
  assert.equal('string', propertiesDotJson.properties.protocol.type);
632
- assert.notEqual(undefined, propertiesDotJson.definitions);
633
- assert.notEqual(null, propertiesDotJson.definitions);
634
- assert.notEqual('', propertiesDotJson.definitions);
635
603
  assert.notEqual(undefined, propertiesDotJson.definitions.authentication);
636
604
  assert.notEqual(null, propertiesDotJson.definitions.authentication);
637
605
  assert.notEqual('', propertiesDotJson.definitions.authentication);
@@ -645,6 +613,29 @@ describe('[unit] Okta Adapter Test', () => {
645
613
  assert.equal(true, Array.isArray(propertiesDotJson.definitions.authentication.properties.auth_field.type));
646
614
  assert.equal(true, Array.isArray(propertiesDotJson.definitions.authentication.properties.auth_field_format.type));
647
615
  assert.equal('boolean', propertiesDotJson.definitions.authentication.properties.auth_logging.type);
616
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_id.type);
617
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_secret.type);
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);
621
+ assert.notEqual('', propertiesDotJson.definitions.ssl);
622
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ecdhCurve.type);
623
+ assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.enabled.type);
624
+ assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.accept_invalid_cert.type);
625
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ca_file.type);
626
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.key_file.type);
627
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.cert_file.type);
628
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.secure_protocol.type);
629
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ciphers.type);
630
+ assert.equal('string', propertiesDotJson.properties.base_path.type);
631
+ assert.equal('string', propertiesDotJson.properties.version.type);
632
+ assert.equal('string', propertiesDotJson.properties.cache_location.type);
633
+ assert.equal('boolean', propertiesDotJson.properties.encode_pathvars.type);
634
+ assert.equal('boolean', propertiesDotJson.properties.encode_queryvars.type);
635
+ assert.equal(true, Array.isArray(propertiesDotJson.properties.save_metric.type));
636
+ assert.notEqual(undefined, propertiesDotJson.definitions);
637
+ assert.notEqual(null, propertiesDotJson.definitions);
638
+ assert.notEqual('', propertiesDotJson.definitions);
648
639
  assert.notEqual(undefined, propertiesDotJson.definitions.healthcheck);
649
640
  assert.notEqual(null, propertiesDotJson.definitions.healthcheck);
650
641
  assert.notEqual('', propertiesDotJson.definitions.healthcheck);
@@ -688,17 +679,6 @@ describe('[unit] Okta Adapter Test', () => {
688
679
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.protocol.type);
689
680
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.username.type);
690
681
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.password.type);
691
- assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
692
- assert.notEqual(null, propertiesDotJson.definitions.ssl);
693
- assert.notEqual('', propertiesDotJson.definitions.ssl);
694
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.ecdhCurve.type);
695
- assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.enabled.type);
696
- assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.accept_invalid_cert.type);
697
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.ca_file.type);
698
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.key_file.type);
699
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.cert_file.type);
700
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.secure_protocol.type);
701
- assert.equal('string', propertiesDotJson.definitions.ssl.properties.ciphers.type);
702
682
  assert.notEqual(undefined, propertiesDotJson.definitions.mongo);
703
683
  assert.notEqual(null, propertiesDotJson.definitions.mongo);
704
684
  assert.notEqual('', propertiesDotJson.definitions.mongo);
@@ -714,6 +694,12 @@ describe('[unit] Okta Adapter Test', () => {
714
694
  assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.ca_file.type);
715
695
  assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.key_file.type);
716
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);
717
703
  done();
718
704
  } catch (error) {
719
705
  log.error(`Test Failure: ${error}`);
@@ -803,17 +789,7 @@ describe('[unit] Okta Adapter Test', () => {
803
789
  assert.notEqual(undefined, sampleDotJson.properties.host);
804
790
  assert.notEqual(undefined, sampleDotJson.properties.port);
805
791
  assert.notEqual(undefined, sampleDotJson.properties.stub);
806
-
807
- assert.notEqual(undefined, sampleDotJson.properties.base_path);
808
- assert.notEqual(undefined, sampleDotJson.properties.version);
809
- assert.notEqual(undefined, sampleDotJson.properties.cache_location);
810
- assert.notEqual(undefined, sampleDotJson.properties.encode_pathvars);
811
- assert.notEqual(undefined, sampleDotJson.properties.save_metric);
812
792
  assert.notEqual(undefined, sampleDotJson.properties.protocol);
813
- assert.notEqual(undefined, sampleDotJson.properties.stub);
814
- assert.notEqual(undefined, sampleDotJson.properties.stub);
815
- assert.notEqual(undefined, sampleDotJson.properties.stub);
816
- assert.notEqual(undefined, sampleDotJson.properties.stub);
817
793
  assert.notEqual(undefined, sampleDotJson.properties.authentication);
818
794
  assert.notEqual(null, sampleDotJson.properties.authentication);
819
795
  assert.notEqual('', sampleDotJson.properties.authentication);
@@ -827,6 +803,26 @@ describe('[unit] Okta Adapter Test', () => {
827
803
  assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_field);
828
804
  assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_field_format);
829
805
  assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_logging);
806
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.client_id);
807
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.client_secret);
808
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.grant_type);
809
+ assert.notEqual(undefined, sampleDotJson.properties.ssl);
810
+ assert.notEqual(null, sampleDotJson.properties.ssl);
811
+ assert.notEqual('', sampleDotJson.properties.ssl);
812
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ecdhCurve);
813
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.enabled);
814
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.accept_invalid_cert);
815
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ca_file);
816
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.key_file);
817
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.cert_file);
818
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.secure_protocol);
819
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ciphers);
820
+ assert.notEqual(undefined, sampleDotJson.properties.base_path);
821
+ assert.notEqual(undefined, sampleDotJson.properties.version);
822
+ assert.notEqual(undefined, sampleDotJson.properties.cache_location);
823
+ assert.notEqual(undefined, sampleDotJson.properties.encode_pathvars);
824
+ assert.notEqual(undefined, sampleDotJson.properties.encode_queryvars);
825
+ assert.notEqual(undefined, sampleDotJson.properties.save_metric);
830
826
  assert.notEqual(undefined, sampleDotJson.properties.healthcheck);
831
827
  assert.notEqual(null, sampleDotJson.properties.healthcheck);
832
828
  assert.notEqual('', sampleDotJson.properties.healthcheck);
@@ -870,17 +866,6 @@ describe('[unit] Okta Adapter Test', () => {
870
866
  assert.notEqual(undefined, sampleDotJson.properties.proxy.protocol);
871
867
  assert.notEqual(undefined, sampleDotJson.properties.proxy.username);
872
868
  assert.notEqual(undefined, sampleDotJson.properties.proxy.password);
873
- assert.notEqual(undefined, sampleDotJson.properties.ssl);
874
- assert.notEqual(null, sampleDotJson.properties.ssl);
875
- assert.notEqual('', sampleDotJson.properties.ssl);
876
- assert.notEqual(undefined, sampleDotJson.properties.ssl.ecdhCurve);
877
- assert.notEqual(undefined, sampleDotJson.properties.ssl.enabled);
878
- assert.notEqual(undefined, sampleDotJson.properties.ssl.accept_invalid_cert);
879
- assert.notEqual(undefined, sampleDotJson.properties.ssl.ca_file);
880
- assert.notEqual(undefined, sampleDotJson.properties.ssl.key_file);
881
- assert.notEqual(undefined, sampleDotJson.properties.ssl.cert_file);
882
- assert.notEqual(undefined, sampleDotJson.properties.ssl.secure_protocol);
883
- assert.notEqual(undefined, sampleDotJson.properties.ssl.ciphers);
884
869
  assert.notEqual(undefined, sampleDotJson.properties.mongo);
885
870
  assert.notEqual(null, sampleDotJson.properties.mongo);
886
871
  assert.notEqual('', sampleDotJson.properties.mongo);
@@ -896,6 +881,14 @@ describe('[unit] Okta Adapter Test', () => {
896
881
  assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.ca_file);
897
882
  assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.key_file);
898
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);
899
892
  done();
900
893
  } catch (error) {
901
894
  log.error(`Test Failure: ${error}`);
@@ -989,10 +982,10 @@ describe('[unit] Okta Adapter Test', () => {
989
982
  });
990
983
  });
991
984
 
992
- describe('#updateAdapterConfiguration', () => {
993
- it('should have a updateAdapterConfiguration function', (done) => {
985
+ describe('#iapUpdateAdapterConfiguration', () => {
986
+ it('should have a iapUpdateAdapterConfiguration function', (done) => {
994
987
  try {
995
- assert.equal(true, typeof a.updateAdapterConfiguration === 'function');
988
+ assert.equal(true, typeof a.iapUpdateAdapterConfiguration === 'function');
996
989
  done();
997
990
  } catch (error) {
998
991
  log.error(`Test Failure: ${error}`);
@@ -1001,44 +994,34 @@ describe('[unit] Okta Adapter Test', () => {
1001
994
  });
1002
995
  });
1003
996
 
1004
- describe('#findPath', () => {
1005
- it('should have a findPath function', (done) => {
997
+ describe('#iapSuspendAdapter', () => {
998
+ it('should have a iapSuspendAdapter function', (done) => {
1006
999
  try {
1007
- assert.equal(true, typeof a.findPath === 'function');
1000
+ assert.equal(true, typeof a.iapSuspendAdapter === 'function');
1008
1001
  done();
1009
1002
  } catch (error) {
1010
1003
  log.error(`Test Failure: ${error}`);
1011
1004
  done(error);
1012
1005
  }
1013
1006
  });
1014
- it('findPath should find atleast one path that matches', (done) => {
1007
+ });
1008
+
1009
+ describe('#iapUnsuspendAdapter', () => {
1010
+ it('should have a iapUnsuspendAdapter function', (done) => {
1015
1011
  try {
1016
- a.findPath('{base_path}/{version}', (data, error) => {
1017
- try {
1018
- assert.equal(undefined, error);
1019
- assert.notEqual(undefined, data);
1020
- assert.notEqual(null, data);
1021
- assert.equal(true, data.found);
1022
- assert.notEqual(undefined, data.foundIn);
1023
- assert.notEqual(null, data.foundIn);
1024
- assert.notEqual(0, data.foundIn.length);
1025
- done();
1026
- } catch (err) {
1027
- log.error(`Test Failure: ${err}`);
1028
- done(err);
1029
- }
1030
- });
1012
+ assert.equal(true, typeof a.iapUnsuspendAdapter === 'function');
1013
+ done();
1031
1014
  } catch (error) {
1032
- log.error(`Adapter Exception: ${error}`);
1015
+ log.error(`Test Failure: ${error}`);
1033
1016
  done(error);
1034
1017
  }
1035
- }).timeout(attemptTimeout);
1018
+ });
1036
1019
  });
1037
1020
 
1038
- describe('#suspend', () => {
1039
- it('should have a suspend function', (done) => {
1021
+ describe('#iapGetAdapterQueue', () => {
1022
+ it('should have a iapGetAdapterQueue function', (done) => {
1040
1023
  try {
1041
- assert.equal(true, typeof a.suspend === 'function');
1024
+ assert.equal(true, typeof a.iapGetAdapterQueue === 'function');
1042
1025
  done();
1043
1026
  } catch (error) {
1044
1027
  log.error(`Test Failure: ${error}`);
@@ -1047,22 +1030,44 @@ describe('[unit] Okta Adapter Test', () => {
1047
1030
  });
1048
1031
  });
1049
1032
 
1050
- describe('#unsuspend', () => {
1051
- it('should have a unsuspend function', (done) => {
1033
+ describe('#iapFindAdapterPath', () => {
1034
+ it('should have a iapFindAdapterPath function', (done) => {
1052
1035
  try {
1053
- assert.equal(true, typeof a.unsuspend === 'function');
1036
+ assert.equal(true, typeof a.iapFindAdapterPath === 'function');
1054
1037
  done();
1055
1038
  } catch (error) {
1056
1039
  log.error(`Test Failure: ${error}`);
1057
1040
  done(error);
1058
1041
  }
1059
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);
1060
1065
  });
1061
1066
 
1062
- describe('#getQueue', () => {
1063
- it('should have a getQueue function', (done) => {
1067
+ describe('#iapTroubleshootAdapter', () => {
1068
+ it('should have a iapTroubleshootAdapter function', (done) => {
1064
1069
  try {
1065
- assert.equal(true, typeof a.getQueue === 'function');
1070
+ assert.equal(true, typeof a.iapTroubleshootAdapter === 'function');
1066
1071
  done();
1067
1072
  } catch (error) {
1068
1073
  log.error(`Test Failure: ${error}`);
@@ -1071,10 +1076,10 @@ describe('[unit] Okta Adapter Test', () => {
1071
1076
  });
1072
1077
  });
1073
1078
 
1074
- describe('#troubleshoot', () => {
1075
- it('should have a troubleshoot function', (done) => {
1079
+ describe('#iapRunAdapterHealthcheck', () => {
1080
+ it('should have a iapRunAdapterHealthcheck function', (done) => {
1076
1081
  try {
1077
- assert.equal(true, typeof a.troubleshoot === 'function');
1082
+ assert.equal(true, typeof a.iapRunAdapterHealthcheck === 'function');
1078
1083
  done();
1079
1084
  } catch (error) {
1080
1085
  log.error(`Test Failure: ${error}`);
@@ -1083,10 +1088,10 @@ describe('[unit] Okta Adapter Test', () => {
1083
1088
  });
1084
1089
  });
1085
1090
 
1086
- describe('#runHealthcheck', () => {
1087
- it('should have a runHealthcheck function', (done) => {
1091
+ describe('#iapRunAdapterConnectivity', () => {
1092
+ it('should have a iapRunAdapterConnectivity function', (done) => {
1088
1093
  try {
1089
- assert.equal(true, typeof a.runHealthcheck === 'function');
1094
+ assert.equal(true, typeof a.iapRunAdapterConnectivity === 'function');
1090
1095
  done();
1091
1096
  } catch (error) {
1092
1097
  log.error(`Test Failure: ${error}`);
@@ -1095,10 +1100,10 @@ describe('[unit] Okta Adapter Test', () => {
1095
1100
  });
1096
1101
  });
1097
1102
 
1098
- describe('#runConnectivity', () => {
1099
- it('should have a runConnectivity function', (done) => {
1103
+ describe('#iapRunAdapterBasicGet', () => {
1104
+ it('should have a iapRunAdapterBasicGet function', (done) => {
1100
1105
  try {
1101
- assert.equal(true, typeof a.runConnectivity === 'function');
1106
+ assert.equal(true, typeof a.iapRunAdapterBasicGet === 'function');
1102
1107
  done();
1103
1108
  } catch (error) {
1104
1109
  log.error(`Test Failure: ${error}`);
@@ -1107,10 +1112,10 @@ describe('[unit] Okta Adapter Test', () => {
1107
1112
  });
1108
1113
  });
1109
1114
 
1110
- describe('#runBasicGet', () => {
1111
- it('should have a runBasicGet function', (done) => {
1115
+ describe('#iapMoveAdapterEntitiesToDB', () => {
1116
+ it('should have a iapMoveAdapterEntitiesToDB function', (done) => {
1112
1117
  try {
1113
- assert.equal(true, typeof a.runBasicGet === 'function');
1118
+ assert.equal(true, typeof a.iapMoveAdapterEntitiesToDB === 'function');
1114
1119
  done();
1115
1120
  } catch (error) {
1116
1121
  log.error(`Test Failure: ${error}`);
@@ -1204,50 +1209,293 @@ describe('[unit] Okta Adapter Test', () => {
1204
1209
  }).timeout(attemptTimeout);
1205
1210
  });
1206
1211
 
1207
- // describe('#hasEntity', () => {
1208
- // it('should have a hasEntity function', (done) => {
1209
- // try {
1210
- // assert.equal(true, typeof a.hasEntity === 'function');
1211
- // done();
1212
- // } catch (error) {
1213
- // log.error(`Test Failure: ${error}`);
1214
- // done(error);
1215
- // }
1216
- // });
1217
- // it('should find entity', (done) => {
1218
- // try {
1219
- // a.hasEntity('template_entity', // 'a9e9c33dc61122760072455df62663d2', (data) => {
1220
- // try {
1221
- // assert.equal(true, data[0]);
1222
- // done();
1223
- // } catch (err) {
1224
- // log.error(`Test Failure: ${err}`);
1225
- // done(err);
1226
- // }
1227
- // });
1228
- // } catch (error) {
1229
- // log.error(`Adapter Exception: ${error}`);
1230
- // done(error);
1231
- // }
1232
- // }).timeout(attemptTimeout);
1233
- // it('should not find entity', (done) => {
1234
- // try {
1235
- // a.hasEntity('template_entity', 'blah', (data) => {
1236
- // try {
1237
- // assert.equal(false, data[0]);
1238
- // done();
1239
- // } catch (err) {
1240
- // log.error(`Test Failure: ${err}`);
1241
- // done(err);
1242
- // }
1243
- // });
1244
- // } catch (error) {
1245
- // log.error(`Adapter Exception: ${error}`);
1246
- // done(error);
1247
- // }
1248
- // }).timeout(attemptTimeout);
1249
- // });
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
+ });
1250
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
+ });
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-okta', 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-okta', 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
+ });
1251
1499
  /*
1252
1500
  -----------------------------------------------------------------------
1253
1501
  -----------------------------------------------------------------------