Adds a team check to get groups by team (#25462)
* Adds a team check to get groups by team * Update to take into account groups_by_channel and new permissions * Update API docs
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
a1bdbe9875
Коммит
e1a27cf57f
@@ -1111,6 +1111,23 @@ func TestGetGroupsAssociatedToChannelsByTeam(t *testing.T) {
|
||||
groups, _, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), model.NewId(), opts)
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, groups)
|
||||
|
||||
t.Run("should get the groups ok when belonging to the team", func(t *testing.T) {
|
||||
groups, resp, err := th.Client.GetGroupsAssociatedToChannelsByTeam(context.Background(), th.BasicTeam.Id, opts)
|
||||
require.NoError(t, err)
|
||||
CheckOKStatus(t, resp)
|
||||
require.NotEmpty(t, groups)
|
||||
})
|
||||
|
||||
t.Run("should return forbidden when the user doesn't have the right permissions", func(t *testing.T) {
|
||||
require.Nil(t, th.App.RemoveUserFromTeam(th.Context, th.BasicTeam.Id, th.BasicUser.Id, th.SystemAdminUser.Id))
|
||||
defer th.App.AddUserToTeam(th.Context, th.BasicTeam.Id, th.BasicUser.Id, th.SystemAdminUser.Id)
|
||||
|
||||
groups, resp, err := th.Client.GetGroupsAssociatedToChannelsByTeam(context.Background(), th.BasicTeam.Id, opts)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
require.Empty(t, groups)
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetGroupsByTeam(t *testing.T) {
|
||||
@@ -1189,6 +1206,36 @@ func TestGetGroupsByTeam(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, groups)
|
||||
})
|
||||
|
||||
t.Run("groups should be fetched only by users with the right permissions", func(t *testing.T) {
|
||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||
groups, _, _, err := client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, groups, 1)
|
||||
require.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(true)}}, groups)
|
||||
require.NotNil(t, groups[0].SchemeAdmin)
|
||||
require.True(t, *groups[0].SchemeAdmin)
|
||||
}, "groups can be fetched by system admins even if they're not part of a team")
|
||||
|
||||
t.Run("user can fetch groups if it's part of the team", func(t *testing.T) {
|
||||
groups, _, _, err := th.Client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, groups, 1)
|
||||
require.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(true)}}, groups)
|
||||
require.NotNil(t, groups[0].SchemeAdmin)
|
||||
require.True(t, *groups[0].SchemeAdmin)
|
||||
})
|
||||
|
||||
t.Run("user can't fetch groups if it's not part of the team", func(t *testing.T) {
|
||||
require.Nil(t, th.App.RemoveUserFromTeam(th.Context, th.BasicTeam.Id, th.BasicUser.Id, th.SystemAdminUser.Id))
|
||||
defer th.App.AddUserToTeam(th.Context, th.BasicTeam.Id, th.BasicUser.Id, th.SystemAdminUser.Id)
|
||||
|
||||
groups, _, response, err := th.Client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, response)
|
||||
require.Empty(t, groups)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetGroups(t *testing.T) {
|
||||
|
||||
Ссылка в новой задаче
Block a user