@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.
Files changed (96) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/Cli.js +1 -0
  3. package/commands/SyncIndexes.js +1 -1
  4. package/commands/migration/Create.js +4 -3
  5. package/controllers/Auth.js +3 -5
  6. package/controllers/index.js +0 -2
  7. package/coverage/base.css +224 -0
  8. package/coverage/block-navigation.js +87 -0
  9. package/coverage/clover.xml +3573 -0
  10. package/coverage/coverage-final.json +44 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/framework/config/auth.js.html +100 -0
  13. package/coverage/framework/config/http.js.html +112 -0
  14. package/coverage/framework/config/i18n.js.html +121 -0
  15. package/coverage/framework/config/index.html +236 -0
  16. package/coverage/framework/config/log.js.html +151 -0
  17. package/coverage/framework/config/mail.js.html +172 -0
  18. package/coverage/framework/config/mongo.js.html +94 -0
  19. package/coverage/framework/config/rateLimiter.js.html +133 -0
  20. package/coverage/framework/config/redis.js.html +97 -0
  21. package/coverage/framework/config/validate.js.html +94 -0
  22. package/coverage/framework/controllers/Auth.js.html +715 -0
  23. package/coverage/framework/controllers/Home.js.html +169 -0
  24. package/coverage/framework/controllers/index.html +146 -0
  25. package/coverage/framework/controllers/index.js.html +259 -0
  26. package/coverage/framework/controllers/test/SomeController.js.html +571 -0
  27. package/coverage/framework/controllers/test/index.html +116 -0
  28. package/coverage/framework/helpers/files.js.html +310 -0
  29. package/coverage/framework/helpers/index.html +131 -0
  30. package/coverage/framework/helpers/logger.js.html +142 -0
  31. package/coverage/framework/helpers/redis/clearNamespace.js.html +127 -0
  32. package/coverage/framework/helpers/redis/index.html +116 -0
  33. package/coverage/framework/index.html +116 -0
  34. package/coverage/framework/models/Migration.js.html +130 -0
  35. package/coverage/framework/models/Sequence.js.html +151 -0
  36. package/coverage/framework/models/User.js.html +859 -0
  37. package/coverage/framework/models/index.html +146 -0
  38. package/coverage/framework/modules/AbstractController.js.html +1309 -0
  39. package/coverage/framework/modules/AbstractModel.js.html +268 -0
  40. package/coverage/framework/modules/Base.js.html +244 -0
  41. package/coverage/framework/modules/index.html +146 -0
  42. package/coverage/framework/server.js.html +1279 -0
  43. package/coverage/framework/services/cache/Cache.js.html +445 -0
  44. package/coverage/framework/services/cache/index.html +116 -0
  45. package/coverage/framework/services/documentation/DocumentationGenerator.js.html +592 -0
  46. package/coverage/framework/services/documentation/index.html +116 -0
  47. package/coverage/framework/services/http/HttpServer.js.html +373 -0
  48. package/coverage/framework/services/http/index.html +116 -0
  49. package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +238 -0
  50. package/coverage/framework/services/http/middleware/Auth.js.html +145 -0
  51. package/coverage/framework/services/http/middleware/GetUserByToken.js.html +223 -0
  52. package/coverage/framework/services/http/middleware/I18n.js.html +442 -0
  53. package/coverage/framework/services/http/middleware/Pagination.js.html +253 -0
  54. package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +139 -0
  55. package/coverage/framework/services/http/middleware/RateLimiter.js.html +472 -0
  56. package/coverage/framework/services/http/middleware/RequestLogger.js.html +151 -0
  57. package/coverage/framework/services/http/middleware/RequestParser.js.html +199 -0
  58. package/coverage/framework/services/http/middleware/Role.js.html +172 -0
  59. package/coverage/framework/services/http/middleware/index.html +251 -0
  60. package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +139 -0
  61. package/coverage/framework/services/http/middleware/test/index.html +116 -0
  62. package/coverage/framework/services/messaging/email/index.html +116 -0
  63. package/coverage/framework/services/messaging/email/index.js.html +739 -0
  64. package/coverage/framework/services/messaging/index.html +116 -0
  65. package/coverage/framework/services/messaging/index.js.html +100 -0
  66. package/coverage/framework/services/validate/ValidateService.js.html +556 -0
  67. package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +196 -0
  68. package/coverage/framework/services/validate/drivers/CustomValidator.js.html +241 -0
  69. package/coverage/framework/services/validate/drivers/YupValidator.js.html +394 -0
  70. package/coverage/framework/services/validate/drivers/index.html +146 -0
  71. package/coverage/framework/services/validate/index.html +116 -0
  72. package/coverage/index.html +356 -0
  73. package/coverage/prettify.css +1 -0
  74. package/coverage/prettify.js +2 -0
  75. package/coverage/sort-arrow-sprite.png +0 -0
  76. package/coverage/sorter.js +196 -0
  77. package/helpers/files.js +75 -0
  78. package/helpers/logger.js +19 -0
  79. package/models/Migration.test.js +19 -0
  80. package/models/User.test.js +3 -3
  81. package/modules/AbstractController.js +1 -3
  82. package/modules/Base.js +6 -56
  83. package/modules/BaseCli.js +0 -3
  84. package/package.json +3 -2
  85. package/server.d.ts +14 -0
  86. package/server.js +165 -86
  87. package/services/cache/Cache.js +10 -5
  88. package/services/cache/Cache.test.js +81 -0
  89. package/services/http/middleware/Auth.test.js +57 -0
  90. package/services/http/middleware/I18n.test.js +16 -4
  91. package/services/http/middleware/PrepareAppInfo.test.js +1 -1
  92. package/services/http/middleware/RateLimiter.test.js +7 -7
  93. package/services/http/middleware/Role.test.js +93 -0
  94. package/services/validate/ValidateService.test.js +3 -3
  95. package/tests/setup.js +3 -0
  96. 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).toBe(false);
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).toBe(true);
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).toBe(false);
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
  }
@@ -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();