feat: make role name unique and remove key usage

This commit is contained in:
Ali BARIN
2024-09-04 11:07:45 +00:00
parent b089069b8e
commit 63dfb6947e
33 changed files with 51 additions and 55 deletions

View File

@@ -15,7 +15,7 @@ describe('POST /api/v1/admin/apps/:appKey/auth-clients', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -15,7 +15,7 @@ describe('POST /api/v1/admin/apps/:appKey/config', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -15,7 +15,7 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients/:appAuthClientId', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
currentAppAuthClient = await createAppAuthClient({

View File

@@ -14,7 +14,7 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -17,7 +17,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/auth-clients', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -15,7 +15,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -14,7 +14,7 @@ describe('PATCH /api/v1/admin/config', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -11,7 +11,7 @@ describe('GET /api/v1/admin/permissions/catalog', () => {
let role, currentUser, token;
beforeEach(async () => {
role = await createRole({ key: 'admin' });
role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -1,4 +1,3 @@
import kebabCase from 'lodash/kebabCase.js';
import { renderObject } from '../../../../../helpers/renderer.js';
import Role from '../../../../../models/role.js';
@@ -14,10 +13,8 @@ export default async (request, response) => {
const roleParams = (request) => {
const { name, description, permissions } = request.body;
const key = kebabCase(name);
return {
key,
name,
description,
permissions,

View File

@@ -14,7 +14,7 @@ describe('POST /api/v1/admin/roles', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
role = await createRole({ key: 'admin' });
role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
token = await createAuthTokenByUserId(currentUser.id);
@@ -41,7 +41,7 @@ describe('POST /api/v1/admin/roles', () => {
const createdRole = await Role.query()
.withGraphFetched({ permissions: true })
.findOne({ key: 'viewer' })
.findOne({ name: 'Viewer' })
.throwIfNotFound();
const expectedPayload = await createRoleMock(
@@ -61,7 +61,7 @@ describe('POST /api/v1/admin/roles', () => {
expect(response.body).toEqual(expectedPayload);
});
it('should return unprocessable entity response for invalid data', async () => {
it('should return unprocessable entity response for invalid role data', async () => {
const roleData = {
description: '',
permissions: [],
@@ -76,7 +76,6 @@ describe('POST /api/v1/admin/roles', () => {
expect(response.body).toStrictEqual({
errors: {
name: ["must have required property 'name'"],
key: ['must NOT have fewer than 1 characters'],
},
meta: {
type: 'ModelValidation',
@@ -85,8 +84,10 @@ describe('POST /api/v1/admin/roles', () => {
});
it('should return unprocessable entity response for duplicate role', async () => {
await createRole({ name: 'Viewer' });
const roleData = {
name: 'admin',
name: 'Viewer',
permissions: [],
};
@@ -98,7 +99,7 @@ describe('POST /api/v1/admin/roles', () => {
expect(response.body).toStrictEqual({
errors: {
key: ["'key' must be unique."],
name: ["'name' must be unique."],
},
meta: {
type: 'UniqueViolationError',

View File

@@ -13,7 +13,7 @@ describe('GET /api/v1/admin/roles/:roleId', () => {
let role, currentUser, token, permissionOne, permissionTwo;
beforeEach(async () => {
role = await createRole({ key: 'admin' });
role = await createRole({ name: 'Admin' });
permissionOne = await createPermission({ roleId: role.id });
permissionTwo = await createPermission({ roleId: role.id });
currentUser = await createUser({ roleId: role.id });

View File

@@ -11,8 +11,8 @@ describe('GET /api/v1/admin/roles', () => {
let roleOne, roleTwo, currentUser, token;
beforeEach(async () => {
roleOne = await createRole({ key: 'admin' });
roleTwo = await createRole({ key: 'user' });
roleOne = await createRole({ name: 'Admin' });
roleTwo = await createRole({ name: 'User' });
currentUser = await createUser({ roleId: roleOne.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -13,7 +13,7 @@ describe('POST /api/v1/admin/saml-auth-provider', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
role = await createRole({ key: 'admin' });
role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -13,7 +13,7 @@ describe('GET /api/v1/admin/saml-auth-providers/:samlAuthProviderId/role-mapping
let roleMappingOne, roleMappingTwo, samlAuthProvider, currentUser, token;
beforeEach(async () => {
const role = await createRole({ key: 'admin' });
const role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
samlAuthProvider = await createSamlAuthProvider();

View File

@@ -13,7 +13,7 @@ describe('GET /api/v1/admin/saml-auth-provider/:samlAuthProviderId', () => {
let samlAuthProvider, currentUser, token;
beforeEach(async () => {
const role = await createRole({ key: 'admin' });
const role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
samlAuthProvider = await createSamlAuthProvider();

View File

@@ -12,7 +12,7 @@ describe('GET /api/v1/admin/saml-auth-providers', () => {
let samlAuthProviderOne, samlAuthProviderTwo, currentUser, token;
beforeEach(async () => {
const role = await createRole({ key: 'admin' });
const role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
samlAuthProviderOne = await createSamlAuthProvider();

View File

@@ -15,7 +15,7 @@ describe('PATCH /api/v1/admin/saml-auth-provider/:samlAuthProviderId', () => {
beforeEach(async () => {
vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true);
role = await createRole({ key: 'admin' });
role = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: role.id });
token = await createAuthTokenByUserId(currentUser.id);

View File

@@ -10,7 +10,7 @@ describe('DELETE /api/v1/admin/users/:userId', () => {
let currentUser, currentUserRole, anotherUser, token;
beforeEach(async () => {
currentUserRole = await createRole({ key: 'admin' });
currentUserRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: currentUserRole.id });
anotherUser = await createUser();

View File

@@ -12,7 +12,7 @@ describe('GET /api/v1/admin/users/:userId', () => {
let currentUser, currentUserRole, anotherUser, anotherUserRole, token;
beforeEach(async () => {
currentUserRole = await createRole({ key: 'admin' });
currentUserRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: currentUserRole.id });
anotherUser = await createUser();

View File

@@ -10,7 +10,7 @@ describe('GET /api/v1/admin/users', () => {
let currentUser, currentUserRole, anotherUser, anotherUserRole, token;
beforeEach(async () => {
currentUserRole = await createRole({ key: 'admin' });
currentUserRole = await createRole({ name: 'Admin' });
currentUser = await createUser({
roleId: currentUserRole.id,
@@ -18,7 +18,6 @@ describe('GET /api/v1/admin/users', () => {
});
anotherUserRole = await createRole({
key: 'anotherUser',
name: 'Another user role',
});

View File

@@ -11,7 +11,7 @@ describe('PATCH /api/v1/admin/users/:userId', () => {
let currentUser, adminRole, token;
beforeEach(async () => {
adminRole = await createRole({ key: 'admin' });
adminRole = await createRole({ name: 'Admin' });
currentUser = await createUser({ roleId: adminRole.id });
token = await createAuthTokenByUserId(currentUser.id);