@itentialopensource/adapter-microsoft_office365 0.1.1 → 0.2.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 (56) hide show
  1. package/AUTH.md +41 -0
  2. package/BROKER.md +199 -0
  3. package/CALLS.md +222 -0
  4. package/CHANGELOG.md +8 -1
  5. package/CODE_OF_CONDUCT.md +12 -17
  6. package/CONTRIBUTING.md +3 -148
  7. package/ENHANCE.md +69 -0
  8. package/PROPERTIES.md +641 -0
  9. package/README.md +235 -576
  10. package/SUMMARY.md +9 -0
  11. package/SYSTEMINFO.md +20 -0
  12. package/TROUBLESHOOT.md +47 -0
  13. package/adapter.js +391 -263
  14. package/adapterBase.js +854 -408
  15. package/changelogs/changelog.md +9 -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 +57 -0
  20. package/package.json +28 -22
  21. package/pronghorn.json +691 -88
  22. package/propertiesDecorators.json +14 -0
  23. package/propertiesSchema.json +829 -8
  24. package/refs?service=git-upload-pack +0 -0
  25. package/report/adapter-openapi.json +509 -0
  26. package/report/adapter-openapi.yaml +349 -0
  27. package/report/adapterInfo.json +10 -0
  28. package/report/updateReport1691511327831.json +120 -0
  29. package/report/updateReport1692202817366.json +120 -0
  30. package/report/updateReport1694463941759.json +120 -0
  31. package/report/updateReport1698421603077.json +120 -0
  32. package/sampleProperties.json +153 -3
  33. package/test/integration/adapterTestBasicGet.js +3 -5
  34. package/test/integration/adapterTestConnectivity.js +91 -42
  35. package/test/integration/adapterTestIntegration.js +166 -114
  36. package/test/unit/adapterBaseTestUnit.js +388 -308
  37. package/test/unit/adapterTestUnit.js +490 -252
  38. package/utils/adapterInfo.js +206 -0
  39. package/utils/addAuth.js +94 -0
  40. package/utils/artifactize.js +1 -1
  41. package/utils/basicGet.js +1 -14
  42. package/utils/checkMigrate.js +1 -1
  43. package/utils/entitiesToDB.js +179 -0
  44. package/utils/findPath.js +1 -1
  45. package/utils/methodDocumentor.js +273 -0
  46. package/utils/modify.js +14 -16
  47. package/utils/packModificationScript.js +1 -1
  48. package/utils/patches2bundledDeps.js +90 -0
  49. package/utils/pre-commit.sh +5 -0
  50. package/utils/removeHooks.js +20 -0
  51. package/utils/taskMover.js +309 -0
  52. package/utils/tbScript.js +129 -53
  53. package/utils/tbUtils.js +125 -25
  54. package/utils/testRunner.js +17 -17
  55. package/utils/troubleshootingAdapter.js +10 -31
  56. package/workflows/README.md +0 -3
@@ -3,12 +3,15 @@
3
3
  // Set globals
4
4
  /* global describe it log pronghornProps */
5
5
  /* eslint no-unused-vars: warn */
6
+ /* eslint no-underscore-dangle: warn */
7
+ /* eslint import/no-dynamic-require:warn */
6
8
 
7
9
  // include required items for testing & logging
8
10
  const assert = require('assert');
9
11
  const fs = require('fs');
10
- const mocha = require('mocha');
11
12
  const path = require('path');
13
+ const util = require('util');
14
+ const mocha = require('mocha');
12
15
  const winston = require('winston');
13
16
  const { expect } = require('chai');
14
17
  const { use } = require('chai');
@@ -18,20 +21,33 @@ const anything = td.matchers.anything();
18
21
 
19
22
  // stub and attemptTimeout are used throughout the code so set them here
20
23
  let logLevel = 'none';
21
- const stub = true;
22
24
  const isRapidFail = false;
23
25
  const isSaveMockData = false;
24
- const attemptTimeout = 5000;
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;
25
35
 
26
36
  // these variables can be changed to run in integrated mode so easier to set them here
27
37
  // always check these in with bogus data!!!
28
- const host = 'replace.hostorip.here';
29
- const username = 'username';
30
- const password = 'password';
31
- const protocol = 'http';
32
- const port = 80;
33
- const sslenable = false;
34
- 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
+ if (samProps.request.attempt_timeout < 30000) {
47
+ samProps.request.attempt_timeout = 30000;
48
+ }
49
+ const attemptTimeout = samProps.request.attempt_timeout;
50
+ const { stub } = samProps;
35
51
 
36
52
  // these are the adapter properties. You generally should not need to alter
37
53
  // any of these after they are initially set up
@@ -41,101 +57,9 @@ global.pronghornProps = {
41
57
  },
42
58
  adapterProps: {
43
59
  adapters: [{
44
- id: 'Test-MicrosoftOffice365',
60
+ id: 'Test-microsoft_office365',
45
61
  type: 'MicrosoftOffice365',
46
- properties: {
47
- host,
48
- port,
49
- base_path: '/v1.0',
50
- version: '',
51
- cache_location: 'none',
52
- encode_pathvars: true,
53
- save_metric: false,
54
- stub,
55
- protocol,
56
- authentication: {
57
- auth_method: 'no_authentication',
58
- username,
59
- password,
60
- token: '',
61
- invalid_token_error: 401,
62
- token_timeout: -1,
63
- token_cache: 'local',
64
- auth_field: 'header.headers.Authorization',
65
- auth_field_format: 'Basic {b64}{username}:{password}{/b64}',
66
- auth_logging: false
67
- },
68
- healthcheck: {
69
- type: 'none',
70
- frequency: 60000,
71
- query_object: {}
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
- return_request: false
104
- },
105
- proxy: {
106
- enabled: false,
107
- host: '',
108
- port: 1,
109
- protocol: 'http',
110
- username: '',
111
- password: ''
112
- },
113
- ssl: {
114
- ecdhCurve: '',
115
- enabled: sslenable,
116
- accept_invalid_cert: sslinvalid,
117
- ca_file: '',
118
- key_file: '',
119
- cert_file: '',
120
- secure_protocol: '',
121
- ciphers: ''
122
- },
123
- mongo: {
124
- host: '',
125
- port: 0,
126
- database: '',
127
- username: '',
128
- password: '',
129
- replSet: '',
130
- db_ssl: {
131
- enabled: false,
132
- accept_invalid_cert: false,
133
- ca_file: '',
134
- key_file: '',
135
- cert_file: ''
136
- }
137
- }
138
- }
62
+ properties: samProps
139
63
  }]
140
64
  }
141
65
  };
@@ -411,6 +335,134 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
411
335
  }).timeout(attemptTimeout);
412
336
  });
413
337
 
338
+ // broker tests
339
+ describe('#getDevicesFiltered - errors', () => {
340
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
341
+ try {
342
+ const opts = {
343
+ filter: {
344
+ name: 'deviceName'
345
+ }
346
+ };
347
+ a.getDevicesFiltered(opts, (data, error) => {
348
+ try {
349
+ if (stub) {
350
+ if (samProps.devicebroker.getDevicesFiltered[0].handleFailure === 'ignore') {
351
+ assert.equal(null, error);
352
+ assert.notEqual(undefined, data);
353
+ assert.notEqual(null, data);
354
+ assert.equal(0, data.total);
355
+ assert.equal(0, data.list.length);
356
+ } else {
357
+ const displayE = 'Error 400 received on request';
358
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
359
+ }
360
+ } else {
361
+ runCommonAsserts(data, error);
362
+ }
363
+ done();
364
+ } catch (err) {
365
+ log.error(`Test Failure: ${err}`);
366
+ done(err);
367
+ }
368
+ });
369
+ } catch (error) {
370
+ log.error(`Adapter Exception: ${error}`);
371
+ done(error);
372
+ }
373
+ }).timeout(attemptTimeout);
374
+ });
375
+
376
+ describe('#iapGetDeviceCount - errors', () => {
377
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
378
+ try {
379
+ const opts = {
380
+ filter: {
381
+ name: 'deviceName'
382
+ }
383
+ };
384
+ a.iapGetDeviceCount((data, error) => {
385
+ try {
386
+ if (stub) {
387
+ if (samProps.devicebroker.getDevicesFiltered[0].handleFailure === 'ignore') {
388
+ assert.equal(null, error);
389
+ assert.notEqual(undefined, data);
390
+ assert.notEqual(null, data);
391
+ assert.equal(0, data.count);
392
+ } else {
393
+ const displayE = 'Error 400 received on request';
394
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
395
+ }
396
+ } else {
397
+ runCommonAsserts(data, error);
398
+ }
399
+ done();
400
+ } catch (err) {
401
+ log.error(`Test Failure: ${err}`);
402
+ done(err);
403
+ }
404
+ });
405
+ } catch (error) {
406
+ log.error(`Adapter Exception: ${error}`);
407
+ done(error);
408
+ }
409
+ }).timeout(attemptTimeout);
410
+ });
411
+
412
+ // exposed cache tests
413
+ describe('#iapPopulateEntityCache - errors', () => {
414
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
415
+ try {
416
+ a.iapPopulateEntityCache('Device', (data, error) => {
417
+ try {
418
+ if (stub) {
419
+ assert.equal(null, data);
420
+ assert.notEqual(undefined, error);
421
+ assert.notEqual(null, error);
422
+ done();
423
+ } else {
424
+ assert.equal(undefined, error);
425
+ assert.equal('success', data[0]);
426
+ done();
427
+ }
428
+ } catch (err) {
429
+ log.error(`Test Failure: ${err}`);
430
+ done(err);
431
+ }
432
+ });
433
+ } catch (error) {
434
+ log.error(`Adapter Exception: ${error}`);
435
+ done(error);
436
+ }
437
+ }).timeout(attemptTimeout);
438
+ });
439
+
440
+ describe('#iapRetrieveEntitiesCache - errors', () => {
441
+ it('should work if integrated but since no mockdata should error when run standalone', (done) => {
442
+ try {
443
+ a.iapRetrieveEntitiesCache('Device', {}, (data, error) => {
444
+ try {
445
+ if (stub) {
446
+ assert.equal(null, data);
447
+ assert.notEqual(null, error);
448
+ assert.notEqual(undefined, error);
449
+ } else {
450
+ assert.equal(undefined, error);
451
+ assert.notEqual(null, data);
452
+ assert.notEqual(undefined, data);
453
+ }
454
+ done();
455
+ } catch (err) {
456
+ log.error(`Test Failure: ${err}`);
457
+ done(err);
458
+ }
459
+ });
460
+ } catch (error) {
461
+ log.error(`Adapter Exception: ${error}`);
462
+ done(error);
463
+ }
464
+ }).timeout(attemptTimeout);
465
+ });
414
466
  /*
415
467
  -----------------------------------------------------------------------
416
468
  -----------------------------------------------------------------------
@@ -428,7 +480,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
428
480
  try {
429
481
  if (stub) {
430
482
  const displayE = 'Error 400 received on request';
431
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
483
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
432
484
  } else {
433
485
  runCommonAsserts(data, error);
434
486
  }
@@ -453,7 +505,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
453
505
  try {
454
506
  if (stub) {
455
507
  const displayE = 'Error 400 received on request';
456
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
508
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
457
509
  } else {
458
510
  runCommonAsserts(data, error);
459
511
  }
@@ -480,7 +532,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
480
532
  try {
481
533
  if (stub) {
482
534
  const displayE = 'Error 400 received on request';
483
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
535
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
484
536
  } else {
485
537
  runCommonAsserts(data, error);
486
538
  }
@@ -505,7 +557,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
505
557
  try {
506
558
  if (stub) {
507
559
  const displayE = 'Error 400 received on request';
508
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
560
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
509
561
  } else {
510
562
  runCommonAsserts(data, error);
511
563
  }
@@ -531,7 +583,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
531
583
  try {
532
584
  if (stub) {
533
585
  const displayE = 'Error 400 received on request';
534
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
586
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
535
587
  } else {
536
588
  runCommonAsserts(data, error);
537
589
  }
@@ -556,7 +608,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
556
608
  try {
557
609
  if (stub) {
558
610
  const displayE = 'Error 400 received on request';
559
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
611
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
560
612
  } else {
561
613
  runCommonAsserts(data, error);
562
614
  }
@@ -583,7 +635,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
583
635
  try {
584
636
  if (stub) {
585
637
  const displayE = 'Error 400 received on request';
586
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
638
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
587
639
  } else {
588
640
  runCommonAsserts(data, error);
589
641
  }
@@ -608,7 +660,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
608
660
  try {
609
661
  if (stub) {
610
662
  const displayE = 'Error 400 received on request';
611
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
663
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
612
664
  } else {
613
665
  runCommonAsserts(data, error);
614
666
  }
@@ -633,7 +685,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
633
685
  try {
634
686
  if (stub) {
635
687
  const displayE = 'Error 400 received on request';
636
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
688
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
637
689
  } else {
638
690
  runCommonAsserts(data, error);
639
691
  }
@@ -658,7 +710,7 @@ describe('[integration] MicrosoftOffice365 Adapter Test', () => {
658
710
  try {
659
711
  if (stub) {
660
712
  const displayE = 'Error 400 received on request';
661
- runErrorAsserts(data, error, 'AD.500', 'Test-MicrosoftOffice365-connectorRest-handleEndResponse', displayE);
713
+ runErrorAsserts(data, error, 'AD.500', 'Test-microsoft_office365-connectorRest-handleEndResponse', displayE);
662
714
  } else {
663
715
  runCommonAsserts(data, error);
664
716
  }