@lenne.tech/nest-server 8.0.2 → 8.1.0
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/dist/core/common/args/pagination.args.js +1 -1
- package/dist/core/common/args/pagination.args.js.map +1 -1
- package/dist/core/common/helpers/config.helper.d.ts +2 -1
- package/dist/core/common/helpers/config.helper.js +11 -7
- package/dist/core/common/helpers/config.helper.js.map +1 -1
- package/dist/core/common/helpers/context.helper.d.ts +7 -1
- package/dist/core/common/helpers/context.helper.js +33 -29
- package/dist/core/common/helpers/context.helper.js.map +1 -1
- package/dist/core/common/helpers/db.helper.d.ts +35 -0
- package/dist/core/common/helpers/db.helper.js +345 -0
- package/dist/core/common/helpers/db.helper.js.map +1 -0
- package/dist/core/common/helpers/file.helper.d.ts +8 -1
- package/dist/core/common/helpers/file.helper.js +43 -31
- package/dist/core/common/helpers/file.helper.js.map +1 -1
- package/dist/core/common/helpers/filter.helper.d.ts +3 -0
- package/dist/core/common/helpers/filter.helper.js +93 -81
- package/dist/core/common/helpers/filter.helper.js.map +1 -1
- package/dist/core/common/helpers/graphql.helper.d.ts +24 -1
- package/dist/core/common/helpers/graphql.helper.js +144 -96
- package/dist/core/common/helpers/graphql.helper.js.map +1 -1
- package/dist/core/common/helpers/input.helper.d.ts +29 -3
- package/dist/core/common/helpers/input.helper.js +222 -105
- package/dist/core/common/helpers/input.helper.js.map +1 -1
- package/dist/core/common/helpers/model.helper.d.ts +11 -0
- package/dist/core/common/helpers/model.helper.js +41 -29
- package/dist/core/common/helpers/model.helper.js.map +1 -1
- package/dist/core/common/helpers/service.helper.d.ts +21 -1
- package/dist/core/common/helpers/service.helper.js +80 -72
- package/dist/core/common/helpers/service.helper.js.map +1 -1
- package/dist/core/common/inputs/combined-filter.input.js +1 -1
- package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
- package/dist/core/common/inputs/core-input.input.js +1 -1
- package/dist/core/common/inputs/core-input.input.js.map +1 -1
- package/dist/core/common/interceptors/check-response.interceptor.js +1 -1
- package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
- package/dist/core/common/interfaces/resolve-selector.interface.d.ts +5 -0
- package/dist/core/common/interfaces/resolve-selector.interface.js +3 -0
- package/dist/core/common/interfaces/resolve-selector.interface.js.map +1 -0
- package/dist/core/common/interfaces/service-options.interface.d.ts +30 -0
- package/dist/core/common/interfaces/service-options.interface.js +3 -0
- package/dist/core/common/interfaces/service-options.interface.js.map +1 -0
- package/dist/core/common/models/core-model.model.d.ts +4 -0
- package/dist/core/common/models/core-model.model.js +1 -1
- package/dist/core/common/models/core-model.model.js.map +1 -1
- package/dist/core/common/pipes/check-input.pipe.js +2 -2
- package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
- package/dist/core/common/services/crud.service.d.ts +13 -0
- package/dist/core/common/services/crud.service.js +59 -0
- package/dist/core/common/services/crud.service.js.map +1 -0
- package/dist/core/common/services/email.service.js +8 -8
- package/dist/core/common/services/email.service.js.map +1 -1
- package/dist/core/common/services/module.service.d.ts +27 -0
- package/dist/core/common/services/module.service.js +41 -0
- package/dist/core/common/services/module.service.js.map +1 -0
- package/dist/core/common/types/core-model-constructor.type.d.ts +21 -0
- package/dist/core/common/types/core-model-constructor.type.js +3 -0
- package/dist/core/common/types/core-model-constructor.type.js.map +1 -0
- package/dist/core/common/types/field-selection.type.d.ts +4 -0
- package/dist/core/common/types/field-selection.type.js +3 -0
- package/dist/core/common/types/field-selection.type.js.map +1 -0
- package/dist/core/common/types/string-or-object-id.type.d.ts +2 -0
- package/dist/core/common/types/string-or-object-id.type.js +3 -0
- package/dist/core/common/types/string-or-object-id.type.js.map +1 -0
- package/dist/core/modules/auth/core-auth.resolver.d.ts +2 -1
- package/dist/core/modules/auth/core-auth.resolver.js +4 -3
- package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth-user.service.d.ts +3 -1
- package/dist/core/modules/auth/services/core-auth-user.service.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -1
- package/dist/core/modules/auth/services/core-auth.service.js +6 -4
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/core/modules/user/core-user.model.js +1 -1
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.d.ts +16 -25
- package/dist/core/modules/user/core-user.service.js +79 -98
- package/dist/core/modules/user/core-user.service.js.map +1 -1
- package/dist/core.module.js +1 -1
- package/dist/core.module.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/server/modules/auth/auth.resolver.d.ts +2 -1
- package/dist/server/modules/auth/auth.resolver.js +4 -3
- package/dist/server/modules/auth/auth.resolver.js.map +1 -1
- package/dist/server/modules/file/file.controller.js +1 -1
- package/dist/server/modules/file/file.controller.js.map +1 -1
- package/dist/server/modules/user/avatar.controller.js +1 -1
- package/dist/server/modules/user/avatar.controller.js.map +1 -1
- package/dist/server/modules/user/user.model.d.ts +1 -0
- package/dist/server/modules/user/user.module.js +7 -3
- package/dist/server/modules/user/user.module.js.map +1 -1
- package/dist/server/modules/user/user.resolver.d.ts +8 -7
- package/dist/server/modules/user/user.resolver.js +65 -45
- package/dist/server/modules/user/user.resolver.js.map +1 -1
- package/dist/server/modules/user/user.service.d.ts +9 -18
- package/dist/server/modules/user/user.service.js +19 -30
- package/dist/server/modules/user/user.service.js.map +1 -1
- package/dist/test/test.helper.d.ts +1 -2
- package/dist/test/test.helper.js +1 -16
- package/dist/test/test.helper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +44 -45
- package/src/core/common/args/pagination.args.ts +2 -2
- package/src/core/common/helpers/config.helper.ts +26 -6
- package/src/core/common/helpers/context.helper.ts +42 -33
- package/src/core/common/helpers/db.helper.ts +580 -0
- package/src/core/common/helpers/file.helper.ts +76 -49
- package/src/core/common/helpers/filter.helper.ts +119 -96
- package/src/core/common/helpers/graphql.helper.ts +219 -117
- package/src/core/common/helpers/input.helper.ts +296 -106
- package/src/core/common/helpers/model.helper.ts +102 -57
- package/src/core/common/helpers/service.helper.ts +149 -117
- package/src/core/common/inputs/combined-filter.input.ts +2 -2
- package/src/core/common/inputs/core-input.input.ts +2 -2
- package/src/core/common/interceptors/check-response.interceptor.ts +2 -2
- package/src/core/common/interfaces/resolve-selector.interface.ts +9 -0
- package/src/core/common/interfaces/service-options.interface.ts +53 -0
- package/src/core/common/models/core-model.model.ts +6 -2
- package/src/core/common/pipes/check-input.pipe.ts +4 -4
- package/src/core/common/pipes/map-and-validate.pipe.ts +2 -2
- package/src/core/common/services/crud.service.ts +105 -0
- package/src/core/common/services/email.service.ts +9 -9
- package/src/core/common/services/module.service.ts +114 -0
- package/src/core/common/types/core-model-constructor.type.ts +30 -0
- package/src/core/common/types/field-selection.type.ts +8 -0
- package/src/core/common/types/string-or-object-id.type.ts +3 -0
- package/src/core/modules/auth/core-auth.module.ts +1 -1
- package/src/core/modules/auth/core-auth.resolver.ts +8 -3
- package/src/core/modules/auth/services/core-auth-user.service.ts +7 -1
- package/src/core/modules/auth/services/core-auth.service.ts +14 -4
- package/src/core/modules/user/core-user.model.ts +2 -1
- package/src/core/modules/user/core-user.service.ts +131 -194
- package/src/core.module.ts +2 -2
- package/src/index.ts +8 -1
- package/src/main.ts +1 -1
- package/src/server/modules/auth/auth.resolver.ts +8 -3
- package/src/server/modules/file/file.controller.ts +2 -2
- package/src/server/modules/user/avatar.controller.ts +2 -2
- package/src/server/modules/user/user.module.ts +7 -3
- package/src/server/modules/user/user.resolver.ts +62 -37
- package/src/server/modules/user/user.service.ts +23 -53
- package/src/test/test.helper.ts +31 -30
- package/dist/core/modules/user/core-basic-user.service.d.ts +0 -17
- package/dist/core/modules/user/core-basic-user.service.js +0 -73
- package/dist/core/modules/user/core-basic-user.service.js.map +0 -1
- package/src/core/modules/user/core-basic-user.service.ts +0 -138
|
@@ -17,16 +17,17 @@ const graphql_1 = require("@nestjs/graphql");
|
|
|
17
17
|
const core_auth_resolver_1 = require("../../../core/modules/auth/core-auth.resolver");
|
|
18
18
|
const auth_model_1 = require("./auth.model");
|
|
19
19
|
let AuthResolver = class AuthResolver extends core_auth_resolver_1.CoreAuthResolver {
|
|
20
|
-
async signIn(email, password) {
|
|
21
|
-
return (await this.authService.signIn(email, password));
|
|
20
|
+
async signIn(email, password, info) {
|
|
21
|
+
return (await this.authService.signIn(email, password, { fieldSelection: { info, select: 'signIn' } }));
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
__decorate([
|
|
25
25
|
(0, graphql_1.Query)((returns) => auth_model_1.Auth, { description: 'Get JWT token' }),
|
|
26
26
|
__param(0, (0, graphql_1.Args)('email')),
|
|
27
27
|
__param(1, (0, graphql_1.Args)('password')),
|
|
28
|
+
__param(2, (0, graphql_1.Info)()),
|
|
28
29
|
__metadata("design:type", Function),
|
|
29
|
-
__metadata("design:paramtypes", [String, String]),
|
|
30
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
30
31
|
__metadata("design:returntype", Promise)
|
|
31
32
|
], AuthResolver.prototype, "signIn", null);
|
|
32
33
|
AuthResolver = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.resolver.js","sourceRoot":"","sources":["../../../../src/server/modules/auth/auth.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.resolver.js","sourceRoot":"","sources":["../../../../src/server/modules/auth/auth.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA8D;AAE9D,sFAAiF;AACjF,6CAAoC;AAMpC,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,qCAAgB;IAKhD,KAAK,CAAC,MAAM,CACK,KAAa,EACV,QAAgB,EAC1B,IAAwB;QAEhC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAS,CAAC;IAClH,CAAC;CACF,CAAA;AAPC;IADC,IAAA,eAAK,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAExD,WAAA,IAAA,cAAI,EAAC,OAAO,CAAC,CAAA;IACb,WAAA,IAAA,cAAI,EAAC,UAAU,CAAC,CAAA;IAChB,WAAA,IAAA,cAAI,GAAE,CAAA;;;;0CAGR;AAXU,YAAY;IADxB,IAAA,kBAAQ,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAI,CAAC;GACV,YAAY,CAYxB;AAZY,oCAAY"}
|
|
@@ -31,7 +31,7 @@ __decorate([
|
|
|
31
31
|
(0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)('files', null, {
|
|
32
32
|
storage: (0, multer_1.diskStorage)({
|
|
33
33
|
destination: config_env_1.default.staticAssets.path,
|
|
34
|
-
filename: file_helper_1.
|
|
34
|
+
filename: (0, file_helper_1.multerRandomFileName)(),
|
|
35
35
|
}),
|
|
36
36
|
})),
|
|
37
37
|
__param(0, (0, common_1.UploadedFiles)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../../../src/server/modules/file/file.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwF;AACxF,+DAA4D;AAC5D,mCAAqC;AACrC,oDAA4C;AAC5C,qFAAwE;AACxE,oEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"file.controller.js","sourceRoot":"","sources":["../../../../src/server/modules/file/file.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwF;AACxF,+DAA4D;AAC5D,mCAAqC;AACrC,oDAA4C;AAC5C,qFAAwE;AACxE,oEAAgE;AAChE,0EAAgF;AAMhF,IAAa,cAAc,GAA3B,MAAa,cAAc;IAqBzB,UAAU,CAAkB,KAAK,EAAU,MAAW;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AAHC;IAjBC,IAAA,uBAAK,EAAC,oBAAQ,CAAC,KAAK,CAAC;IACrB,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EACd,IAAA,mCAAgB,EAAC,OAAO,EAAE,IAAI,EAAE;QAG9B,OAAO,EAAE,IAAA,oBAAW,EAAC;YAInB,WAAW,EAAE,oBAAS,CAAC,YAAY,CAAC,IAAI;YAGxC,QAAQ,EAAE,IAAA,kCAAoB,GAAE;SACjC,CAAC;KACH,CAAC,CACH;IACW,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAS,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAEzC;AAvBU,cAAc;IAD1B,IAAA,mBAAU,EAAC,OAAO,CAAC;GACP,cAAc,CAwB1B;AAxBY,wCAAc"}
|
|
@@ -34,7 +34,7 @@ let AvatarController = class AvatarController {
|
|
|
34
34
|
__decorate([
|
|
35
35
|
(0, roles_decorator_1.Roles)(role_enum_1.RoleEnum.USER),
|
|
36
36
|
(0, common_1.Post)('upload'),
|
|
37
|
-
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file', file_helper_1.
|
|
37
|
+
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file', (0, file_helper_1.multerOptionsForImageUpload)({
|
|
38
38
|
destination: config_env_1.default.staticAssets.path + '/avatars',
|
|
39
39
|
}))),
|
|
40
40
|
__param(0, (0, common_1.UploadedFile)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.controller.js","sourceRoot":"","sources":["../../../../src/server/modules/user/avatar.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,8FAAiF;AACjF,+DAA2D;AAC3D,oDAA4C;AAC5C,6FAA+E;AAC/E,qFAAwE;AACxE,oEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"avatar.controller.js","sourceRoot":"","sources":["../../../../src/server/modules/user/avatar.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,8FAAiF;AACjF,+DAA2D;AAC3D,oDAA4C;AAC5C,6FAA+E;AAC/E,qFAAwE;AACxE,oEAAgE;AAChE,0EAAuF;AACvF,6CAAoC;AACpC,iDAA6C;AAM7C,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAI3B,YAA+B,YAAyB;QAAzB,iBAAY,GAAZ,YAAY,CAAa;IAAG,CAAC;IAe5D,UAAU,CAAiB,IAAyB,EAAc,IAAU;QAC1E,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAHC;IAVC,IAAA,uBAAK,EAAC,oBAAQ,CAAC,IAAI,CAAC;IACpB,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EACd,IAAA,kCAAe,EACb,MAAM,EACN,IAAA,yCAA2B,EAAC;QAC1B,WAAW,EAAE,oBAAS,CAAC,YAAY,CAAC,IAAI,GAAG,UAAU;KACtD,CAAC,CACH,CACF;IACW,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,8BAAQ,GAAE,CAAA;;6CAAO,iBAAI;;kDAE3E;AArBU,gBAAgB;IAD5B,IAAA,iCAAU,EAAC,QAAQ,CAAC;qCAK0B,0BAAW;GAJ7C,gBAAgB,CAsB5B;AAtBY,4CAAgB"}
|
|
@@ -8,13 +8,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.UserModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
12
|
+
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
11
13
|
const json_scalar_1 = require("../../../core/common/scalars/json.scalar");
|
|
12
14
|
const avatar_controller_1 = require("./avatar.controller");
|
|
13
15
|
const user_model_1 = require("./user.model");
|
|
14
16
|
const user_resolver_1 = require("./user.resolver");
|
|
15
17
|
const user_service_1 = require("./user.service");
|
|
16
|
-
const mongoose_1 = require("@nestjs/mongoose");
|
|
17
|
-
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
18
18
|
let UserModule = class UserModule {
|
|
19
19
|
};
|
|
20
20
|
UserModule = __decorate([
|
|
@@ -25,12 +25,16 @@ UserModule = __decorate([
|
|
|
25
25
|
json_scalar_1.JSON,
|
|
26
26
|
user_resolver_1.UserResolver,
|
|
27
27
|
user_service_1.UserService,
|
|
28
|
+
{
|
|
29
|
+
provide: 'USER_CLASS',
|
|
30
|
+
useValue: user_model_1.User,
|
|
31
|
+
},
|
|
28
32
|
{
|
|
29
33
|
provide: 'PUB_SUB',
|
|
30
34
|
useValue: new graphql_subscriptions_1.PubSub(),
|
|
31
35
|
},
|
|
32
36
|
],
|
|
33
|
-
exports: [mongoose_1.MongooseModule, user_resolver_1.UserResolver, user_service_1.UserService],
|
|
37
|
+
exports: [mongoose_1.MongooseModule, user_resolver_1.UserResolver, user_service_1.UserService, 'USER_CLASS'],
|
|
34
38
|
})
|
|
35
39
|
], UserModule);
|
|
36
40
|
exports.UserModule = UserModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.module.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,0EAAgE;AAChE,2DAAuD;AACvD,6CAAgD;AAChD,mDAA+C;AAC/C,iDAA6C;
|
|
1
|
+
{"version":3,"file":"user.module.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAAkD;AAClD,iEAA+C;AAC/C,0EAAgE;AAChE,2DAAuD;AACvD,6CAAgD;AAChD,mDAA+C;AAC/C,iDAA6C;AAuB7C,IAAa,UAAU,GAAvB,MAAa,UAAU;CAAG,CAAA;AAAb,UAAU;IAlBtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,yBAAc,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,IAAI,EAAE,MAAM,EAAE,uBAAU,EAAE,CAAC,CAAC,CAAC;QAC/E,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE;YACT,kBAAI;YACJ,4BAAY;YACZ,0BAAW;YACX;gBACE,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,iBAAI;aACf;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,IAAI,8BAAM,EAAE;aACvB;SACF;QACD,OAAO,EAAE,CAAC,yBAAc,EAAE,4BAAY,EAAE,0BAAW,EAAE,YAAY,CAAC;KACnE,CAAC;GACW,UAAU,CAAG;AAAb,gCAAU"}
|
|
@@ -6,16 +6,17 @@ import { UserInput } from './inputs/user.input';
|
|
|
6
6
|
import { User } from './user.model';
|
|
7
7
|
import { UserService } from './user.service';
|
|
8
8
|
export declare class UserResolver {
|
|
9
|
-
protected readonly
|
|
9
|
+
protected readonly userService: UserService;
|
|
10
10
|
protected readonly pubSub: PubSub;
|
|
11
|
-
constructor(
|
|
12
|
-
getUser(id: string, info: GraphQLResolveInfo): Promise<User>;
|
|
11
|
+
constructor(userService: UserService, pubSub: PubSub);
|
|
13
12
|
findUsers(info: GraphQLResolveInfo, args?: FilterArgs): Promise<User[]>;
|
|
13
|
+
getUser(id: string, info: GraphQLResolveInfo): Promise<User>;
|
|
14
|
+
getVerifiedState(token: string): Promise<boolean>;
|
|
14
15
|
requestPasswordResetMail(email: string): Promise<boolean>;
|
|
15
|
-
|
|
16
|
-
resetPassword(token: string, password: string): Promise<boolean>;
|
|
17
|
-
createUser(input: UserCreateInput, user: User): Promise<User>;
|
|
18
|
-
updateUser(input: UserInput, id: string, user: User): Promise<User>;
|
|
16
|
+
createUser(input: UserCreateInput, user: User, info: GraphQLResolveInfo): Promise<User>;
|
|
19
17
|
deleteUser(id: string, info: GraphQLResolveInfo): Promise<User>;
|
|
18
|
+
resetPassword(token: string, password: string): Promise<boolean>;
|
|
19
|
+
updateUser(input: UserInput, id: string, user: User, info: GraphQLResolveInfo): Promise<User>;
|
|
20
|
+
verifyUser(token: string): Promise<boolean>;
|
|
20
21
|
userCreated(): Promise<AsyncIterator<unknown, any, undefined>>;
|
|
21
22
|
}
|
|
@@ -13,6 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.UserResolver = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
16
17
|
const graphql_1 = require("@nestjs/graphql");
|
|
17
18
|
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
18
19
|
const filter_args_1 = require("../../../core/common/args/filter.args");
|
|
@@ -24,43 +25,58 @@ const user_create_input_1 = require("./inputs/user-create.input");
|
|
|
24
25
|
const user_input_1 = require("./inputs/user.input");
|
|
25
26
|
const user_model_1 = require("./user.model");
|
|
26
27
|
const user_service_1 = require("./user.service");
|
|
27
|
-
const common_1 = require("@nestjs/common");
|
|
28
28
|
let UserResolver = class UserResolver {
|
|
29
|
-
constructor(
|
|
30
|
-
this.
|
|
29
|
+
constructor(userService, pubSub) {
|
|
30
|
+
this.userService = userService;
|
|
31
31
|
this.pubSub = pubSub;
|
|
32
32
|
}
|
|
33
|
+
async findUsers(info, args) {
|
|
34
|
+
return await this.userService.find(args, { fieldSelection: { info, select: 'findUsers' } });
|
|
35
|
+
}
|
|
33
36
|
async getUser(id, info) {
|
|
34
|
-
return await this.
|
|
37
|
+
return await this.userService.get(id, { fieldSelection: { info, select: 'getUser' } });
|
|
35
38
|
}
|
|
36
|
-
async
|
|
37
|
-
return await this.
|
|
39
|
+
async getVerifiedState(token) {
|
|
40
|
+
return await this.userService.getVerifiedState(token);
|
|
38
41
|
}
|
|
39
42
|
async requestPasswordResetMail(email) {
|
|
40
|
-
return !!(await this.
|
|
43
|
+
return !!(await this.userService.sendPasswordResetMail(email));
|
|
41
44
|
}
|
|
42
|
-
async
|
|
43
|
-
|
|
45
|
+
async createUser(input, user, info) {
|
|
46
|
+
input = await (0, input_helper_1.check)(input, user, user_create_input_1.UserCreateInput);
|
|
47
|
+
return await this.userService.create(input, { currentUser: user, fieldSelection: { info, select: 'createUser' } });
|
|
44
48
|
}
|
|
45
|
-
async
|
|
46
|
-
return
|
|
49
|
+
async deleteUser(id, info) {
|
|
50
|
+
return await this.userService.delete(id, { fieldSelection: { info, select: 'deleteUser' } });
|
|
47
51
|
}
|
|
48
|
-
async
|
|
49
|
-
|
|
50
|
-
return await this.usersService.create(input, user);
|
|
52
|
+
async resetPassword(token, password) {
|
|
53
|
+
return !!(await this.userService.resetPassword(token, password));
|
|
51
54
|
}
|
|
52
|
-
async updateUser(input, id, user) {
|
|
53
|
-
input = await input_helper_1.
|
|
54
|
-
return await this.
|
|
55
|
+
async updateUser(input, id, user, info) {
|
|
56
|
+
input = await (0, input_helper_1.check)(input, user, user_input_1.UserInput);
|
|
57
|
+
return await this.userService.update(id, input, {
|
|
58
|
+
currentUser: user,
|
|
59
|
+
fieldSelection: { info, select: 'updateUser' },
|
|
60
|
+
});
|
|
55
61
|
}
|
|
56
|
-
async
|
|
57
|
-
return await this.
|
|
62
|
+
async verifyUser(token) {
|
|
63
|
+
return !!(await this.userService.verify(token));
|
|
58
64
|
}
|
|
59
65
|
async userCreated() {
|
|
60
66
|
return this.pubSub.asyncIterator('userCreated');
|
|
61
67
|
}
|
|
62
68
|
};
|
|
63
69
|
__decorate([
|
|
70
|
+
(0, roles_decorator_1.Roles)(role_enum_1.RoleEnum.ADMIN),
|
|
71
|
+
(0, graphql_1.Query)((returns) => [user_model_1.User], { description: 'Find users (via filter)' }),
|
|
72
|
+
__param(0, (0, graphql_1.Info)()),
|
|
73
|
+
__param(1, (0, graphql_1.Args)()),
|
|
74
|
+
__metadata("design:type", Function),
|
|
75
|
+
__metadata("design:paramtypes", [Object, filter_args_1.FilterArgs]),
|
|
76
|
+
__metadata("design:returntype", Promise)
|
|
77
|
+
], UserResolver.prototype, "findUsers", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, roles_decorator_1.Roles)(role_enum_1.RoleEnum.OWNER, role_enum_1.RoleEnum.ADMIN),
|
|
64
80
|
(0, graphql_1.Query)((returns) => user_model_1.User, { description: 'Get user with specified ID' }),
|
|
65
81
|
__param(0, (0, graphql_1.Args)('id')),
|
|
66
82
|
__param(1, (0, graphql_1.Info)()),
|
|
@@ -69,14 +85,12 @@ __decorate([
|
|
|
69
85
|
__metadata("design:returntype", Promise)
|
|
70
86
|
], UserResolver.prototype, "getUser", null);
|
|
71
87
|
__decorate([
|
|
72
|
-
(0,
|
|
73
|
-
(0, graphql_1.
|
|
74
|
-
__param(0, (0, graphql_1.Info)()),
|
|
75
|
-
__param(1, (0, graphql_1.Args)()),
|
|
88
|
+
(0, graphql_1.Query)((returns) => Boolean, { description: 'Get verified state of user with token' }),
|
|
89
|
+
__param(0, (0, graphql_1.Args)('token')),
|
|
76
90
|
__metadata("design:type", Function),
|
|
77
|
-
__metadata("design:paramtypes", [
|
|
91
|
+
__metadata("design:paramtypes", [String]),
|
|
78
92
|
__metadata("design:returntype", Promise)
|
|
79
|
-
], UserResolver.prototype, "
|
|
93
|
+
], UserResolver.prototype, "getVerifiedState", null);
|
|
80
94
|
__decorate([
|
|
81
95
|
(0, graphql_1.Query)((returns) => Boolean, { description: 'Request new password for user with email' }),
|
|
82
96
|
__param(0, (0, graphql_1.Args)('email')),
|
|
@@ -85,12 +99,24 @@ __decorate([
|
|
|
85
99
|
__metadata("design:returntype", Promise)
|
|
86
100
|
], UserResolver.prototype, "requestPasswordResetMail", null);
|
|
87
101
|
__decorate([
|
|
88
|
-
(0, graphql_1.Mutation)((returns) =>
|
|
89
|
-
__param(0, (0, graphql_1.Args)('
|
|
102
|
+
(0, graphql_1.Mutation)((returns) => user_model_1.User, { description: 'Create a new user' }),
|
|
103
|
+
__param(0, (0, graphql_1.Args)('input')),
|
|
104
|
+
__param(1, (0, graphql_user_decorator_1.GraphQLUser)()),
|
|
105
|
+
__param(2, (0, graphql_1.Info)()),
|
|
90
106
|
__metadata("design:type", Function),
|
|
91
|
-
__metadata("design:paramtypes", [
|
|
107
|
+
__metadata("design:paramtypes", [user_create_input_1.UserCreateInput,
|
|
108
|
+
user_model_1.User, Object]),
|
|
92
109
|
__metadata("design:returntype", Promise)
|
|
93
|
-
], UserResolver.prototype, "
|
|
110
|
+
], UserResolver.prototype, "createUser", null);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, roles_decorator_1.Roles)(role_enum_1.RoleEnum.ADMIN, role_enum_1.RoleEnum.OWNER),
|
|
113
|
+
(0, graphql_1.Mutation)((returns) => user_model_1.User, { description: 'Delete existing user' }),
|
|
114
|
+
__param(0, (0, graphql_1.Args)('id')),
|
|
115
|
+
__param(1, (0, graphql_1.Info)()),
|
|
116
|
+
__metadata("design:type", Function),
|
|
117
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
118
|
+
__metadata("design:returntype", Promise)
|
|
119
|
+
], UserResolver.prototype, "deleteUser", null);
|
|
94
120
|
__decorate([
|
|
95
121
|
(0, graphql_1.Mutation)((returns) => Boolean, { description: 'Set new password for user with token' }),
|
|
96
122
|
__param(0, (0, graphql_1.Args)('token')),
|
|
@@ -99,36 +125,30 @@ __decorate([
|
|
|
99
125
|
__metadata("design:paramtypes", [String, String]),
|
|
100
126
|
__metadata("design:returntype", Promise)
|
|
101
127
|
], UserResolver.prototype, "resetPassword", null);
|
|
102
|
-
__decorate([
|
|
103
|
-
(0, graphql_1.Mutation)((returns) => user_model_1.User, { description: 'Create a new user' }),
|
|
104
|
-
__param(0, (0, graphql_1.Args)('input')),
|
|
105
|
-
__param(1, (0, graphql_user_decorator_1.GraphQLUser)()),
|
|
106
|
-
__metadata("design:type", Function),
|
|
107
|
-
__metadata("design:paramtypes", [user_create_input_1.UserCreateInput, user_model_1.User]),
|
|
108
|
-
__metadata("design:returntype", Promise)
|
|
109
|
-
], UserResolver.prototype, "createUser", null);
|
|
110
128
|
__decorate([
|
|
111
129
|
(0, roles_decorator_1.Roles)(role_enum_1.RoleEnum.ADMIN, role_enum_1.RoleEnum.OWNER),
|
|
112
130
|
(0, graphql_1.Mutation)((returns) => user_model_1.User, { description: 'Update existing user' }),
|
|
113
131
|
__param(0, (0, graphql_1.Args)('input')),
|
|
114
132
|
__param(1, (0, graphql_1.Args)('id')),
|
|
115
133
|
__param(2, (0, graphql_user_decorator_1.GraphQLUser)()),
|
|
134
|
+
__param(3, (0, graphql_1.Info)()),
|
|
116
135
|
__metadata("design:type", Function),
|
|
117
|
-
__metadata("design:paramtypes", [user_input_1.UserInput, String, user_model_1.User]),
|
|
136
|
+
__metadata("design:paramtypes", [user_input_1.UserInput, String, user_model_1.User, Object]),
|
|
118
137
|
__metadata("design:returntype", Promise)
|
|
119
138
|
], UserResolver.prototype, "updateUser", null);
|
|
120
139
|
__decorate([
|
|
121
|
-
(0,
|
|
122
|
-
(0, graphql_1.
|
|
123
|
-
__param(0, (0, graphql_1.Args)('id')),
|
|
124
|
-
__param(1, (0, graphql_1.Info)()),
|
|
140
|
+
(0, graphql_1.Mutation)((returns) => Boolean, { description: 'Verify user with email' }),
|
|
141
|
+
__param(0, (0, graphql_1.Args)('token')),
|
|
125
142
|
__metadata("design:type", Function),
|
|
126
|
-
__metadata("design:paramtypes", [String
|
|
143
|
+
__metadata("design:paramtypes", [String]),
|
|
127
144
|
__metadata("design:returntype", Promise)
|
|
128
|
-
], UserResolver.prototype, "
|
|
145
|
+
], UserResolver.prototype, "verifyUser", null);
|
|
129
146
|
__decorate([
|
|
130
147
|
(0, graphql_1.Subscription)((returns) => user_model_1.User, {
|
|
131
|
-
|
|
148
|
+
filter(payload, variables, context) {
|
|
149
|
+
return context.user.roles.include(role_enum_1.RoleEnum.ADMIN);
|
|
150
|
+
},
|
|
151
|
+
resolve: (user) => user,
|
|
132
152
|
}),
|
|
133
153
|
__metadata("design:type", Function),
|
|
134
154
|
__metadata("design:paramtypes", []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.resolver.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAsF;AAEtF,iEAA+C;AAC/C,uEAAmE;AACnE,mGAAqF;AACrF,qFAAwE;AACxE,oEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"user.resolver.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
/// <reference types="multer" />
|
|
2
|
-
import {
|
|
2
|
+
import { PubSub } from 'graphql-subscriptions';
|
|
3
|
+
import { Model } from 'mongoose';
|
|
4
|
+
import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
|
|
3
5
|
import { ConfigService } from '../../../core/common/services/config.service';
|
|
4
6
|
import { EmailService } from '../../../core/common/services/email.service';
|
|
7
|
+
import { CoreModelConstructor } from '../../../core/common/types/core-model-constructor.type';
|
|
5
8
|
import { CoreUserService } from '../../../core/modules/user/core-user.service';
|
|
6
9
|
import { UserCreateInput } from './inputs/user-create.input';
|
|
7
10
|
import { UserInput } from './inputs/user.input';
|
|
8
11
|
import { User, UserDocument } from './user.model';
|
|
9
|
-
import { Model } from 'mongoose';
|
|
10
|
-
import { ICorePersistenceModel } from '../../../core/common/interfaces/core-persistence-model.interface';
|
|
11
|
-
import { PubSub } from 'graphql-subscriptions';
|
|
12
12
|
export declare class UserService extends CoreUserService<User, UserInput, UserCreateInput> {
|
|
13
13
|
protected readonly configService: ConfigService;
|
|
14
14
|
protected readonly emailService: EmailService;
|
|
15
|
-
protected readonly
|
|
15
|
+
protected readonly mainModelConstructor: CoreModelConstructor<User>;
|
|
16
|
+
protected readonly mainDbModel: Model<UserDocument>;
|
|
16
17
|
protected readonly pubSub: PubSub;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
find(filterArgs?: FilterArgs, ...args: any[]): Promise<User[]>;
|
|
21
|
-
sendPasswordResetMail(email: string): Promise<User>;
|
|
18
|
+
constructor(configService: ConfigService, emailService: EmailService, mainModelConstructor: CoreModelConstructor<User>, mainDbModel: Model<UserDocument>, pubSub: PubSub);
|
|
19
|
+
create(input: UserCreateInput, serviceOptions?: ServiceOptions): Promise<User>;
|
|
20
|
+
sendPasswordResetMail(email: string, serviceOptions?: ServiceOptions): Promise<User>;
|
|
22
21
|
setAvatar(file: Express.Multer.File, user: User): Promise<string>;
|
|
23
|
-
protected prepareInput(input: {
|
|
24
|
-
[key: string]: any;
|
|
25
|
-
}, currentUser: User, options?: {
|
|
26
|
-
create?: boolean;
|
|
27
|
-
}): Promise<{
|
|
28
|
-
[key: string]: any;
|
|
29
|
-
}>;
|
|
30
|
-
protected prepareOutput(user: User): Promise<User>;
|
|
31
22
|
}
|
|
@@ -14,42 +14,37 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.UserService = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
17
18
|
const fs = require("fs");
|
|
19
|
+
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
20
|
+
const mongoose_2 = require("mongoose");
|
|
18
21
|
const config_env_1 = require("../../../config.env");
|
|
19
|
-
const filter_helper_1 = require("../../../core/common/helpers/filter.helper");
|
|
20
|
-
const service_helper_1 = require("../../../core/common/helpers/service.helper");
|
|
21
22
|
const config_service_1 = require("../../../core/common/services/config.service");
|
|
22
23
|
const email_service_1 = require("../../../core/common/services/email.service");
|
|
23
24
|
const core_user_service_1 = require("../../../core/modules/user/core-user.service");
|
|
24
25
|
const user_model_1 = require("./user.model");
|
|
25
|
-
const mongoose_1 = require("@nestjs/mongoose");
|
|
26
|
-
const mongoose_2 = require("mongoose");
|
|
27
|
-
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
|
28
26
|
let UserService = class UserService extends core_user_service_1.CoreUserService {
|
|
29
|
-
constructor(configService, emailService,
|
|
30
|
-
super(
|
|
27
|
+
constructor(configService, emailService, mainModelConstructor, mainDbModel, pubSub) {
|
|
28
|
+
super(emailService, mainDbModel, mainModelConstructor);
|
|
31
29
|
this.configService = configService;
|
|
32
30
|
this.emailService = emailService;
|
|
33
|
-
this.
|
|
31
|
+
this.mainModelConstructor = mainModelConstructor;
|
|
32
|
+
this.mainDbModel = mainDbModel;
|
|
34
33
|
this.pubSub = pubSub;
|
|
35
|
-
this.model = user_model_1.User;
|
|
36
34
|
}
|
|
37
|
-
async create(input,
|
|
38
|
-
const user = await super.create(input,
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
async create(input, serviceOptions) {
|
|
36
|
+
const user = await super.create(input, serviceOptions);
|
|
37
|
+
if ((serviceOptions === null || serviceOptions === void 0 ? void 0 : serviceOptions.pubSub) === undefined || serviceOptions.pubSub) {
|
|
38
|
+
await this.pubSub.publish('userCreated', user_model_1.User.map(user));
|
|
39
|
+
}
|
|
41
40
|
await this.emailService.sendMail(user.email, 'Welcome', {
|
|
42
41
|
htmlTemplate: 'welcome',
|
|
43
42
|
templateData: { name: user.username, link: config_env_1.default.email.verificationLink + '/' + user.verificationToken },
|
|
44
43
|
});
|
|
45
44
|
return user;
|
|
46
45
|
}
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
return this.userModel.find(filterQuery[0], null, filterQuery[1]).exec();
|
|
50
|
-
}
|
|
51
|
-
async sendPasswordResetMail(email) {
|
|
52
|
-
const user = await super.setPasswordResetTokenForEmail(email);
|
|
46
|
+
async sendPasswordResetMail(email, serviceOptions) {
|
|
47
|
+
const user = await super.setPasswordResetTokenForEmail(email, serviceOptions);
|
|
53
48
|
await this.emailService.sendMail(user.email, 'Password reset', {
|
|
54
49
|
htmlTemplate: 'password-reset',
|
|
55
50
|
templateData: { name: user.username, link: config_env_1.default.email.passwordResetLink + '/' + user.passwordResetToken },
|
|
@@ -57,7 +52,7 @@ let UserService = class UserService extends core_user_service_1.CoreUserService
|
|
|
57
52
|
return user;
|
|
58
53
|
}
|
|
59
54
|
async setAvatar(file, user) {
|
|
60
|
-
const dbUser = await this.
|
|
55
|
+
const dbUser = await this.mainDbModel.findOne({ id: user.id }).exec();
|
|
61
56
|
if (!dbUser) {
|
|
62
57
|
throw new common_1.UnauthorizedException();
|
|
63
58
|
}
|
|
@@ -75,20 +70,14 @@ let UserService = class UserService extends core_user_service_1.CoreUserService
|
|
|
75
70
|
await dbUser.save();
|
|
76
71
|
return file.filename;
|
|
77
72
|
}
|
|
78
|
-
async prepareInput(input, currentUser, options = {}) {
|
|
79
|
-
return service_helper_1.ServiceHelper.prepareInput(input, currentUser, options);
|
|
80
|
-
}
|
|
81
|
-
async prepareOutput(user) {
|
|
82
|
-
return service_helper_1.ServiceHelper.prepareOutput(user);
|
|
83
|
-
}
|
|
84
73
|
};
|
|
85
74
|
UserService = __decorate([
|
|
86
75
|
(0, common_1.Injectable)(),
|
|
87
|
-
__param(2, (0,
|
|
88
|
-
__param(3, (0,
|
|
76
|
+
__param(2, (0, common_1.Inject)('USER_CLASS')),
|
|
77
|
+
__param(3, (0, mongoose_1.InjectModel)('User')),
|
|
78
|
+
__param(4, (0, common_1.Inject)('PUB_SUB')),
|
|
89
79
|
__metadata("design:paramtypes", [config_service_1.ConfigService,
|
|
90
|
-
email_service_1.EmailService,
|
|
91
|
-
mongoose_2.Model,
|
|
80
|
+
email_service_1.EmailService, Object, mongoose_2.Model,
|
|
92
81
|
graphql_subscriptions_1.PubSub])
|
|
93
82
|
], UserService);
|
|
94
83
|
exports.UserService = UserService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyG;AACzG,yBAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../../src/server/modules/user/user.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { INestApplication } from '@nestjs/common';
|
|
2
|
-
import { FastifyInstance } from 'fastify';
|
|
3
2
|
import * as LightMyRequest from 'light-my-request';
|
|
4
3
|
export declare enum TestGraphQLType {
|
|
5
4
|
QUERY = "query",
|
|
@@ -34,7 +33,7 @@ export interface TestRestOptions {
|
|
|
34
33
|
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
35
34
|
}
|
|
36
35
|
export declare class TestHelper {
|
|
37
|
-
app:
|
|
36
|
+
app: INestApplication;
|
|
38
37
|
constructor(app: any);
|
|
39
38
|
graphQl(graphql: string | TestGraphQLConfig, options?: TestGraphQLOptions): Promise<any>;
|
|
40
39
|
rest(url: string, options?: TestRestOptions): Promise<any>;
|
package/dist/test/test.helper.js
CHANGED
|
@@ -66,12 +66,6 @@ class TestHelper {
|
|
|
66
66
|
requestConfig.headers = { authorization: `Bearer ${token}` };
|
|
67
67
|
}
|
|
68
68
|
const response = await this.getResponse(token, requestConfig, statusCode, log, logError);
|
|
69
|
-
if (this.app.inject) {
|
|
70
|
-
expect(response.headers['content-type']).toBe('application/json');
|
|
71
|
-
return JSON.parse(response.payload).data
|
|
72
|
-
? JSON.parse(response.payload).data[graphql.name]
|
|
73
|
-
: JSON.parse(response.payload);
|
|
74
|
-
}
|
|
75
69
|
expect(response.headers['content-type']).toMatch('application/json');
|
|
76
70
|
return response.body.data ? response.body.data[graphql.name] : response.body;
|
|
77
71
|
}
|
|
@@ -135,21 +129,12 @@ class TestHelper {
|
|
|
135
129
|
if (token) {
|
|
136
130
|
requestConfig.headers = { authorization: `Bearer ${token}` };
|
|
137
131
|
}
|
|
138
|
-
let response;
|
|
139
|
-
if (this.app.inject) {
|
|
140
|
-
response = await this.app.inject(requestConfig);
|
|
141
|
-
if (log) {
|
|
142
|
-
console.log(response);
|
|
143
|
-
}
|
|
144
|
-
expect(response.statusCode).toBe(statusCode);
|
|
145
|
-
return response;
|
|
146
|
-
}
|
|
147
132
|
const method = requestConfig.method.toLowerCase();
|
|
148
133
|
let request = supertest(this.app.getHttpServer())[method](requestConfig.url);
|
|
149
134
|
if (token) {
|
|
150
135
|
request = request.set('Authorization', 'bearer ' + token);
|
|
151
136
|
}
|
|
152
|
-
response = await request.send(requestConfig.payload);
|
|
137
|
+
const response = await request.send(requestConfig.payload);
|
|
153
138
|
if (log) {
|
|
154
139
|
console.log(response);
|
|
155
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.helper.js","sourceRoot":"","sources":["../../src/test/test.helper.ts"],"names":[],"mappings":";;;AAEA,iEAA2D;AAE3D,uCAAuC;AACvC,6BAA6B;AAK7B,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,wCAAqB,CAAA;IACrB,gDAA6B,CAAA;AAC/B,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;AAwFD,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"test.helper.js","sourceRoot":"","sources":["../../src/test/test.helper.ts"],"names":[],"mappings":"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"}
|