@futdevpro/nts-dynamo 1.9.45 → 1.10.1

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 (189) hide show
  1. package/.github/workflows/main.yml +57 -3
  2. package/build/_collections/archive.util.spec.d.ts +2 -0
  3. package/build/_collections/archive.util.spec.d.ts.map +1 -0
  4. package/build/_collections/archive.util.spec.js +21 -0
  5. package/build/_collections/archive.util.spec.js.map +1 -0
  6. package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
  7. package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
  8. package/build/_models/control-models/api-call-params.control-model.spec.js +82 -0
  9. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
  10. package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
  11. package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
  12. package/build/_models/control-models/app-params.control-model.spec.js +59 -0
  13. package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
  14. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
  15. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
  16. package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
  17. package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
  18. package/build/_models/control-models/endpoint-params.control-model.d.ts +1 -1
  19. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  20. package/build/_models/control-models/endpoint-params.control-model.js +3 -3
  21. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  22. package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
  23. package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
  24. package/build/_models/control-models/http-settings.control-model.spec.js +62 -0
  25. package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
  26. package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
  27. package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
  28. package/build/_models/control-models/system-control.control-model.spec.js +24 -0
  29. package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
  30. package/build/_models/interfaces/global-service-settings.interface.d.ts +3 -3
  31. package/build/_models/interfaces/global-service-settings.interface.d.ts.map +1 -1
  32. package/build/_modules/custom-data/custom-data.controller.d.ts.map +1 -1
  33. package/build/_modules/custom-data/custom-data.controller.js +3 -3
  34. package/build/_modules/custom-data/custom-data.controller.js.map +1 -1
  35. package/build/_modules/custom-data/custom-data.data-service.d.ts +1 -1
  36. package/build/_modules/custom-data/custom-data.data-service.d.ts.map +1 -1
  37. package/build/_modules/custom-data/custom-data.data-service.js +3 -3
  38. package/build/_modules/custom-data/custom-data.data-service.js.map +1 -1
  39. package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
  40. package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
  41. package/build/_modules/mock/app-params.mock.spec.js +19 -0
  42. package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
  43. package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
  44. package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
  45. package/build/_modules/mock/auth-service.mock.spec.js +40 -0
  46. package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
  47. package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
  48. package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
  49. package/build/_modules/mock/controller.mock.spec.js +23 -0
  50. package/build/_modules/mock/controller.mock.spec.js.map +1 -0
  51. package/build/_modules/mock/data-model.mock.d.ts +2 -2
  52. package/build/_modules/mock/data-model.mock.d.ts.map +1 -1
  53. package/build/_modules/mock/data-model.mock.js +21 -21
  54. package/build/_modules/mock/data-model.mock.js.map +1 -1
  55. package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
  56. package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
  57. package/build/_modules/mock/data-model.mock.spec.js +99 -0
  58. package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
  59. package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
  60. package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
  61. package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
  62. package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
  63. package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
  64. package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
  65. package/build/_modules/mock/email-service.mock.spec.js +14 -0
  66. package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
  67. package/build/_modules/mock/socket-client.mock.js +2 -2
  68. package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
  69. package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
  70. package/build/_modules/mock/socket-client.mock.spec.js +32 -0
  71. package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
  72. package/build/_modules/mock/socket-server.mock.d.ts +1 -1
  73. package/build/_modules/mock/socket-server.mock.d.ts.map +1 -1
  74. package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
  75. package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
  76. package/build/_modules/mock/socket-server.mock.spec.js +36 -0
  77. package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
  78. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
  79. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
  80. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +22 -0
  81. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
  82. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
  83. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
  84. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +29 -0
  85. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
  86. package/build/_modules/socket/_services/socket-server.service.d.ts +1 -1
  87. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  88. package/build/_modules/socket/_services/socket-server.service.js +1 -1
  89. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  90. package/build/_modules/socket/_services/socket-server.service.spec.js +1 -1
  91. package/build/_modules/socket/_services/socket-server.service.spec.js.map +1 -1
  92. package/build/_modules/usage/usage.controller.d.ts.map +1 -1
  93. package/build/_modules/usage/usage.controller.js +6 -4
  94. package/build/_modules/usage/usage.controller.js.map +1 -1
  95. package/build/_modules/usage/usage.data-service.d.ts +4 -4
  96. package/build/_modules/usage/usage.data-service.d.ts.map +1 -1
  97. package/build/_modules/usage/usage.data-service.js +2 -2
  98. package/build/_modules/usage/usage.data-service.js.map +1 -1
  99. package/build/_services/base/archive-data.service.d.ts +1 -1
  100. package/build/_services/base/archive-data.service.d.ts.map +1 -1
  101. package/build/_services/base/archive-data.service.js.map +1 -1
  102. package/build/_services/base/data.service.d.ts +7 -7
  103. package/build/_services/base/data.service.d.ts.map +1 -1
  104. package/build/_services/base/data.service.js +22 -9
  105. package/build/_services/base/data.service.js.map +1 -1
  106. package/build/_services/base/db.service.d.ts +3 -3
  107. package/build/_services/base/db.service.d.ts.map +1 -1
  108. package/build/_services/base/db.service.js +23 -14
  109. package/build/_services/base/db.service.js.map +1 -1
  110. package/build/_services/base/singleton.service-base.d.ts.map +1 -1
  111. package/build/_services/base/singleton.service-base.js.map +1 -1
  112. package/build/_services/core/api.service.d.ts +1 -1
  113. package/build/_services/core/api.service.d.ts.map +1 -1
  114. package/build/_services/core/api.service.js +5 -5
  115. package/build/_services/core/api.service.js.map +1 -1
  116. package/build/_services/core/api.service.spec.d.ts +2 -0
  117. package/build/_services/core/api.service.spec.d.ts.map +1 -0
  118. package/build/_services/core/api.service.spec.js +75 -0
  119. package/build/_services/core/api.service.spec.js.map +1 -0
  120. package/build/_services/core/email.service.d.ts +6 -6
  121. package/build/_services/core/email.service.d.ts.map +1 -1
  122. package/build/_services/core/email.service.js.map +1 -1
  123. package/build/_services/core/email.service.spec.d.ts +2 -0
  124. package/build/_services/core/email.service.spec.d.ts.map +1 -0
  125. package/build/_services/core/email.service.spec.js +77 -0
  126. package/build/_services/core/email.service.spec.js.map +1 -0
  127. package/build/_services/core/global.service.d.ts +2 -2
  128. package/build/_services/core/global.service.d.ts.map +1 -1
  129. package/build/_services/core/global.service.js +3 -2
  130. package/build/_services/core/global.service.js.map +1 -1
  131. package/build/_services/route/controller.service.d.ts +3 -3
  132. package/build/_services/route/controller.service.d.ts.map +1 -1
  133. package/build/_services/route/controller.service.js +2 -2
  134. package/build/_services/route/controller.service.js.map +1 -1
  135. package/build/_services/route/controller.service.spec.d.ts +2 -0
  136. package/build/_services/route/controller.service.spec.d.ts.map +1 -0
  137. package/build/_services/route/controller.service.spec.js +48 -0
  138. package/build/_services/route/controller.service.spec.js.map +1 -0
  139. package/build/_services/route/routing-module.service.spec.d.ts +2 -0
  140. package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
  141. package/build/_services/route/routing-module.service.spec.js +65 -0
  142. package/build/_services/route/routing-module.service.spec.js.map +1 -0
  143. package/build/_services/server/app.server.d.ts +5 -5
  144. package/build/_services/server/app.server.d.ts.map +1 -1
  145. package/build/_services/server/app.server.js +9 -7
  146. package/build/_services/server/app.server.js.map +1 -1
  147. package/package.json +8 -8
  148. package/spec/support/jasmine.json +8 -0
  149. package/src/_collections/archive.util.spec.ts +22 -0
  150. package/src/_models/control-models/api-call-params.control-model.spec.ts +94 -0
  151. package/src/_models/control-models/app-params.control-model.spec.ts +69 -0
  152. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -0
  153. package/src/_models/control-models/endpoint-params.control-model.ts +7 -6
  154. package/src/_models/control-models/http-settings.control-model.spec.ts +66 -0
  155. package/src/_models/control-models/system-control.control-model.spec.ts +27 -0
  156. package/src/_models/interfaces/global-service-settings.interface.ts +3 -3
  157. package/src/_modules/custom-data/custom-data.controller.ts +6 -6
  158. package/src/_modules/custom-data/custom-data.data-service.ts +4 -3
  159. package/src/_modules/mock/app-params.mock.spec.ts +21 -0
  160. package/src/_modules/mock/auth-service.mock.spec.ts +47 -0
  161. package/src/_modules/mock/controller.mock.spec.ts +26 -0
  162. package/src/_modules/mock/data-model.mock.spec.ts +109 -0
  163. package/src/_modules/mock/data-model.mock.ts +23 -23
  164. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -0
  165. package/src/_modules/mock/email-service.mock.spec.ts +17 -0
  166. package/src/_modules/mock/socket-client.mock.spec.ts +40 -0
  167. package/src/_modules/mock/socket-client.mock.ts +4 -4
  168. package/src/_modules/mock/socket-server.mock.spec.ts +44 -0
  169. package/src/_modules/mock/socket-server.mock.ts +5 -5
  170. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +30 -0
  171. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +33 -0
  172. package/src/_modules/socket/_services/socket-server.service.spec.ts +1 -1
  173. package/src/_modules/socket/_services/socket-server.service.ts +2 -2
  174. package/src/_modules/test/get-test-routing-module.util.ts +2 -2
  175. package/src/_modules/usage/usage.controller.ts +10 -8
  176. package/src/_modules/usage/usage.data-service.ts +10 -7
  177. package/src/_services/base/archive-data.service.ts +2 -2
  178. package/src/_services/base/data.service.ts +100 -76
  179. package/src/_services/base/db.service.ts +77 -55
  180. package/src/_services/base/singleton.service-base.ts +0 -2
  181. package/src/_services/core/api.service.spec.ts +96 -0
  182. package/src/_services/core/api.service.ts +7 -7
  183. package/src/_services/core/email.service.spec.ts +93 -0
  184. package/src/_services/core/email.service.ts +9 -11
  185. package/src/_services/core/global.service.ts +19 -16
  186. package/src/_services/route/controller.service.spec.ts +52 -0
  187. package/src/_services/route/controller.service.ts +5 -6
  188. package/src/_services/route/routing-module.service.spec.ts +81 -0
  189. package/src/_services/server/app.server.ts +26 -24
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.09.45",
3
+ "version": "01.10.01",
4
4
  "description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
5
5
  "scripts": {
6
6
  "prep": "npm i rimraf nodemon -g",
@@ -90,11 +90,11 @@
90
90
  },
91
91
  "homepage": "https:/futdevpro.hu/projects/dynamo",
92
92
  "DISABLED": {
93
- "@futdevpro/fsm-dynamo": "file:../tgz-collection/dynamo-fsm/futdevpro-fsm-dynamo-01.09.43.tgz",
93
+ "@futdevpro/fsm-dynamo": "file:../tgz-collection/dynamo-fsm/futdevpro-fsm-dynamo-01.10.02.tgz",
94
94
  "empty": ""
95
95
  },
96
96
  "peerDependencies": {
97
- "@futdevpro/fsm-dynamo": "~1.9.43",
97
+ "@futdevpro/fsm-dynamo": "1.10.2",
98
98
 
99
99
  "@types/express": "~4.17.17",
100
100
  "@types/geoip-lite": "~1.4.1",
@@ -106,18 +106,18 @@
106
106
  "mongoose": "~5.13.20",
107
107
  "nodemailer": "~6.9.4",
108
108
  "rxjs": "~7.8.1",
109
- "ts-node": "~10.9.1",
109
+ "ts-node": "~10.9.2",
110
110
  "body-parser": "~1.20.2"
111
111
  },
112
112
  "peerDevDependencies": {
113
113
  },
114
114
  "devDependencies": {
115
115
  "@types/jasmine": "~4.3.5",
116
- "@typescript-eslint/eslint-plugin": "~6.7.4",
117
- "@typescript-eslint/parser": "~6.7.4",
118
- "eslint": "~8.51.0",
116
+ "@typescript-eslint/eslint-plugin": "^8.18.2",
117
+ "@typescript-eslint/parser": "^8.18.2",
118
+ "eslint": "~8.57.0",
119
119
  "eslint-plugin-max-params-no-constructor": "~0.0.4",
120
- "eslint-plugin-unused-imports": "~3.0.0",
120
+ "eslint-plugin-unused-imports": "~4.1.4",
121
121
  "jasmine": "~5.0.2",
122
122
  "jasmine-ts": "~0.4.0",
123
123
  "socket.io": "~4.7.2",
@@ -1,4 +1,12 @@
1
1
  {
2
+ "reporters": [
3
+ {
4
+ "name": "jasmine-json-reporter",
5
+ "options": {
6
+ "pretty": true
7
+ }
8
+ }
9
+ ],
2
10
  "spec_dir": "build/",
3
11
  "spec_files": [
4
12
  "**/*.spec.ts",
@@ -0,0 +1,22 @@
1
+
2
+ import { DyNTS_getArchivedDBName, DyNTS_archiveSuffix } from './archive.util';
3
+
4
+ describe('DyNTS_getArchivedDBName', () => {
5
+ it('should append the archive suffix to the database name', () => {
6
+ const dbName = 'TestDB';
7
+ const expectedArchivedName = `${dbName}${DyNTS_archiveSuffix}`;
8
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
9
+ });
10
+
11
+ it('should return only the archive suffix when the database name is an empty string', () => {
12
+ const dbName = '';
13
+ const expectedArchivedName = DyNTS_archiveSuffix;
14
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
15
+ });
16
+
17
+ it('should handle database names with special characters', () => {
18
+ const dbName = 'Test_DB-123!';
19
+ const expectedArchivedName = `${dbName}${DyNTS_archiveSuffix}`;
20
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
21
+ });
22
+ });
@@ -0,0 +1,94 @@
1
+
2
+ import { DyFM_Log } from '@futdevpro/fsm-dynamo';
3
+ import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
4
+ import { DyNTS_HttpResponseType } from '../../_enums/http/http-response-type.enum';
5
+ import { DyNTS_ApiCall_Params, DyNTS_HttpOptions } from './api-call-params.control-model';
6
+
7
+ describe('DyNTS_ApiCall_Params', () => {
8
+ it('should create an instance with default values', () => {
9
+ const params = new DyNTS_ApiCall_Params({
10
+ name: 'testCall',
11
+ type: DyNTS_HttpCallType.get,
12
+ endPoint: '/test/endpoint',
13
+ baseUrl: 'https://example.com/api',
14
+ });
15
+
16
+ expect(params.name).toBe('testCall');
17
+ expect(params.type).toBe(DyNTS_HttpCallType.get);
18
+ expect(params.endPoint).toBe('/test/endpoint');
19
+ expect(params.baseUrl).toBe('https://example.com/api');
20
+ expect(params.getFullResponse).toBe(false);
21
+ expect(params.httpOptions).toEqual({});
22
+ });
23
+
24
+ it('should create an instance with provided values', () => {
25
+ const httpOptions = new DyNTS_HttpOptions({
26
+ responseType: DyNTS_HttpResponseType.json,
27
+ headers: { 'Content-Type': 'application/json' },
28
+ observe: 'body',
29
+ reportProgress: true,
30
+ withCredentials: true,
31
+ });
32
+
33
+ const params = new DyNTS_ApiCall_Params({
34
+ name: 'testCall',
35
+ type: DyNTS_HttpCallType.post,
36
+ endPoint: '/test/endpoint',
37
+ baseUrl: 'https://example.com/api',
38
+ getFullResponse: true,
39
+ httpOptions: httpOptions,
40
+ });
41
+
42
+ expect(params.name).toBe('testCall');
43
+ expect(params.type).toBe(DyNTS_HttpCallType.post);
44
+ expect(params.endPoint).toBe('/test/endpoint');
45
+ expect(params.baseUrl).toBe('https://example.com/api');
46
+ expect(params.getFullResponse).toBe(true);
47
+ expect(params.httpOptions).toEqual(httpOptions);
48
+ });
49
+
50
+ xit('should replace deprecated endpoint parameter braces', () => {
51
+ spyOn(DyFM_Log, 'warn');
52
+
53
+ const params = new DyNTS_ApiCall_Params({
54
+ name: 'testCall',
55
+ type: DyNTS_HttpCallType.get,
56
+ endPoint: '/test/{param}/endpoint',
57
+ baseUrl: 'https://example.com/api',
58
+ });
59
+
60
+ expect(DyFM_Log.warn).toHaveBeenCalledWith(
61
+ 'using {param} bracets in endpoint definitions will be deprecated... (/test/{param}/endpoint)' +
62
+ 'use :param instead ({pathparam} --> :pathparam)'
63
+ );
64
+ expect(params.endPoint).toBe('/test/:param/endpoint');
65
+ });
66
+ });
67
+
68
+ describe('DyNTS_HttpOptions', () => {
69
+ it('should create an instance with default values', () => {
70
+ const options = new DyNTS_HttpOptions({});
71
+
72
+ expect(options.responseType).toBeUndefined();
73
+ expect(options.headers).toBeUndefined();
74
+ expect(options.observe).toBeUndefined();
75
+ expect(options.reportProgress).toBeUndefined();
76
+ expect(options.withCredentials).toBeUndefined();
77
+ });
78
+
79
+ it('should create an instance with provided values', () => {
80
+ const options = new DyNTS_HttpOptions({
81
+ responseType: DyNTS_HttpResponseType.json,
82
+ headers: { 'Content-Type': 'application/json' },
83
+ observe: 'body',
84
+ reportProgress: true,
85
+ withCredentials: true,
86
+ });
87
+
88
+ expect(options.responseType).toBe(DyNTS_HttpResponseType.json);
89
+ expect(options.headers).toEqual({ 'Content-Type': 'application/json' });
90
+ expect(options.observe).toBe('body');
91
+ expect(options.reportProgress).toBe(true);
92
+ expect(options.withCredentials).toBe(true);
93
+ });
94
+ });
@@ -0,0 +1,69 @@
1
+
2
+ import { DyNTS_App_Params } from './app-params.control-model';
3
+
4
+ describe('DyNTS_App_Params', () => {
5
+ it('should initialize with provided values', () => {
6
+ const params: DyNTS_App_Params = {
7
+ name: 'TestApp',
8
+ title: 'Test Application',
9
+ version: '1.0.0',
10
+ dbName: 'testdb',
11
+ dbUri: 'mongodb://localhost:27017/testdb',
12
+ systemName: 'Test-App',
13
+ systemShortCodeName: 'TA'
14
+ };
15
+
16
+ const appParams = new DyNTS_App_Params(params);
17
+
18
+ expect(appParams.name).toBe('TestApp');
19
+ expect(appParams.title).toBe('Test Application');
20
+ expect(appParams.version).toBe('1.0.0');
21
+ expect(appParams.dbName).toBe('testdb');
22
+ expect(appParams.dbUri).toBe('mongodb://localhost:27017/testdb');
23
+ expect(appParams.systemName).toBe('Test-App');
24
+ expect(appParams.systemShortCodeName).toBe('TA');
25
+ });
26
+
27
+ it('should set default values when optional parameters are not provided', () => {
28
+ const params: DyNTS_App_Params = {
29
+ name: 'TestApp',
30
+ version: '1.0.0',
31
+ dbName: 'testdb'
32
+ };
33
+
34
+ const appParams = new DyNTS_App_Params(params);
35
+
36
+ expect(appParams.name).toBe('TestApp');
37
+ expect(appParams.title).toBe('');
38
+ expect(appParams.version).toBe('1.0.0');
39
+ expect(appParams.dbName).toBe('testdb');
40
+ expect(appParams.dbUri).toBe('mongodb://localhost:27017/testdb');
41
+ expect(appParams.systemName).toBe('TestApp');
42
+ expect(appParams.systemShortCodeName).toBe('TA');
43
+ });
44
+
45
+ it('should generate systemShortCodeName from systemName if not provided', () => {
46
+ const params: DyNTS_App_Params = {
47
+ name: 'Test Application',
48
+ version: '1.0.0',
49
+ dbName: 'testdb',
50
+ systemName: 'Test-App'
51
+ };
52
+
53
+ const appParams = new DyNTS_App_Params(params);
54
+
55
+ expect(appParams.systemShortCodeName).toBe('TA');
56
+ });
57
+
58
+ it('should generate systemName from name if not provided', () => {
59
+ const params: DyNTS_App_Params = {
60
+ name: 'Test Application',
61
+ version: '1.0.0',
62
+ dbName: 'testdb'
63
+ };
64
+
65
+ const appParams = new DyNTS_App_Params(params);
66
+
67
+ expect(appParams.systemName).toBe('Test-Application');
68
+ });
69
+ });
@@ -0,0 +1,31 @@
1
+
2
+ import { DyNTS_AppSystemControls } from './app-system-controls.control-model';
3
+ import { DyNTS_SystemControl } from './system-control.control-model';
4
+
5
+ describe('DyNTS_AppSystemControls', () => {
6
+ let appSystemControls: DyNTS_AppSystemControls;
7
+
8
+ beforeEach(() => {
9
+ appSystemControls = new DyNTS_AppSystemControls();
10
+ });
11
+
12
+ it('should create an instance of DyNTS_AppSystemControls', () => {
13
+ expect(appSystemControls).toBeTruthy();
14
+ });
15
+
16
+ it('should initialize "app" as an instance of DyNTS_SystemControl', () => {
17
+ expect(appSystemControls.app).toBeInstanceOf(DyNTS_SystemControl);
18
+ });
19
+
20
+ it('should initialize "mongoose" as an instance of DyNTS_SystemControl', () => {
21
+ expect(appSystemControls.mongoose).toBeInstanceOf(DyNTS_SystemControl);
22
+ });
23
+
24
+ it('should initialize "httpServer" as an instance of DyNTS_SystemControl', () => {
25
+ expect(appSystemControls.httpServer).toBeInstanceOf(DyNTS_SystemControl);
26
+ });
27
+
28
+ it('should initialize "httpsServer" as an instance of DyNTS_SystemControl', () => {
29
+ expect(appSystemControls.httpsServer).toBeInstanceOf(DyNTS_SystemControl);
30
+ });
31
+ });
@@ -2,10 +2,11 @@
2
2
 
3
3
  import { Request, Response } from 'express';
4
4
 
5
- import { DyFM_Array, DyFM_Error, DyFM_errorFlag, DyFM_Log, DyFM_Shared } from '@futdevpro/fsm-dynamo';
6
- import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
7
- import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
5
+ import { DyFM_Array, DyFM_Error, DyFM_Log, DyFM_Shared } from '@futdevpro/fsm-dynamo';
6
+
8
7
  import { DyNTS_global_settings } from '../../_collections/global-settings.const';
8
+ import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
9
+ import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
9
10
  import { DyNTS_GlobalService } from '../../_services/core/global.service';
10
11
 
11
12
  /**
@@ -114,7 +115,7 @@ export class DyNTS_Endpoint_Params {
114
115
  status: 406,
115
116
  errorCode: 'NTS-EP0-C00',
116
117
  addECToUserMsg: true,
117
- message: 'trying to create DyNTS_EndpointParams without endpoint value',
118
+ message: 'trying to create DyNTS_Endpoint_Params without endpoint value',
118
119
  userMessage:
119
120
  'We encountered an unhandled Server Error, ' +
120
121
  'please contact the responsible development team.',
@@ -361,7 +362,7 @@ export class DyNTS_Endpoint_Params {
361
362
  ): void {
362
363
  if (DyNTS_global_settings.log_settings.highDetailedLogs) {
363
364
  DyFM_Log.H_error(
364
- `\n\nDYNAMO MULTILEVEL ERROR:DyNTS_EndpointParams: error: ` +
365
+ `\n\nDYNAMO MULTILEVEL ERROR:DyNTS_Endpoint_Params: error: ` +
365
366
  `(${this.name}, ${this.endpoint})` +
366
367
  `\n(DYNAMO MULTILEVEL ERROR means, that the ERROR HANDLING is ALSO FAILED, ` +
367
368
  `and the error message was not sent.)` +
@@ -370,7 +371,7 @@ export class DyNTS_Endpoint_Params {
370
371
  );
371
372
  } else {
372
373
  DyFM_Log.H_error(
373
- `\n\nDYNAMO MULTILEVEL ERROR:DyNTS_EndpointParams: error: ` +
374
+ `\n\nDYNAMO MULTILEVEL ERROR:DyNTS_Endpoint_Params: error: ` +
374
375
  `(${this.name}, ${this.endpoint})` +
375
376
  `\n(DYNAMO MULTILEVEL ERROR means, that the ERROR HANDLING is ALSO FAILED, ` +
376
377
  `and the error message was not sent.)`
@@ -0,0 +1,66 @@
1
+
2
+ import { DyNTS_Http_Settings } from './http-settings.control-model';
3
+ import * as BodyParser from 'body-parser';
4
+
5
+ describe('DyNTS_Http_Settings', () => {
6
+ it('should create an instance with default settings', () => {
7
+ const settings = new DyNTS_Http_Settings();
8
+
9
+ expect(settings.httpPort).toBeUndefined();
10
+ expect(settings.httpsPort).toBeUndefined();
11
+ expect(settings.httpUrlencoded).toEqual({
12
+ limit: '50mb',
13
+ extended: true,
14
+ } as BodyParser.OptionsUrlencoded);
15
+ expect(settings.httpJson).toEqual({
16
+ limit: '50mb',
17
+ } as BodyParser.OptionsJson);
18
+ expect(settings.httpsUrlencoded).toEqual({
19
+ limit: '50mb',
20
+ extended: true,
21
+ } as BodyParser.OptionsUrlencoded);
22
+ expect(settings.httpsJson).toEqual({
23
+ limit: '50mb',
24
+ } as BodyParser.OptionsJson);
25
+ });
26
+
27
+ it('should create an instance with provided settings', () => {
28
+ const customSettings: DyNTS_Http_Settings = {
29
+ httpPort: 8080,
30
+ httpsPort: 8443,
31
+ httpUrlencoded: {
32
+ limit: '100mb',
33
+ extended: false,
34
+ },
35
+ httpJson: {
36
+ limit: '100mb',
37
+ },
38
+ httpsUrlencoded: {
39
+ limit: '100mb',
40
+ extended: false,
41
+ },
42
+ httpsJson: {
43
+ limit: '100mb',
44
+ },
45
+ };
46
+
47
+ const settings = new DyNTS_Http_Settings(customSettings);
48
+
49
+ expect(settings.httpPort).toBe(8080);
50
+ expect(settings.httpsPort).toBe(8443);
51
+ expect(settings.httpUrlencoded).toEqual({
52
+ limit: '100mb',
53
+ extended: false,
54
+ } as BodyParser.OptionsUrlencoded);
55
+ expect(settings.httpJson).toEqual({
56
+ limit: '100mb',
57
+ } as BodyParser.OptionsJson);
58
+ expect(settings.httpsUrlencoded).toEqual({
59
+ limit: '100mb',
60
+ extended: false,
61
+ } as BodyParser.OptionsUrlencoded);
62
+ expect(settings.httpsJson).toEqual({
63
+ limit: '100mb',
64
+ } as BodyParser.OptionsJson);
65
+ });
66
+ });
@@ -0,0 +1,27 @@
1
+
2
+ import { DyNTS_SystemControl } from './system-control.control-model';
3
+
4
+ describe('DyNTS_SystemControl', () => {
5
+ let systemControl: DyNTS_SystemControl;
6
+
7
+ beforeEach(() => {
8
+ systemControl = new DyNTS_SystemControl();
9
+ });
10
+
11
+ it('should return true when init is false', () => {
12
+ systemControl.init = false;
13
+ expect(systemControl.getIsReady()).toBeTrue();
14
+ });
15
+
16
+ it('should return true when init is true and started is true', () => {
17
+ systemControl.init = true;
18
+ systemControl.started = true;
19
+ expect(systemControl.getIsReady()).toBeTrue();
20
+ });
21
+
22
+ it('should return false when init is true and started is false', () => {
23
+ systemControl.init = true;
24
+ systemControl.started = false;
25
+ expect(systemControl.getIsReady()).toBeFalse();
26
+ });
27
+ });
@@ -6,9 +6,9 @@ import { Request, Response } from 'express';
6
6
 
7
7
  import { DyFM_DataModel_Params } from '@futdevpro/fsm-dynamo';
8
8
 
9
- import { DyNTS_Service_Collection } from '../../_services/core/service-collection.service';
10
- import { DyNTS_EmailService } from '../../_services/core/email.service';
11
9
  import { DyNTS_AuthService } from '../../_services/core/auth.service';
10
+ import { DyNTS_EmailService } from '../../_services/core/email.service';
11
+ import { DyNTS_Service_Collection } from '../../_services/core/service-collection.service';
12
12
 
13
13
 
14
14
  export interface DyNTS_GlobalService_Settings {
@@ -25,7 +25,7 @@ export interface DyNTS_GlobalService_Settings {
25
25
  /**
26
26
  * you can setup data tables by passing a DyFM_DataModel_Params list at this point
27
27
  */
28
- dbModels?: DyFM_DataModel_Params[],
28
+ dbModels?: DyFM_DataModel_Params<any>[],
29
29
 
30
30
  /**
31
31
  * you can setup other services by passing a DyNTS_SingletonService list at this point
@@ -4,11 +4,11 @@ import { Request, Response } from 'express';
4
4
  import { DyFM_customDataModule_settings } from '@futdevpro/fsm-dynamo/custom-data';
5
5
 
6
6
  import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
7
- import { DyNTS_Controller } from '../../_services/route/controller.service';
8
- import { DyFM_CustomData_DataService } from './custom-data.data-service';
9
- import {
10
- DyNTS_Endpoint_Params
7
+ import {
8
+ DyNTS_Endpoint_Params
11
9
  } from '../../_models/control-models/endpoint-params.control-model';
10
+ import { DyNTS_Controller } from '../../_services/route/controller.service';
11
+ import { DyNTS_CustomData_DataService } from './custom-data.data-service';
12
12
 
13
13
  export class DyNTS_CustomData_Controller extends DyNTS_Controller {
14
14
 
@@ -25,7 +25,7 @@ export class DyNTS_CustomData_Controller extends DyNTS_Controller {
25
25
  endpoint: DyFM_customDataModule_settings.endPoints.getCustomData,
26
26
  tasks: [
27
27
  async (req: Request, res: Response): Promise<void> => {
28
- const customDataService = new DyFM_CustomData_DataService({
28
+ const customDataService = new DyNTS_CustomData_DataService({
29
29
  _id: req.params.customId,
30
30
  });
31
31
 
@@ -47,7 +47,7 @@ export class DyNTS_CustomData_Controller extends DyNTS_Controller {
47
47
  endpoint: DyFM_customDataModule_settings.endPoints.modifyCustomData,
48
48
  tasks: [
49
49
  async (req: Request, res: Response, issuer: string): Promise<void> => {
50
- const customDataService = new DyFM_CustomData_DataService(req.body, issuer);
50
+ const customDataService = new DyNTS_CustomData_DataService(req.body, issuer);
51
51
 
52
52
  await customDataService.saveData();
53
53
 
@@ -1,12 +1,13 @@
1
1
 
2
2
 
3
3
 
4
- import {
5
- DyFM_customData_dataParams, DyFM_CustomData
4
+ import {
5
+ DyFM_CustomData,
6
+ DyFM_customData_dataParams
6
7
  } from '@futdevpro/fsm-dynamo/custom-data';
7
8
  import { DyNTS_DataService } from '../../_services/base/data.service';
8
9
 
9
- export class DyFM_CustomData_DataService extends DyNTS_DataService<DyFM_CustomData> {
10
+ export class DyNTS_CustomData_DataService extends DyNTS_DataService<DyFM_CustomData> {
10
11
 
11
12
  constructor(
12
13
  customData?: DyFM_CustomData,
@@ -0,0 +1,21 @@
1
+
2
+ import { DyNTS_App_Params } from '../../_models/control-models/app-params.control-model';
3
+ import { DyNTS_appParams_mock } from './app-params.mock';
4
+
5
+ describe('DyNTS_appParams_mock', () => {
6
+ it('should create an instance of DyNTS_App_Params', () => {
7
+ expect(DyNTS_appParams_mock).toBeInstanceOf(DyNTS_App_Params);
8
+ });
9
+
10
+ it('should have the correct name', () => {
11
+ expect(DyNTS_appParams_mock.name).toBe('test');
12
+ });
13
+
14
+ it('should have the correct version', () => {
15
+ expect(DyNTS_appParams_mock.version).toBe('0.0.1');
16
+ });
17
+
18
+ it('should have the correct dbName', () => {
19
+ expect(DyNTS_appParams_mock.dbName).toBe('test');
20
+ });
21
+ });
@@ -0,0 +1,47 @@
1
+
2
+ import { Request, Response } from 'express';
3
+ import { AuthService_Mock } from './auth-service.mock';
4
+
5
+ describe('AuthService_Mock', () => {
6
+ let authServiceMock: AuthService_Mock;
7
+
8
+ beforeEach(() => {
9
+ authServiceMock = AuthService_Mock.getInstance();
10
+ });
11
+
12
+ it('should return a singleton instance', () => {
13
+ const instance1 = AuthService_Mock.getInstance();
14
+ const instance2 = AuthService_Mock.getInstance();
15
+ expect(instance1).toBe(instance2);
16
+ });
17
+
18
+ it('should return "accountId_mock" from getIssuerFromRequest', () => {
19
+ const req = {} as Request;
20
+ const issuer = authServiceMock.getIssuerFromRequest(req);
21
+ expect(issuer).toBe('accountId_mock');
22
+ });
23
+
24
+ it('should return "username_mock" from getUsernameFromRequest', () => {
25
+ const req = {} as Request;
26
+ const username = authServiceMock.getUsernameFromRequest(req);
27
+ expect(username).toBe('username_mock');
28
+ });
29
+
30
+ it('should have an authenticate_token method', async () => {
31
+ const req = {} as Request;
32
+ const res = {} as Response;
33
+ await expectAsync(authServiceMock.authenticate_token(req, res)).toBeResolved();
34
+ });
35
+
36
+ it('should have an authenticate_tokenSelf method', async () => {
37
+ const req = {} as Request;
38
+ const res = {} as Response;
39
+ await expectAsync(authServiceMock.authenticate_tokenSelf(req, res)).toBeResolved();
40
+ });
41
+
42
+ it('should have an authenticate_tokenPerm_accUsageData method', async () => {
43
+ const req = {} as Request;
44
+ const res = {} as Response;
45
+ await expectAsync(authServiceMock.authenticate_tokenPerm_accUsageData(req, res)).toBeResolved();
46
+ });
47
+ });
@@ -0,0 +1,26 @@
1
+
2
+ import { DyNTS_Controller_Mock } from './controller.mock';
3
+ import { DyNTS_endpoints_mock } from './endpoint.mock';
4
+
5
+ describe('DyNTS_Controller_Mock', () => {
6
+ let controllerMock: DyNTS_Controller_Mock;
7
+
8
+ beforeEach(() => {
9
+ controllerMock = DyNTS_Controller_Mock.getInstance();
10
+ });
11
+
12
+ it('should create an instance of DyNTS_Controller_Mock', () => {
13
+ expect(controllerMock).toBeTruthy();
14
+ expect(controllerMock instanceof DyNTS_Controller_Mock).toBeTrue();
15
+ });
16
+
17
+ it('should setup endpoints correctly', () => {
18
+ controllerMock.setupEndpoints();
19
+ expect(controllerMock.endpoints).toEqual(DyNTS_endpoints_mock);
20
+ });
21
+
22
+ it('should return the same instance on multiple getInstance calls', () => {
23
+ const anotherInstance = DyNTS_Controller_Mock.getInstance();
24
+ expect(controllerMock).toBe(anotherInstance);
25
+ });
26
+ });