mirror of
https://github.com/sasjs/server.git
synced 2025-12-10 11:24:35 +00:00
fix: add restriction on add/remove user to public group
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
Body
|
||||
} from 'tsoa'
|
||||
|
||||
import Group, { GroupPayload } from '../model/Group'
|
||||
import Group, { GroupPayload, PUBLIC_GROUP_NAME } from '../model/Group'
|
||||
import User from '../model/User'
|
||||
import { UserResponse } from './user'
|
||||
|
||||
@@ -241,6 +241,13 @@ const updateUsersListInGroup = async (
|
||||
message: 'Group not found.'
|
||||
}
|
||||
|
||||
if (group.name === PUBLIC_GROUP_NAME)
|
||||
throw {
|
||||
code: 400,
|
||||
status: 'Bad Request',
|
||||
message: `Can't add/remove user to '${PUBLIC_GROUP_NAME}' group.`
|
||||
}
|
||||
|
||||
const user = await User.findOne({ id: userId })
|
||||
if (!user)
|
||||
throw {
|
||||
|
||||
@@ -5,6 +5,7 @@ import request from 'supertest'
|
||||
import appPromise from '../../../app'
|
||||
import { UserController, GroupController } from '../../../controllers/'
|
||||
import { generateAccessToken, saveTokensInDB } from '../../../utils'
|
||||
import { PUBLIC_GROUP_NAME } from '../../../model/Group'
|
||||
|
||||
const clientId = 'someclientID'
|
||||
const adminUser = {
|
||||
@@ -27,6 +28,12 @@ const group = {
|
||||
description: 'DC group for testing purposes.'
|
||||
}
|
||||
|
||||
const PUBLIC_GROUP = {
|
||||
name: PUBLIC_GROUP_NAME,
|
||||
description:
|
||||
'It is a special group that bypasses authentication for particular routes.'
|
||||
}
|
||||
|
||||
const userController = new UserController()
|
||||
const groupController = new GroupController()
|
||||
|
||||
@@ -535,6 +542,24 @@ describe('group', () => {
|
||||
expect(res.text).toEqual('User not found.')
|
||||
expect(res.body).toEqual({})
|
||||
})
|
||||
|
||||
it('should respond with Bad Request when adding user to Public group', async () => {
|
||||
const dbGroup = await groupController.createGroup(PUBLIC_GROUP)
|
||||
const dbUser = await userController.createUser({
|
||||
...user,
|
||||
username: 'publicUser'
|
||||
})
|
||||
|
||||
const res = await request(app)
|
||||
.post(`/SASjsApi/group/${dbGroup.groupId}/${dbUser.id}`)
|
||||
.auth(adminAccessToken, { type: 'bearer' })
|
||||
.send()
|
||||
.expect(400)
|
||||
|
||||
expect(res.text).toEqual(
|
||||
`Can't add/remove user to '${PUBLIC_GROUP_NAME}' group.`
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('RemoveUser', () => {
|
||||
|
||||
Reference in New Issue
Block a user