tachybase_todo/packages/plugins/acl/src/__tests__/role-user.test.ts
chenos 249dff16d3
refactor: plugin manager (#965)
* feat: improve code

* chore: update version

* feat: api service

* fix: api services

* feat: improve code

* feat: improve code

* feat: improve code

* feat: pm socket

* fix: test errors

* feat: add built-in plugins before upgrade

* feat: update docs

* feat: improve code

* fix: after load
2022-10-27 13:00:16 +08:00

124 lines
2.9 KiB
TypeScript

import Database, { BelongsToManyRepository } from '@nocobase/database';
import PluginACL from '@nocobase/plugin-acl';
import UsersPlugin from '@nocobase/plugin-users';
import { MockServer, mockServer } from '@nocobase/test';
describe('role', () => {
let api: MockServer;
let db: Database;
let usersPlugin: UsersPlugin;
beforeEach(async () => {
api = mockServer();
await api.cleanDb();
api.plugin(UsersPlugin, { name: 'users' });
api.plugin(PluginACL, { name: 'acl' });
await api.loadAndInstall();
db = api.db;
usersPlugin = api.getPlugin('users');
});
afterEach(async () => {
await api.destroy();
});
it('should set default role', async () => {
await db.getRepository('roles').create({
values: {
name: 'test1',
title: 'Admin User',
allowConfigure: true,
default: true,
},
});
const user = await db.getRepository('users').create({});
// @ts-ignore
const roles = await user.getRoles();
expect(roles.length).toEqual(1);
expect(roles[0].get('name')).toEqual('test1');
});
it('should not add role when user has role', async () => {
await db.getRepository('roles').create({
values: {
name: 'test1',
default: true,
},
});
await db.getRepository('roles').create({
values: {
name: 'test2',
},
});
const user = await db.getRepository('users').create({
values: {
roles: [
{
name: 'test2',
},
],
},
});
// @ts-ignore
const roles = await user.getRoles();
expect(roles.length).toEqual(1);
expect(roles[0].get('name')).toEqual('test2');
});
it('should set users default role', async () => {
await db.getRepository('roles').create({
values: {
name: 'test1',
title: 'Admin User',
allowConfigure: true,
default: true,
},
});
await db.getRepository('roles').create({
values: {
name: 'test2',
title: 'test2 user',
allowConfigure: true,
},
});
const user = await db.getRepository('users').create({
values: {
token: '123',
},
});
const userRolesRepo = db.getRepository<BelongsToManyRepository>('users.roles', user.get('id') as string);
await userRolesRepo.add('test1');
await userRolesRepo.add('test2');
const userToken = usersPlugin.jwtService.sign({ userId: user.get('id') });
const response = await api
.agent()
.post('/users:setDefaultRole')
.send({
roleName: 'test2',
})
.set({
Authorization: `Bearer ${userToken}`,
});
expect(response.statusCode).toEqual(200);
const userRoles = await userRolesRepo.find();
const defaultRole = userRoles.find((userRole) => userRole.get('rolesUsers').default);
expect(defaultRole['name']).toEqual('test2');
});
});