@itentialopensource/adapter-tufin_secureapp 0.2.3 → 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 (48) hide show
  1. package/.eslintignore +1 -0
  2. package/AUTH.md +39 -0
  3. package/BROKER.md +199 -0
  4. package/CALLS.md +169 -0
  5. package/CHANGELOG.md +39 -8
  6. package/CODE_OF_CONDUCT.md +12 -17
  7. package/CONTRIBUTING.md +88 -74
  8. package/ENHANCE.md +69 -0
  9. package/PROPERTIES.md +641 -0
  10. package/README.md +228 -420
  11. package/SUMMARY.md +9 -0
  12. package/SYSTEMINFO.md +11 -0
  13. package/TROUBLESHOOT.md +47 -0
  14. package/adapter.js +1628 -170
  15. package/adapterBase.js +1270 -238
  16. package/entities/.generic/action.json +214 -0
  17. package/entities/.generic/schema.json +28 -0
  18. package/error.json +12 -0
  19. package/package.json +41 -18
  20. package/pronghorn.json +577 -2
  21. package/propertiesDecorators.json +14 -0
  22. package/propertiesSchema.json +472 -4
  23. package/refs?service=git-upload-pack +0 -0
  24. package/report/adapterInfo.json +10 -0
  25. package/report/updateReport1615840744335.json +95 -0
  26. package/report/updateReport1653613470041.json +120 -0
  27. package/sampleProperties.json +102 -5
  28. package/test/integration/adapterTestBasicGet.js +85 -0
  29. package/test/integration/adapterTestConnectivity.js +93 -0
  30. package/test/integration/adapterTestIntegration.js +29 -98
  31. package/test/unit/adapterBaseTestUnit.js +949 -0
  32. package/test/unit/adapterTestUnit.js +642 -109
  33. package/utils/adapterInfo.js +206 -0
  34. package/utils/addAuth.js +94 -0
  35. package/utils/basicGet.js +50 -0
  36. package/utils/checkMigrate.js +63 -0
  37. package/utils/entitiesToDB.js +179 -0
  38. package/utils/findPath.js +74 -0
  39. package/utils/modify.js +154 -0
  40. package/utils/packModificationScript.js +1 -1
  41. package/utils/patches2bundledDeps.js +90 -0
  42. package/utils/pre-commit.sh +3 -0
  43. package/utils/removeHooks.js +20 -0
  44. package/utils/tbScript.js +184 -0
  45. package/utils/tbUtils.js +469 -0
  46. package/utils/testRunner.js +16 -16
  47. package/utils/troubleshootingAdapter.js +190 -0
  48. package/img/adapter.png +0 -0
@@ -4,6 +4,7 @@
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');
@@ -18,22 +19,31 @@ const { use } = require('chai');
18
19
  const td = require('testdouble');
19
20
 
20
21
  const anything = td.matchers.anything();
21
-
22
- // stub and attemptTimeout are used throughout the code so set them here
23
22
  let logLevel = 'none';
24
- const stub = true;
25
23
  const isRapidFail = false;
26
- const attemptTimeout = 120000;
24
+
25
+ // read in the properties from the sampleProperties files
26
+ let adaptdir = __dirname;
27
+ if (adaptdir.endsWith('/test/integration')) {
28
+ adaptdir = adaptdir.substring(0, adaptdir.length - 17);
29
+ } else if (adaptdir.endsWith('/test/unit')) {
30
+ adaptdir = adaptdir.substring(0, adaptdir.length - 10);
31
+ }
32
+ const samProps = require(`${adaptdir}/sampleProperties.json`).properties;
27
33
 
28
34
  // these variables can be changed to run in integrated mode so easier to set them here
29
35
  // 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;
36
+ samProps.stub = true;
37
+ samProps.host = 'replace.hostorip.here';
38
+ samProps.authentication.username = 'username';
39
+ samProps.authentication.password = 'password';
40
+ samProps.protocol = 'http';
41
+ samProps.port = 80;
42
+ samProps.ssl.enabled = false;
43
+ samProps.ssl.accept_invalid_cert = false;
44
+ samProps.request.attempt_timeout = 60000;
45
+ const attemptTimeout = samProps.request.attempt_timeout;
46
+ const { stub } = samProps;
37
47
 
38
48
  // these are the adapter properties. You generally should not need to alter
39
49
  // any of these after they are initially set up
@@ -45,94 +55,7 @@ global.pronghornProps = {
45
55
  adapters: [{
46
56
  id: 'Test-tufin_secureapp',
47
57
  type: 'TufinSecureapp',
48
- properties: {
49
- host,
50
- port,
51
- base_path: '/',
52
- version: '',
53
- cache_location: 'none',
54
- encode_pathvars: true,
55
- save_metric: false,
56
- protocol,
57
- stub,
58
- authentication: {
59
- auth_method: 'no_authentication',
60
- username,
61
- password,
62
- token: '',
63
- token_timeout: -1,
64
- token_cache: 'local',
65
- invalid_token_error: 401,
66
- auth_field: 'header.headers.Authorization',
67
- auth_field_format: 'Basic {b64}{username}:{password}{/b64}'
68
- },
69
- healthcheck: {
70
- type: 'none',
71
- frequency: 60000
72
- },
73
- throttle: {
74
- throttle_enabled: false,
75
- number_pronghorns: 1,
76
- sync_async: 'sync',
77
- max_in_queue: 1000,
78
- concurrent_max: 1,
79
- expire_timeout: 0,
80
- avg_runtime: 200,
81
- priorities: [
82
- {
83
- value: 0,
84
- percent: 100
85
- }
86
- ]
87
- },
88
- request: {
89
- number_redirects: 0,
90
- number_retries: 3,
91
- limit_retry_error: 0,
92
- failover_codes: [],
93
- attempt_timeout: attemptTimeout,
94
- global_request: {
95
- payload: {},
96
- uriOptions: {},
97
- addlHeaders: {},
98
- authData: {}
99
- },
100
- healthcheck_on_timeout: true,
101
- return_raw: true,
102
- archiving: false
103
- },
104
- proxy: {
105
- enabled: false,
106
- host: '',
107
- port: 1,
108
- protocol: 'http'
109
- },
110
- ssl: {
111
- ecdhCurve: '',
112
- enabled: sslenable,
113
- accept_invalid_cert: sslinvalid,
114
- ca_file: '',
115
- key_file: '',
116
- cert_file: '',
117
- secure_protocol: '',
118
- ciphers: ''
119
- },
120
- mongo: {
121
- host: '',
122
- port: 0,
123
- database: '',
124
- username: '',
125
- password: '',
126
- replSet: '',
127
- db_ssl: {
128
- enabled: false,
129
- accept_invalid_cert: false,
130
- ca_file: '',
131
- key_file: '',
132
- cert_file: ''
133
- }
134
- }
135
- }
58
+ properties: samProps
136
59
  }]
137
60
  }
138
61
  };
@@ -193,7 +116,7 @@ function runErrorAsserts(data, error, code, origin, displayStr) {
193
116
  }
194
117
 
195
118
  // require the adapter that we are going to be using
196
- const TufinSecureapp = require('../../adapter.js');
119
+ const TufinSecureapp = require('../../adapter');
197
120
 
198
121
  // delete the .DS_Store directory in entities -- otherwise this will cause errors
199
122
  const dirPath = path.join(__dirname, '../../entities/.DS_Store');
@@ -235,6 +158,8 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
235
158
  try {
236
159
  assert.notEqual(null, a);
237
160
  assert.notEqual(undefined, a);
161
+ const checkId = global.pronghornProps.adapterProps.adapters[0].id;
162
+ assert.equal(checkId, a.id);
238
163
  assert.notEqual(null, a.allProps);
239
164
  const check = global.pronghornProps.adapterProps.adapters[0].properties.healthcheck.type;
240
165
  assert.equal(check, a.healthcheckType);
@@ -261,10 +186,10 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
261
186
  });
262
187
 
263
188
  let wffunctions = [];
264
- describe('#getWorkflowFunctions', () => {
189
+ describe('#iapGetAdapterWorkflowFunctions', () => {
265
190
  it('should retrieve workflow functions', (done) => {
266
191
  try {
267
- wffunctions = a.getWorkflowFunctions();
192
+ wffunctions = a.iapGetAdapterWorkflowFunctions([]);
268
193
 
269
194
  try {
270
195
  assert.notEqual(0, wffunctions.length);
@@ -316,13 +241,103 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
316
241
  done(error);
317
242
  }
318
243
  });
319
- it('package.json should be customized', (done) => {
244
+ it('package.json standard fields should be customized', (done) => {
320
245
  try {
321
246
  const packageDotJson = require('../../package.json');
322
247
  assert.notEqual(-1, packageDotJson.name.indexOf('tufin_secureapp'));
323
248
  assert.notEqual(undefined, packageDotJson.version);
324
249
  assert.notEqual(null, packageDotJson.version);
325
250
  assert.notEqual('', packageDotJson.version);
251
+ assert.notEqual(undefined, packageDotJson.description);
252
+ assert.notEqual(null, packageDotJson.description);
253
+ assert.notEqual('', packageDotJson.description);
254
+ assert.equal('adapter.js', packageDotJson.main);
255
+ assert.notEqual(undefined, packageDotJson.wizardVersion);
256
+ assert.notEqual(null, packageDotJson.wizardVersion);
257
+ assert.notEqual('', packageDotJson.wizardVersion);
258
+ assert.notEqual(undefined, packageDotJson.engineVersion);
259
+ assert.notEqual(null, packageDotJson.engineVersion);
260
+ assert.notEqual('', packageDotJson.engineVersion);
261
+ assert.equal('http', packageDotJson.adapterType);
262
+ done();
263
+ } catch (error) {
264
+ log.error(`Test Failure: ${error}`);
265
+ done(error);
266
+ }
267
+ });
268
+ it('package.json proper scripts should be provided', (done) => {
269
+ try {
270
+ const packageDotJson = require('../../package.json');
271
+ assert.notEqual(undefined, packageDotJson.scripts);
272
+ assert.notEqual(null, packageDotJson.scripts);
273
+ assert.notEqual('', packageDotJson.scripts);
274
+ assert.equal('node utils/setup.js && npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions', packageDotJson.scripts.preinstall);
275
+ assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js', packageDotJson.scripts.lint);
276
+ assert.equal('node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet', packageDotJson.scripts['lint:errors']);
277
+ assert.equal('mocha test/unit/adapterBaseTestUnit.js --LOG=error', packageDotJson.scripts['test:baseunit']);
278
+ assert.equal('mocha test/unit/adapterTestUnit.js --LOG=error', packageDotJson.scripts['test:unit']);
279
+ assert.equal('mocha test/integration/adapterTestIntegration.js --LOG=error', packageDotJson.scripts['test:integration']);
280
+ assert.equal('nyc --reporter html --reporter text mocha --reporter dot test/*', packageDotJson.scripts['test:cover']);
281
+ assert.equal('npm run test:baseunit && npm run test:unit && npm run test:integration', packageDotJson.scripts.test);
282
+ assert.equal('npm publish --registry=https://registry.npmjs.org --access=public', packageDotJson.scripts.deploy);
283
+ assert.equal('npm run deploy', packageDotJson.scripts.build);
284
+ done();
285
+ } catch (error) {
286
+ log.error(`Test Failure: ${error}`);
287
+ done(error);
288
+ }
289
+ });
290
+ it('package.json proper directories should be provided', (done) => {
291
+ try {
292
+ const packageDotJson = require('../../package.json');
293
+ assert.notEqual(undefined, packageDotJson.repository);
294
+ assert.notEqual(null, packageDotJson.repository);
295
+ assert.notEqual('', packageDotJson.repository);
296
+ assert.equal('git', packageDotJson.repository.type);
297
+ assert.equal('git@gitlab.com:itentialopensource/adapters/', packageDotJson.repository.url.substring(0, 43));
298
+ assert.equal('https://gitlab.com/itentialopensource/adapters/', packageDotJson.homepage.substring(0, 47));
299
+ done();
300
+ } catch (error) {
301
+ log.error(`Test Failure: ${error}`);
302
+ done(error);
303
+ }
304
+ });
305
+ it('package.json proper dependencies should be provided', (done) => {
306
+ try {
307
+ const packageDotJson = require('../../package.json');
308
+ assert.notEqual(undefined, packageDotJson.dependencies);
309
+ assert.notEqual(null, packageDotJson.dependencies);
310
+ assert.notEqual('', packageDotJson.dependencies);
311
+ assert.equal('^6.12.0', packageDotJson.dependencies.ajv);
312
+ assert.equal('^0.21.0', packageDotJson.dependencies.axios);
313
+ assert.equal('^2.20.0', packageDotJson.dependencies.commander);
314
+ assert.equal('^8.1.0', packageDotJson.dependencies['fs-extra']);
315
+ assert.equal('^9.0.1', packageDotJson.dependencies.mocha);
316
+ assert.equal('^2.0.1', packageDotJson.dependencies['mocha-param']);
317
+ assert.equal('^0.5.3', packageDotJson.dependencies['network-diagnostics']);
318
+ assert.equal('^15.1.0', packageDotJson.dependencies.nyc);
319
+ assert.equal('^1.4.10', packageDotJson.dependencies['readline-sync']);
320
+ assert.equal('^7.3.2', packageDotJson.dependencies.semver);
321
+ assert.equal('^3.3.3', packageDotJson.dependencies.winston);
322
+ done();
323
+ } catch (error) {
324
+ log.error(`Test Failure: ${error}`);
325
+ done(error);
326
+ }
327
+ });
328
+ it('package.json proper dev dependencies should be provided', (done) => {
329
+ try {
330
+ const packageDotJson = require('../../package.json');
331
+ assert.notEqual(undefined, packageDotJson.devDependencies);
332
+ assert.notEqual(null, packageDotJson.devDependencies);
333
+ assert.notEqual('', packageDotJson.devDependencies);
334
+ assert.equal('^4.3.4', packageDotJson.devDependencies.chai);
335
+ assert.equal('^7.29.0', packageDotJson.devDependencies.eslint);
336
+ assert.equal('^14.2.1', packageDotJson.devDependencies['eslint-config-airbnb-base']);
337
+ assert.equal('^2.23.4', packageDotJson.devDependencies['eslint-plugin-import']);
338
+ assert.equal('^3.0.0', packageDotJson.devDependencies['eslint-plugin-json']);
339
+ assert.equal('^0.6.3', packageDotJson.devDependencies['package-json-validator']);
340
+ assert.equal('^3.16.1', packageDotJson.devDependencies.testdouble);
326
341
  done();
327
342
  } catch (error) {
328
343
  log.error(`Test Failure: ${error}`);
@@ -347,8 +362,35 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
347
362
  try {
348
363
  const pronghornDotJson = require('../../pronghorn.json');
349
364
  assert.notEqual(-1, pronghornDotJson.id.indexOf('tufin_secureapp'));
365
+ assert.equal('Adapter', pronghornDotJson.type);
350
366
  assert.equal('TufinSecureapp', pronghornDotJson.export);
351
367
  assert.equal('Tufin_secureapp', pronghornDotJson.title);
368
+ assert.equal('adapter.js', pronghornDotJson.src);
369
+ done();
370
+ } catch (error) {
371
+ log.error(`Test Failure: ${error}`);
372
+ done(error);
373
+ }
374
+ });
375
+ it('pronghorn.json should contain generic adapter methods', (done) => {
376
+ try {
377
+ const pronghornDotJson = require('../../pronghorn.json');
378
+ assert.notEqual(undefined, pronghornDotJson.methods);
379
+ assert.notEqual(null, pronghornDotJson.methods);
380
+ assert.notEqual('', pronghornDotJson.methods);
381
+ assert.equal(true, Array.isArray(pronghornDotJson.methods));
382
+ assert.notEqual(0, pronghornDotJson.methods.length);
383
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapUpdateAdapterConfiguration'));
384
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapFindAdapterPath'));
385
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapTroubleshootAdapter'));
386
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterHealthcheck'));
387
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterConnectivity'));
388
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapRunAdapterBasicGet'));
389
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapSuspendAdapter'));
390
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapUnsuspendAdapter'));
391
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapGetAdapterQueue'));
392
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequest'));
393
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequestNoBasePath'));
352
394
  done();
353
395
  } catch (error) {
354
396
  log.error(`Test Failure: ${error}`);
@@ -370,7 +412,7 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
370
412
  let wfparams = [];
371
413
 
372
414
  if (methLine && methLine.indexOf('(') >= 0 && methLine.indexOf(')') >= 0) {
373
- const temp = methLine.substring(methLine.indexOf('(') + 1, methLine.indexOf(')'));
415
+ const temp = methLine.substring(methLine.indexOf('(') + 1, methLine.lastIndexOf(')'));
374
416
  wfparams = temp.split(',');
375
417
 
376
418
  for (let t = 0; t < wfparams.length; t += 1) {
@@ -487,6 +529,124 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
487
529
  try {
488
530
  const propertiesDotJson = require('../../propertiesSchema.json');
489
531
  assert.equal('adapter-tufin_secureapp', propertiesDotJson.$id);
532
+ assert.equal('object', propertiesDotJson.type);
533
+ assert.equal('http://json-schema.org/draft-07/schema#', propertiesDotJson.$schema);
534
+ done();
535
+ } catch (error) {
536
+ log.error(`Test Failure: ${error}`);
537
+ done(error);
538
+ }
539
+ });
540
+ it('propertiesSchema.json should contain generic adapter properties', (done) => {
541
+ try {
542
+ const propertiesDotJson = require('../../propertiesSchema.json');
543
+ assert.notEqual(undefined, propertiesDotJson.properties);
544
+ assert.notEqual(null, propertiesDotJson.properties);
545
+ assert.notEqual('', propertiesDotJson.properties);
546
+ assert.equal('string', propertiesDotJson.properties.host.type);
547
+ assert.equal('integer', propertiesDotJson.properties.port.type);
548
+ assert.equal('boolean', propertiesDotJson.properties.stub.type);
549
+ assert.notEqual(undefined, propertiesDotJson.definitions.authentication);
550
+ assert.notEqual(null, propertiesDotJson.definitions.authentication);
551
+ assert.notEqual('', propertiesDotJson.definitions.authentication);
552
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.auth_method.type);
553
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.username.type);
554
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.password.type);
555
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.token.type);
556
+ assert.equal('integer', propertiesDotJson.definitions.authentication.properties.invalid_token_error.type);
557
+ assert.equal('integer', propertiesDotJson.definitions.authentication.properties.token_timeout.type);
558
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.token_cache.type);
559
+ assert.equal(true, Array.isArray(propertiesDotJson.definitions.authentication.properties.auth_field.type));
560
+ assert.equal(true, Array.isArray(propertiesDotJson.definitions.authentication.properties.auth_field_format.type));
561
+ assert.equal('boolean', propertiesDotJson.definitions.authentication.properties.auth_logging.type);
562
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_id.type);
563
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_secret.type);
564
+ assert.equal('string', propertiesDotJson.definitions.authentication.properties.grant_type.type);
565
+ assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
566
+ assert.notEqual(null, propertiesDotJson.definitions.ssl);
567
+ assert.notEqual('', propertiesDotJson.definitions.ssl);
568
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ecdhCurve.type);
569
+ assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.enabled.type);
570
+ assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.accept_invalid_cert.type);
571
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ca_file.type);
572
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.key_file.type);
573
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.cert_file.type);
574
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.secure_protocol.type);
575
+ assert.equal('string', propertiesDotJson.definitions.ssl.properties.ciphers.type);
576
+ assert.equal('string', propertiesDotJson.properties.base_path.type);
577
+ assert.equal('string', propertiesDotJson.properties.version.type);
578
+ assert.equal('string', propertiesDotJson.properties.cache_location.type);
579
+ assert.equal('boolean', propertiesDotJson.properties.encode_pathvars.type);
580
+ assert.equal('boolean', propertiesDotJson.properties.encode_queryvars.type);
581
+ assert.equal(true, Array.isArray(propertiesDotJson.properties.save_metric.type));
582
+ assert.equal('string', propertiesDotJson.properties.protocol.type);
583
+ assert.notEqual(undefined, propertiesDotJson.definitions);
584
+ assert.notEqual(null, propertiesDotJson.definitions);
585
+ assert.notEqual('', propertiesDotJson.definitions);
586
+ assert.notEqual(undefined, propertiesDotJson.definitions.healthcheck);
587
+ assert.notEqual(null, propertiesDotJson.definitions.healthcheck);
588
+ assert.notEqual('', propertiesDotJson.definitions.healthcheck);
589
+ assert.equal('string', propertiesDotJson.definitions.healthcheck.properties.type.type);
590
+ assert.equal('integer', propertiesDotJson.definitions.healthcheck.properties.frequency.type);
591
+ assert.equal('object', propertiesDotJson.definitions.healthcheck.properties.query_object.type);
592
+ assert.notEqual(undefined, propertiesDotJson.definitions.throttle);
593
+ assert.notEqual(null, propertiesDotJson.definitions.throttle);
594
+ assert.notEqual('', propertiesDotJson.definitions.throttle);
595
+ assert.equal('boolean', propertiesDotJson.definitions.throttle.properties.throttle_enabled.type);
596
+ assert.equal('integer', propertiesDotJson.definitions.throttle.properties.number_pronghorns.type);
597
+ assert.equal('string', propertiesDotJson.definitions.throttle.properties.sync_async.type);
598
+ assert.equal('integer', propertiesDotJson.definitions.throttle.properties.max_in_queue.type);
599
+ assert.equal('integer', propertiesDotJson.definitions.throttle.properties.concurrent_max.type);
600
+ assert.equal('integer', propertiesDotJson.definitions.throttle.properties.expire_timeout.type);
601
+ assert.equal('integer', propertiesDotJson.definitions.throttle.properties.avg_runtime.type);
602
+ assert.equal('array', propertiesDotJson.definitions.throttle.properties.priorities.type);
603
+ assert.notEqual(undefined, propertiesDotJson.definitions.request);
604
+ assert.notEqual(null, propertiesDotJson.definitions.request);
605
+ assert.notEqual('', propertiesDotJson.definitions.request);
606
+ assert.equal('integer', propertiesDotJson.definitions.request.properties.number_redirects.type);
607
+ assert.equal('integer', propertiesDotJson.definitions.request.properties.number_retries.type);
608
+ assert.equal(true, Array.isArray(propertiesDotJson.definitions.request.properties.limit_retry_error.type));
609
+ assert.equal('array', propertiesDotJson.definitions.request.properties.failover_codes.type);
610
+ assert.equal('integer', propertiesDotJson.definitions.request.properties.attempt_timeout.type);
611
+ assert.equal('object', propertiesDotJson.definitions.request.properties.global_request.type);
612
+ assert.equal('object', propertiesDotJson.definitions.request.properties.global_request.properties.payload.type);
613
+ assert.equal('object', propertiesDotJson.definitions.request.properties.global_request.properties.uriOptions.type);
614
+ assert.equal('object', propertiesDotJson.definitions.request.properties.global_request.properties.addlHeaders.type);
615
+ assert.equal('object', propertiesDotJson.definitions.request.properties.global_request.properties.authData.type);
616
+ assert.equal('boolean', propertiesDotJson.definitions.request.properties.healthcheck_on_timeout.type);
617
+ assert.equal('boolean', propertiesDotJson.definitions.request.properties.return_raw.type);
618
+ assert.equal('boolean', propertiesDotJson.definitions.request.properties.archiving.type);
619
+ assert.equal('boolean', propertiesDotJson.definitions.request.properties.return_request.type);
620
+ assert.notEqual(undefined, propertiesDotJson.definitions.proxy);
621
+ assert.notEqual(null, propertiesDotJson.definitions.proxy);
622
+ assert.notEqual('', propertiesDotJson.definitions.proxy);
623
+ assert.equal('boolean', propertiesDotJson.definitions.proxy.properties.enabled.type);
624
+ assert.equal('string', propertiesDotJson.definitions.proxy.properties.host.type);
625
+ assert.equal('integer', propertiesDotJson.definitions.proxy.properties.port.type);
626
+ assert.equal('string', propertiesDotJson.definitions.proxy.properties.protocol.type);
627
+ assert.equal('string', propertiesDotJson.definitions.proxy.properties.username.type);
628
+ assert.equal('string', propertiesDotJson.definitions.proxy.properties.password.type);
629
+ assert.notEqual(undefined, propertiesDotJson.definitions.mongo);
630
+ assert.notEqual(null, propertiesDotJson.definitions.mongo);
631
+ assert.notEqual('', propertiesDotJson.definitions.mongo);
632
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.host.type);
633
+ assert.equal('integer', propertiesDotJson.definitions.mongo.properties.port.type);
634
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.database.type);
635
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.username.type);
636
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.password.type);
637
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.replSet.type);
638
+ assert.equal('object', propertiesDotJson.definitions.mongo.properties.db_ssl.type);
639
+ assert.equal('boolean', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.enabled.type);
640
+ assert.equal('boolean', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.accept_invalid_cert.type);
641
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.ca_file.type);
642
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.key_file.type);
643
+ assert.equal('string', propertiesDotJson.definitions.mongo.properties.db_ssl.properties.cert_file.type);
644
+ assert.notEqual('', propertiesDotJson.definitions.devicebroker);
645
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getDevice.type);
646
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getDevicesFiltered.type);
647
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.isAlive.type);
648
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getConfig.type);
649
+ assert.equal('array', propertiesDotJson.definitions.devicebroker.properties.getCount.type);
490
650
  done();
491
651
  } catch (error) {
492
652
  log.error(`Test Failure: ${error}`);
@@ -507,6 +667,50 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
507
667
  done(error);
508
668
  }
509
669
  });
670
+ it('error.json should have standard adapter errors', (done) => {
671
+ try {
672
+ const errorDotJson = require('../../error.json');
673
+ assert.notEqual(undefined, errorDotJson.errors);
674
+ assert.notEqual(null, errorDotJson.errors);
675
+ assert.notEqual('', errorDotJson.errors);
676
+ assert.equal(true, Array.isArray(errorDotJson.errors));
677
+ assert.notEqual(0, errorDotJson.errors.length);
678
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.100'));
679
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.101'));
680
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.102'));
681
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.110'));
682
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.111'));
683
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.112'));
684
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.113'));
685
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.114'));
686
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.115'));
687
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.116'));
688
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.300'));
689
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.301'));
690
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.302'));
691
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.303'));
692
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.304'));
693
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.305'));
694
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.310'));
695
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.311'));
696
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.312'));
697
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.320'));
698
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.321'));
699
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.400'));
700
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.401'));
701
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.402'));
702
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.500'));
703
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.501'));
704
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.502'));
705
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.503'));
706
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.600'));
707
+ assert.notEqual(undefined, errorDotJson.errors.find((e) => e.icode === 'AD.900'));
708
+ done();
709
+ } catch (error) {
710
+ log.error(`Test Failure: ${error}`);
711
+ done(error);
712
+ }
713
+ });
510
714
  });
511
715
 
512
716
  describe('sampleProperties.json', () => {
@@ -521,6 +725,121 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
521
725
  done(error);
522
726
  }
523
727
  });
728
+ it('sampleProperties.json should contain generic adapter properties', (done) => {
729
+ try {
730
+ const sampleDotJson = require('../../sampleProperties.json');
731
+ assert.notEqual(-1, sampleDotJson.id.indexOf('tufin_secureapp'));
732
+ assert.equal('TufinSecureapp', sampleDotJson.type);
733
+ assert.notEqual(undefined, sampleDotJson.properties);
734
+ assert.notEqual(null, sampleDotJson.properties);
735
+ assert.notEqual('', sampleDotJson.properties);
736
+ assert.notEqual(undefined, sampleDotJson.properties.host);
737
+ assert.notEqual(undefined, sampleDotJson.properties.port);
738
+ assert.notEqual(undefined, sampleDotJson.properties.stub);
739
+ assert.notEqual(undefined, sampleDotJson.properties.authentication);
740
+ assert.notEqual(null, sampleDotJson.properties.authentication);
741
+ assert.notEqual('', sampleDotJson.properties.authentication);
742
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_method);
743
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.username);
744
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.password);
745
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.token);
746
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.invalid_token_error);
747
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.token_timeout);
748
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.token_cache);
749
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_field);
750
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_field_format);
751
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.auth_logging);
752
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.client_id);
753
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.client_secret);
754
+ assert.notEqual(undefined, sampleDotJson.properties.authentication.grant_type);
755
+ assert.notEqual(undefined, sampleDotJson.properties.ssl);
756
+ assert.notEqual(null, sampleDotJson.properties.ssl);
757
+ assert.notEqual('', sampleDotJson.properties.ssl);
758
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ecdhCurve);
759
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.enabled);
760
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.accept_invalid_cert);
761
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ca_file);
762
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.key_file);
763
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.cert_file);
764
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.secure_protocol);
765
+ assert.notEqual(undefined, sampleDotJson.properties.ssl.ciphers);
766
+ assert.notEqual(undefined, sampleDotJson.properties.base_path);
767
+ assert.notEqual(undefined, sampleDotJson.properties.version);
768
+ assert.notEqual(undefined, sampleDotJson.properties.cache_location);
769
+ assert.notEqual(undefined, sampleDotJson.properties.encode_pathvars);
770
+ assert.notEqual(undefined, sampleDotJson.properties.encode_queryvars);
771
+ assert.notEqual(undefined, sampleDotJson.properties.save_metric);
772
+ assert.notEqual(undefined, sampleDotJson.properties.protocol);
773
+ assert.notEqual(undefined, sampleDotJson.properties.healthcheck);
774
+ assert.notEqual(null, sampleDotJson.properties.healthcheck);
775
+ assert.notEqual('', sampleDotJson.properties.healthcheck);
776
+ assert.notEqual(undefined, sampleDotJson.properties.healthcheck.type);
777
+ assert.notEqual(undefined, sampleDotJson.properties.healthcheck.frequency);
778
+ assert.notEqual(undefined, sampleDotJson.properties.healthcheck.query_object);
779
+ assert.notEqual(undefined, sampleDotJson.properties.throttle);
780
+ assert.notEqual(null, sampleDotJson.properties.throttle);
781
+ assert.notEqual('', sampleDotJson.properties.throttle);
782
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.throttle_enabled);
783
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.number_pronghorns);
784
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.sync_async);
785
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.max_in_queue);
786
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.concurrent_max);
787
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.expire_timeout);
788
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.avg_runtime);
789
+ assert.notEqual(undefined, sampleDotJson.properties.throttle.priorities);
790
+ assert.notEqual(undefined, sampleDotJson.properties.request);
791
+ assert.notEqual(null, sampleDotJson.properties.request);
792
+ assert.notEqual('', sampleDotJson.properties.request);
793
+ assert.notEqual(undefined, sampleDotJson.properties.request.number_redirects);
794
+ assert.notEqual(undefined, sampleDotJson.properties.request.number_retries);
795
+ assert.notEqual(undefined, sampleDotJson.properties.request.limit_retry_error);
796
+ assert.notEqual(undefined, sampleDotJson.properties.request.failover_codes);
797
+ assert.notEqual(undefined, sampleDotJson.properties.request.attempt_timeout);
798
+ assert.notEqual(undefined, sampleDotJson.properties.request.global_request);
799
+ assert.notEqual(undefined, sampleDotJson.properties.request.global_request.payload);
800
+ assert.notEqual(undefined, sampleDotJson.properties.request.global_request.uriOptions);
801
+ assert.notEqual(undefined, sampleDotJson.properties.request.global_request.addlHeaders);
802
+ assert.notEqual(undefined, sampleDotJson.properties.request.global_request.authData);
803
+ assert.notEqual(undefined, sampleDotJson.properties.request.healthcheck_on_timeout);
804
+ assert.notEqual(undefined, sampleDotJson.properties.request.return_raw);
805
+ assert.notEqual(undefined, sampleDotJson.properties.request.archiving);
806
+ assert.notEqual(undefined, sampleDotJson.properties.request.return_request);
807
+ assert.notEqual(undefined, sampleDotJson.properties.proxy);
808
+ assert.notEqual(null, sampleDotJson.properties.proxy);
809
+ assert.notEqual('', sampleDotJson.properties.proxy);
810
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.enabled);
811
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.host);
812
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.port);
813
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.protocol);
814
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.username);
815
+ assert.notEqual(undefined, sampleDotJson.properties.proxy.password);
816
+ assert.notEqual(undefined, sampleDotJson.properties.mongo);
817
+ assert.notEqual(null, sampleDotJson.properties.mongo);
818
+ assert.notEqual('', sampleDotJson.properties.mongo);
819
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.host);
820
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.port);
821
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.database);
822
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.username);
823
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.password);
824
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.replSet);
825
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl);
826
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.enabled);
827
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.accept_invalid_cert);
828
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.ca_file);
829
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.key_file);
830
+ assert.notEqual(undefined, sampleDotJson.properties.mongo.db_ssl.cert_file);
831
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker);
832
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getDevice);
833
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getDevicesFiltered);
834
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.isAlive);
835
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getConfig);
836
+ assert.notEqual(undefined, sampleDotJson.properties.devicebroker.getCount);
837
+ done();
838
+ } catch (error) {
839
+ log.error(`Test Failure: ${error}`);
840
+ done(error);
841
+ }
842
+ });
524
843
  });
525
844
 
526
845
  describe('#checkProperties', () => {
@@ -608,6 +927,148 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
608
927
  });
609
928
  });
610
929
 
930
+ describe('#iapUpdateAdapterConfiguration', () => {
931
+ it('should have a iapUpdateAdapterConfiguration function', (done) => {
932
+ try {
933
+ assert.equal(true, typeof a.iapUpdateAdapterConfiguration === 'function');
934
+ done();
935
+ } catch (error) {
936
+ log.error(`Test Failure: ${error}`);
937
+ done(error);
938
+ }
939
+ });
940
+ });
941
+
942
+ describe('#iapFindAdapterPath', () => {
943
+ it('should have a iapFindAdapterPath function', (done) => {
944
+ try {
945
+ assert.equal(true, typeof a.iapFindAdapterPath === 'function');
946
+ done();
947
+ } catch (error) {
948
+ log.error(`Test Failure: ${error}`);
949
+ done(error);
950
+ }
951
+ });
952
+ it('iapFindAdapterPath should find atleast one path that matches', (done) => {
953
+ try {
954
+ a.iapFindAdapterPath('{base_path}/{version}', (data, error) => {
955
+ try {
956
+ assert.equal(undefined, error);
957
+ assert.notEqual(undefined, data);
958
+ assert.notEqual(null, data);
959
+ assert.equal(true, data.found);
960
+ assert.notEqual(undefined, data.foundIn);
961
+ assert.notEqual(null, data.foundIn);
962
+ assert.notEqual(0, data.foundIn.length);
963
+ done();
964
+ } catch (err) {
965
+ log.error(`Test Failure: ${err}`);
966
+ done(err);
967
+ }
968
+ });
969
+ } catch (error) {
970
+ log.error(`Adapter Exception: ${error}`);
971
+ done(error);
972
+ }
973
+ }).timeout(attemptTimeout);
974
+ });
975
+
976
+ describe('#iapSuspendAdapter', () => {
977
+ it('should have a iapSuspendAdapter function', (done) => {
978
+ try {
979
+ assert.equal(true, typeof a.iapSuspendAdapter === 'function');
980
+ done();
981
+ } catch (error) {
982
+ log.error(`Test Failure: ${error}`);
983
+ done(error);
984
+ }
985
+ });
986
+ });
987
+
988
+ describe('#iapUnsuspendAdapter', () => {
989
+ it('should have a iapUnsuspendAdapter function', (done) => {
990
+ try {
991
+ assert.equal(true, typeof a.iapUnsuspendAdapter === 'function');
992
+ done();
993
+ } catch (error) {
994
+ log.error(`Test Failure: ${error}`);
995
+ done(error);
996
+ }
997
+ });
998
+ });
999
+
1000
+ describe('#iapGetAdapterQueue', () => {
1001
+ it('should have a iapGetAdapterQueue function', (done) => {
1002
+ try {
1003
+ assert.equal(true, typeof a.iapGetAdapterQueue === 'function');
1004
+ done();
1005
+ } catch (error) {
1006
+ log.error(`Test Failure: ${error}`);
1007
+ done(error);
1008
+ }
1009
+ });
1010
+ });
1011
+
1012
+ describe('#iapTroubleshootAdapter', () => {
1013
+ it('should have a iapTroubleshootAdapter function', (done) => {
1014
+ try {
1015
+ assert.equal(true, typeof a.iapTroubleshootAdapter === 'function');
1016
+ done();
1017
+ } catch (error) {
1018
+ log.error(`Test Failure: ${error}`);
1019
+ done(error);
1020
+ }
1021
+ });
1022
+ });
1023
+
1024
+ describe('#iapRunAdapterHealthcheck', () => {
1025
+ it('should have a iapRunAdapterHealthcheck function', (done) => {
1026
+ try {
1027
+ assert.equal(true, typeof a.iapRunAdapterHealthcheck === 'function');
1028
+ done();
1029
+ } catch (error) {
1030
+ log.error(`Test Failure: ${error}`);
1031
+ done(error);
1032
+ }
1033
+ });
1034
+ });
1035
+
1036
+ describe('#iapRunAdapterConnectivity', () => {
1037
+ it('should have a iapRunAdapterConnectivity function', (done) => {
1038
+ try {
1039
+ assert.equal(true, typeof a.iapRunAdapterConnectivity === 'function');
1040
+ done();
1041
+ } catch (error) {
1042
+ log.error(`Test Failure: ${error}`);
1043
+ done(error);
1044
+ }
1045
+ });
1046
+ });
1047
+
1048
+ describe('#iapRunAdapterBasicGet', () => {
1049
+ it('should have a iapRunAdapterBasicGet function', (done) => {
1050
+ try {
1051
+ assert.equal(true, typeof a.iapRunAdapterBasicGet === 'function');
1052
+ done();
1053
+ } catch (error) {
1054
+ log.error(`Test Failure: ${error}`);
1055
+ done(error);
1056
+ }
1057
+ });
1058
+ });
1059
+
1060
+ describe('#iapMoveAdapterEntitiesToDB', () => {
1061
+ it('should have a iapMoveAdapterEntitiesToDB function', (done) => {
1062
+ try {
1063
+ assert.equal(true, typeof a.iapMoveAdapterEntitiesToDB === 'function');
1064
+ done();
1065
+ } catch (error) {
1066
+ log.error(`Test Failure: ${error}`);
1067
+ done(error);
1068
+ }
1069
+ });
1070
+ });
1071
+
611
1072
  describe('#checkActionFiles', () => {
612
1073
  it('should have a checkActionFiles function', (done) => {
613
1074
  try {
@@ -693,10 +1154,10 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
693
1154
  }).timeout(attemptTimeout);
694
1155
  });
695
1156
 
696
- // describe('#hasEntity', () => {
697
- // it('should have a hasEntity function', (done) => {
1157
+ // describe('#iapHasAdapterEntity', () => {
1158
+ // it('should have a iapHasAdapterEntity function', (done) => {
698
1159
  // try {
699
- // assert.equal(true, typeof a.hasEntity === 'function');
1160
+ // assert.equal(true, typeof a.iapHasAdapterEntity === 'function');
700
1161
  // done();
701
1162
  // } catch (error) {
702
1163
  // log.error(`Test Failure: ${error}`);
@@ -705,7 +1166,7 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
705
1166
  // });
706
1167
  // it('should find entity', (done) => {
707
1168
  // try {
708
- // a.hasEntity('template_entity', // 'a9e9c33dc61122760072455df62663d2', (data) => {
1169
+ // a.iapHasAdapterEntity('template_entity', // 'a9e9c33dc61122760072455df62663d2', (data) => {
709
1170
  // try {
710
1171
  // assert.equal(true, data[0]);
711
1172
  // done();
@@ -721,7 +1182,7 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
721
1182
  // }).timeout(attemptTimeout);
722
1183
  // it('should not find entity', (done) => {
723
1184
  // try {
724
- // a.hasEntity('template_entity', 'blah', (data) => {
1185
+ // a.iapHasAdapterEntity('template_entity', 'blah', (data) => {
725
1186
  // try {
726
1187
  // assert.equal(false, data[0]);
727
1188
  // done();
@@ -737,6 +1198,78 @@ describe('[unit] Tufin_secureapp Adapter Test', () => {
737
1198
  // }).timeout(attemptTimeout);
738
1199
  // });
739
1200
 
1201
+ describe('#hasEntities', () => {
1202
+ it('should have a hasEntities function', (done) => {
1203
+ try {
1204
+ assert.equal(true, typeof a.hasEntities === 'function');
1205
+ done();
1206
+ } catch (error) {
1207
+ log.error(`Test Failure: ${error}`);
1208
+ done(error);
1209
+ }
1210
+ });
1211
+ });
1212
+
1213
+ describe('#getDevice', () => {
1214
+ it('should have a getDevice function', (done) => {
1215
+ try {
1216
+ assert.equal(true, typeof a.getDevice === 'function');
1217
+ done();
1218
+ } catch (error) {
1219
+ log.error(`Test Failure: ${error}`);
1220
+ done(error);
1221
+ }
1222
+ });
1223
+ });
1224
+
1225
+ describe('#getDevicesFiltered', () => {
1226
+ it('should have a getDevicesFiltered function', (done) => {
1227
+ try {
1228
+ assert.equal(true, typeof a.getDevicesFiltered === 'function');
1229
+ done();
1230
+ } catch (error) {
1231
+ log.error(`Test Failure: ${error}`);
1232
+ done(error);
1233
+ }
1234
+ });
1235
+ });
1236
+
1237
+ describe('#isAlive', () => {
1238
+ it('should have a isAlive function', (done) => {
1239
+ try {
1240
+ assert.equal(true, typeof a.isAlive === 'function');
1241
+ done();
1242
+ } catch (error) {
1243
+ log.error(`Test Failure: ${error}`);
1244
+ done(error);
1245
+ }
1246
+ });
1247
+ });
1248
+
1249
+ describe('#getConfig', () => {
1250
+ it('should have a getConfig function', (done) => {
1251
+ try {
1252
+ assert.equal(true, typeof a.getConfig === 'function');
1253
+ done();
1254
+ } catch (error) {
1255
+ log.error(`Test Failure: ${error}`);
1256
+ done(error);
1257
+ }
1258
+ });
1259
+ });
1260
+
1261
+ describe('#iapGetDeviceCount', () => {
1262
+ it('should have a iapGetDeviceCount function', (done) => {
1263
+ try {
1264
+ assert.equal(true, typeof a.iapGetDeviceCount === 'function');
1265
+ done();
1266
+ } catch (error) {
1267
+ log.error(`Test Failure: ${error}`);
1268
+ done(error);
1269
+ }
1270
+ });
1271
+ });
1272
+
740
1273
  /*
741
1274
  -----------------------------------------------------------------------
742
1275
  -----------------------------------------------------------------------