@itentialopensource/adapter-meraki 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/AUTH.md +14 -18
  2. package/CALLS.md +4264 -0
  3. package/CHANGELOG.md +16 -0
  4. package/CONTRIBUTING.md +1 -160
  5. package/ENHANCE.md +2 -2
  6. package/README.md +23 -18
  7. package/SYSTEMINFO.md +15 -2
  8. package/adapter.js +164 -335
  9. package/adapterBase.js +411 -920
  10. package/changelogs/changelog.md +198 -0
  11. package/metadata.json +61 -0
  12. package/package.json +24 -24
  13. package/pronghorn.json +470 -138
  14. package/propertiesSchema.json +358 -31
  15. package/refs?service=git-upload-pack +0 -0
  16. package/report/adapterInfo.json +8 -8
  17. package/report/updateReport1690417926405.json +119 -0
  18. package/sampleProperties.json +74 -27
  19. package/test/integration/adapterTestBasicGet.js +2 -4
  20. package/test/integration/adapterTestConnectivity.js +91 -42
  21. package/test/integration/adapterTestIntegration.js +130 -2
  22. package/test/unit/adapterBaseTestUnit.js +388 -313
  23. package/test/unit/adapterTestUnit.js +332 -112
  24. package/utils/adapterInfo.js +1 -1
  25. package/utils/addAuth.js +1 -1
  26. package/utils/artifactize.js +1 -1
  27. package/utils/checkMigrate.js +1 -1
  28. package/utils/entitiesToDB.js +2 -2
  29. package/utils/findPath.js +1 -1
  30. package/utils/methodDocumentor.js +225 -0
  31. package/utils/modify.js +13 -15
  32. package/utils/packModificationScript.js +1 -1
  33. package/utils/pre-commit.sh +2 -0
  34. package/utils/taskMover.js +309 -0
  35. package/utils/tbScript.js +89 -34
  36. package/utils/tbUtils.js +41 -21
  37. package/utils/testRunner.js +1 -1
  38. package/utils/troubleshootingAdapter.js +9 -6
  39. package/versions.json +0 -542
  40. package/workflows/README.md +0 -3
package/adapter.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  /* eslint import/no-dynamic-require: warn */
4
4
  /* eslint object-curly-newline: warn */
5
+ /* eslint default-param-last: warn */
5
6
 
6
7
  // Set globals
7
8
  /* global log */
@@ -19,7 +20,7 @@ const AdapterBaseCl = require(path.join(__dirname, 'adapterBase.js'));
19
20
  /* GENERAL ADAPTER FUNCTIONS */
20
21
  class Meraki extends AdapterBaseCl {
21
22
  /**
22
- * Meraki Adapter
23
+ * <%= metaInfo.adapterClass %> Adapter
23
24
  * @constructor
24
25
  */
25
26
  /* Working on changing the way we do Emit methods due to size and time constrainsts
@@ -27,7 +28,7 @@ class Meraki extends AdapterBaseCl {
27
28
  // Instantiate the AdapterBase super class
28
29
  super(prongid, properties);
29
30
 
30
- const restFunctionNames = this.getWorkflowFunctions();
31
+ const restFunctionNames = this.iapGetAdapterWorkflowFunctions();
31
32
 
32
33
  // Dynamically bind emit functions
33
34
  for (let i = 0; i < restFunctionNames.length; i += 1) {
@@ -86,9 +87,6 @@ class Meraki extends AdapterBaseCl {
86
87
  let myIgnore = [
87
88
  'healthCheck',
88
89
  'iapGetAdapterWorkflowFunctions',
89
- 'iapHasAdapterEntity',
90
- 'iapVerifyAdapterCapability',
91
- 'iapUpdateAdapterEntityCache',
92
90
  'hasEntities',
93
91
  'getAuthorization'
94
92
  ];
@@ -116,29 +114,15 @@ class Meraki extends AdapterBaseCl {
116
114
  * @param {string} entity - the entity to be changed, if an action, schema or mock data file (optional)
117
115
  * @param {string} type - the type of entity file to change, (action, schema, mock) (optional)
118
116
  * @param {string} action - the action to be changed, if an action, schema or mock data file (optional)
117
+ * @param {boolean} replace - true to replace entire mock data, false to merge/append
119
118
  * @param {Callback} callback - The results of the call
120
119
  */
121
- iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, callback) {
120
+ iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback) {
122
121
  const meth = 'adapter-iapUpdateAdapterConfiguration';
123
122
  const origin = `${this.id}-${meth}`;
124
123
  log.trace(origin);
125
124
 
126
- super.iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, callback);
127
- }
128
-
129
- /**
130
- * See if the API path provided is found in this adapter
131
- *
132
- * @function iapFindAdapterPath
133
- * @param {string} apiPath - the api path to check on
134
- * @param {Callback} callback - The results of the call
135
- */
136
- iapFindAdapterPath(apiPath, callback) {
137
- const meth = 'adapter-iapFindAdapterPath';
138
- const origin = `${this.id}-${meth}`;
139
- log.trace(origin);
140
-
141
- super.iapFindAdapterPath(apiPath, callback);
125
+ super.iapUpdateAdapterConfiguration(configFile, changes, entity, type, action, replace, callback);
142
126
  }
143
127
 
144
128
  /**
@@ -180,7 +164,7 @@ class Meraki extends AdapterBaseCl {
180
164
  }
181
165
 
182
166
  /**
183
- * @summary Get the Adaoter Queue
167
+ * @summary Get the Adapter Queue
184
168
  *
185
169
  * @function iapGetAdapterQueue
186
170
  * @param {Callback} callback - callback function
@@ -193,6 +177,22 @@ class Meraki extends AdapterBaseCl {
193
177
  return super.iapGetAdapterQueue(callback);
194
178
  }
195
179
 
180
+ /* SCRIPT CALLS */
181
+ /**
182
+ * See if the API path provided is found in this adapter
183
+ *
184
+ * @function iapFindAdapterPath
185
+ * @param {string} apiPath - the api path to check on
186
+ * @param {Callback} callback - The results of the call
187
+ */
188
+ iapFindAdapterPath(apiPath, callback) {
189
+ const meth = 'adapter-iapFindAdapterPath';
190
+ const origin = `${this.id}-${meth}`;
191
+ log.trace(origin);
192
+
193
+ super.iapFindAdapterPath(apiPath, callback);
194
+ }
195
+
196
196
  /**
197
197
  * @summary Runs troubleshoot scripts for adapter
198
198
  *
@@ -293,176 +293,93 @@ class Meraki extends AdapterBaseCl {
293
293
  }
294
294
  }
295
295
 
296
- /* BROKER CALLS */
297
296
  /**
298
- * @summary Determines if this adapter supports the specific entity
297
+ * @summary Deactivate adapter tasks
299
298
  *
300
- * @function iapHasAdapterEntity
301
- * @param {String} entityType - the entity type to check for
302
- * @param {String/Array} entityId - the specific entity we are looking for
299
+ * @function iapDeactivateTasks
303
300
  *
304
- * @param {Callback} callback - An array of whether the adapter can has the
305
- * desired capability or an error
301
+ * @param {Array} tasks - List of tasks to deactivate
302
+ * @param {Callback} callback
306
303
  */
307
- iapHasAdapterEntity(entityType, entityId, callback) {
308
- const origin = `${this.id}-adapter-iapHasAdapterEntity`;
304
+ iapDeactivateTasks(tasks, callback) {
305
+ const meth = 'adapter-iapDeactivateTasks';
306
+ const origin = `${this.id}-${meth}`;
309
307
  log.trace(origin);
310
308
 
311
- // Make the call -
312
- // iapVerifyAdapterCapability(entityType, actionType, entityId, callback)
313
- return this.iapVerifyAdapterCapability(entityType, null, entityId, callback);
309
+ try {
310
+ return super.iapDeactivateTasks(tasks, callback);
311
+ } catch (err) {
312
+ log.error(`${origin}: ${err}`);
313
+ return callback(null, err);
314
+ }
314
315
  }
315
316
 
316
317
  /**
317
- * @summary Provides a way for the adapter to tell north bound integrations
318
- * whether the adapter supports type, action and specific entity
318
+ * @summary Activate adapter tasks that have previously been deactivated
319
319
  *
320
- * @function iapVerifyAdapterCapability
321
- * @param {String} entityType - the entity type to check for
322
- * @param {String} actionType - the action type to check for
323
- * @param {String/Array} entityId - the specific entity we are looking for
324
- *
325
- * @param {Callback} callback - An array of whether the adapter can has the
326
- * desired capability or an error
327
- */
328
- iapVerifyAdapterCapability(entityType, actionType, entityId, callback) {
329
- const meth = 'adapterBase-iapVerifyAdapterCapability';
330
- const origin = `${this.id}-${meth}`;
331
- log.trace(origin);
332
-
333
- // if caching
334
- if (this.caching) {
335
- // Make the call - iapVerifyAdapterCapability(entityType, actionType, entityId, callback)
336
- return this.requestHandlerInst.iapVerifyAdapterCapability(entityType, actionType, entityId, (results, error) => {
337
- if (error) {
338
- return callback(null, error);
339
- }
340
-
341
- // if the cache needs to be updated, update and try again
342
- if (results && results[0] === 'needupdate') {
343
- switch (entityType) {
344
- case 'template_entity': {
345
- // if the cache is invalid, update the cache
346
- return this.getEntities(null, null, null, null, (data, err) => {
347
- if (err) {
348
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Could not update entity: $VARIABLE$, cache', [entityType], null, null, null);
349
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
350
- return callback(null, errorObj);
351
- }
352
-
353
- // need to check the cache again since it has been updated
354
- return this.requestHandlerInst.iapVerifyAdapterCapability(entityType, actionType, entityId, (vcapable, verror) => {
355
- if (verror) {
356
- return callback(null, verror);
357
- }
358
-
359
- return this.capabilityResults(vcapable, callback);
360
- });
361
- });
362
- }
363
- default: {
364
- // unsupported entity type
365
- const result = [false];
366
-
367
- // put false in array for all entities
368
- if (Array.isArray(entityId)) {
369
- for (let e = 1; e < entityId.length; e += 1) {
370
- result.push(false);
371
- }
372
- }
373
-
374
- return callback(result);
375
- }
376
- }
377
- }
378
-
379
- // return the results
380
- return this.capabilityResults(results, callback);
381
- });
382
- }
383
-
384
- // if no entity id
385
- if (!entityId) {
386
- // need to check the cache again since it has been updated
387
- return this.requestHandlerInst.iapVerifyAdapterCapability(entityType, actionType, null, (vcapable, verror) => {
388
- if (verror) {
389
- return callback(null, verror);
390
- }
320
+ * @function iapActivateTasks
321
+ *
322
+ * @param {Array} tasks - List of tasks to activate
323
+ * @param {Callback} callback
324
+ */
325
+ iapActivateTasks(tasks, callback) {
326
+ const meth = 'adapter-iapActivateTasks';
327
+ const origin = `${this.id}-${meth}`;
328
+ log.trace(origin);
391
329
 
392
- return this.capabilityResults(vcapable, callback);
393
- });
330
+ try {
331
+ return super.iapActivateTasks(tasks, callback);
332
+ } catch (err) {
333
+ log.error(`${origin}: ${err}`);
334
+ return callback(null, err);
394
335
  }
336
+ }
395
337
 
396
- // if not caching
397
- switch (entityType) {
398
- case 'template_entity': {
399
- // need to get the entities to check
400
- return this.getEntities(null, null, null, null, (data, err) => {
401
- if (err) {
402
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Could not update entity: $VARIABLE$, cache', [entityType], null, null, null);
403
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
404
- return callback(null, errorObj);
405
- }
406
-
407
- // need to check the cache again since it has been updated
408
- return this.requestHandlerInst.iapVerifyAdapterCapability(entityType, actionType, null, (vcapable, verror) => {
409
- if (verror) {
410
- return callback(null, verror);
411
- }
412
-
413
- // is the entity in the list?
414
- const isEntity = this.entityInList(entityId, data.response, callback);
415
- const res = [];
416
-
417
- // not found
418
- for (let i = 0; i < isEntity.length; i += 1) {
419
- if (vcapable) {
420
- res.push(isEntity[i]);
421
- } else {
422
- res.push(false);
423
- }
424
- }
425
-
426
- return callback(res);
427
- });
428
- });
429
- }
430
- default: {
431
- // unsupported entity type
432
- const result = [false];
433
-
434
- // put false in array for all entities
435
- if (Array.isArray(entityId)) {
436
- for (let e = 1; e < entityId.length; e += 1) {
437
- result.push(false);
438
- }
439
- }
338
+ /* CACHE CALLS */
339
+ /**
340
+ * @summary Populate the cache for the given entities
341
+ *
342
+ * @function iapPopulateEntityCache
343
+ * @param {String/Array of Strings} entityType - the entity type(s) to populate
344
+ * @param {Callback} callback - whether the cache was updated or not for each entity type
345
+ *
346
+ * @returns status of the populate
347
+ */
348
+ iapPopulateEntityCache(entityTypes, callback) {
349
+ const meth = 'adapter-iapPopulateEntityCache';
350
+ const origin = `${this.id}-${meth}`;
351
+ log.trace(origin);
440
352
 
441
- return callback(result);
442
- }
353
+ try {
354
+ return super.iapPopulateEntityCache(entityTypes, callback);
355
+ } catch (err) {
356
+ log.error(`${origin}: ${err}`);
357
+ return callback(null, err);
443
358
  }
444
359
  }
445
360
 
446
361
  /**
447
- * @summary Updates the cache for all entities by call the get All entity method
448
- *
449
- * @function iapUpdateAdapterEntityCache
362
+ * @summary Retrieves data from cache for specified entity type
450
363
  *
364
+ * @function iapRetrieveEntitiesCache
365
+ * @param {String} entityType - entity of which to retrieve
366
+ * @param {Object} options - settings of which data to return and how to return it
367
+ * @param {Callback} callback - the data if it was retrieved
451
368
  */
452
- iapUpdateAdapterEntityCache() {
453
- const origin = `${this.id}-adapter-iapUpdateAdapterEntityCache`;
369
+ iapRetrieveEntitiesCache(entityType, options, callback) {
370
+ const meth = 'adapter-iapCheckEiapRetrieveEntitiesCachentityCached';
371
+ const origin = `${this.id}-${meth}`;
454
372
  log.trace(origin);
455
373
 
456
- if (this.caching) {
457
- // if the cache is invalid, update the cache
458
- this.getEntities(null, null, null, null, (data, err) => {
459
- if (err) {
460
- log.trace(`${origin}: Could not load template_entity into cache - ${err}`);
461
- }
462
- });
374
+ try {
375
+ return super.iapRetrieveEntitiesCache(entityType, options, callback);
376
+ } catch (err) {
377
+ log.error(`${origin}: ${err}`);
378
+ return callback(null, err);
463
379
  }
464
380
  }
465
381
 
382
+ /* BROKER CALLS */
466
383
  /**
467
384
  * @summary Determines if this adapter supports any in a list of entities
468
385
  *
@@ -597,6 +514,38 @@ class Meraki extends AdapterBaseCl {
597
514
  }
598
515
 
599
516
  /* GENERIC ADAPTER REQUEST - allows extension of adapter without new calls being added */
517
+ /**
518
+ * Makes the requested generic call
519
+ *
520
+ * @function iapExpandedGenericAdapterRequest
521
+ * @param {Object} metadata - metadata for the call (optional).
522
+ * Can be a stringified Object.
523
+ * @param {String} uriPath - the path of the api call - do not include the host, port, base path or version (optional)
524
+ * @param {String} restMethod - the rest method (GET, POST, PUT, PATCH, DELETE) (optional)
525
+ * @param {Object} pathVars - the parameters to be put within the url path (optional).
526
+ * Can be a stringified Object.
527
+ * @param {Object} queryData - the parameters to be put on the url (optional).
528
+ * Can be a stringified Object.
529
+ * @param {Object} requestBody - the body to add to the request (optional).
530
+ * Can be a stringified Object.
531
+ * @param {Object} addlHeaders - additional headers to be put on the call (optional).
532
+ * Can be a stringified Object.
533
+ * @param {getCallback} callback - a callback function to return the result (Generics)
534
+ * or the error
535
+ */
536
+ iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback) {
537
+ const meth = 'adapter-iapExpandedGenericAdapterRequest';
538
+ const origin = `${this.id}-${meth}`;
539
+ log.trace(origin);
540
+
541
+ try {
542
+ return super.iapExpandedGenericAdapterRequest(metadata, uriPath, restMethod, pathVars, queryData, requestBody, addlHeaders, callback);
543
+ } catch (err) {
544
+ log.error(`${origin}: ${err}`);
545
+ return callback(null, err);
546
+ }
547
+ }
548
+
600
549
  /**
601
550
  * Makes the requested generic call
602
551
  *
@@ -617,93 +566,11 @@ class Meraki extends AdapterBaseCl {
617
566
  const origin = `${this.id}-${meth}`;
618
567
  log.trace(origin);
619
568
 
620
- if (this.suspended && this.suspendMode === 'error') {
621
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
622
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
623
- return callback(null, errorObj);
624
- }
625
-
626
- /* HERE IS WHERE YOU VALIDATE DATA */
627
- if (uriPath === undefined || uriPath === null || uriPath === '') {
628
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['uriPath'], null, null, null);
629
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
630
- return callback(null, errorObj);
631
- }
632
- if (restMethod === undefined || restMethod === null || restMethod === '') {
633
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['restMethod'], null, null, null);
634
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
635
- return callback(null, errorObj);
636
- }
637
-
638
- /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
639
- // remove any leading / and split the uripath into path variables
640
- let myPath = uriPath;
641
- while (myPath.indexOf('/') === 0) {
642
- myPath = myPath.substring(1);
643
- }
644
- const pathVars = myPath.split('/');
645
- const queryParamsAvailable = queryData;
646
- const queryParams = {};
647
- const bodyVars = requestBody;
648
-
649
- // loop in template. long callback arg name to avoid identifier conflicts
650
- Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
651
- if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
652
- && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
653
- queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
654
- }
655
- });
656
-
657
- // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders
658
- const reqObj = {
659
- payload: bodyVars,
660
- uriPathVars: pathVars,
661
- uriQuery: queryParams,
662
- uriOptions: {}
663
- };
664
- // add headers if provided
665
- if (addlHeaders) {
666
- reqObj.addlHeaders = addlHeaders;
667
- }
668
-
669
- // determine the call and return flag
670
- let action = 'getGenerics';
671
- let returnF = true;
672
- if (restMethod.toUpperCase() === 'POST') {
673
- action = 'createGeneric';
674
- } else if (restMethod.toUpperCase() === 'PUT') {
675
- action = 'updateGeneric';
676
- } else if (restMethod.toUpperCase() === 'PATCH') {
677
- action = 'patchGeneric';
678
- } else if (restMethod.toUpperCase() === 'DELETE') {
679
- action = 'deleteGeneric';
680
- returnF = false;
681
- }
682
-
683
569
  try {
684
- // Make the call -
685
- // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
686
- return this.requestHandlerInst.identifyRequest('.generic', action, reqObj, returnF, (irReturnData, irReturnError) => {
687
- // if we received an error or their is no response on the results
688
- // return an error
689
- if (irReturnError) {
690
- /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
691
- return callback(null, irReturnError);
692
- }
693
- if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
694
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['genericAdapterRequest'], null, null, null);
695
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
696
- return callback(null, errorObj);
697
- }
698
-
699
- /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
700
- // return the response
701
- return callback(irReturnData, null);
702
- });
703
- } catch (ex) {
704
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
705
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
706
- return callback(null, errorObj);
570
+ return super.genericAdapterRequest(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);
571
+ } catch (err) {
572
+ log.error(`${origin}: ${err}`);
573
+ return callback(null, err);
707
574
  }
708
575
  }
709
576
 
@@ -727,94 +594,56 @@ class Meraki extends AdapterBaseCl {
727
594
  const origin = `${this.id}-${meth}`;
728
595
  log.trace(origin);
729
596
 
730
- if (this.suspended && this.suspendMode === 'error') {
731
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'AD.600', [], null, null, null);
732
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
733
- return callback(null, errorObj);
734
- }
735
-
736
- /* HERE IS WHERE YOU VALIDATE DATA */
737
- if (uriPath === undefined || uriPath === null || uriPath === '') {
738
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['uriPath'], null, null, null);
739
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
740
- return callback(null, errorObj);
741
- }
742
- if (restMethod === undefined || restMethod === null || restMethod === '') {
743
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Missing Data', ['restMethod'], null, null, null);
744
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
745
- return callback(null, errorObj);
597
+ try {
598
+ return super.genericAdapterRequestNoBasePath(uriPath, restMethod, queryData, requestBody, addlHeaders, callback);
599
+ } catch (err) {
600
+ log.error(`${origin}: ${err}`);
601
+ return callback(null, err);
746
602
  }
603
+ }
747
604
 
748
- /* HERE IS WHERE YOU SET THE DATA TO PASS INTO REQUEST */
749
- // remove any leading / and split the uripath into path variables
750
- let myPath = uriPath;
751
- while (myPath.indexOf('/') === 0) {
752
- myPath = myPath.substring(1);
753
- }
754
- const pathVars = myPath.split('/');
755
- const queryParamsAvailable = queryData;
756
- const queryParams = {};
757
- const bodyVars = requestBody;
605
+ /* INVENTORY CALLS */
606
+ /**
607
+ * @summary run the adapter lint script to return the results.
608
+ *
609
+ * @function iapRunAdapterLint
610
+ * @param {Callback} callback - callback function
611
+ */
612
+ iapRunAdapterLint(callback) {
613
+ const meth = 'adapter-iapRunAdapterLint';
614
+ const origin = `${this.id}-${meth}`;
615
+ log.trace(origin);
758
616
 
759
- // loop in template. long callback arg name to avoid identifier conflicts
760
- Object.keys(queryParamsAvailable).forEach((thisKeyInQueryParamsAvailable) => {
761
- if (queryParamsAvailable[thisKeyInQueryParamsAvailable] !== undefined && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== null
762
- && queryParamsAvailable[thisKeyInQueryParamsAvailable] !== '') {
763
- queryParams[thisKeyInQueryParamsAvailable] = queryParamsAvailable[thisKeyInQueryParamsAvailable];
764
- }
765
- });
617
+ return super.iapRunAdapterLint(callback);
618
+ }
766
619
 
767
- // set up the request object - payload, uriPathVars, uriQuery, uriOptions, addlHeaders
768
- const reqObj = {
769
- payload: bodyVars,
770
- uriPathVars: pathVars,
771
- uriQuery: queryParams,
772
- uriOptions: {}
773
- };
774
- // add headers if provided
775
- if (addlHeaders) {
776
- reqObj.addlHeaders = addlHeaders;
777
- }
620
+ /**
621
+ * @summary run the adapter test scripts (baseunit and unit) to return the results.
622
+ * can not run integration as there can be implications with that.
623
+ *
624
+ * @function iapRunAdapterTests
625
+ * @param {Callback} callback - callback function
626
+ */
627
+ iapRunAdapterTests(callback) {
628
+ const meth = 'adapter-iapRunAdapterTests';
629
+ const origin = `${this.id}-${meth}`;
630
+ log.trace(origin);
778
631
 
779
- // determine the call and return flag
780
- let action = 'getGenericsNoBase';
781
- let returnF = true;
782
- if (restMethod.toUpperCase() === 'POST') {
783
- action = 'createGenericNoBase';
784
- } else if (restMethod.toUpperCase() === 'PUT') {
785
- action = 'updateGenericNoBase';
786
- } else if (restMethod.toUpperCase() === 'PATCH') {
787
- action = 'patchGenericNoBase';
788
- } else if (restMethod.toUpperCase() === 'DELETE') {
789
- action = 'deleteGenericNoBase';
790
- returnF = false;
791
- }
632
+ return super.iapRunAdapterTests(callback);
633
+ }
792
634
 
793
- try {
794
- // Make the call -
795
- // identifyRequest(entity, action, requestObj, returnDataFlag, callback)
796
- return this.requestHandlerInst.identifyRequest('.generic', action, reqObj, returnF, (irReturnData, irReturnError) => {
797
- // if we received an error or their is no response on the results
798
- // return an error
799
- if (irReturnError) {
800
- /* HERE IS WHERE YOU CAN ALTER THE ERROR MESSAGE */
801
- return callback(null, irReturnError);
802
- }
803
- if (!Object.hasOwnProperty.call(irReturnData, 'response')) {
804
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Invalid Response', ['genericAdapterRequestNoBasePath'], null, null, null);
805
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
806
- return callback(null, errorObj);
807
- }
635
+ /**
636
+ * @summary provide inventory information abbout the adapter
637
+ *
638
+ * @function iapGetAdapterInventory
639
+ * @param {Callback} callback - callback function
640
+ */
641
+ iapGetAdapterInventory(callback) {
642
+ const meth = 'adapter-iapGetAdapterInventory';
643
+ const origin = `${this.id}-${meth}`;
644
+ log.trace(origin);
808
645
 
809
- /* HERE IS WHERE YOU CAN ALTER THE RETURN DATA */
810
- // return the response
811
- return callback(irReturnData, null);
812
- });
813
- } catch (ex) {
814
- const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, ex);
815
- log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
816
- return callback(null, errorObj);
817
- }
646
+ return super.iapGetAdapterInventory(callback);
818
647
  }
819
648
 
820
649
  /**