@futdevpro/nts-dynamo 1.9.50 → 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.
- package/.github/workflows/main.yml +57 -3
- package/build/_collections/archive.util.spec.d.ts +2 -0
- package/build/_collections/archive.util.spec.d.ts.map +1 -0
- package/build/_collections/archive.util.spec.js +21 -0
- package/build/_collections/archive.util.spec.js.map +1 -0
- package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
- package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
- package/build/_models/control-models/api-call-params.control-model.spec.js +82 -0
- package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
- package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
- package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
- package/build/_models/control-models/app-params.control-model.spec.js +59 -0
- package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
- package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
- package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
- package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
- package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
- package/build/_models/control-models/endpoint-params.control-model.d.ts +1 -1
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +3 -3
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
- package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
- package/build/_models/control-models/http-settings.control-model.spec.js +62 -0
- package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
- package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
- package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
- package/build/_models/control-models/system-control.control-model.spec.js +24 -0
- package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
- package/build/_modules/custom-data/custom-data.controller.d.ts.map +1 -1
- package/build/_modules/custom-data/custom-data.controller.js +3 -3
- package/build/_modules/custom-data/custom-data.controller.js.map +1 -1
- package/build/_modules/custom-data/custom-data.data-service.d.ts +1 -1
- package/build/_modules/custom-data/custom-data.data-service.d.ts.map +1 -1
- package/build/_modules/custom-data/custom-data.data-service.js +3 -3
- package/build/_modules/custom-data/custom-data.data-service.js.map +1 -1
- package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
- package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/app-params.mock.spec.js +19 -0
- package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
- package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
- package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/auth-service.mock.spec.js +40 -0
- package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
- package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
- package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/controller.mock.spec.js +23 -0
- package/build/_modules/mock/controller.mock.spec.js.map +1 -0
- package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
- package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/data-model.mock.spec.js +99 -0
- package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
- package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
- package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
- package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
- package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
- package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/email-service.mock.spec.js +14 -0
- package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
- package/build/_modules/mock/socket-client.mock.js +2 -2
- package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
- package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/socket-client.mock.spec.js +32 -0
- package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
- package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
- package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
- package/build/_modules/mock/socket-server.mock.spec.js +36 -0
- package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +22 -0
- package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
- package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
- package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
- package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +29 -0
- package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
- package/build/_modules/socket/_services/socket-server.service.js +1 -1
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_modules/usage/usage.controller.d.ts.map +1 -1
- package/build/_modules/usage/usage.controller.js +6 -4
- package/build/_modules/usage/usage.controller.js.map +1 -1
- package/build/_modules/usage/usage.data-service.d.ts +4 -4
- package/build/_modules/usage/usage.data-service.d.ts.map +1 -1
- package/build/_modules/usage/usage.data-service.js +2 -2
- package/build/_modules/usage/usage.data-service.js.map +1 -1
- package/build/_services/base/data.service.d.ts +5 -5
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +18 -6
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +8 -1
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/base/singleton.service-base.d.ts.map +1 -1
- package/build/_services/base/singleton.service-base.js.map +1 -1
- package/build/_services/core/api.service.d.ts +1 -1
- package/build/_services/core/api.service.js +2 -2
- package/build/_services/core/api.service.spec.d.ts +2 -0
- package/build/_services/core/api.service.spec.d.ts.map +1 -0
- package/build/_services/core/api.service.spec.js +75 -0
- package/build/_services/core/api.service.spec.js.map +1 -0
- package/build/_services/core/email.service.d.ts +6 -6
- package/build/_services/core/email.service.d.ts.map +1 -1
- package/build/_services/core/email.service.js.map +1 -1
- package/build/_services/core/email.service.spec.d.ts +2 -0
- package/build/_services/core/email.service.spec.d.ts.map +1 -0
- package/build/_services/core/email.service.spec.js +77 -0
- package/build/_services/core/email.service.spec.js.map +1 -0
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +2 -1
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/route/controller.service.d.ts +3 -3
- package/build/_services/route/controller.service.js +2 -2
- package/build/_services/route/controller.service.spec.d.ts +2 -0
- package/build/_services/route/controller.service.spec.d.ts.map +1 -0
- package/build/_services/route/controller.service.spec.js +48 -0
- package/build/_services/route/controller.service.spec.js.map +1 -0
- package/build/_services/route/routing-module.service.spec.d.ts +2 -0
- package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
- package/build/_services/route/routing-module.service.spec.js +65 -0
- package/build/_services/route/routing-module.service.spec.js.map +1 -0
- package/build/_services/server/app.server.d.ts +5 -5
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +9 -7
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +8 -8
- package/spec/support/jasmine.json +8 -0
- package/src/_collections/archive.util.spec.ts +22 -0
- package/src/_models/control-models/api-call-params.control-model.spec.ts +94 -0
- package/src/_models/control-models/app-params.control-model.spec.ts +69 -0
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -0
- package/src/_models/control-models/endpoint-params.control-model.ts +7 -6
- package/src/_models/control-models/http-settings.control-model.spec.ts +66 -0
- package/src/_models/control-models/system-control.control-model.spec.ts +27 -0
- package/src/_modules/custom-data/custom-data.controller.ts +6 -6
- package/src/_modules/custom-data/custom-data.data-service.ts +4 -3
- package/src/_modules/mock/app-params.mock.spec.ts +21 -0
- package/src/_modules/mock/auth-service.mock.spec.ts +47 -0
- package/src/_modules/mock/controller.mock.spec.ts +26 -0
- package/src/_modules/mock/data-model.mock.spec.ts +109 -0
- package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -0
- package/src/_modules/mock/email-service.mock.spec.ts +17 -0
- package/src/_modules/mock/socket-client.mock.spec.ts +40 -0
- package/src/_modules/mock/socket-client.mock.ts +4 -4
- package/src/_modules/mock/socket-server.mock.spec.ts +44 -0
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +30 -0
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +33 -0
- package/src/_modules/socket/_services/socket-server.service.ts +1 -1
- package/src/_modules/test/get-test-routing-module.util.ts +2 -2
- package/src/_modules/usage/usage.controller.ts +10 -8
- package/src/_modules/usage/usage.data-service.ts +10 -7
- package/src/_services/base/data.service.ts +34 -15
- package/src/_services/base/db.service.ts +10 -1
- package/src/_services/base/singleton.service-base.ts +0 -2
- package/src/_services/core/api.service.spec.ts +96 -0
- package/src/_services/core/api.service.ts +2 -2
- package/src/_services/core/email.service.spec.ts +93 -0
- package/src/_services/core/email.service.ts +9 -11
- package/src/_services/core/global.service.ts +3 -2
- package/src/_services/route/controller.service.spec.ts +52 -0
- package/src/_services/route/controller.service.ts +3 -3
- package/src/_services/route/routing-module.service.spec.ts +81 -0
- package/src/_services/server/app.server.ts +26 -24
|
@@ -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
|
+
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
Dependency_Mock, dependency_mock_DataParams, Dependent_Mock, dependent_mock_DataParams
|
|
4
|
+
} from './data-model.mock';
|
|
5
|
+
|
|
6
|
+
describe('Dependency_Mock', () => {
|
|
7
|
+
it('should create an instance with default values', () => {
|
|
8
|
+
const instance = new Dependency_Mock();
|
|
9
|
+
|
|
10
|
+
expect(instance).toBeTruthy();
|
|
11
|
+
expect(instance.string).toBeUndefined();
|
|
12
|
+
expect(instance.number).toBeUndefined();
|
|
13
|
+
expect(instance.date).toBeUndefined();
|
|
14
|
+
expect(instance.boolean).toBeUndefined();
|
|
15
|
+
expect(instance.array).toBeUndefined();
|
|
16
|
+
expect(instance.object).toBeUndefined();
|
|
17
|
+
expect(instance.objectArray).toBeUndefined();
|
|
18
|
+
expect(instance.objectArrayArray).toBeUndefined();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should create an instance with provided values', () => {
|
|
22
|
+
const mockData: Dependency_Mock = {
|
|
23
|
+
string: 'test',
|
|
24
|
+
number: 42,
|
|
25
|
+
date: new Date(),
|
|
26
|
+
boolean: true,
|
|
27
|
+
array: [ 'a', 'b' ],
|
|
28
|
+
object: { key: 'value' },
|
|
29
|
+
objectArray: [{ key: 'value' }],
|
|
30
|
+
objectArrayArray: [[{ key: 'value' }]],
|
|
31
|
+
};
|
|
32
|
+
const instance = new Dependency_Mock(mockData);
|
|
33
|
+
|
|
34
|
+
expect(instance).toEqual(jasmine.objectContaining(mockData));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
xdescribe('DyFM_DataModel_Params for Dependency_Mock', () => {
|
|
39
|
+
it('should have correct dataName and properties', () => {
|
|
40
|
+
expect(dependency_mock_DataParams.dataName).toBe('dependencyMock');
|
|
41
|
+
expect(dependency_mock_DataParams.properties).toEqual({
|
|
42
|
+
string: { type: 'string' },
|
|
43
|
+
number: { type: 'number' },
|
|
44
|
+
date: { type: 'Date' },
|
|
45
|
+
boolean: { type: 'boolean' },
|
|
46
|
+
array: { type: 'string[]' },
|
|
47
|
+
object: { type: 'any' },
|
|
48
|
+
objectArray: { type: 'any[]' },
|
|
49
|
+
objectArrayArray: { type: 'any[][]' },
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
describe('Dependent_Mock', () => {
|
|
55
|
+
it('should create an instance with default values', () => {
|
|
56
|
+
const instance = new Dependent_Mock();
|
|
57
|
+
|
|
58
|
+
expect(instance).toBeTruthy();
|
|
59
|
+
expect(instance.dependencyId).toBeUndefined();
|
|
60
|
+
expect(instance.string).toBeUndefined();
|
|
61
|
+
expect(instance.number).toBeUndefined();
|
|
62
|
+
expect(instance.date).toBeUndefined();
|
|
63
|
+
expect(instance.boolean).toBeUndefined();
|
|
64
|
+
expect(instance.array).toBeUndefined();
|
|
65
|
+
expect(instance.object).toBeUndefined();
|
|
66
|
+
expect(instance.objectArray).toBeUndefined();
|
|
67
|
+
expect(instance.objectArrayArray).toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('should create an instance with provided values', () => {
|
|
71
|
+
const mockData: Dependent_Mock = {
|
|
72
|
+
dependencyId: 'dep123',
|
|
73
|
+
string: 'test',
|
|
74
|
+
number: 42,
|
|
75
|
+
date: new Date(),
|
|
76
|
+
boolean: true,
|
|
77
|
+
array: [ 'a', 'b' ],
|
|
78
|
+
object: { key: 'value' },
|
|
79
|
+
objectArray: [{ key: 'value' }],
|
|
80
|
+
objectArrayArray: [[{ key: 'value' }]],
|
|
81
|
+
};
|
|
82
|
+
const instance = new Dependent_Mock(mockData);
|
|
83
|
+
|
|
84
|
+
expect(instance).toEqual(jasmine.objectContaining(mockData));
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
xdescribe('DyFM_DataModel_Params for Dependent_Mock', () => {
|
|
89
|
+
it('should have correct dataName and properties', () => {
|
|
90
|
+
expect(dependent_mock_DataParams.dataName).toBe('dependentMock');
|
|
91
|
+
expect(dependent_mock_DataParams.properties).toEqual({
|
|
92
|
+
dependencyId: {
|
|
93
|
+
type: 'string',
|
|
94
|
+
unique: true,
|
|
95
|
+
required: true,
|
|
96
|
+
isDependencyHook: true,
|
|
97
|
+
dependencyDataName: dependency_mock_DataParams.dataName,
|
|
98
|
+
},
|
|
99
|
+
string: { type: 'string' },
|
|
100
|
+
number: { type: 'number' },
|
|
101
|
+
date: { type: 'Date' },
|
|
102
|
+
boolean: { type: 'boolean' },
|
|
103
|
+
array: { type: 'string[]' },
|
|
104
|
+
object: { type: 'any' },
|
|
105
|
+
objectArray: { type: 'any[]' },
|
|
106
|
+
objectArrayArray: { type: 'any[][]' },
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
import { EmailServiceCollection_Mock } from './email-service-collection.mock';
|
|
3
|
+
import { EmailService_Mock } from './email-service.mock';
|
|
4
|
+
|
|
5
|
+
describe('EmailServiceCollection_Mock', () => {
|
|
6
|
+
let emailServiceCollectionMock: EmailServiceCollection_Mock;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
emailServiceCollectionMock = EmailServiceCollection_Mock.getInstance();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('should create an instance of EmailServiceCollection_Mock', () => {
|
|
13
|
+
expect(emailServiceCollectionMock).toBeTruthy();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should return a singleton instance', () => {
|
|
17
|
+
const anotherInstance = EmailServiceCollection_Mock.getInstance();
|
|
18
|
+
expect(emailServiceCollectionMock).toBe(anotherInstance);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should have a test property of type EmailService_Mock', () => {
|
|
22
|
+
expect(emailServiceCollectionMock.test).toBeInstanceOf(EmailService_Mock);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
DyNTS_EmailService
|
|
4
|
+
} from '../../_services/core/email.service';
|
|
5
|
+
import { EmailService_Mock } from './email-service.mock';
|
|
6
|
+
|
|
7
|
+
describe('EmailService_Mock', () => {
|
|
8
|
+
let emailServiceMock: EmailService_Mock;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
emailServiceMock = new EmailService_Mock();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('should be an instance of DyNTS_EmailService', () => {
|
|
15
|
+
expect(emailServiceMock instanceof DyNTS_EmailService).toBeTrue();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
import { DyFM_SocketEvent, DyFM_SocketEvent_Key } from '@futdevpro/fsm-dynamo/socket';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
DyNTS_SocketClientService_Params
|
|
6
|
+
} from '../socket/_models/socket-client-service-params.control-model';
|
|
7
|
+
import { SocketClient_Mock } from './socket-client.mock';
|
|
8
|
+
|
|
9
|
+
describe('SocketClient_Mock', () => {
|
|
10
|
+
let socketClientMock: SocketClient_Mock;
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
socketClientMock = SocketClient_Mock.getInstance();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should create an instance of SocketClient_Mock', () => {
|
|
17
|
+
expect(socketClientMock).toBeTruthy();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should return the correct incoming events', () => {
|
|
21
|
+
const events = socketClientMock.getIncomingEvents();
|
|
22
|
+
|
|
23
|
+
expect(events.length).toBe(1);
|
|
24
|
+
expect(events[0]).toEqual(jasmine.any(DyFM_SocketEvent));
|
|
25
|
+
expect(events[0].name).toBe('connect');
|
|
26
|
+
expect(events[0].eventKey).toBe(DyFM_SocketEvent_Key.connect);
|
|
27
|
+
expect(events[0].tasks.length).toBe(1);
|
|
28
|
+
expect(events[0].tasks[0]).toEqual(jasmine.any(Function));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should return the correct parameters', () => {
|
|
32
|
+
const params = socketClientMock.getParams();
|
|
33
|
+
|
|
34
|
+
expect(params).toEqual(jasmine.any(DyNTS_SocketClientService_Params));
|
|
35
|
+
expect(params.service).toBe('-test-socket-target-');
|
|
36
|
+
expect(params.name).toBe('socket-client-mock');
|
|
37
|
+
expect(params.port).toBe(30303);
|
|
38
|
+
expect(params.socketOptions.reconnection).toBeTrue();
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
import { DyFM_SocketEvent, DyFM_SocketEvent_Key } from '@futdevpro/fsm-dynamo/socket';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
DyNTS_SocketClientService_Params
|
|
4
|
+
import {
|
|
5
|
+
DyNTS_SocketClientService_Params
|
|
6
6
|
} from '../socket/_models/socket-client-service-params.control-model';
|
|
7
7
|
import { DyNTS_SocketClient_ServiceBase } from '../socket/_services/socket-client.service';
|
|
8
8
|
|
|
@@ -24,8 +24,8 @@ export class SocketClient_Mock extends DyNTS_SocketClient_ServiceBase {
|
|
|
24
24
|
tasks: [
|
|
25
25
|
async (content: any, issuer: string) => {
|
|
26
26
|
console.log('SocketClient_Mock: connect event received');
|
|
27
|
-
}
|
|
28
|
-
]
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
29
|
}),
|
|
30
30
|
];
|
|
31
31
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
DyNTS_SocketServerService_Params
|
|
4
|
+
} from '../socket/_models/socket-server-service-params.control-model';
|
|
5
|
+
import { DyNTS_SocketServer_Mock } from './socket-server.mock';
|
|
6
|
+
|
|
7
|
+
describe('DyNTS_SocketServer_Mock', () => {
|
|
8
|
+
let socketServerMock: DyNTS_SocketServer_Mock;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
socketServerMock = DyNTS_SocketServer_Mock.getInstance();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('should return an instance of DyNTS_SocketServer_Mock', () => {
|
|
15
|
+
expect(socketServerMock).toBeInstanceOf(DyNTS_SocketServer_Mock);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should return correct service parameters', () => {
|
|
19
|
+
const params = socketServerMock.getServiceParams();
|
|
20
|
+
|
|
21
|
+
expect(params).toBeInstanceOf(DyNTS_SocketServerService_Params);
|
|
22
|
+
expect(params.name).toBe('test');
|
|
23
|
+
expect(params.port).toBe(9393);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should return an empty array for incoming events', () => {
|
|
27
|
+
const events = socketServerMock.getIncomingEvents();
|
|
28
|
+
|
|
29
|
+
expect(events).toEqual([]);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
/* it('should return correct presence from subscription event content', async () => {
|
|
33
|
+
const mockSocketSubscription = { issuerId: 'testIssuerId' };
|
|
34
|
+
const mockSocket = {} as Socket;
|
|
35
|
+
|
|
36
|
+
const presence = await socketServerMock.getPresenceFromSubscriptionEventContent(
|
|
37
|
+
mockSocketSubscription, mockSocket);
|
|
38
|
+
|
|
39
|
+
expect(presence).toBeInstanceOf(DyNTS_SocketPresence);
|
|
40
|
+
expect(presence.issuerLocalId).toBe('testIssuerId');
|
|
41
|
+
expect(presence.sockets).toEqual([ mockSocket ]);
|
|
42
|
+
expect(presence.issuer).toBe('ISSUER socketServer_Mock');
|
|
43
|
+
}); */
|
|
44
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
import { DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
3
|
+
import { DyNTS_SocketClientService_Params } from './socket-client-service-params.control-model';
|
|
4
|
+
|
|
5
|
+
describe('DyNTS_SocketClientService_Params', () => {
|
|
6
|
+
it('should create an instance with default address', () => {
|
|
7
|
+
const params = new DyNTS_SocketClientService_Params({});
|
|
8
|
+
|
|
9
|
+
expect(params).toBeTruthy();
|
|
10
|
+
expect(params.address).toBe('ws://localhost');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('should log information on creation', () => {
|
|
14
|
+
spyOn(DyFM_Log, 'H_info');
|
|
15
|
+
|
|
16
|
+
const params = new DyNTS_SocketClientService_Params({});
|
|
17
|
+
|
|
18
|
+
expect(DyFM_Log.H_info).toHaveBeenCalledWith(
|
|
19
|
+
'DyNTS_SocketClientService_Params (test this with custom address!)',
|
|
20
|
+
'ws://localhost'
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
xit('should allow overriding the address', () => {
|
|
25
|
+
const customAddress = 'ws://custom-address';
|
|
26
|
+
const params = new DyNTS_SocketClientService_Params({ address: customAddress });
|
|
27
|
+
|
|
28
|
+
expect(params.address).toBe(customAddress);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
|
|
3
|
+
import { DyNTS_SocketSecurity } from '../_enums/socket-security.enum';
|
|
4
|
+
import { DyNTS_SocketServerService_Params } from './socket-server-service-params.control-model';
|
|
5
|
+
|
|
6
|
+
describe('DyNTS_SocketServerService_Params', () => {
|
|
7
|
+
it('should create an instance with provided values', () => {
|
|
8
|
+
const params = {
|
|
9
|
+
name: 'TestSocket',
|
|
10
|
+
port: 8080,
|
|
11
|
+
security: DyNTS_SocketSecurity.secure,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const instance = new DyNTS_SocketServerService_Params(params);
|
|
15
|
+
|
|
16
|
+
expect(instance.name).toBe('TestSocket');
|
|
17
|
+
expect(instance.port).toBe(8080);
|
|
18
|
+
expect(instance.security).toBe(DyNTS_SocketSecurity.secure);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should use default security if not provided', () => {
|
|
22
|
+
const params = {
|
|
23
|
+
name: 'TestSocket',
|
|
24
|
+
port: 8080,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const instance = new DyNTS_SocketServerService_Params(params);
|
|
28
|
+
|
|
29
|
+
expect(instance.name).toBe('TestSocket');
|
|
30
|
+
expect(instance.port).toBe(8080);
|
|
31
|
+
expect(instance.security).toBe(DyNTS_global_settings.defaultSocketSecurity);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -222,7 +222,7 @@ export abstract class DyNTS_SocketServerService<
|
|
|
222
222
|
}));
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
this.subscriptionEvent.
|
|
225
|
+
this.subscriptionEvent.name = this.params.name;
|
|
226
226
|
} else {
|
|
227
227
|
DyFM_Log.error(
|
|
228
228
|
'getPresenceFromSubscriptionEventContent is not set',
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
import { DyFM_testModule_settings } from '@futdevpro/fsm-dynamo/test';
|
|
3
3
|
import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
|
|
4
|
-
import {
|
|
5
|
-
DyNTS_RoutingModule_Settings
|
|
4
|
+
import {
|
|
5
|
+
DyNTS_RoutingModule_Settings
|
|
6
6
|
} from '../../_models/interfaces/routing-module-settings.interface';
|
|
7
7
|
import { DyNTS_RoutingModule } from '../../_services/route/routing-module.service';
|
|
8
8
|
import { DyNTS_Test_Controller } from './test.controller';
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
import { Request, Response } from 'express';
|
|
3
3
|
|
|
4
4
|
import { DyFM_RelativeDate } from '@futdevpro/fsm-dynamo';
|
|
5
|
-
import {
|
|
6
|
-
DyFM_usageModule_settings, DyFM_UsageSession
|
|
5
|
+
import {
|
|
6
|
+
DyFM_usageModule_settings, DyFM_UsageSession
|
|
7
7
|
} from '@futdevpro/fsm-dynamo/usage';
|
|
8
8
|
|
|
9
9
|
import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
|
|
10
|
+
import {
|
|
11
|
+
DyNTS_Endpoint_Params
|
|
12
|
+
} from '../../_models/control-models/endpoint-params.control-model';
|
|
10
13
|
import { DyNTS_AuthService } from '../../_services/core/auth.service';
|
|
11
|
-
import { DyNTS_Controller } from '../../_services/route/controller.service';
|
|
12
14
|
import { DyNTS_GlobalService } from '../../_services/core/global.service';
|
|
13
|
-
import {
|
|
14
|
-
DyNTS_Endpoint_Params
|
|
15
|
-
} from '../../_models/control-models/endpoint-params.control-model';
|
|
15
|
+
import { DyNTS_Controller } from '../../_services/route/controller.service';
|
|
16
16
|
import { DyNTS_Usage_DataService } from './usage.data-service';
|
|
17
17
|
|
|
18
18
|
export class DyNTS_Usage_Controller extends DyNTS_Controller {
|
|
@@ -106,10 +106,12 @@ export class DyNTS_Usage_Controller extends DyNTS_Controller {
|
|
|
106
106
|
endpoint: DyFM_usageModule_settings.endPoints.getUsageData,
|
|
107
107
|
preProcesses: [ this.authService.authenticate_tokenPerm_accUsageData ],
|
|
108
108
|
tasks: [
|
|
109
|
-
async (req: Request, res: Response): Promise<void> => {
|
|
109
|
+
async (req: Request, res: Response, issuer: string): Promise<void> => {
|
|
110
110
|
const range: DyFM_RelativeDate = req.params.range as DyFM_RelativeDate;
|
|
111
111
|
|
|
112
|
-
const usageService = new DyNTS_Usage_DataService(
|
|
112
|
+
const usageService = new DyNTS_Usage_DataService({
|
|
113
|
+
issuer: issuer,
|
|
114
|
+
});
|
|
113
115
|
|
|
114
116
|
await usageService.getUsage(range);
|
|
115
117
|
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
import { DyFM_Error, DyFM_RelativeDate, DyFM_Time } from '@futdevpro/fsm-dynamo';
|
|
3
|
+
import {
|
|
4
|
+
DyFM_DailyUsageData,
|
|
5
|
+
DyFM_UsageData,
|
|
6
|
+
DyFM_UsageSession, DyFM_usageSession_dataParams
|
|
7
|
+
} from '@futdevpro/fsm-dynamo/usage';
|
|
2
8
|
import { Request } from 'express';
|
|
3
|
-
import { DyFM_Error, DyFM_Time, DyFM_RelativeDate } from '@futdevpro/fsm-dynamo';
|
|
4
|
-
import { DyFM_UsageSession, DyFM_usageSession_dataParams, DyFM_UsageData,
|
|
5
|
-
DyFM_DailyUsageData } from '@futdevpro/fsm-dynamo/usage';
|
|
6
9
|
|
|
7
10
|
import { DyNTS_DataService } from '../../_services/base/data.service';
|
|
8
11
|
import { DyNTS_Shared } from '../../_services/shared.static-service';
|
|
@@ -12,18 +15,18 @@ export class DyNTS_Usage_DataService extends DyNTS_DataService<DyFM_UsageSession
|
|
|
12
15
|
simplifiedDailyUsage: DyFM_DailyUsageData[] = [];
|
|
13
16
|
|
|
14
17
|
constructor(
|
|
15
|
-
set
|
|
18
|
+
set: {
|
|
16
19
|
usageSession?: DyFM_UsageSession,
|
|
17
20
|
usageData?: DyFM_UsageData[],
|
|
18
|
-
issuer
|
|
21
|
+
issuer: string,
|
|
19
22
|
}
|
|
20
23
|
) {
|
|
21
24
|
super(
|
|
22
25
|
new DyFM_UsageSession(set?.usageSession),
|
|
23
26
|
DyFM_usageSession_dataParams,
|
|
24
|
-
set
|
|
27
|
+
set.issuer
|
|
25
28
|
);
|
|
26
|
-
this.usageData = set?.usageData
|
|
29
|
+
this.usageData = set?.usageData ?? [];
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
getLocationDataFromRequest(req: Request): void {
|
|
@@ -3,13 +3,16 @@ import {
|
|
|
3
3
|
DyFM_AnyError,
|
|
4
4
|
DyFM_Array,
|
|
5
5
|
DyFM_Data_Params,
|
|
6
|
-
DyFM_DataModel_Params,
|
|
6
|
+
DyFM_DataModel_Params,
|
|
7
|
+
DyFM_DataProperty_Params,
|
|
7
8
|
DyFM_DBFilter,
|
|
8
9
|
DyFM_Error,
|
|
9
|
-
DyFM_Error_Settings,
|
|
10
|
+
DyFM_Error_Settings,
|
|
11
|
+
DyFM_ErrorLevel,
|
|
10
12
|
DyFM_Log,
|
|
11
13
|
DyFM_Metadata,
|
|
12
|
-
DyFM_SearchQuery
|
|
14
|
+
DyFM_SearchQuery,
|
|
15
|
+
DyFM_SearchResult
|
|
13
16
|
} from '@futdevpro/fsm-dynamo';
|
|
14
17
|
|
|
15
18
|
import { DyNTS_getArchivedDBName } from '../../_collections/archive.util';
|
|
@@ -27,16 +30,16 @@ import { DyNTS_DBService } from './db.service';
|
|
|
27
30
|
* @example
|
|
28
31
|
* export class UserMatchStatisticsService extends DyNTS_DataService<UserMatchStatistics> {
|
|
29
32
|
* constructor(
|
|
30
|
-
* set
|
|
33
|
+
* set: {
|
|
31
34
|
* data?: UserMatchStatistics,
|
|
32
|
-
* issuer
|
|
35
|
+
* issuer: string,
|
|
33
36
|
* }
|
|
34
37
|
* ) {
|
|
35
38
|
* super(
|
|
36
39
|
* new UserMatchStatistics(set?.data),
|
|
37
40
|
* userMatchStatisticsModelParams
|
|
38
41
|
* );
|
|
39
|
-
* this.issuer = set
|
|
42
|
+
* this.issuer = set.issuer;
|
|
40
43
|
* }
|
|
41
44
|
* }
|
|
42
45
|
*/
|
|
@@ -1083,10 +1086,15 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
1083
1086
|
}
|
|
1084
1087
|
}
|
|
1085
1088
|
|
|
1086
|
-
async searchData(query?: DyFM_SearchQuery<T>): Promise<T
|
|
1089
|
+
async searchData(query?: DyFM_SearchQuery<T>): Promise<DyFM_SearchResult<T>> {
|
|
1087
1090
|
try {
|
|
1088
1091
|
if (!query || Object.keys(query).length === 0) {
|
|
1089
|
-
|
|
1092
|
+
const allData: T[] = await this.getAll();
|
|
1093
|
+
|
|
1094
|
+
return {
|
|
1095
|
+
results: allData,
|
|
1096
|
+
total: allData.length,
|
|
1097
|
+
};
|
|
1090
1098
|
}
|
|
1091
1099
|
|
|
1092
1100
|
if (!query.filterBy) {
|
|
@@ -1094,7 +1102,12 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
1094
1102
|
}
|
|
1095
1103
|
|
|
1096
1104
|
if (!query.page && !query.pageSize && !query.sortBy) {
|
|
1097
|
-
|
|
1105
|
+
const dataFindResult: T[] = await this.dataDBService.find(query.filterBy);
|
|
1106
|
+
|
|
1107
|
+
return {
|
|
1108
|
+
results: dataFindResult,
|
|
1109
|
+
total: dataFindResult.length,
|
|
1110
|
+
};
|
|
1098
1111
|
}
|
|
1099
1112
|
|
|
1100
1113
|
if (!query.page) {
|
|
@@ -1110,12 +1123,18 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
1110
1123
|
query.sortBy = { __lastModified: -1 };
|
|
1111
1124
|
}
|
|
1112
1125
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1126
|
+
const dataFindWithPagingResult: T[] =
|
|
1127
|
+
await this.dataDBService.findWithPaging(
|
|
1128
|
+
query.filterBy,
|
|
1129
|
+
query.page,
|
|
1130
|
+
query.pageSize,
|
|
1131
|
+
query.sortBy
|
|
1132
|
+
);
|
|
1133
|
+
|
|
1134
|
+
return {
|
|
1135
|
+
results: dataFindWithPagingResult,
|
|
1136
|
+
total: dataFindWithPagingResult.length,
|
|
1137
|
+
};
|
|
1119
1138
|
} catch (error) {
|
|
1120
1139
|
throw new DyFM_Error({
|
|
1121
1140
|
...this._getDefaultErrorSettings('searchData', error),
|
|
@@ -104,7 +104,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
104
104
|
throw new DyFM_Error({
|
|
105
105
|
...this._getDefaultErrorSettings('createData', error, issuer),
|
|
106
106
|
errorCode: 'NTS-DBS-CD0',
|
|
107
|
-
additionalContent: {
|
|
107
|
+
additionalContent: {
|
|
108
|
+
data: data,
|
|
109
|
+
dataModel: this.dataModel,
|
|
110
|
+
},
|
|
108
111
|
message:
|
|
109
112
|
`createData failed, Create new "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
|
|
110
113
|
issuer,
|
|
@@ -1034,6 +1037,12 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
1034
1037
|
}
|
|
1035
1038
|
|
|
1036
1039
|
Object.values(properties).forEach((property: DyFM_DataProperty_Params<any>): void => {
|
|
1040
|
+
if (!property) {
|
|
1041
|
+
DyFM_Log.warn(`property is undefined on ${this.dataParams.dbName} (NTS DB)`);
|
|
1042
|
+
|
|
1043
|
+
return;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1037
1046
|
const beType = this.getBEType(property.type);
|
|
1038
1047
|
|
|
1039
1048
|
if (
|