Fix MM64178 (#30957)
Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
edbfc3d933
Коммит
1b7d27707d
@@ -3976,12 +3976,27 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
|
||||
|
||||
th.LoginBasic()
|
||||
|
||||
// cannot change the user scheme to false
|
||||
s1 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: false,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err := SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s1)
|
||||
require.Error(t, err)
|
||||
|
||||
tm1, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm1.SchemeGuest)
|
||||
assert.Equal(t, true, tm1.SchemeUser)
|
||||
assert.Equal(t, false, tm1.SchemeAdmin)
|
||||
|
||||
s2 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s2)
|
||||
require.NoError(t, err)
|
||||
|
||||
waiting := true
|
||||
@@ -3998,20 +4013,6 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
tm1, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm1.SchemeGuest)
|
||||
assert.Equal(t, false, tm1.SchemeUser)
|
||||
assert.Equal(t, false, tm1.SchemeAdmin)
|
||||
|
||||
s2 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s2)
|
||||
require.NoError(t, err)
|
||||
|
||||
tm2, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm2.SchemeGuest)
|
||||
@@ -4025,7 +4026,7 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
|
||||
|
||||
s3 := &model.SchemeRoles{
|
||||
SchemeAdmin: true,
|
||||
SchemeUser: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s3)
|
||||
@@ -4034,60 +4035,46 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
|
||||
tm3, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm3.SchemeGuest)
|
||||
assert.Equal(t, false, tm3.SchemeUser)
|
||||
assert.Equal(t, true, tm3.SchemeUser)
|
||||
assert.Equal(t, true, tm3.SchemeAdmin)
|
||||
|
||||
s4 := &model.SchemeRoles{
|
||||
SchemeAdmin: true,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s4)
|
||||
require.NoError(t, err)
|
||||
|
||||
tm4, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm4.SchemeGuest)
|
||||
assert.Equal(t, true, tm4.SchemeUser)
|
||||
assert.Equal(t, true, tm4.SchemeAdmin)
|
||||
|
||||
s5 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: false,
|
||||
SchemeGuest: true,
|
||||
}
|
||||
// cannot set user to guest for a single channel
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s5)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s4)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
s6 := &model.SchemeRoles{
|
||||
s5 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: true,
|
||||
}
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s6)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s5)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, model.NewId(), s4)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, model.NewId(), s3)
|
||||
require.Error(t, err)
|
||||
CheckNotFoundStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, "ASDF", s4)
|
||||
resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, "ASDF", s3)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
th.LoginBasic2()
|
||||
resp, err = th.Client.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s4)
|
||||
resp, err = th.Client.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
|
||||
@@ -3333,18 +3333,19 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) {
|
||||
SystemAdminClient := th.SystemAdminClient
|
||||
th.LoginBasic()
|
||||
|
||||
// cannot change the user scheme to false
|
||||
s1 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: false,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err := SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s1)
|
||||
require.NoError(t, err)
|
||||
require.Error(t, err)
|
||||
|
||||
tm1, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm1.SchemeGuest)
|
||||
assert.Equal(t, false, tm1.SchemeUser)
|
||||
assert.Equal(t, true, tm1.SchemeUser)
|
||||
assert.Equal(t, false, tm1.SchemeAdmin)
|
||||
|
||||
s2 := &model.SchemeRoles{
|
||||
@@ -3368,7 +3369,7 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) {
|
||||
|
||||
s3 := &model.SchemeRoles{
|
||||
SchemeAdmin: true,
|
||||
SchemeUser: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s3)
|
||||
@@ -3377,71 +3378,57 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) {
|
||||
tm3, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm3.SchemeGuest)
|
||||
assert.Equal(t, false, tm3.SchemeUser)
|
||||
assert.Equal(t, true, tm3.SchemeUser)
|
||||
assert.Equal(t, true, tm3.SchemeAdmin)
|
||||
|
||||
s4 := &model.SchemeRoles{
|
||||
SchemeAdmin: true,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: false,
|
||||
}
|
||||
_, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s4)
|
||||
require.NoError(t, err)
|
||||
|
||||
tm4, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, false, tm4.SchemeGuest)
|
||||
assert.Equal(t, true, tm4.SchemeUser)
|
||||
assert.Equal(t, true, tm4.SchemeAdmin)
|
||||
|
||||
s5 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: false,
|
||||
SchemeGuest: true,
|
||||
}
|
||||
|
||||
// cannot set user to guest for a single team
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s5)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s4)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
s6 := &model.SchemeRoles{
|
||||
s5 := &model.SchemeRoles{
|
||||
SchemeAdmin: false,
|
||||
SchemeUser: true,
|
||||
SchemeGuest: true,
|
||||
}
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s6)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s5)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckNotFoundStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, model.NewId(), s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, model.NewId(), s3)
|
||||
require.Error(t, err)
|
||||
CheckNotFoundStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, guest.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, guest.Id, s3)
|
||||
require.Error(t, err) // user is a guest, cannot be set as member or admin
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, "ASDF", s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, "ASDF", s3)
|
||||
require.Error(t, err)
|
||||
CheckBadRequestStatus(t, resp)
|
||||
|
||||
th.LoginBasic2()
|
||||
resp, err = th.Client.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s4)
|
||||
resp, err = th.Client.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
|
||||
_, err = SystemAdminClient.Logout(context.Background())
|
||||
require.NoError(t, err)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, s4)
|
||||
resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, s3)
|
||||
require.Error(t, err)
|
||||
CheckUnauthorizedStatus(t, resp)
|
||||
}
|
||||
|
||||
@@ -1324,6 +1324,10 @@ func (a *App) UpdateChannelMemberSchemeRoles(c request.CTX, channelID string, us
|
||||
return nil, model.NewAppError("UpdateChannelMemberSchemeRoles", "api.channel.update_channel_member_roles.user_and_guest.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if !isSchemeUser {
|
||||
return nil, model.NewAppError("UpdateChannelMemberSchemeRoles", "api.channel.update_channel_member_roles.unset_user_scheme.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
member.SchemeAdmin = isSchemeAdmin
|
||||
member.SchemeUser = isSchemeUser
|
||||
member.SchemeGuest = isSchemeGuest
|
||||
|
||||
@@ -490,6 +490,10 @@ func (a *App) UpdateTeamMemberSchemeRoles(c request.CTX, teamID string, userID s
|
||||
return nil, model.NewAppError("UpdateTeamMemberSchemeRoles", "api.team.update_team_member_roles.user_and_guest.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if !isSchemeUser {
|
||||
return nil, model.NewAppError("UpdateTeamMemberSchemeRoles", "api.team.update_team_member_roles.unset_user_scheme.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
member.SchemeAdmin = isSchemeAdmin
|
||||
member.SchemeUser = isSchemeUser
|
||||
member.SchemeGuest = isSchemeGuest
|
||||
|
||||
@@ -575,6 +575,10 @@
|
||||
"id": "api.channel.update_channel_member_roles.scheme_role.app_error",
|
||||
"translation": "The provided role is managed by a Scheme and therefore cannot be applied directly to a Channel Member."
|
||||
},
|
||||
{
|
||||
"id": "api.channel.update_channel_member_roles.unset_user_scheme.app_error",
|
||||
"translation": "Invalid channel member update: A channel member always has a user scheme."
|
||||
},
|
||||
{
|
||||
"id": "api.channel.update_channel_member_roles.user_and_guest.app_error",
|
||||
"translation": "Invalid channel member update: A guest cannot be set for a single channel, a System Admin must promote or demote users to/from guests."
|
||||
@@ -3390,6 +3394,10 @@
|
||||
"id": "api.team.update_team_member_roles.guest_and_user.app_error",
|
||||
"translation": "Invalid team member update: A user must be a guest or a user but not both."
|
||||
},
|
||||
{
|
||||
"id": "api.team.update_team_member_roles.unset_user_scheme.app_error",
|
||||
"translation": "Invalid team member update: A team member always has a user scheme."
|
||||
},
|
||||
{
|
||||
"id": "api.team.update_team_member_roles.user_and_guest.app_error",
|
||||
"translation": "Invalid team member update: A guest cannot be set for a single team, a System Admin must promote or demote users to/from guests."
|
||||
|
||||
Ссылка в новой задаче
Block a user