|
@@ -7,7 +7,7 @@ import { AppDataSource, initializeDataSource } from '@d8d/shared-utils';
|
|
|
// 确保测试环境变量被设置
|
|
// 确保测试环境变量被设置
|
|
|
process.env.NODE_ENV = 'test';
|
|
process.env.NODE_ENV = 'test';
|
|
|
|
|
|
|
|
-describe('Role Integration Tests', () => {
|
|
|
|
|
|
|
+describe('角色集成测试', () => {
|
|
|
let dataSource: DataSource;
|
|
let dataSource: DataSource;
|
|
|
let roleService: RoleServiceMt;
|
|
let roleService: RoleServiceMt;
|
|
|
|
|
|
|
@@ -30,8 +30,8 @@ describe('Role Integration Tests', () => {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- describe('Role CRUD Operations', () => {
|
|
|
|
|
- it('should create and retrieve a role', async () => {
|
|
|
|
|
|
|
+ describe('角色CRUD操作', () => {
|
|
|
|
|
+ it('应该创建并检索角色', async () => {
|
|
|
// Create role
|
|
// Create role
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'admin',
|
|
name: 'admin',
|
|
@@ -53,7 +53,7 @@ describe('Role Integration Tests', () => {
|
|
|
expect(retrievedRole?.name).toBe(roleData.name);
|
|
expect(retrievedRole?.name).toBe(roleData.name);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should update role information', async () => {
|
|
|
|
|
|
|
+ it('应该更新角色信息', async () => {
|
|
|
// Create role first
|
|
// Create role first
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'updaterole',
|
|
name: 'updaterole',
|
|
@@ -77,7 +77,7 @@ describe('Role Integration Tests', () => {
|
|
|
expect(updatedRole?.permissions).toEqual(updateData.permissions);
|
|
expect(updatedRole?.permissions).toEqual(updateData.permissions);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should delete role', async () => {
|
|
|
|
|
|
|
+ it('应该删除角色', async () => {
|
|
|
// Create role first
|
|
// Create role first
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'deleterole',
|
|
name: 'deleterole',
|
|
@@ -97,7 +97,7 @@ describe('Role Integration Tests', () => {
|
|
|
expect(retrievedRole).toBeNull();
|
|
expect(retrievedRole).toBeNull();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should get role by name', async () => {
|
|
|
|
|
|
|
+ it('应该根据角色名获取角色', async () => {
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'specificrole',
|
|
name: 'specificrole',
|
|
|
description: 'Specific role for testing',
|
|
description: 'Specific role for testing',
|
|
@@ -113,8 +113,8 @@ describe('Role Integration Tests', () => {
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- describe('Role List Operations', () => {
|
|
|
|
|
- it('should get paginated list of roles', async () => {
|
|
|
|
|
|
|
+ describe('角色列表操作', () => {
|
|
|
|
|
+ it('应该获取分页角色列表', async () => {
|
|
|
// Create multiple roles
|
|
// Create multiple roles
|
|
|
const rolesData = [
|
|
const rolesData = [
|
|
|
{ name: 'role1', description: 'Role 1', permissions: ['user:read'], tenantId: 1 },
|
|
{ name: 'role1', description: 'Role 1', permissions: ['user:read'], tenantId: 1 },
|
|
@@ -135,7 +135,7 @@ describe('Role Integration Tests', () => {
|
|
|
);
|
|
);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should search roles by name', async () => {
|
|
|
|
|
|
|
+ it('应该根据角色名搜索角色', async () => {
|
|
|
// Create roles with different names
|
|
// Create roles with different names
|
|
|
await roleService.create({ name: 'admin', description: 'Admin role', permissions: ['user:create'], tenantId: 1 });
|
|
await roleService.create({ name: 'admin', description: 'Admin role', permissions: ['user:create'], tenantId: 1 });
|
|
|
await roleService.create({ name: 'user', description: 'User role', permissions: ['user:read'], tenantId: 1 });
|
|
await roleService.create({ name: 'user', description: 'User role', permissions: ['user:read'], tenantId: 1 });
|
|
@@ -151,8 +151,8 @@ describe('Role Integration Tests', () => {
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- describe('Permission Checking', () => {
|
|
|
|
|
- it('should check if role has permission', async () => {
|
|
|
|
|
|
|
+ describe('权限检查', () => {
|
|
|
|
|
+ it('应该检查角色是否拥有权限', async () => {
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'permissionrole',
|
|
name: 'permissionrole',
|
|
|
description: 'Role with specific permissions',
|
|
description: 'Role with specific permissions',
|
|
@@ -171,14 +171,14 @@ describe('Role Integration Tests', () => {
|
|
|
expect(await roleService.hasPermission(role.id, 'user:delete')).toBe(false);
|
|
expect(await roleService.hasPermission(role.id, 'user:delete')).toBe(false);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should return false for non-existent role', async () => {
|
|
|
|
|
|
|
+ it('应该对不存在的角色返回false', async () => {
|
|
|
const hasPermission = await roleService.hasPermission(999, 'user:create');
|
|
const hasPermission = await roleService.hasPermission(999, 'user:create');
|
|
|
expect(hasPermission).toBe(false);
|
|
expect(hasPermission).toBe(false);
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- describe('Role Validation', () => {
|
|
|
|
|
- it('should allow same role names in different tenants', async () => {
|
|
|
|
|
|
|
+ describe('角色验证', () => {
|
|
|
|
|
+ it('应该允许不同租户使用相同的角色名', async () => {
|
|
|
const roleData1 = {
|
|
const roleData1 = {
|
|
|
name: 'same_name',
|
|
name: 'same_name',
|
|
|
description: 'Role in tenant 1',
|
|
description: 'Role in tenant 1',
|
|
@@ -204,7 +204,7 @@ describe('Role Integration Tests', () => {
|
|
|
expect(role2.tenantId).toBe(2);
|
|
expect(role2.tenantId).toBe(2);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- it('should require at least one permission', async () => {
|
|
|
|
|
|
|
+ it('应该要求至少一个权限', async () => {
|
|
|
const roleData = {
|
|
const roleData = {
|
|
|
name: 'nopermission',
|
|
name: 'nopermission',
|
|
|
description: 'Role without permissions',
|
|
description: 'Role without permissions',
|