@adaptivestone/framework 4.7.0 → 4.8.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/CHANGELOG.md +15 -1
- package/Cli.js +1 -0
- package/commands/SyncIndexes.js +1 -1
- package/commands/migration/Create.js +4 -3
- package/controllers/Auth.js +3 -5
- package/controllers/index.js +0 -2
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +3573 -0
- package/coverage/coverage-final.json +44 -0
- package/coverage/favicon.png +0 -0
- package/coverage/framework/config/auth.js.html +100 -0
- package/coverage/framework/config/http.js.html +112 -0
- package/coverage/framework/config/i18n.js.html +121 -0
- package/coverage/framework/config/index.html +236 -0
- package/coverage/framework/config/log.js.html +151 -0
- package/coverage/framework/config/mail.js.html +172 -0
- package/coverage/framework/config/mongo.js.html +94 -0
- package/coverage/framework/config/rateLimiter.js.html +133 -0
- package/coverage/framework/config/redis.js.html +97 -0
- package/coverage/framework/config/validate.js.html +94 -0
- package/coverage/framework/controllers/Auth.js.html +715 -0
- package/coverage/framework/controllers/Home.js.html +169 -0
- package/coverage/framework/controllers/index.html +146 -0
- package/coverage/framework/controllers/index.js.html +259 -0
- package/coverage/framework/controllers/test/SomeController.js.html +571 -0
- package/coverage/framework/controllers/test/index.html +116 -0
- package/coverage/framework/helpers/files.js.html +310 -0
- package/coverage/framework/helpers/index.html +131 -0
- package/coverage/framework/helpers/logger.js.html +142 -0
- package/coverage/framework/helpers/redis/clearNamespace.js.html +127 -0
- package/coverage/framework/helpers/redis/index.html +116 -0
- package/coverage/framework/index.html +116 -0
- package/coverage/framework/models/Migration.js.html +130 -0
- package/coverage/framework/models/Sequence.js.html +151 -0
- package/coverage/framework/models/User.js.html +859 -0
- package/coverage/framework/models/index.html +146 -0
- package/coverage/framework/modules/AbstractController.js.html +1309 -0
- package/coverage/framework/modules/AbstractModel.js.html +268 -0
- package/coverage/framework/modules/Base.js.html +244 -0
- package/coverage/framework/modules/index.html +146 -0
- package/coverage/framework/server.js.html +1279 -0
- package/coverage/framework/services/cache/Cache.js.html +445 -0
- package/coverage/framework/services/cache/index.html +116 -0
- package/coverage/framework/services/documentation/DocumentationGenerator.js.html +592 -0
- package/coverage/framework/services/documentation/index.html +116 -0
- package/coverage/framework/services/http/HttpServer.js.html +373 -0
- package/coverage/framework/services/http/index.html +116 -0
- package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +238 -0
- package/coverage/framework/services/http/middleware/Auth.js.html +145 -0
- package/coverage/framework/services/http/middleware/GetUserByToken.js.html +223 -0
- package/coverage/framework/services/http/middleware/I18n.js.html +442 -0
- package/coverage/framework/services/http/middleware/Pagination.js.html +253 -0
- package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +139 -0
- package/coverage/framework/services/http/middleware/RateLimiter.js.html +472 -0
- package/coverage/framework/services/http/middleware/RequestLogger.js.html +151 -0
- package/coverage/framework/services/http/middleware/RequestParser.js.html +199 -0
- package/coverage/framework/services/http/middleware/Role.js.html +172 -0
- package/coverage/framework/services/http/middleware/index.html +251 -0
- package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +139 -0
- package/coverage/framework/services/http/middleware/test/index.html +116 -0
- package/coverage/framework/services/messaging/email/index.html +116 -0
- package/coverage/framework/services/messaging/email/index.js.html +739 -0
- package/coverage/framework/services/messaging/index.html +116 -0
- package/coverage/framework/services/messaging/index.js.html +100 -0
- package/coverage/framework/services/validate/ValidateService.js.html +556 -0
- package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +196 -0
- package/coverage/framework/services/validate/drivers/CustomValidator.js.html +241 -0
- package/coverage/framework/services/validate/drivers/YupValidator.js.html +394 -0
- package/coverage/framework/services/validate/drivers/index.html +146 -0
- package/coverage/framework/services/validate/index.html +116 -0
- package/coverage/index.html +356 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/helpers/files.js +75 -0
- package/helpers/logger.js +19 -0
- package/models/Migration.test.js +19 -0
- package/models/User.test.js +3 -3
- package/modules/AbstractController.js +1 -3
- package/modules/Base.js +6 -56
- package/modules/BaseCli.js +0 -3
- package/package.json +3 -2
- package/server.d.ts +14 -0
- package/server.js +165 -86
- package/services/cache/Cache.js +10 -5
- package/services/cache/Cache.test.js +81 -0
- package/services/http/middleware/Auth.test.js +57 -0
- package/services/http/middleware/I18n.test.js +16 -4
- package/services/http/middleware/PrepareAppInfo.test.js +1 -1
- package/services/http/middleware/RateLimiter.test.js +7 -7
- package/services/http/middleware/Role.test.js +93 -0
- package/services/validate/ValidateService.test.js +3 -3
- package/tests/setup.js +3 -0
- package/tests/setupVitest.js +3 -4
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import Role from './Role';
|
|
3
|
+
|
|
4
|
+
describe('role middleware methods', () => {
|
|
5
|
+
it('have description fields', async () => {
|
|
6
|
+
expect.assertions(1);
|
|
7
|
+
const middleware = new Role(global.server.app);
|
|
8
|
+
expect(middleware.constructor.description).toBeDefined();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('middleware pass when user presented with a right role', async () => {
|
|
12
|
+
expect.assertions(1);
|
|
13
|
+
let isCalled = false;
|
|
14
|
+
const nextFunction = () => {
|
|
15
|
+
isCalled = true;
|
|
16
|
+
};
|
|
17
|
+
const req = {
|
|
18
|
+
appInfo: {
|
|
19
|
+
user: {
|
|
20
|
+
roles: ['role1', 'role2'],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const middleware = new Role(global.server.app, {
|
|
25
|
+
roles: ['admin', 'role1'],
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
await middleware.middleware(req, {}, nextFunction);
|
|
29
|
+
expect(isCalled).toBeTruthy();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('middleware NOT pass when user NOT presented', async () => {
|
|
33
|
+
expect.assertions(3);
|
|
34
|
+
let isCalled = false;
|
|
35
|
+
let status;
|
|
36
|
+
let isSend;
|
|
37
|
+
const nextFunction = () => {
|
|
38
|
+
isCalled = true;
|
|
39
|
+
};
|
|
40
|
+
const req = {
|
|
41
|
+
appInfo: {}, // no user
|
|
42
|
+
};
|
|
43
|
+
const middleware = new Role(global.server.app);
|
|
44
|
+
await middleware.middleware(
|
|
45
|
+
req,
|
|
46
|
+
{
|
|
47
|
+
status(statusCode) {
|
|
48
|
+
status = statusCode;
|
|
49
|
+
return this;
|
|
50
|
+
},
|
|
51
|
+
send() {
|
|
52
|
+
isSend = true;
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
nextFunction,
|
|
56
|
+
);
|
|
57
|
+
expect(isCalled).toBeFalsy();
|
|
58
|
+
expect(status).toBe(401);
|
|
59
|
+
expect(isSend).toBeTruthy();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('middleware NOT pass when user have a wrong role', async () => {
|
|
63
|
+
expect.assertions(3);
|
|
64
|
+
let isCalled = false;
|
|
65
|
+
let status;
|
|
66
|
+
let isSend;
|
|
67
|
+
const nextFunction = () => {
|
|
68
|
+
isCalled = true;
|
|
69
|
+
};
|
|
70
|
+
const req = {
|
|
71
|
+
appInfo: {
|
|
72
|
+
user: { roles: ['role1', 'role2'] },
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
const middleware = new Role(global.server.app, { roles: ['admin'] });
|
|
76
|
+
await middleware.middleware(
|
|
77
|
+
req,
|
|
78
|
+
{
|
|
79
|
+
status(statusCode) {
|
|
80
|
+
status = statusCode;
|
|
81
|
+
return this;
|
|
82
|
+
},
|
|
83
|
+
json() {
|
|
84
|
+
isSend = true;
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
nextFunction,
|
|
88
|
+
);
|
|
89
|
+
expect(isCalled).toBeFalsy();
|
|
90
|
+
expect(status).toBe(403);
|
|
91
|
+
expect(isSend).toBeTruthy();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
@@ -45,21 +45,21 @@ describe('validate service', () => {
|
|
|
45
45
|
expect.assertions(1);
|
|
46
46
|
const validator = 'not an object';
|
|
47
47
|
const result = ValidateService.isValidatorExists(validator);
|
|
48
|
-
expect(result).
|
|
48
|
+
expect(result).toBeFalsy();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it('returns true if validator is an instance of one of the drivers', () => {
|
|
52
52
|
expect.assertions(1);
|
|
53
53
|
const validator = new ValidateService.drivers.YupValidator();
|
|
54
54
|
const result = ValidateService.isValidatorExists(validator);
|
|
55
|
-
expect(result).
|
|
55
|
+
expect(result).toBeTruthy();
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
it('returns false if validator is not an instance of any of the drivers', () => {
|
|
59
59
|
expect.assertions(1);
|
|
60
60
|
const validator = {};
|
|
61
61
|
const result = ValidateService.isValidatorExists(validator);
|
|
62
|
-
expect(result).
|
|
62
|
+
expect(result).toBeFalsy();
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
|
package/tests/setup.js
CHANGED
|
@@ -38,11 +38,14 @@ beforeAll(async () => {
|
|
|
38
38
|
process.env.TEST_FOLDER_MIGRATIONS || path.resolve('./migrations'),
|
|
39
39
|
},
|
|
40
40
|
});
|
|
41
|
+
await global.server.init({ isSkipModelInit: true });
|
|
41
42
|
global.server.updateConfig('mongo', {
|
|
42
43
|
connectionString: connectionStringMongo,
|
|
43
44
|
});
|
|
44
45
|
global.server.updateConfig('http', { port: 0 }); // allow to use random
|
|
45
46
|
global.server.updateConfig('mail', { transport: 'stub' });
|
|
47
|
+
await global.server.initAllModels();
|
|
48
|
+
|
|
46
49
|
if (!global.testSetup) {
|
|
47
50
|
global.testSetup = {};
|
|
48
51
|
}
|
package/tests/setupVitest.js
CHANGED
|
@@ -12,7 +12,6 @@ const Server = require('../server');
|
|
|
12
12
|
|
|
13
13
|
const clearRedisNamespace = require('../helpers/redis/clearNamespace');
|
|
14
14
|
|
|
15
|
-
// eslint-disable-next-line vitest/no-hooks, vitest/require-top-level-describe
|
|
16
15
|
beforeAll(async () => {
|
|
17
16
|
mongoMemoryServerInstance = await MongoMemoryReplSet.create({
|
|
18
17
|
// binary: { version: '4.4.6' },
|
|
@@ -40,11 +39,14 @@ beforeAll(async () => {
|
|
|
40
39
|
process.env.TEST_FOLDER_MIGRATIONS || path.resolve('./migrations'),
|
|
41
40
|
},
|
|
42
41
|
});
|
|
42
|
+
await global.server.init({ isSkipModelInit: true });
|
|
43
43
|
global.server.updateConfig('mongo', {
|
|
44
44
|
connectionString: connectionStringMongo,
|
|
45
45
|
});
|
|
46
46
|
global.server.updateConfig('http', { port: 0 }); // allow to use random
|
|
47
47
|
global.server.updateConfig('mail', { transport: 'stub' });
|
|
48
|
+
await global.server.initAllModels();
|
|
49
|
+
|
|
48
50
|
if (!global.testSetup) {
|
|
49
51
|
global.testSetup = {};
|
|
50
52
|
}
|
|
@@ -75,7 +77,6 @@ beforeAll(async () => {
|
|
|
75
77
|
await global.server.startServer();
|
|
76
78
|
});
|
|
77
79
|
|
|
78
|
-
// eslint-disable-next-line vitest/no-hooks, vitest/require-top-level-describe
|
|
79
80
|
beforeEach(() => {
|
|
80
81
|
if (global.server) {
|
|
81
82
|
const key = `test-${Math.random().toString(36).substring(7)}`;
|
|
@@ -85,7 +86,6 @@ beforeEach(() => {
|
|
|
85
86
|
}
|
|
86
87
|
});
|
|
87
88
|
|
|
88
|
-
// eslint-disable-next-line vitest/no-hooks, vitest/require-top-level-describe
|
|
89
89
|
afterEach(async () => {
|
|
90
90
|
if (global.server) {
|
|
91
91
|
const { url, namespace } = global.server.getConfig('redis');
|
|
@@ -101,7 +101,6 @@ afterEach(async () => {
|
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
-
// eslint-disable-next-line vitest/no-hooks, vitest/require-top-level-describe
|
|
105
104
|
afterAll(async () => {
|
|
106
105
|
if (global.server) {
|
|
107
106
|
global.server.app.httpServer.shutdown();
|