@drax/identity-back 0.0.3
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/factory/AuthServiceFactory.js +8 -0
- package/dist/factory/RoleServiceFactory.js +8 -0
- package/dist/factory/UserServiceFactory.js +8 -0
- package/dist/graphql/index.js +7 -0
- package/dist/graphql/resolvers/auth.resolvers.js +15 -0
- package/dist/graphql/resolvers/role.resolvers.js +23 -0
- package/dist/graphql/resolvers/user.resolvers.js +26 -0
- package/dist/graphql/types/auth.graphql +8 -0
- package/dist/graphql/types/role.graphql +32 -0
- package/dist/graphql/types/user.graphql +34 -0
- package/dist/index.js +12 -0
- package/dist/interfaces/IRole.js +1 -0
- package/dist/interfaces/IRoleRepository.js +1 -0
- package/dist/interfaces/IUser.js +1 -0
- package/dist/interfaces/IUserGroup.js +1 -0
- package/dist/interfaces/IUserRepository.js +1 -0
- package/dist/models/RoleModel.js +33 -0
- package/dist/models/UserGroupModel.js +33 -0
- package/dist/models/UserModel.js +79 -0
- package/dist/repository/RoleRepository.js +29 -0
- package/dist/repository/UserRepository.js +33 -0
- package/dist/services/AuthService.js +21 -0
- package/dist/services/RoleService.js +31 -0
- package/dist/services/UserService.js +43 -0
- package/dist/utils/AuthUtils.js +36 -0
- package/package.json +53 -0
- package/src/factory/AuthServiceFactory.ts +10 -0
- package/src/factory/RoleServiceFactory.ts +10 -0
- package/src/factory/UserServiceFactory.ts +10 -0
- package/src/graphql/index.ts +8 -0
- package/src/graphql/resolvers/auth.resolvers.ts +19 -0
- package/src/graphql/resolvers/role.resolvers.ts +25 -0
- package/src/graphql/resolvers/user.resolvers.ts +27 -0
- package/src/graphql/types/auth.graphql +8 -0
- package/src/graphql/types/role.graphql +32 -0
- package/src/graphql/types/user.graphql +34 -0
- package/src/index.ts +24 -0
- package/src/interfaces/IRole.ts +11 -0
- package/src/interfaces/IRoleRepository.ts +11 -0
- package/src/interfaces/IUser.ts +21 -0
- package/src/interfaces/IUserGroup.ts +10 -0
- package/src/interfaces/IUserRepository.ts +11 -0
- package/src/models/RoleModel.ts +48 -0
- package/src/models/UserGroupModel.ts +48 -0
- package/src/models/UserModel.ts +94 -0
- package/src/repository/RoleRepository.ts +42 -0
- package/src/repository/UserRepository.ts +47 -0
- package/src/services/AuthService.ts +29 -0
- package/src/services/RoleService.ts +51 -0
- package/src/services/UserService.ts +67 -0
- package/src/utils/AuthUtils.ts +51 -0
- package/test/data-json/roles/admin-role.json +5 -0
- package/test/data-json/users/root-user.json +7 -0
- package/test/data-obj/roles/admin-role.ts +12 -0
- package/test/data-obj/users/root-user.ts +15 -0
- package/test/initializers/MongoInMemory.mjs +34 -0
- package/test/initializers/MongoInMemory.ts +42 -0
- package/test/initializers/RoleInitializer.mjs +11 -0
- package/test/initializers/RoleInitializer.ts +15 -0
- package/test/repository/role-repository.test.ts +75 -0
- package/test/repository/user-repository.test.ts +54 -0
- package/test/service/mock-service.test.ts +25 -0
- package/test/service/role-service.test.ts +30 -0
- package/test/service/user-service.test.ts +44 -0
- package/tsconfig.json +13 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/types/factory/AuthServiceFactory.d.ts +4 -0
- package/types/factory/AuthServiceFactory.d.ts.map +1 -0
- package/types/factory/RoleServiceFactory.d.ts +4 -0
- package/types/factory/RoleServiceFactory.d.ts.map +1 -0
- package/types/factory/UserServiceFactory.d.ts +4 -0
- package/types/factory/UserServiceFactory.d.ts.map +1 -0
- package/types/graphql/index.d.ts +6 -0
- package/types/graphql/index.d.ts.map +1 -0
- package/types/graphql/resolvers/auth.resolvers.d.ts +10 -0
- package/types/graphql/resolvers/auth.resolvers.d.ts.map +1 -0
- package/types/graphql/resolvers/role.resolvers.d.ts +25 -0
- package/types/graphql/resolvers/role.resolvers.d.ts.map +1 -0
- package/types/graphql/resolvers/user.resolvers.d.ts +25 -0
- package/types/graphql/resolvers/user.resolvers.d.ts.map +1 -0
- package/types/index.d.ts +7 -0
- package/types/index.d.ts.map +1 -0
- package/types/interfaces/IRole.d.ts +11 -0
- package/types/interfaces/IRole.d.ts.map +1 -0
- package/types/interfaces/IRoleRepository.d.ts +10 -0
- package/types/interfaces/IRoleRepository.d.ts.map +1 -0
- package/types/interfaces/IUser.d.ts +20 -0
- package/types/interfaces/IUser.d.ts.map +1 -0
- package/types/interfaces/IUserGroup.d.ts +10 -0
- package/types/interfaces/IUserGroup.d.ts.map +1 -0
- package/types/interfaces/IUserRepository.d.ts +11 -0
- package/types/interfaces/IUserRepository.d.ts.map +1 -0
- package/types/models/RoleModel.d.ts +16 -0
- package/types/models/RoleModel.d.ts.map +1 -0
- package/types/models/UserGroupModel.d.ts +16 -0
- package/types/models/UserGroupModel.d.ts.map +1 -0
- package/types/models/UserModel.d.ts +16 -0
- package/types/models/UserModel.d.ts.map +1 -0
- package/types/repository/RoleRepository.d.ts +41 -0
- package/types/repository/RoleRepository.d.ts.map +1 -0
- package/types/repository/UserRepository.d.ts +40 -0
- package/types/repository/UserRepository.d.ts.map +1 -0
- package/types/services/AuthService.d.ts +8 -0
- package/types/services/AuthService.d.ts.map +1 -0
- package/types/services/RoleService.d.ts +17 -0
- package/types/services/RoleService.d.ts.map +1 -0
- package/types/services/UserService.d.ts +18 -0
- package/types/services/UserService.d.ts.map +1 -0
- package/types/utils/AuthUtils.d.ts +12 -0
- package/types/utils/AuthUtils.d.ts.map +1 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import bcryptjs from "bcryptjs";
|
|
2
|
+
import jsonwebtoken, {SignOptions} from "jsonwebtoken";
|
|
3
|
+
|
|
4
|
+
class AuthUtils{
|
|
5
|
+
|
|
6
|
+
static hashPassword(password : string) :string {
|
|
7
|
+
if (!password) {
|
|
8
|
+
throw new Error("password must be provided")
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let salt = bcryptjs.genSaltSync(10);
|
|
12
|
+
let hashPassword = bcryptjs.hashSync(password, salt);
|
|
13
|
+
return hashPassword;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static checkPassword(password : string, hashPassword : string) {
|
|
17
|
+
return bcryptjs.compareSync(password, hashPassword);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static tokenSignPayload(userId : string, username: string, session : string) {
|
|
21
|
+
return {
|
|
22
|
+
id: userId,
|
|
23
|
+
username: username,
|
|
24
|
+
session: session
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static generateToken(userId : string, username: string, session : string) {
|
|
29
|
+
const payload = AuthUtils.tokenSignPayload(userId, username, session)
|
|
30
|
+
|
|
31
|
+
const JWT_SECRET = process.env.JWT_SECRET ? process.env.JWT_SECRET :'KRgDV3CeR5lVhsFF'
|
|
32
|
+
|
|
33
|
+
const options : SignOptions = {
|
|
34
|
+
expiresIn: process.env.JWT_LOGIN_EXPIRED_IN || '1h',
|
|
35
|
+
jwtid: userId,
|
|
36
|
+
algorithm: 'HS256',
|
|
37
|
+
audience: username,
|
|
38
|
+
issuer: process.env.ISSUER? process.env.ISSUER : 'drax'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let token = jsonwebtoken.sign(
|
|
42
|
+
payload,
|
|
43
|
+
JWT_SECRET,
|
|
44
|
+
options
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return token
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default AuthUtils
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {mongoose} from "@drax/common-back"
|
|
2
|
+
import {IRole} from "../../../src/interfaces/IRole"
|
|
3
|
+
|
|
4
|
+
const role: IRole = {
|
|
5
|
+
_id: new mongoose.Types.ObjectId("646a661e44c93567c23d8d62"),
|
|
6
|
+
name: "Admin",
|
|
7
|
+
permissions: [],
|
|
8
|
+
childRoles: [],
|
|
9
|
+
readonly: false
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default role
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {mongoose} from "@drax/common-back"
|
|
2
|
+
import {IUser} from "../../../src/interfaces/IUser"
|
|
3
|
+
|
|
4
|
+
const user: IUser = {
|
|
5
|
+
_id: new mongoose.Types.ObjectId("646a661e44c93567c23d8d61"),
|
|
6
|
+
active: false,
|
|
7
|
+
groups: [],
|
|
8
|
+
username: "root",
|
|
9
|
+
email: "root@example.com",
|
|
10
|
+
password: "123",
|
|
11
|
+
name: "root",
|
|
12
|
+
role: new mongoose.Types.ObjectId("646a661e44c93567c23d8d62")
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default user
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mongoose } from '@drax/common-back';
|
|
2
|
+
import { MongoMemoryServer } from 'mongodb-memory-server';
|
|
3
|
+
const mongoServer = await MongoMemoryServer.create();
|
|
4
|
+
class MongoInMemory {
|
|
5
|
+
static async connect() {
|
|
6
|
+
if (mongoServer.state == "new") {
|
|
7
|
+
await mongoServer.start();
|
|
8
|
+
}
|
|
9
|
+
if (!mongoose.connection.readyState) {
|
|
10
|
+
await mongoose.connect(mongoServer.getUri(), { dbName: "verifyMASTER" });
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
static get mongooseStatus() {
|
|
15
|
+
return mongoose.connection.readyState;
|
|
16
|
+
}
|
|
17
|
+
static get serverStatus() {
|
|
18
|
+
return mongoServer.state;
|
|
19
|
+
}
|
|
20
|
+
static get status() {
|
|
21
|
+
return mongoose.connection.readyState;
|
|
22
|
+
}
|
|
23
|
+
static async disconnect() {
|
|
24
|
+
await mongoose.disconnect();
|
|
25
|
+
}
|
|
26
|
+
static async DropAndClose() {
|
|
27
|
+
if (mongoServer) {
|
|
28
|
+
await mongoose.connection.dropDatabase();
|
|
29
|
+
await mongoose.connection.close();
|
|
30
|
+
await mongoServer.stop();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export default MongoInMemory;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {mongoose} from '@drax/common-back';
|
|
2
|
+
import { MongoMemoryServer } from 'mongodb-memory-server';
|
|
3
|
+
|
|
4
|
+
const mongoServer = await MongoMemoryServer.create();
|
|
5
|
+
|
|
6
|
+
class MongoInMemory{
|
|
7
|
+
|
|
8
|
+
static async connect(){
|
|
9
|
+
if(mongoServer.state == "new"){
|
|
10
|
+
await mongoServer.start()
|
|
11
|
+
}
|
|
12
|
+
if(!mongoose.connection.readyState){
|
|
13
|
+
await mongoose.connect(mongoServer.getUri(), { dbName: "verifyMASTER" });
|
|
14
|
+
}
|
|
15
|
+
return
|
|
16
|
+
}
|
|
17
|
+
static get mongooseStatus(){
|
|
18
|
+
return mongoose.connection.readyState
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static get serverStatus(){
|
|
22
|
+
return mongoServer.state
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static get status(){
|
|
26
|
+
return mongoose.connection.readyState
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static async disconnect(){
|
|
30
|
+
await mongoose.disconnect();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static async DropAndClose(){
|
|
34
|
+
if (mongoServer) {
|
|
35
|
+
await mongoose.connection.dropDatabase();
|
|
36
|
+
await mongoose.connection.close();
|
|
37
|
+
await mongoServer.stop();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default MongoInMemory
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import RoleService from "../../src/services/RoleService.mjs";
|
|
2
|
+
import RoleRepository from "../../src/repository/RoleRepository.mjs";
|
|
3
|
+
class RoleInitializer {
|
|
4
|
+
static async initAdminRole() {
|
|
5
|
+
const roleService = new RoleService(new RoleRepository());
|
|
6
|
+
let roleData = (await import("../data-obj/roles/admin-role.mjs")).default;
|
|
7
|
+
let roleCreated = await roleService.create(roleData);
|
|
8
|
+
return roleCreated;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export default RoleInitializer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import RoleService from "../../src/services/RoleService";
|
|
2
|
+
import {IRole} from "../../src/interfaces/IRole";
|
|
3
|
+
import RoleRepository from "../../src/repository/RoleRepository";
|
|
4
|
+
|
|
5
|
+
class RoleInitializer{
|
|
6
|
+
|
|
7
|
+
static async initAdminRole(): Promise<IRole>{
|
|
8
|
+
const roleService = new RoleService(new RoleRepository())
|
|
9
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
10
|
+
let roleCreated = await roleService.create(roleData)
|
|
11
|
+
return roleCreated
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default RoleInitializer
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {describe,it, before, after} from "node:test"
|
|
2
|
+
import {equal} from "assert";
|
|
3
|
+
import RoleRepository from "../../src/repository/RoleRepository";
|
|
4
|
+
import MongoInMemory from "../initializers/MongoInMemory";
|
|
5
|
+
import {IRole} from "../../src/interfaces/IRole";
|
|
6
|
+
import {PaginateResult} from "mongoose";
|
|
7
|
+
|
|
8
|
+
describe("RoleRepositoryTest", function() {
|
|
9
|
+
|
|
10
|
+
const roleReposirory = new RoleRepository()
|
|
11
|
+
|
|
12
|
+
before(async () => {
|
|
13
|
+
await MongoInMemory.connect()
|
|
14
|
+
// console.log("BEFORE ROLE", MongoInMemory.mongooseStatus, MongoInMemory.serverStatus)
|
|
15
|
+
return
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
after(async () => {
|
|
19
|
+
await MongoInMemory.DropAndClose()
|
|
20
|
+
//console.log("AFTER ROLE", MongoInMemory.status, MongoInMemory.serverStatus)
|
|
21
|
+
return
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it("Create a role successfully.", async function() {
|
|
25
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
26
|
+
let roleCreated: IRole = await roleReposirory.create(roleData)
|
|
27
|
+
equal(roleCreated.name,roleData.name)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
it("Update a role successfully.", async function() {
|
|
31
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
32
|
+
roleData.name = "AdminUpdated"
|
|
33
|
+
let roleUpdated: IRole = await roleReposirory.update(roleData._id, roleData)
|
|
34
|
+
equal(roleUpdated.name,roleData.name)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
it("Find role by ID successfully.", async function() {
|
|
41
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
42
|
+
let role: IRole = await roleReposirory.findById(roleData._id)
|
|
43
|
+
equal(role.name,roleData.name)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it("Retrieving all roles successfully.", async function() {
|
|
47
|
+
let roles: IRole[] = await roleReposirory.fetch()
|
|
48
|
+
equal(roles.length,1)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
it("Paginate roles successfully.", async function() {
|
|
52
|
+
let paginateRoles: PaginateResult<IRole> = await roleReposirory.paginate()
|
|
53
|
+
equal(paginateRoles.docs.length,1)
|
|
54
|
+
equal(paginateRoles.totalDocs,1)
|
|
55
|
+
equal(paginateRoles.page,1)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it("Delete a role successfully.", async function() {
|
|
59
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
60
|
+
let roleDeleted: Boolean = await roleReposirory.delete(roleData._id)
|
|
61
|
+
equal(roleDeleted,true)
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
it("Fail create role when name has two spaces", async function() {
|
|
65
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
66
|
+
roleData.name = "Admin Role"
|
|
67
|
+
try{
|
|
68
|
+
let roleCreated: IRole = await roleReposirory.create(roleData)
|
|
69
|
+
equal("Not error throw it","Error expected")
|
|
70
|
+
}catch (e) {
|
|
71
|
+
equal(e.errors['name'].message,"Role name cant contain two spaces")
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
})
|
|
75
|
+
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {before, after, describe, it} from "node:test"
|
|
2
|
+
import {equal} from "assert";
|
|
3
|
+
import UserRepository from "../../src/repository/UserRepository";
|
|
4
|
+
import MongoInMemory from "../initializers/MongoInMemory";
|
|
5
|
+
import RoleInitializer from "../initializers/RoleInitializer";
|
|
6
|
+
import {IRole} from "../../src/interfaces/IRole";
|
|
7
|
+
import {IUser} from "../../src/interfaces/IUser";
|
|
8
|
+
import {PaginateResult} from "mongoose";
|
|
9
|
+
|
|
10
|
+
describe("UserRepositoryTest", function () {
|
|
11
|
+
|
|
12
|
+
let userRepository = new UserRepository()
|
|
13
|
+
let adminRole: IRole
|
|
14
|
+
let userAdminData: IUser
|
|
15
|
+
|
|
16
|
+
before(async () => {
|
|
17
|
+
await MongoInMemory.connect()
|
|
18
|
+
adminRole = await RoleInitializer.initAdminRole()
|
|
19
|
+
userAdminData = (await import("../data-obj/users/root-user")).default
|
|
20
|
+
//console.log("BEFORE USER", MongoInMemory.mongooseStatus, MongoInMemory.serverStatus)
|
|
21
|
+
return
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
after(async () => {
|
|
25
|
+
await MongoInMemory.DropAndClose()
|
|
26
|
+
//console.log("AFTER USER", MongoInMemory.status, MongoInMemory.serverStatus)
|
|
27
|
+
return
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
it("Create user successfully", async function () {
|
|
31
|
+
let userCreated = await userRepository.create(userAdminData)
|
|
32
|
+
equal(userCreated.username, userAdminData.username)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it("Update a user successfully.", async function() {
|
|
36
|
+
let adminData = (await import("../data-obj/users/root-user")).default
|
|
37
|
+
adminData.name = "AdminUpdated"
|
|
38
|
+
let userUpdated: IUser = await userRepository.update(adminData._id, adminData)
|
|
39
|
+
equal(userUpdated.name,userUpdated.name)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it("Find user by ID successfully", async function () {
|
|
43
|
+
let userCreated = await userRepository.findById(userAdminData._id)
|
|
44
|
+
equal(userCreated.username, userAdminData.username)
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it("Paginate users successfully.", async function() {
|
|
48
|
+
let paginateUsers: PaginateResult<IUser> = await userRepository.paginate()
|
|
49
|
+
//console.log(paginateUsers)
|
|
50
|
+
equal(paginateUsers.docs.length,1)
|
|
51
|
+
equal(paginateUsers.totalDocs,1)
|
|
52
|
+
equal(paginateUsers.page,1)
|
|
53
|
+
})
|
|
54
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {describe, it, before, after} from "node:test"
|
|
2
|
+
import MongoInMemory from "../initializers/MongoInMemory";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
describe("MockTest", function () {
|
|
7
|
+
|
|
8
|
+
before(async () => {
|
|
9
|
+
await MongoInMemory.connect()
|
|
10
|
+
console.log("BEFORE MOCK", MongoInMemory.mongooseStatus, MongoInMemory.serverStatus)
|
|
11
|
+
return
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
after(async () => {
|
|
15
|
+
await MongoInMemory.DropAndClose()
|
|
16
|
+
console.log("AFTER MOCK", MongoInMemory.status, MongoInMemory.serverStatus)
|
|
17
|
+
return
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
it("should create MOCK", function () {
|
|
22
|
+
console.log("should create mock")
|
|
23
|
+
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {describe,it, before, after} from "node:test"
|
|
2
|
+
import assert from "assert";
|
|
3
|
+
import RoleService from "../../src/services/RoleService";
|
|
4
|
+
import MongoInMemory from "../initializers/MongoInMemory";
|
|
5
|
+
import {IRole} from "../../src/interfaces/IRole";
|
|
6
|
+
import RoleRepository from "../../src/repository/RoleRepository";
|
|
7
|
+
import {IRoleRepository} from "../../src/interfaces/IRoleRepository";
|
|
8
|
+
|
|
9
|
+
describe("RoleServiceTest", function() {
|
|
10
|
+
let roleRepository: IRoleRepository = new RoleRepository()
|
|
11
|
+
let roleService = new RoleService(roleRepository)
|
|
12
|
+
before(async () => {
|
|
13
|
+
await MongoInMemory.connect()
|
|
14
|
+
console.log("BEFORE ROLE", MongoInMemory.mongooseStatus, MongoInMemory.serverStatus)
|
|
15
|
+
return
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
after(async () => {
|
|
19
|
+
await MongoInMemory.DropAndClose()
|
|
20
|
+
console.log("AFTER ROLE", MongoInMemory.status, MongoInMemory.serverStatus)
|
|
21
|
+
return
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it("should create role", async function() {
|
|
25
|
+
let roleData = (await import("../data-obj/roles/admin-role")).default
|
|
26
|
+
let roleCreated: IRole = await roleService.create(roleData)
|
|
27
|
+
|
|
28
|
+
assert.equal(roleCreated.name,roleData.name)
|
|
29
|
+
})
|
|
30
|
+
})
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {before, after, describe, it} from "node:test"
|
|
2
|
+
import assert from "assert";
|
|
3
|
+
import UserService from "../../src/services/UserService";
|
|
4
|
+
import MongoInMemory from "../initializers/MongoInMemory";
|
|
5
|
+
import RoleInitializer from "../initializers/RoleInitializer";
|
|
6
|
+
import {IRole} from "../../src/interfaces/IRole";
|
|
7
|
+
import {IUser} from "../../src/interfaces/IUser";
|
|
8
|
+
import UserRepository from "../../src/repository/UserRepository";
|
|
9
|
+
import {IUserRepository} from "../../src/interfaces/IUserRepository";
|
|
10
|
+
|
|
11
|
+
describe("UserServiceTest", function () {
|
|
12
|
+
let userRepository: IUserRepository = new UserRepository()
|
|
13
|
+
let userService = new UserService(userRepository)
|
|
14
|
+
let adminRole: IRole
|
|
15
|
+
let userAdminData: IUser
|
|
16
|
+
|
|
17
|
+
before(async () => {
|
|
18
|
+
await MongoInMemory.connect()
|
|
19
|
+
adminRole = await RoleInitializer.initAdminRole()
|
|
20
|
+
userAdminData = (await import("../data-obj/users/root-user")).default
|
|
21
|
+
console.log("BEFORE USER", MongoInMemory.mongooseStatus, MongoInMemory.serverStatus)
|
|
22
|
+
return
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
after(async () => {
|
|
26
|
+
await MongoInMemory.DropAndClose()
|
|
27
|
+
console.log("AFTER USER", MongoInMemory.status, MongoInMemory.serverStatus)
|
|
28
|
+
return
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it("should create user", async function () {
|
|
32
|
+
|
|
33
|
+
let userCreated = await userService.create(userAdminData)
|
|
34
|
+
|
|
35
|
+
assert.equal(userCreated.username, userAdminData.username)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it("should find one user", async function () {
|
|
39
|
+
let userCreated = await userService.findById(userAdminData._id)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
assert.equal(userCreated.username, userAdminData.username)
|
|
43
|
+
})
|
|
44
|
+
})
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"rootDir": "src",
|
|
5
|
+
"outDir": "dist",
|
|
6
|
+
"declarationDir": "./types"
|
|
7
|
+
},
|
|
8
|
+
"exclude": ["test", "types","dist"],
|
|
9
|
+
"references": [{ "path": "../../common/common-back" }],
|
|
10
|
+
"ts-node": {
|
|
11
|
+
"esm": true
|
|
12
|
+
}
|
|
13
|
+
}
|