[MM-27377] api4/team_local: add updateChannelPrivacy and restoreTeam to local mode (#15201)
* api4/team_local: add update ch privacy to local mode * api4/team_local: add restoreTeam to local mode * api4/team: add a test case
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
aa88fb445c
Коммит
5ab06162dc
@@ -21,6 +21,8 @@ func (api *API) InitTeamLocal() {
|
|||||||
api.BaseRoutes.Team.Handle("", api.ApiLocal(localDeleteTeam)).Methods("DELETE")
|
api.BaseRoutes.Team.Handle("", api.ApiLocal(localDeleteTeam)).Methods("DELETE")
|
||||||
api.BaseRoutes.Team.Handle("/invite/email", api.ApiLocal(localInviteUsersToTeam)).Methods("POST")
|
api.BaseRoutes.Team.Handle("/invite/email", api.ApiLocal(localInviteUsersToTeam)).Methods("POST")
|
||||||
api.BaseRoutes.Team.Handle("/patch", api.ApiLocal(patchTeam)).Methods("PUT")
|
api.BaseRoutes.Team.Handle("/patch", api.ApiLocal(patchTeam)).Methods("PUT")
|
||||||
|
api.BaseRoutes.Team.Handle("/privacy", api.ApiLocal(updateTeamPrivacy)).Methods("PUT")
|
||||||
|
api.BaseRoutes.Team.Handle("/restore", api.ApiLocal(restoreTeam)).Methods("POST")
|
||||||
|
|
||||||
api.BaseRoutes.TeamByName.Handle("", api.ApiLocal(getTeamByName)).Methods("GET")
|
api.BaseRoutes.TeamByName.Handle("", api.ApiLocal(getTeamByName)).Methods("GET")
|
||||||
api.BaseRoutes.TeamMembers.Handle("", api.ApiLocal(addTeamMember)).Methods("POST")
|
api.BaseRoutes.TeamMembers.Handle("", api.ApiLocal(addTeamMember)).Methods("POST")
|
||||||
|
|||||||
@@ -507,29 +507,29 @@ func TestRestoreTeam(t *testing.T) {
|
|||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("restore archived public team", func(t *testing.T) {
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
team := createTeam(t, true, model.TEAM_OPEN)
|
team := createTeam(t, true, model.TEAM_OPEN)
|
||||||
team, resp := Client.RestoreTeam(team.Id)
|
team, resp := client.RestoreTeam(team.Id)
|
||||||
CheckOKStatus(t, resp)
|
CheckOKStatus(t, resp)
|
||||||
require.Zero(t, team.DeleteAt)
|
require.Zero(t, team.DeleteAt)
|
||||||
require.Equal(t, model.TEAM_OPEN, team.Type)
|
require.Equal(t, model.TEAM_OPEN, team.Type)
|
||||||
})
|
}, "restore archived public team")
|
||||||
|
|
||||||
t.Run("restore archived private team", func(t *testing.T) {
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
team := createTeam(t, true, model.TEAM_INVITE)
|
team := createTeam(t, true, model.TEAM_INVITE)
|
||||||
team, resp := Client.RestoreTeam(team.Id)
|
team, resp := client.RestoreTeam(team.Id)
|
||||||
CheckOKStatus(t, resp)
|
CheckOKStatus(t, resp)
|
||||||
require.Zero(t, team.DeleteAt)
|
require.Zero(t, team.DeleteAt)
|
||||||
require.Equal(t, model.TEAM_INVITE, team.Type)
|
require.Equal(t, model.TEAM_INVITE, team.Type)
|
||||||
})
|
}, "restore archived private team")
|
||||||
|
|
||||||
t.Run("restore active public team", func(t *testing.T) {
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
team := createTeam(t, false, model.TEAM_OPEN)
|
team := createTeam(t, false, model.TEAM_OPEN)
|
||||||
team, resp := Client.RestoreTeam(team.Id)
|
team, resp := client.RestoreTeam(team.Id)
|
||||||
CheckOKStatus(t, resp)
|
CheckOKStatus(t, resp)
|
||||||
require.Zero(t, team.DeleteAt)
|
require.Zero(t, team.DeleteAt)
|
||||||
require.Equal(t, model.TEAM_OPEN, team.Type)
|
require.Equal(t, model.TEAM_OPEN, team.Type)
|
||||||
})
|
}, "restore active public team")
|
||||||
|
|
||||||
t.Run("not logged in", func(t *testing.T) {
|
t.Run("not logged in", func(t *testing.T) {
|
||||||
Client.Logout()
|
Client.Logout()
|
||||||
@@ -542,6 +542,11 @@ func TestRestoreTeam(t *testing.T) {
|
|||||||
_, resp := Client.RestoreTeam(teamPublic.Id)
|
_, resp := Client.RestoreTeam(teamPublic.Id)
|
||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
|
_, resp := client.RestoreTeam(teamPublic.Id)
|
||||||
|
CheckOKStatus(t, resp)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPatchTeamSanitization(t *testing.T) {
|
func TestPatchTeamSanitization(t *testing.T) {
|
||||||
@@ -613,7 +618,6 @@ func TestUpdateTeamPrivacy(t *testing.T) {
|
|||||||
originalInviteId string
|
originalInviteId string
|
||||||
}{
|
}{
|
||||||
{name: "bad privacy", team: teamPublic, privacy: "blap", errChecker: CheckBadRequestStatus, wantType: model.TEAM_OPEN, wantOpenInvite: true},
|
{name: "bad privacy", team: teamPublic, privacy: "blap", errChecker: CheckBadRequestStatus, wantType: model.TEAM_OPEN, wantOpenInvite: true},
|
||||||
{name: "bad team", team: &model.Team{Id: model.NewId()}, privacy: model.TEAM_OPEN, errChecker: CheckForbiddenStatus, wantType: model.TEAM_OPEN, wantOpenInvite: true},
|
|
||||||
{name: "public to private", team: teamPublic, privacy: model.TEAM_INVITE, errChecker: nil, wantType: model.TEAM_INVITE, wantOpenInvite: false, originalInviteId: teamPublic.InviteId, wantInviteIdChanged: true},
|
{name: "public to private", team: teamPublic, privacy: model.TEAM_INVITE, errChecker: nil, wantType: model.TEAM_INVITE, wantOpenInvite: false, originalInviteId: teamPublic.InviteId, wantInviteIdChanged: true},
|
||||||
{name: "private to public", team: teamPrivate, privacy: model.TEAM_OPEN, errChecker: nil, wantType: model.TEAM_OPEN, wantOpenInvite: true, originalInviteId: teamPrivate.InviteId, wantInviteIdChanged: false},
|
{name: "private to public", team: teamPrivate, privacy: model.TEAM_OPEN, errChecker: nil, wantType: model.TEAM_OPEN, wantOpenInvite: true, originalInviteId: teamPrivate.InviteId, wantInviteIdChanged: false},
|
||||||
{name: "public to public", team: teamPublic2, privacy: model.TEAM_OPEN, errChecker: nil, wantType: model.TEAM_OPEN, wantOpenInvite: true, originalInviteId: teamPublic2.InviteId, wantInviteIdChanged: false},
|
{name: "public to public", team: teamPublic2, privacy: model.TEAM_OPEN, errChecker: nil, wantType: model.TEAM_OPEN, wantOpenInvite: true, originalInviteId: teamPublic2.InviteId, wantInviteIdChanged: false},
|
||||||
@@ -622,24 +626,36 @@ func TestUpdateTeamPrivacy(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
team, resp := Client.UpdateTeamPrivacy(test.team.Id, test.privacy)
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
if test.errChecker != nil {
|
team, resp := client.UpdateTeamPrivacy(test.team.Id, test.privacy)
|
||||||
test.errChecker(t, resp)
|
if test.errChecker != nil {
|
||||||
return
|
test.errChecker(t, resp)
|
||||||
} else {
|
return
|
||||||
CheckNoError(t, resp)
|
} else {
|
||||||
CheckOKStatus(t, resp)
|
CheckNoError(t, resp)
|
||||||
}
|
CheckOKStatus(t, resp)
|
||||||
require.Equal(t, test.wantType, team.Type)
|
}
|
||||||
require.Equal(t, test.wantOpenInvite, team.AllowOpenInvite)
|
require.Equal(t, test.wantType, team.Type)
|
||||||
if test.wantInviteIdChanged {
|
require.Equal(t, test.wantOpenInvite, team.AllowOpenInvite)
|
||||||
require.NotEqual(t, test.originalInviteId, team.InviteId)
|
if test.wantInviteIdChanged {
|
||||||
} else {
|
require.NotEqual(t, test.originalInviteId, team.InviteId)
|
||||||
require.Equal(t, test.originalInviteId, team.InviteId)
|
} else {
|
||||||
}
|
require.Equal(t, test.originalInviteId, team.InviteId)
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Run("non-existent team", func(t *testing.T) {
|
||||||
|
_, resp := Client.UpdateTeamPrivacy(model.NewId(), model.TEAM_INVITE)
|
||||||
|
CheckForbiddenStatus(t, resp)
|
||||||
|
})
|
||||||
|
|
||||||
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
|
_, resp := client.UpdateTeamPrivacy(model.NewId(), model.TEAM_INVITE)
|
||||||
|
CheckNotFoundStatus(t, resp)
|
||||||
|
}, "non-existent team for admins")
|
||||||
|
|
||||||
t.Run("not logged in", func(t *testing.T) {
|
t.Run("not logged in", func(t *testing.T) {
|
||||||
Client.Logout()
|
Client.Logout()
|
||||||
_, resp := Client.UpdateTeamPrivacy(teamPublic.Id, model.TEAM_INVITE)
|
_, resp := Client.UpdateTeamPrivacy(teamPublic.Id, model.TEAM_INVITE)
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user