mongodb-dynamic-api 2.3.11 → 2.3.12

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 (36) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/package.json +1 -1
  3. package/src/modules/auth/auth.helper.js +1 -0
  4. package/src/modules/auth/auth.helper.js.map +1 -1
  5. package/src/modules/auth/auth.module.js +3 -1
  6. package/src/modules/auth/auth.module.js.map +1 -1
  7. package/src/modules/auth/mixins/auth-controller.mixin.js +1 -1
  8. package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
  9. package/src/modules/auth/services/base-auth.service.d.ts +2 -0
  10. package/src/modules/auth/services/base-auth.service.js +7 -4
  11. package/src/modules/auth/services/base-auth.service.js.map +1 -1
  12. package/src/routes/duplicate-many/base-duplicate-many.service.js +1 -1
  13. package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
  14. package/src/routes/duplicate-one/base-duplicate-one.service.js +1 -1
  15. package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
  16. package/src/routes/get-one/base-get-one.service.js +1 -1
  17. package/src/routes/get-one/base-get-one.service.js.map +1 -1
  18. package/src/routes/replace-one/base-replace-one.service.js +1 -1
  19. package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
  20. package/src/routes/update-many/base-update-many.service.js +1 -1
  21. package/src/routes/update-many/base-update-many.service.js.map +1 -1
  22. package/src/routes/update-one/base-update-one.service.js +1 -1
  23. package/src/routes/update-one/base-update-one.service.js.map +1 -1
  24. package/src/services/base/base.service.d.ts +1 -1
  25. package/src/services/base/base.service.js +5 -1
  26. package/src/services/base/base.service.js.map +1 -1
  27. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.d.ts +1 -0
  28. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js +8 -2
  29. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
  30. package/src/version.json +1 -1
  31. package/test/dynamic-api-for-root.e2e-spec.js +147 -30
  32. package/test/dynamic-api-for-root.e2e-spec.js.map +1 -1
  33. package/test/e2e.setup.d.ts +7 -7
  34. package/test/e2e.setup.js +10 -10
  35. package/test/e2e.setup.js.map +1 -1
  36. package/tsconfig.tsbuildinfo +1 -1
@@ -1,23 +1,37 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ const mongoose_1 = require("@nestjs/mongoose");
3
13
  const testing_1 = require("@nestjs/testing");
4
- const mongoose_1 = require("mongoose");
14
+ const mongoose_2 = require("mongoose");
5
15
  const src_1 = require("../src");
6
16
  const e2e_setup_1 = require("./e2e.setup");
7
17
  require("dotenv/config");
8
18
  describe('DynamicApiModule forRoot (e2e)', () => {
9
19
  let app;
10
20
  const uri = process.env.MONGO_DB_URL;
11
- class UserEntity extends src_1.BaseEntity {
12
- }
21
+ const initModule = async (dynamicApiForRootOptions) => {
22
+ const moduleRef = await testing_1.Test.createTestingModule({
23
+ imports: [src_1.DynamicApiModule.forRoot(uri, dynamicApiForRootOptions)],
24
+ }).compile();
25
+ return (0, e2e_setup_1.createTestingApp)(moduleRef);
26
+ };
27
+ beforeEach(() => {
28
+ src_1.DynamicApiModule.state['resetState']();
29
+ });
13
30
  afterEach(async () => {
14
- await (0, e2e_setup_1.closeTestingApp)(mongoose_1.default.connections);
31
+ await (0, e2e_setup_1.closeTestingApp)(mongoose_2.default.connections);
15
32
  });
16
33
  it('should initialize dynamic api module state with default options', async () => {
17
- const moduleRef = await testing_1.Test.createTestingModule({
18
- imports: [src_1.DynamicApiModule.forRoot(uri)],
19
- }).compile();
20
- app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
34
+ app = await initModule({});
21
35
  expect(app).toBeDefined();
22
36
  expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
23
37
  uri,
@@ -47,30 +61,16 @@ describe('DynamicApiModule forRoot (e2e)', () => {
47
61
  });
48
62
  });
49
63
  it('should initialize dynamic api module state with custom options', async () => {
50
- const dynamicApiForRootOptions = {
64
+ app = await initModule({
51
65
  useGlobalCache: false,
52
66
  cacheOptions: {
53
67
  excludePaths: ['/fake-path'],
54
68
  },
55
- useAuth: {
56
- userEntity: UserEntity,
57
- login: {
58
- loginField: 'login',
59
- passwordField: 'pass',
60
- },
61
- jwt: {
62
- secret: 'custom-secret',
63
- },
64
- },
65
69
  routesConfig: {
66
70
  defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
67
71
  excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
68
72
  },
69
- };
70
- const moduleRef = await testing_1.Test.createTestingModule({
71
- imports: [src_1.DynamicApiModule.forRoot(uri, dynamicApiForRootOptions)],
72
- }).compile();
73
- app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
73
+ });
74
74
  expect(app).toBeDefined();
75
75
  expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
76
76
  uri,
@@ -78,17 +78,134 @@ describe('DynamicApiModule forRoot (e2e)', () => {
78
78
  isGlobalCacheEnabled: false,
79
79
  connectionName: 'dynamic-api-connection',
80
80
  cacheExcludedPaths: ['/fake-path'],
81
- credentials: {
82
- loginField: 'login',
83
- passwordField: 'pass',
84
- },
85
- isAuthEnabled: true,
86
- jwtSecret: 'custom-secret',
81
+ credentials: null,
82
+ isAuthEnabled: false,
83
+ jwtSecret: undefined,
87
84
  routesConfig: {
88
85
  defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
89
86
  excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
90
87
  },
91
88
  });
92
89
  });
90
+ describe('useAuth when only userEntity is provided', () => {
91
+ let UserEntity = class UserEntity extends src_1.BaseEntity {
92
+ };
93
+ __decorate([
94
+ (0, mongoose_1.Prop)({ type: String, required: true }),
95
+ __metadata("design:type", String)
96
+ ], UserEntity.prototype, "email", void 0);
97
+ __decorate([
98
+ (0, mongoose_1.Prop)({ type: String, required: true }),
99
+ __metadata("design:type", String)
100
+ ], UserEntity.prototype, "password", void 0);
101
+ UserEntity = __decorate([
102
+ (0, mongoose_1.Schema)()
103
+ ], UserEntity);
104
+ beforeEach(async () => {
105
+ app = await initModule({ useAuth: { userEntity: UserEntity } });
106
+ });
107
+ it('should initialize dynamic api module state and authentication API with default options', async () => {
108
+ expect(app).toBeDefined();
109
+ expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
110
+ uri,
111
+ initialized: true,
112
+ isGlobalCacheEnabled: true,
113
+ connectionName: 'dynamic-api-connection',
114
+ cacheExcludedPaths: [],
115
+ credentials: {
116
+ loginField: 'email',
117
+ passwordField: 'password',
118
+ },
119
+ isAuthEnabled: true,
120
+ jwtSecret: 'dynamic-api-jwt-secret',
121
+ routesConfig: {
122
+ defaults: [
123
+ 'GetMany',
124
+ 'GetOne',
125
+ 'CreateMany',
126
+ 'CreateOne',
127
+ 'UpdateMany',
128
+ 'UpdateOne',
129
+ 'ReplaceOne',
130
+ 'DuplicateMany',
131
+ 'DuplicateOne',
132
+ 'DeleteMany',
133
+ 'DeleteOne',
134
+ ],
135
+ excluded: [],
136
+ },
137
+ });
138
+ });
139
+ describe('POST /register', () => {
140
+ it('should throw a bad request exception if email is missing', async () => {
141
+ const { body, status } = await e2e_setup_1.server.post('/auth/register', { username: 'unit-test', password: 'test-2' });
142
+ expect(status).toBe(400);
143
+ expect(body).toEqual({
144
+ error: 'Bad Request',
145
+ message: ['Path `email` is required.'],
146
+ statusCode: 400,
147
+ });
148
+ });
149
+ it('should throw a bad request exception if password is missing', async () => {
150
+ const { body, status } = await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', pass: 'test-2' });
151
+ expect(status).toBe(400);
152
+ expect(body).toEqual({
153
+ error: 'Bad Request',
154
+ message: [
155
+ 'password must be a string',
156
+ 'password should not be empty',
157
+ ],
158
+ statusCode: 400,
159
+ });
160
+ });
161
+ it('should create a new user and return access token', async () => {
162
+ const { body, status } = await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
163
+ expect(status).toBe(201);
164
+ expect(body).toEqual({ accessToken: expect.any(String) });
165
+ });
166
+ });
167
+ describe('POST /login', () => {
168
+ it('should throw an unauthorized exception if email is missing', async () => {
169
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', { pass: 'test-2' });
170
+ expect(status).toBe(401);
171
+ expect(body).toEqual({
172
+ message: 'Unauthorized',
173
+ statusCode: 401,
174
+ });
175
+ });
176
+ it('should throw an unauthorized exception if password is missing', async () => {
177
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co' });
178
+ expect(status).toBe(401);
179
+ expect(body).toEqual({
180
+ message: 'Unauthorized',
181
+ statusCode: 401,
182
+ });
183
+ });
184
+ it('should return access token', async () => {
185
+ await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
186
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co', password: 'test' });
187
+ expect(status).toBe(200);
188
+ expect(body).toEqual({ accessToken: expect.any(String) });
189
+ });
190
+ });
191
+ describe('GET /account', () => {
192
+ it('should throw an unauthorized exception if access token is missing', async () => {
193
+ const { body, status } = await e2e_setup_1.server.get('/auth/account');
194
+ expect(status).toBe(401);
195
+ expect(body).toEqual({
196
+ message: 'Unauthorized',
197
+ statusCode: 401,
198
+ });
199
+ });
200
+ it('should return user account', async () => {
201
+ await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
202
+ const { body: { accessToken } } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co', password: 'test' });
203
+ const headers = { Authorization: `Bearer ${accessToken}` };
204
+ const { body: account, status: accountStatus } = await e2e_setup_1.server.get('/auth/account', { headers });
205
+ expect(accountStatus).toBe(200);
206
+ expect(account).toEqual({ id: expect.any(String), email: 'unit@test.co' });
207
+ });
208
+ });
209
+ });
93
210
  });
94
211
  //# sourceMappingURL=dynamic-api-for-root.e2e-spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-api-for-root.e2e-spec.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/dynamic-api-for-root.e2e-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-api-for-root.e2e-spec.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/dynamic-api-for-root.e2e-spec.ts"],"names":[],"mappings":"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"}
@@ -24,18 +24,18 @@
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
25
  import { TestingModule } from '@nestjs/testing';
26
26
  import mongoose from 'mongoose';
27
- type RequestOptions = {
28
- query?: Record<string, unknown>;
27
+ type RequestOptions<Query extends object = any> = {
28
+ query?: Query;
29
29
  authToken?: string;
30
30
  headers?: Record<string, unknown>;
31
31
  };
32
32
  export declare function createTestingApp(moduleRef: TestingModule, initFixtures?: (connection: mongoose.Connection) => Promise<void>, initMainCb?: (app: any) => Promise<void>): Promise<import("@nestjs/common").INestApplication<any>>;
33
33
  export declare function closeTestingApp(connections: mongoose.Connection[]): Promise<void>;
34
34
  export declare const server: {
35
- get: (path: string, { authToken, query, headers }?: RequestOptions) => Promise<any>;
36
- post: (path: string, body: any, { authToken, query, headers }?: RequestOptions) => Promise<any>;
37
- patch: (path: string, body: any, { authToken, query, headers }?: RequestOptions) => Promise<any>;
38
- put: (path: string, body: any, { authToken, query, headers }?: RequestOptions) => Promise<any>;
39
- delete: (path: string, { authToken, query, headers }?: RequestOptions) => Promise<any>;
35
+ get: <Query extends object = any, Response_1 = any>(path: string, { authToken, query, headers }?: RequestOptions<Query>) => Promise<Response_1>;
36
+ post: <Body_1 extends object, Response_2 = any, Query_1 extends object = any>(path: string, body: Body_1, { authToken, query, headers }?: RequestOptions<Query_1>) => Promise<Response_2>;
37
+ patch: <Body_2 extends object, Response_3 = any, Query_2 extends object = any>(path: string, body: Body_2, { authToken, query, headers }?: RequestOptions<Query_2>) => Promise<Response_3>;
38
+ put: <Body_3 extends object, Response_4 = any, Query_3 extends object = any>(path: string, body: Body_3, { authToken, query, headers }?: RequestOptions<Query_3>) => Promise<Response_4>;
39
+ delete: <Query_4 extends object = any, Response_5 = any>(path: string, { authToken, query, headers }?: RequestOptions<Query_4>) => Promise<Response_5>;
40
40
  };
41
41
  export {};
package/test/e2e.setup.js CHANGED
@@ -44,10 +44,10 @@ const verifyApp = () => {
44
44
  return supertest.agent(global.app.getHttpServer());
45
45
  };
46
46
  exports.server = {
47
- get: async (path, { authToken, query = {}, headers = {} } = {}) => {
47
+ get: async (path, { authToken, query, headers = {} } = {}) => {
48
48
  return verifyApp()
49
49
  .get(path)
50
- .query(query)
50
+ .query(query ?? {})
51
51
  .set({
52
52
  ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
53
53
  'Content-Type': 'application/json',
@@ -55,10 +55,10 @@ exports.server = {
55
55
  ...headers,
56
56
  });
57
57
  },
58
- post: async (path, body, { authToken, query = {}, headers = {} } = {}) => {
58
+ post: async (path, body, { authToken, query, headers = {} } = {}) => {
59
59
  return verifyApp()
60
60
  .post(path)
61
- .query(query)
61
+ .query(query ?? {})
62
62
  .send(body)
63
63
  .set({
64
64
  ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
@@ -67,10 +67,10 @@ exports.server = {
67
67
  ...headers,
68
68
  });
69
69
  },
70
- patch: async (path, body, { authToken, query = {}, headers = {} } = {}) => {
70
+ patch: async (path, body, { authToken, query, headers = {} } = {}) => {
71
71
  return verifyApp()
72
72
  .patch(path)
73
- .query(query)
73
+ .query(query ?? {})
74
74
  .send(body)
75
75
  .set({
76
76
  ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
@@ -79,10 +79,10 @@ exports.server = {
79
79
  ...headers,
80
80
  });
81
81
  },
82
- put: async (path, body, { authToken, query = {}, headers = {} } = {}) => {
82
+ put: async (path, body, { authToken, query, headers = {} } = {}) => {
83
83
  return verifyApp()
84
84
  .put(path)
85
- .query(query)
85
+ .query(query ?? {})
86
86
  .send(body)
87
87
  .set({
88
88
  ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
@@ -91,10 +91,10 @@ exports.server = {
91
91
  ...headers,
92
92
  });
93
93
  },
94
- delete: async (path, { authToken, query = {}, headers = {} } = {}) => {
94
+ delete: async (path, { authToken, query, headers = {} } = {}) => {
95
95
  return verifyApp()
96
96
  .delete(path)
97
- .query(query)
97
+ .query(query ?? {})
98
98
  .set({
99
99
  ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
100
100
  'Content-Type': 'application/json',
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.setup.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/e2e.setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.setup.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/e2e.setup.ts"],"names":[],"mappings":"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"}