typescript-express-starter 9.2.0 → 10.0.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/CONTRIBUTORS.md +69 -0
- package/README.kr.md +122 -167
- package/README.md +118 -163
- package/bin/cli.js +1 -1
- package/lib/default/.swcrc +0 -3
- package/lib/default/Dockerfile.dev +18 -0
- package/lib/default/Dockerfile.prod +18 -0
- package/lib/default/Makefile +29 -16
- package/lib/default/docker-compose.yml +8 -8
- package/lib/default/package.json +3 -1
- package/lib/default/src/app.ts +4 -5
- package/lib/default/src/controllers/auth.controller.ts +9 -11
- package/lib/default/src/controllers/users.controller.ts +11 -13
- package/lib/default/src/dtos/users.dto.ts +12 -1
- package/lib/default/src/interfaces/users.interface.ts +2 -2
- package/lib/default/src/middlewares/auth.middleware.ts +16 -10
- package/lib/default/src/middlewares/error.middleware.ts +2 -4
- package/lib/default/src/middlewares/validation.middleware.ts +22 -20
- package/lib/default/src/models/users.model.ts +6 -8
- package/lib/default/src/routes/auth.route.ts +8 -11
- package/lib/default/src/routes/users.route.ts +10 -12
- package/lib/default/src/server.ts +6 -7
- package/lib/default/src/services/auth.service.ts +22 -33
- package/lib/default/src/services/users.service.ts +16 -25
- package/lib/{graphql/src/tests → default/src/test}/auth.test.ts +21 -21
- package/lib/default/src/test/users.test.ts +62 -0
- package/lib/default/src/utils/validateEnv.ts +1 -3
- package/lib/default/tsconfig.json +1 -1
- package/lib/graphql/.env.development.local +6 -6
- package/lib/graphql/.env.production.local +6 -6
- package/lib/graphql/.env.test.local +6 -6
- package/lib/graphql/.swcrc +1 -1
- package/lib/graphql/Dockerfile.dev +19 -0
- package/lib/graphql/Dockerfile.prod +19 -0
- package/lib/graphql/Makefile +32 -15
- package/lib/graphql/docker-compose.yml +23 -15
- package/lib/graphql/package.json +2 -1
- package/lib/graphql/src/app.ts +16 -16
- package/lib/graphql/src/config/index.ts +2 -2
- package/lib/graphql/src/database/index.ts +26 -0
- package/lib/graphql/src/dtos/users.dto.ts +14 -1
- package/lib/graphql/src/interfaces/users.interface.ts +2 -2
- package/lib/graphql/src/middlewares/auth.middleware.ts +16 -6
- package/lib/graphql/src/middlewares/error.middleware.ts +2 -4
- package/lib/graphql/src/repositories/auth.repository.ts +16 -24
- package/lib/graphql/src/repositories/users.repository.ts +5 -14
- package/lib/graphql/src/resolvers/auth.resolver.ts +2 -2
- package/lib/graphql/src/resolvers/users.resolver.ts +4 -4
- package/lib/graphql/src/server.ts +6 -7
- package/lib/graphql/src/test/auth.test.ts +10 -0
- package/lib/graphql/src/test/users.test.ts +11 -0
- package/lib/graphql/src/typedefs/users.type.ts +2 -2
- package/lib/graphql/src/utils/logger.ts +2 -0
- package/lib/graphql/src/utils/validateEnv.ts +1 -3
- package/lib/graphql/tsconfig.json +2 -2
- package/lib/knex/.env.development.local +2 -2
- package/lib/knex/.env.production.local +3 -3
- package/lib/knex/.env.test.local +3 -3
- package/lib/knex/.swcrc +1 -1
- package/lib/knex/Dockerfile.dev +19 -0
- package/lib/knex/Dockerfile.prod +19 -0
- package/lib/knex/Makefile +32 -15
- package/lib/knex/docker-compose.yml +19 -14
- package/lib/knex/knexfile.ts +7 -9
- package/lib/knex/package.json +2 -0
- package/lib/knex/src/app.ts +7 -9
- package/lib/knex/src/config/index.ts +2 -1
- package/lib/knex/src/controllers/auth.controller.ts +9 -11
- package/lib/knex/src/controllers/users.controller.ts +10 -12
- package/lib/knex/src/database/index.ts +24 -0
- package/lib/knex/src/database/migrations/20210713110926_initial.ts +17 -0
- package/lib/knex/src/dtos/users.dto.ts +12 -1
- package/lib/knex/src/interfaces/users.interface.ts +2 -2
- package/lib/knex/src/middlewares/auth.middleware.ts +17 -10
- package/lib/knex/src/middlewares/error.middleware.ts +2 -4
- package/lib/knex/src/middlewares/validation.middleware.ts +22 -20
- package/lib/knex/src/models/users.model.ts +2 -2
- package/lib/knex/src/routes/auth.route.ts +8 -10
- package/lib/knex/src/routes/users.route.ts +10 -12
- package/lib/knex/src/server.ts +6 -7
- package/lib/knex/src/services/auth.service.ts +24 -33
- package/lib/knex/src/services/users.service.ts +14 -19
- package/lib/knex/src/{tests → test}/auth.test.ts +2 -2
- package/lib/knex/src/{tests → test}/users.test.ts +2 -2
- package/lib/knex/src/utils/validateEnv.ts +1 -3
- package/lib/knex/tsconfig.json +2 -2
- package/lib/mikro-orm/.env.production.local +1 -1
- package/lib/mikro-orm/.env.test.local +1 -1
- package/lib/mikro-orm/.swcrc +1 -1
- package/lib/mikro-orm/Dockerfile.dev +19 -0
- package/lib/mikro-orm/Dockerfile.prod +19 -0
- package/lib/mikro-orm/Makefile +32 -15
- package/lib/mikro-orm/docker-compose.yml +20 -11
- package/lib/mikro-orm/package.json +2 -0
- package/lib/mikro-orm/src/app.ts +12 -13
- package/lib/mikro-orm/src/config/index.ts +2 -1
- package/lib/mikro-orm/src/controllers/auth.controller.ts +9 -11
- package/lib/mikro-orm/src/controllers/users.controller.ts +11 -13
- package/lib/mikro-orm/src/dtos/users.dto.ts +12 -1
- package/lib/mikro-orm/src/interfaces/users.interface.ts +1 -1
- package/lib/mikro-orm/src/middlewares/auth.middleware.ts +17 -10
- package/lib/mikro-orm/src/middlewares/error.middleware.ts +2 -4
- package/lib/mikro-orm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mikro-orm/src/routes/auth.route.ts +8 -10
- package/lib/mikro-orm/src/routes/users.route.ts +9 -11
- package/lib/mikro-orm/src/server.ts +6 -7
- package/lib/mikro-orm/src/services/auth.service.ts +19 -29
- package/lib/mikro-orm/src/services/users.service.ts +8 -16
- package/lib/mikro-orm/src/{tests → test}/auth.test.ts +3 -4
- package/lib/mikro-orm/src/{tests → test}/users.test.ts +4 -5
- package/lib/mikro-orm/src/utils/validateEnv.ts +1 -3
- package/lib/mikro-orm/tsconfig.json +2 -2
- package/lib/mongoose/.env.production.local +1 -1
- package/lib/mongoose/.env.test.local +1 -1
- package/lib/mongoose/.swcrc +1 -1
- package/lib/mongoose/Dockerfile.dev +19 -0
- package/lib/mongoose/Dockerfile.prod +19 -0
- package/lib/mongoose/Makefile +32 -15
- package/lib/mongoose/docker-compose.yml +20 -11
- package/lib/mongoose/package.json +2 -0
- package/lib/mongoose/src/app.ts +7 -13
- package/lib/mongoose/src/config/index.ts +2 -1
- package/lib/mongoose/src/controllers/auth.controller.ts +9 -11
- package/lib/mongoose/src/controllers/users.controller.ts +11 -13
- package/lib/mongoose/src/database/index.ts +18 -0
- package/lib/mongoose/src/dtos/users.dto.ts +12 -1
- package/lib/mongoose/src/interfaces/users.interface.ts +1 -1
- package/lib/mongoose/src/middlewares/auth.middleware.ts +16 -9
- package/lib/mongoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/mongoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mongoose/src/models/users.model.ts +2 -4
- package/lib/mongoose/src/routes/auth.route.ts +8 -10
- package/lib/mongoose/src/routes/users.route.ts +9 -11
- package/lib/mongoose/src/server.ts +6 -7
- package/lib/mongoose/src/services/auth.service.ts +22 -33
- package/lib/mongoose/src/services/users.service.ts +14 -24
- package/lib/{typegoose/src/tests → mongoose/src/test}/users.test.ts +7 -7
- package/lib/mongoose/src/utils/validateEnv.ts +1 -3
- package/lib/mongoose/tsconfig.json +2 -2
- package/lib/node-postgres/.dockerignore +18 -0
- package/lib/node-postgres/.editorconfig +9 -0
- package/lib/node-postgres/.env.development.local +13 -0
- package/lib/node-postgres/.env.production.local +13 -0
- package/lib/node-postgres/.env.test.local +13 -0
- package/lib/node-postgres/.eslintignore +1 -0
- package/lib/node-postgres/.eslintrc +18 -0
- package/lib/node-postgres/.huskyrc +5 -0
- package/lib/node-postgres/.lintstagedrc.json +5 -0
- package/lib/node-postgres/.prettierrc +8 -0
- package/lib/node-postgres/.swcrc +39 -0
- package/lib/node-postgres/.vscode/launch.json +35 -0
- package/lib/node-postgres/.vscode/settings.json +6 -0
- package/lib/node-postgres/Dockerfile.dev +17 -0
- package/lib/node-postgres/Dockerfile.prod +17 -0
- package/lib/node-postgres/Makefile +46 -0
- package/lib/node-postgres/docker-compose.yml +61 -0
- package/lib/node-postgres/ecosystem.config.js +57 -0
- package/lib/node-postgres/jest.config.js +12 -0
- package/lib/node-postgres/nginx.conf +40 -0
- package/lib/node-postgres/nodemon.json +12 -0
- package/lib/node-postgres/package.json +78 -0
- package/lib/node-postgres/src/app.ts +87 -0
- package/lib/node-postgres/src/config/index.ts +6 -0
- package/lib/node-postgres/src/controllers/auth.controller.ts +44 -0
- package/lib/node-postgres/src/controllers/users.controller.ts +63 -0
- package/lib/node-postgres/src/database/index.ts +6 -0
- package/lib/node-postgres/src/database/init.sql +110 -0
- package/lib/node-postgres/src/dtos/users.dto.ts +20 -0
- package/lib/node-postgres/src/exceptions/httpException.ts +10 -0
- package/lib/node-postgres/src/http/auth.http +27 -0
- package/lib/node-postgres/src/http/users.http +34 -0
- package/lib/node-postgres/src/interfaces/auth.interface.ts +15 -0
- package/lib/node-postgres/src/interfaces/routes.interface.ts +6 -0
- package/lib/node-postgres/src/interfaces/users.interface.ts +5 -0
- package/lib/node-postgres/src/middlewares/auth.middleware.ts +38 -0
- package/lib/node-postgres/src/middlewares/error.middleware.ts +15 -0
- package/lib/node-postgres/src/middlewares/validation.middleware.ts +27 -0
- package/lib/node-postgres/src/models/users.model.ts +9 -0
- package/lib/node-postgres/src/routes/auth.route.ts +21 -0
- package/lib/node-postgres/src/routes/users.route.ts +23 -0
- package/lib/node-postgres/src/server.ts +10 -0
- package/lib/node-postgres/src/services/auth.service.ts +52 -0
- package/lib/node-postgres/src/services/users.service.ts +51 -0
- package/lib/{default/src/tests → node-postgres/src/test}/auth.test.ts +2 -2
- package/lib/{default/src/tests → node-postgres/src/test}/users.test.ts +5 -5
- package/lib/node-postgres/src/utils/logger.ts +65 -0
- package/lib/node-postgres/src/utils/validateEnv.ts +8 -0
- package/lib/node-postgres/swagger.yaml +123 -0
- package/lib/node-postgres/tsconfig.json +40 -0
- package/lib/prisma/.env.production.local +1 -1
- package/lib/prisma/.env.test.local +1 -1
- package/lib/prisma/Dockerfile.dev +19 -0
- package/lib/prisma/Dockerfile.prod +19 -0
- package/lib/prisma/Makefile +32 -15
- package/lib/prisma/docker-compose.yml +15 -14
- package/lib/prisma/package.json +2 -0
- package/lib/prisma/src/app.ts +4 -5
- package/lib/prisma/src/controllers/auth.controller.ts +10 -12
- package/lib/prisma/src/controllers/users.controller.ts +12 -14
- package/lib/prisma/src/dtos/users.dto.ts +12 -1
- package/lib/prisma/src/interfaces/auth.interface.ts +1 -1
- package/lib/prisma/src/interfaces/users.interface.ts +5 -0
- package/lib/prisma/src/middlewares/auth.middleware.ts +16 -11
- package/lib/prisma/src/middlewares/error.middleware.ts +2 -4
- package/lib/prisma/src/middlewares/validation.middleware.ts +22 -20
- package/lib/prisma/src/routes/auth.route.ts +8 -10
- package/lib/prisma/src/routes/users.route.ts +9 -11
- package/lib/prisma/src/server.ts +6 -7
- package/lib/prisma/src/services/auth.service.ts +6 -12
- package/lib/prisma/src/services/users.service.ts +15 -23
- package/lib/prisma/src/utils/validateEnv.ts +1 -3
- package/lib/prisma/tsconfig.json +1 -1
- package/lib/routing-controllers/Dockerfile.dev +19 -0
- package/lib/routing-controllers/Dockerfile.prod +19 -0
- package/lib/routing-controllers/Makefile +29 -16
- package/lib/routing-controllers/docker-compose.yml +9 -9
- package/lib/routing-controllers/package.json +1 -0
- package/lib/routing-controllers/src/app.ts +4 -6
- package/lib/routing-controllers/src/controllers/auth.controller.ts +13 -12
- package/lib/routing-controllers/src/controllers/users.controller.ts +15 -13
- package/lib/routing-controllers/src/dtos/users.dto.ts +12 -1
- package/lib/routing-controllers/src/interfaces/users.interface.ts +1 -1
- package/lib/routing-controllers/src/middlewares/auth.middleware.ts +16 -10
- package/lib/routing-controllers/src/middlewares/error.middleware.ts +2 -5
- package/lib/routing-controllers/src/middlewares/validation.middleware.ts +23 -27
- package/lib/routing-controllers/src/models/users.model.ts +1 -3
- package/lib/routing-controllers/src/server.ts +5 -6
- package/lib/routing-controllers/src/services/auth.service.ts +21 -31
- package/lib/routing-controllers/src/services/users.service.ts +13 -21
- package/lib/routing-controllers/src/{tests → test}/auth.test.ts +1 -1
- package/lib/routing-controllers/src/{tests → test}/users.test.ts +10 -10
- package/lib/routing-controllers/src/utils/validateEnv.ts +1 -3
- package/lib/routing-controllers/tsconfig.json +1 -1
- package/lib/sequelize/.env.development.local +2 -2
- package/lib/sequelize/.env.production.local +3 -3
- package/lib/sequelize/.env.test.local +3 -3
- package/lib/sequelize/.sequelizerc +8 -0
- package/lib/sequelize/.swcrc +1 -1
- package/lib/sequelize/Dockerfile.dev +23 -0
- package/lib/sequelize/Dockerfile.prod +23 -0
- package/lib/sequelize/Makefile +32 -15
- package/lib/sequelize/docker-compose.yml +19 -14
- package/lib/sequelize/package.json +5 -1
- package/lib/sequelize/src/app.ts +7 -8
- package/lib/sequelize/src/config/index.ts +2 -1
- package/lib/sequelize/src/config/sequelize-cli.js +15 -0
- package/lib/sequelize/src/controllers/auth.controller.ts +7 -8
- package/lib/sequelize/src/controllers/users.controller.ts +9 -10
- package/lib/sequelize/src/{databases → database}/index.ts +1 -3
- package/lib/sequelize/src/dtos/users.dto.ts +12 -1
- package/lib/sequelize/src/interfaces/users.interface.ts +1 -1
- package/lib/sequelize/src/middlewares/auth.middleware.ts +16 -10
- package/lib/sequelize/src/middlewares/error.middleware.ts +2 -4
- package/lib/sequelize/src/middlewares/validation.middleware.ts +22 -20
- package/lib/sequelize/src/routes/auth.route.ts +8 -11
- package/lib/sequelize/src/routes/users.route.ts +9 -11
- package/lib/sequelize/src/server.ts +6 -7
- package/lib/sequelize/src/services/auth.service.ts +20 -31
- package/lib/sequelize/src/services/users.service.ts +14 -25
- package/lib/sequelize/src/{tests → test}/auth.test.ts +2 -2
- package/lib/sequelize/src/{tests → test}/users.test.ts +2 -2
- package/lib/sequelize/src/utils/validateEnv.ts +1 -3
- package/lib/sequelize/tsconfig.json +2 -2
- package/lib/starter.js +17 -26
- package/lib/typegoose/.env.production.local +1 -1
- package/lib/typegoose/.env.test.local +1 -1
- package/lib/typegoose/.swcrc +1 -1
- package/lib/typegoose/Dockerfile.dev +19 -0
- package/lib/typegoose/Dockerfile.prod +19 -0
- package/lib/typegoose/Makefile +32 -15
- package/lib/typegoose/docker-compose.yml +20 -11
- package/lib/typegoose/package.json +2 -0
- package/lib/typegoose/src/app.ts +7 -10
- package/lib/typegoose/src/config/index.ts +2 -1
- package/lib/typegoose/src/controllers/auth.controller.ts +9 -11
- package/lib/typegoose/src/controllers/users.controller.ts +11 -13
- package/lib/typegoose/src/database/index.ts +18 -0
- package/lib/typegoose/src/dtos/users.dto.ts +12 -1
- package/lib/typegoose/src/interfaces/users.interface.ts +1 -1
- package/lib/typegoose/src/middlewares/auth.middleware.ts +16 -10
- package/lib/typegoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/typegoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typegoose/src/models/users.model.ts +1 -3
- package/lib/typegoose/src/routes/auth.route.ts +8 -11
- package/lib/typegoose/src/routes/users.route.ts +9 -11
- package/lib/typegoose/src/server.ts +5 -6
- package/lib/typegoose/src/services/auth.service.ts +23 -32
- package/lib/typegoose/src/services/users.service.ts +12 -21
- package/lib/typegoose/src/{tests → test}/auth.test.ts +2 -2
- package/lib/{mongoose/src/tests → typegoose/src/test}/users.test.ts +7 -7
- package/lib/typegoose/src/utils/validateEnv.ts +1 -3
- package/lib/typegoose/tsconfig.json +2 -2
- package/lib/typeorm/.env.development.local +2 -2
- package/lib/typeorm/.env.production.local +3 -3
- package/lib/typeorm/.env.test.local +3 -3
- package/lib/typeorm/.swcrc +1 -1
- package/lib/typeorm/Dockerfile.dev +19 -0
- package/lib/typeorm/Dockerfile.prod +19 -0
- package/lib/typeorm/Makefile +32 -15
- package/lib/typeorm/docker-compose.yml +21 -14
- package/lib/typeorm/package.json +1 -0
- package/lib/typeorm/src/app.ts +7 -10
- package/lib/typeorm/src/config/index.ts +2 -1
- package/lib/typeorm/src/controllers/auth.controller.ts +9 -11
- package/lib/typeorm/src/controllers/users.controller.ts +11 -13
- package/lib/typeorm/src/database/index.ts +26 -0
- package/lib/typeorm/src/dtos/users.dto.ts +12 -1
- package/lib/typeorm/src/interfaces/users.interface.ts +1 -1
- package/lib/typeorm/src/middlewares/auth.middleware.ts +14 -7
- package/lib/typeorm/src/middlewares/error.middleware.ts +2 -4
- package/lib/typeorm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typeorm/src/routes/auth.route.ts +8 -11
- package/lib/typeorm/src/routes/users.route.ts +9 -11
- package/lib/typeorm/src/server.ts +6 -7
- package/lib/typeorm/src/services/auth.service.ts +20 -28
- package/lib/typeorm/src/services/users.service.ts +6 -16
- package/lib/typeorm/src/{tests → test}/auth.test.ts +6 -6
- package/lib/typeorm/src/{tests → test}/users.test.ts +6 -6
- package/lib/typeorm/src/utils/validateEnv.ts +1 -3
- package/lib/typeorm/tsconfig.json +2 -2
- package/package.json +2 -1
- package/lib/default/Dockerfile +0 -24
- package/lib/default/src/controllers/index.controller.ts +0 -13
- package/lib/default/src/routes/index.route.ts +0 -19
- package/lib/default/src/utils/util.ts +0 -19
- package/lib/graphql/Dockerfile +0 -24
- package/lib/graphql/src/databases/index.ts +0 -22
- package/lib/graphql/src/tests/index.test.ts +0 -18
- package/lib/graphql/src/tests/users.test.ts +0 -71
- package/lib/graphql/src/utils/util.ts +0 -19
- package/lib/knex/Dockerfile +0 -24
- package/lib/knex/src/controllers/index.controller.ts +0 -13
- package/lib/knex/src/databases/index.ts +0 -21
- package/lib/knex/src/databases/migrations/20210713110926_initial.ts +0 -13
- package/lib/knex/src/routes/index.route.ts +0 -19
- package/lib/knex/src/tests/index.test.ts +0 -17
- package/lib/knex/src/utils/util.ts +0 -19
- package/lib/mikro-orm/Dockerfile +0 -24
- package/lib/mikro-orm/src/controllers/index.controller.ts +0 -13
- package/lib/mikro-orm/src/routes/index.route.ts +0 -19
- package/lib/mikro-orm/src/tests/index.test.ts +0 -18
- package/lib/mikro-orm/src/utils/util.ts +0 -19
- package/lib/mongoose/Dockerfile +0 -24
- package/lib/mongoose/src/controllers/index.controller.ts +0 -13
- package/lib/mongoose/src/databases/index.ts +0 -9
- package/lib/mongoose/src/routes/index.route.ts +0 -19
- package/lib/mongoose/src/utils/util.ts +0 -19
- package/lib/prisma/Dockerfile +0 -24
- package/lib/prisma/src/controllers/index.controller.ts +0 -13
- package/lib/prisma/src/routes/index.route.ts +0 -19
- package/lib/prisma/src/tests/index.test.ts +0 -18
- package/lib/prisma/src/utils/util.ts +0 -19
- package/lib/routing-controllers/Dockerfile +0 -24
- package/lib/routing-controllers/src/controllers/index.controller.ts +0 -9
- package/lib/routing-controllers/src/tests/index.test.ts +0 -17
- package/lib/routing-controllers/src/utils/util.ts +0 -19
- package/lib/sequelize/Dockerfile +0 -28
- package/lib/sequelize/src/controllers/index.controller.ts +0 -13
- package/lib/sequelize/src/routes/index.route.ts +0 -19
- package/lib/sequelize/src/tests/index.test.ts +0 -18
- package/lib/sequelize/src/utils/util.ts +0 -19
- package/lib/typegoose/Dockerfile +0 -24
- package/lib/typegoose/src/controllers/index.controller.ts +0 -13
- package/lib/typegoose/src/databases/index.ts +0 -3
- package/lib/typegoose/src/routes/index.route.ts +0 -19
- package/lib/typegoose/src/tests/index.test.ts +0 -18
- package/lib/typegoose/src/utils/util.ts +0 -19
- package/lib/typeorm/Dockerfile +0 -24
- package/lib/typeorm/src/controllers/index.controller.ts +0 -13
- package/lib/typeorm/src/databases/index.ts +0 -22
- package/lib/typeorm/src/routes/index.route.ts +0 -19
- package/lib/typeorm/src/tests/index.test.ts +0 -18
- package/lib/typeorm/src/utils/util.ts +0 -19
- package/lib/knex/src/{databases → database}/migrations/.gitkeep +0 -0
- package/lib/knex/src/{databases → database}/seeds/.gitkeep +0 -0
- package/lib/mikro-orm/src/{databases → database}/index.ts +0 -0
- package/lib/mongoose/src/{tests → test}/auth.test.ts +0 -0
- package/lib/{default/src/tests → mongoose/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/auth.test.ts +1 -1
- package/lib/{mongoose/src/tests → prisma/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/users.test.ts +1 -1
- /package/lib/sequelize/src/{migrations → database/migrations}/.gitkeep +0 -0
- /package/lib/sequelize/src/{seeders → database/seeders}/.gitkeep +0 -0
- /package/lib/typeorm/src/{migration → database/migrations}/.gitkeep +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { Container } from 'typedi';
|
|
3
3
|
import { User } from '@interfaces/users.interface';
|
|
4
|
-
import
|
|
4
|
+
import { UserService } from '@services/users.service';
|
|
5
5
|
|
|
6
|
-
class
|
|
7
|
-
public
|
|
6
|
+
export class UserController {
|
|
7
|
+
public user = Container.get(UserService);
|
|
8
8
|
|
|
9
9
|
public getUsers = async (req: Request, res: Response, next: NextFunction) => {
|
|
10
10
|
try {
|
|
11
|
-
const findAllUsersData: User[] = await this.
|
|
11
|
+
const findAllUsersData: User[] = await this.user.findAllUser();
|
|
12
12
|
|
|
13
13
|
res.status(200).json({ data: findAllUsersData, message: 'findAll' });
|
|
14
14
|
} catch (error) {
|
|
@@ -19,7 +19,7 @@ class UsersController {
|
|
|
19
19
|
public getUserById = async (req: Request, res: Response, next: NextFunction) => {
|
|
20
20
|
try {
|
|
21
21
|
const userId: string = req.params.id;
|
|
22
|
-
const findOneUserData: User = await this.
|
|
22
|
+
const findOneUserData: User = await this.user.findUserById(userId);
|
|
23
23
|
|
|
24
24
|
res.status(200).json({ data: findOneUserData, message: 'findOne' });
|
|
25
25
|
} catch (error) {
|
|
@@ -29,8 +29,8 @@ class UsersController {
|
|
|
29
29
|
|
|
30
30
|
public createUser = async (req: Request, res: Response, next: NextFunction) => {
|
|
31
31
|
try {
|
|
32
|
-
const userData:
|
|
33
|
-
const createUserData: User = await this.
|
|
32
|
+
const userData: User = req.body;
|
|
33
|
+
const createUserData: User = await this.user.createUser(userData);
|
|
34
34
|
|
|
35
35
|
res.status(201).json({ data: createUserData, message: 'created' });
|
|
36
36
|
} catch (error) {
|
|
@@ -41,8 +41,8 @@ class UsersController {
|
|
|
41
41
|
public updateUser = async (req: Request, res: Response, next: NextFunction) => {
|
|
42
42
|
try {
|
|
43
43
|
const userId: string = req.params.id;
|
|
44
|
-
const userData:
|
|
45
|
-
const updateUserData: User = await this.
|
|
44
|
+
const userData: User = req.body;
|
|
45
|
+
const updateUserData: User = await this.user.updateUser(userId, userData);
|
|
46
46
|
|
|
47
47
|
res.status(200).json({ data: updateUserData, message: 'updated' });
|
|
48
48
|
} catch (error) {
|
|
@@ -53,7 +53,7 @@ class UsersController {
|
|
|
53
53
|
public deleteUser = async (req: Request, res: Response, next: NextFunction) => {
|
|
54
54
|
try {
|
|
55
55
|
const userId: string = req.params.id;
|
|
56
|
-
const deleteUserData: User = await this.
|
|
56
|
+
const deleteUserData: User = await this.user.deleteUser(userId);
|
|
57
57
|
|
|
58
58
|
res.status(200).json({ data: deleteUserData, message: 'deleted' });
|
|
59
59
|
} catch (error) {
|
|
@@ -61,5 +61,3 @@ class UsersController {
|
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
export default UsersController;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { connect, set } from 'mongoose';
|
|
2
|
+
import { NODE_ENV, DB_HOST, DB_PORT, DB_DATABASE } from '@config';
|
|
3
|
+
|
|
4
|
+
export const dbConnection = async () => {
|
|
5
|
+
const dbConfing = {
|
|
6
|
+
url: `mongodb://${DB_HOST}:${DB_PORT}/${DB_DATABASE}`,
|
|
7
|
+
options: {
|
|
8
|
+
useNewUrlParser: true,
|
|
9
|
+
useUnifiedTopology: true
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
if (NODE_ENV !== 'production') {
|
|
14
|
+
set('debug', true);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await connect(dbConfing);
|
|
18
|
+
};
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import { IsEmail, IsString } from 'class-validator';
|
|
1
|
+
import { IsEmail, IsString, IsNotEmpty, MinLength, MaxLength } from 'class-validator';
|
|
2
2
|
|
|
3
3
|
export class CreateUserDto {
|
|
4
4
|
@IsEmail()
|
|
5
5
|
public email: string;
|
|
6
6
|
|
|
7
7
|
@IsString()
|
|
8
|
+
@IsNotEmpty()
|
|
9
|
+
@MinLength(9)
|
|
10
|
+
@MaxLength(32)
|
|
11
|
+
public password: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class UpdateUserDto {
|
|
15
|
+
@IsString()
|
|
16
|
+
@IsNotEmpty()
|
|
17
|
+
@MinLength(9)
|
|
18
|
+
@MaxLength(32)
|
|
8
19
|
public password: string;
|
|
9
20
|
}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { NextFunction, Response } from 'express';
|
|
2
2
|
import { verify } from 'jsonwebtoken';
|
|
3
3
|
import { SECRET_KEY } from '@config';
|
|
4
|
-
import { HttpException } from '
|
|
4
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
5
5
|
import { DataStoredInToken, RequestWithUser } from '@interfaces/auth.interface';
|
|
6
|
-
import
|
|
6
|
+
import { UserModel } from '@models/users.model';
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const getAuthorization = (req) => {
|
|
9
|
+
const coockie = req.cookies['Authorization'];
|
|
10
|
+
if (coockie) return coockie;
|
|
11
|
+
|
|
12
|
+
const header = req.header('Authorization');
|
|
13
|
+
if (header) return header.split('Bearer ')[1];
|
|
14
|
+
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const AuthMiddleware = async (req: RequestWithUser, res: Response, next: NextFunction) => {
|
|
9
19
|
try {
|
|
10
|
-
const Authorization =
|
|
20
|
+
const Authorization = getAuthorization(req);
|
|
11
21
|
|
|
12
22
|
if (Authorization) {
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const userId = verificationResponse._id;
|
|
16
|
-
const findUser = await userModel.findById(userId);
|
|
23
|
+
const { _id } = (await verify(Authorization, SECRET_KEY)) as DataStoredInToken;
|
|
24
|
+
const findUser = await UserModel.findById(_id);
|
|
17
25
|
|
|
18
26
|
if (findUser) {
|
|
19
27
|
req.user = findUser;
|
|
@@ -28,5 +36,3 @@ const authMiddleware = async (req: RequestWithUser, res: Response, next: NextFun
|
|
|
28
36
|
next(new HttpException(401, 'Wrong authentication token'));
|
|
29
37
|
}
|
|
30
38
|
};
|
|
31
|
-
|
|
32
|
-
export default authMiddleware;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import { HttpException } from '
|
|
2
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
3
3
|
import { logger } from '@utils/logger';
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
export const ErrorMiddleware = (error: HttpException, req: Request, res: Response, next: NextFunction) => {
|
|
6
6
|
try {
|
|
7
7
|
const status: number = error.status || 500;
|
|
8
8
|
const message: string = error.message || 'Something went wrong';
|
|
@@ -13,5 +13,3 @@ const errorMiddleware = (error: HttpException, req: Request, res: Response, next
|
|
|
13
13
|
next(error);
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
-
|
|
17
|
-
export default errorMiddleware;
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { plainToInstance } from 'class-transformer';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { HttpException } from '@exceptions/
|
|
2
|
+
import { validateOrReject, ValidationError } from 'class-validator';
|
|
3
|
+
import { NextFunction, Request, Response } from 'express';
|
|
4
|
+
import { HttpException } from '@exceptions/httpException';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @name ValidationMiddleware
|
|
8
|
+
* @description Allows use of decorator and non-decorator based validation
|
|
9
|
+
* @param type dto
|
|
10
|
+
* @param skipMissingProperties When skipping missing properties
|
|
11
|
+
* @param whitelist Even if your object is an instance of a validation class it can contain additional properties that are not defined
|
|
12
|
+
* @param forbidNonWhitelisted If you would rather to have an error thrown when any non-whitelisted properties are present
|
|
13
|
+
*/
|
|
14
|
+
export const ValidationMiddleware = (type: any, skipMissingProperties = false, whitelist = false, forbidNonWhitelisted = false) => {
|
|
15
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
16
|
+
const dto = plainToInstance(type, req.body);
|
|
17
|
+
validateOrReject(dto, { skipMissingProperties, whitelist, forbidNonWhitelisted })
|
|
18
|
+
.then(() => {
|
|
19
|
+
req.body = dto;
|
|
19
20
|
next();
|
|
20
|
-
}
|
|
21
|
-
|
|
21
|
+
})
|
|
22
|
+
.catch((errors: ValidationError[]) => {
|
|
23
|
+
const message = errors.map((error: ValidationError) => Object.values(error.constraints)).join(', ');
|
|
24
|
+
next(new HttpException(400, message));
|
|
25
|
+
});
|
|
22
26
|
};
|
|
23
27
|
};
|
|
24
|
-
|
|
25
|
-
export default validationMiddleware;
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import AuthController from '@controllers/auth.controller';
|
|
2
|
+
import { AuthController } from '@controllers/auth.controller';
|
|
3
3
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
4
4
|
import { Routes } from '@interfaces/routes.interface';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import { AuthMiddleware } from '@middlewares/auth.middleware';
|
|
6
|
+
import { ValidationMiddleware } from '@middlewares/validation.middleware';
|
|
7
7
|
|
|
8
|
-
class AuthRoute implements Routes {
|
|
9
|
-
public path = '/';
|
|
8
|
+
export class AuthRoute implements Routes {
|
|
10
9
|
public router = Router();
|
|
11
|
-
public
|
|
10
|
+
public auth = new AuthController();
|
|
12
11
|
|
|
13
12
|
constructor() {
|
|
14
13
|
this.initializeRoutes();
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
private initializeRoutes() {
|
|
18
|
-
this.router.post(
|
|
19
|
-
this.router.post(
|
|
20
|
-
this.router.post(
|
|
17
|
+
this.router.post('/signup', ValidationMiddleware(CreateUserDto, 'body'), this.auth.signUp);
|
|
18
|
+
this.router.post('/login', ValidationMiddleware(CreateUserDto, 'body'), this.auth.logIn);
|
|
19
|
+
this.router.post('/logout', AuthMiddleware, this.auth.logOut);
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
export default AuthRoute;
|
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import
|
|
2
|
+
import { UserController } from '@controllers/users.controller';
|
|
3
3
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
4
4
|
import { Routes } from '@interfaces/routes.interface';
|
|
5
|
-
import
|
|
5
|
+
import { ValidationMiddleware } from '@middlewares/validation.middleware';
|
|
6
6
|
|
|
7
|
-
class
|
|
7
|
+
export class UserRoute implements Routes {
|
|
8
8
|
public path = '/users';
|
|
9
9
|
public router = Router();
|
|
10
|
-
public
|
|
10
|
+
public user = new UserController();
|
|
11
11
|
|
|
12
12
|
constructor() {
|
|
13
13
|
this.initializeRoutes();
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
private initializeRoutes() {
|
|
17
|
-
this.router.get(`${this.path}`, this.
|
|
18
|
-
this.router.get(`${this.path}/:id`, this.
|
|
19
|
-
this.router.post(`${this.path}`,
|
|
20
|
-
this.router.put(`${this.path}/:id`,
|
|
21
|
-
this.router.delete(`${this.path}/:id`, this.
|
|
17
|
+
this.router.get(`${this.path}`, this.user.getUsers);
|
|
18
|
+
this.router.get(`${this.path}/:id`, this.user.getUserById);
|
|
19
|
+
this.router.post(`${this.path}`, ValidationMiddleware(CreateUserDto, 'body'), this.user.createUser);
|
|
20
|
+
this.router.put(`${this.path}/:id`, ValidationMiddleware(CreateUserDto, 'body', true), this.user.updateUser);
|
|
21
|
+
this.router.delete(`${this.path}/:id`, this.user.deleteUser);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
export default UsersRoute;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import App from '@/app';
|
|
2
|
-
import AuthRoute from '@routes/auth.route';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import validateEnv from '@utils/validateEnv';
|
|
2
|
+
import { AuthRoute } from '@routes/auth.route';
|
|
3
|
+
import { UserRoute } from '@routes/users.route';
|
|
4
|
+
import { ValidateEnv } from '@utils/validateEnv';
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
ValidateEnv();
|
|
8
7
|
|
|
9
|
-
const app = new App([new
|
|
8
|
+
const app = new App([new AuthRoute(), new UserRoute()]);
|
|
10
9
|
|
|
11
10
|
app.listen();
|
|
@@ -1,61 +1,52 @@
|
|
|
1
1
|
import { hash, compare } from 'bcrypt';
|
|
2
2
|
import { sign } from 'jsonwebtoken';
|
|
3
|
+
import { Service } from 'typedi';
|
|
3
4
|
import { SECRET_KEY } from '@config';
|
|
4
|
-
import {
|
|
5
|
-
import { HttpException } from '@exceptions/HttpException';
|
|
5
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
6
6
|
import { DataStoredInToken, TokenData } from '@interfaces/auth.interface';
|
|
7
7
|
import { User } from '@interfaces/users.interface';
|
|
8
|
-
import
|
|
9
|
-
import { isEmpty } from '@utils/util';
|
|
8
|
+
import { UserModel } from '@models/users.model';
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const createToken = (user: User): TokenData => {
|
|
11
|
+
const dataStoredInToken: DataStoredInToken = { _id: user._id };
|
|
12
|
+
const expiresIn: number = 60 * 60;
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
return { expiresIn, token: sign(dataStoredInToken, SECRET_KEY, { expiresIn }) };
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const createCookie = (tokenData: TokenData): string => {
|
|
18
|
+
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Service()
|
|
22
|
+
export class AuthService {
|
|
23
|
+
public async signup(userData: User): Promise<User> {
|
|
24
|
+
const findUser: User = await UserModel.findOne({ email: userData.email });
|
|
16
25
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
17
26
|
|
|
18
27
|
const hashedPassword = await hash(userData.password, 10);
|
|
19
|
-
const createUserData: User = await
|
|
28
|
+
const createUserData: User = await UserModel.create({ ...userData, password: hashedPassword });
|
|
20
29
|
|
|
21
30
|
return createUserData;
|
|
22
31
|
}
|
|
23
32
|
|
|
24
|
-
public async login(userData:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const findUser: User = await userModel.findOne({ email: userData.email });
|
|
33
|
+
public async login(userData: User): Promise<{ cookie: string; findUser: User }> {
|
|
34
|
+
const findUser: User = await UserModel.findOne({ email: userData.email });
|
|
28
35
|
if (!findUser) throw new HttpException(409, `This email ${userData.email} was not found`);
|
|
29
36
|
|
|
30
37
|
const isPasswordMatching: boolean = await compare(userData.password, findUser.password);
|
|
31
38
|
if (!isPasswordMatching) throw new HttpException(409, "Password is not matching");
|
|
32
39
|
|
|
33
|
-
const tokenData =
|
|
34
|
-
const cookie =
|
|
40
|
+
const tokenData = createToken(findUser);
|
|
41
|
+
const cookie = createCookie(tokenData);
|
|
35
42
|
|
|
36
43
|
return { cookie, findUser };
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
public async logout(userData: User): Promise<User> {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const findUser: User = await userModel.findOne({ email: userData.email, password: userData.password });
|
|
47
|
+
const findUser: User = await UserModel.findOne({ email: userData.email, password: userData.password });
|
|
43
48
|
if (!findUser) throw new HttpException(409, `This email ${userData.email} was not found`);
|
|
44
49
|
|
|
45
50
|
return findUser;
|
|
46
51
|
}
|
|
47
|
-
|
|
48
|
-
public createToken(user: User): TokenData {
|
|
49
|
-
const dataStoredInToken: DataStoredInToken = { _id: user._id };
|
|
50
|
-
const secretKey: string = SECRET_KEY;
|
|
51
|
-
const expiresIn: number = 60 * 60;
|
|
52
|
-
|
|
53
|
-
return { expiresIn, token: sign(dataStoredInToken, secretKey, { expiresIn }) };
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
public createCookie(tokenData: TokenData): string {
|
|
57
|
-
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
58
|
-
}
|
|
59
52
|
}
|
|
60
|
-
|
|
61
|
-
export default AuthService;
|
|
@@ -1,44 +1,37 @@
|
|
|
1
1
|
import { hash } from 'bcrypt';
|
|
2
|
+
import { Service } from 'typedi';
|
|
2
3
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
3
|
-
import { HttpException } from '
|
|
4
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
4
5
|
import { User } from '@interfaces/users.interface';
|
|
5
|
-
import
|
|
6
|
-
import { isEmpty } from '@utils/util';
|
|
7
|
-
|
|
8
|
-
class UserService {
|
|
9
|
-
// public users = userModel;
|
|
6
|
+
import { UserModel } from '@models/users.model';
|
|
10
7
|
|
|
8
|
+
@Service()
|
|
9
|
+
export class UserService {
|
|
11
10
|
public async findAllUser(): Promise<User[]> {
|
|
12
|
-
const users: User[] = await
|
|
11
|
+
const users: User[] = await UserModel.find();
|
|
13
12
|
return users;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
public async findUserById(userId: string): Promise<User> {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const findUser: User = await userModel.findOne({ _id: userId });
|
|
16
|
+
const findUser: User = await UserModel.findOne({ _id: userId });
|
|
20
17
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
21
18
|
|
|
22
19
|
return findUser;
|
|
23
20
|
}
|
|
24
21
|
|
|
25
22
|
public async createUser(userData: CreateUserDto): Promise<User> {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const findUser: User = await userModel.findOne({ email: userData.email });
|
|
23
|
+
const findUser: User = await UserModel.findOne({ email: userData.email });
|
|
29
24
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
30
25
|
|
|
31
26
|
const hashedPassword = await hash(userData.password, 10);
|
|
32
|
-
const createUserData: User = await
|
|
27
|
+
const createUserData: User = await UserModel.create({ ...userData, password: hashedPassword });
|
|
33
28
|
|
|
34
29
|
return createUserData;
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
public async updateUser(userId: string, userData: CreateUserDto): Promise<User> {
|
|
38
|
-
if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
|
|
39
|
-
|
|
40
33
|
if (userData.email) {
|
|
41
|
-
const findUser: User = await
|
|
34
|
+
const findUser: User = await UserModel.findOne({ email: userData.email });
|
|
42
35
|
if (findUser && findUser._id != userId) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
43
36
|
}
|
|
44
37
|
|
|
@@ -47,18 +40,16 @@ class UserService {
|
|
|
47
40
|
userData = { ...userData, password: hashedPassword };
|
|
48
41
|
}
|
|
49
42
|
|
|
50
|
-
const updateUserById: User = await
|
|
43
|
+
const updateUserById: User = await UserModel.findByIdAndUpdate(userId, { userData });
|
|
51
44
|
if (!updateUserById) throw new HttpException(409, "User doesn't exist");
|
|
52
45
|
|
|
53
46
|
return updateUserById;
|
|
54
47
|
}
|
|
55
48
|
|
|
56
49
|
public async deleteUser(userId: string): Promise<User> {
|
|
57
|
-
const deleteUserById: User = await
|
|
50
|
+
const deleteUserById: User = await UserModel.findByIdAndDelete(userId);
|
|
58
51
|
if (!deleteUserById) throw new HttpException(409, "User doesn't exist");
|
|
59
52
|
|
|
60
53
|
return deleteUserById;
|
|
61
54
|
}
|
|
62
55
|
}
|
|
63
|
-
|
|
64
|
-
export default UserService;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import mongoose from 'mongoose';
|
|
3
3
|
import request from 'supertest';
|
|
4
|
-
import App from '@/app';
|
|
4
|
+
import { App } from '@/app';
|
|
5
5
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
|
-
import AuthRoute from '@routes/auth.route';
|
|
6
|
+
import { AuthRoute } from '@routes/auth.route';
|
|
7
7
|
|
|
8
8
|
afterAll(async () => {
|
|
9
9
|
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import mongoose from 'mongoose';
|
|
3
3
|
import request from 'supertest';
|
|
4
|
-
import App from '@/app';
|
|
4
|
+
import { App } from '@/app';
|
|
5
5
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
|
-
import
|
|
6
|
+
import { UserRoute } from '@routes/users.route';
|
|
7
7
|
|
|
8
8
|
afterAll(async () => {
|
|
9
9
|
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
@@ -12,7 +12,7 @@ afterAll(async () => {
|
|
|
12
12
|
describe('Testing Users', () => {
|
|
13
13
|
describe('[GET] /users', () => {
|
|
14
14
|
it('response fineAll Users', async () => {
|
|
15
|
-
const usersRoute = new
|
|
15
|
+
const usersRoute = new UserRoute();
|
|
16
16
|
const users = usersRoute.usersController.userService.users;
|
|
17
17
|
|
|
18
18
|
users.find = jest.fn().mockReturnValue([
|
|
@@ -43,7 +43,7 @@ describe('Testing Users', () => {
|
|
|
43
43
|
it('response findOne User', async () => {
|
|
44
44
|
const userId = 'qpwoeiruty';
|
|
45
45
|
|
|
46
|
-
const usersRoute = new
|
|
46
|
+
const usersRoute = new UserRoute();
|
|
47
47
|
const users = usersRoute.usersController.userService.users;
|
|
48
48
|
|
|
49
49
|
users.findOne = jest.fn().mockReturnValue({
|
|
@@ -65,7 +65,7 @@ describe('Testing Users', () => {
|
|
|
65
65
|
password: 'q1w2e3r4',
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
const usersRoute = new
|
|
68
|
+
const usersRoute = new UserRoute();
|
|
69
69
|
const users = usersRoute.usersController.userService.users;
|
|
70
70
|
|
|
71
71
|
users.findOne = jest.fn().mockReturnValue(null);
|
|
@@ -89,7 +89,7 @@ describe('Testing Users', () => {
|
|
|
89
89
|
password: 'q1w2e3r4',
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
const usersRoute = new
|
|
92
|
+
const usersRoute = new UserRoute();
|
|
93
93
|
const users = usersRoute.usersController.userService.users;
|
|
94
94
|
|
|
95
95
|
if (userData.email) {
|
|
@@ -116,7 +116,7 @@ describe('Testing Users', () => {
|
|
|
116
116
|
it('response Delete User', async () => {
|
|
117
117
|
const userId = '60706478aad6c9ad19a31c84';
|
|
118
118
|
|
|
119
|
-
const usersRoute = new
|
|
119
|
+
const usersRoute = new UserRoute();
|
|
120
120
|
const users = usersRoute.usersController.userService.users;
|
|
121
121
|
|
|
122
122
|
users.findByIdAndDelete = jest.fn().mockReturnValue({
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@/*": ["*"],
|
|
25
25
|
"@config": ["config"],
|
|
26
26
|
"@controllers/*": ["controllers/*"],
|
|
27
|
-
"@
|
|
27
|
+
"@database": ["database"],
|
|
28
28
|
"@dtos/*": ["dtos/*"],
|
|
29
29
|
"@exceptions/*": ["exceptions/*"],
|
|
30
30
|
"@interfaces/*": ["interfaces/*"],
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"include": ["src/**/*.ts", "src/**/*.json", ".env"],
|
|
39
|
-
"exclude": ["node_modules", "src/http", "src/logs"
|
|
39
|
+
"exclude": ["node_modules", "src/http", "src/logs"]
|
|
40
40
|
}
|
package/lib/typeorm/.swcrc
CHANGED