[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
Этот коммит содержится в:
Ibrahim Serdar Acikgoz
2020-08-12 18:20:53 +03:00
коммит произвёл GitHub
родитель aa88fb445c
Коммит 5ab06162dc
2 изменённых файлов: 43 добавлений и 25 удалений

Просмотреть файл

@@ -21,6 +21,8 @@ func (api *API) InitTeamLocal() {
api.BaseRoutes.Team.Handle("", api.ApiLocal(localDeleteTeam)).Methods("DELETE")
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("/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.TeamMembers.Handle("", api.ApiLocal(addTeamMember)).Methods("POST")

Просмотреть файл

@@ -507,29 +507,29 @@ func TestRestoreTeam(t *testing.T) {
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, resp := Client.RestoreTeam(team.Id)
team, resp := client.RestoreTeam(team.Id)
CheckOKStatus(t, resp)
require.Zero(t, team.DeleteAt)
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, resp := Client.RestoreTeam(team.Id)
team, resp := client.RestoreTeam(team.Id)
CheckOKStatus(t, resp)
require.Zero(t, team.DeleteAt)
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, resp := Client.RestoreTeam(team.Id)
team, resp := client.RestoreTeam(team.Id)
CheckOKStatus(t, resp)
require.Zero(t, team.DeleteAt)
require.Equal(t, model.TEAM_OPEN, team.Type)
})
}, "restore active public team")
t.Run("not logged in", func(t *testing.T) {
Client.Logout()
@@ -542,6 +542,11 @@ func TestRestoreTeam(t *testing.T) {
_, resp := Client.RestoreTeam(teamPublic.Id)
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) {
@@ -613,7 +618,6 @@ func TestUpdateTeamPrivacy(t *testing.T) {
originalInviteId string
}{
{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: "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},
@@ -622,24 +626,36 @@ func TestUpdateTeamPrivacy(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
team, resp := Client.UpdateTeamPrivacy(test.team.Id, test.privacy)
if test.errChecker != nil {
test.errChecker(t, resp)
return
} else {
CheckNoError(t, resp)
CheckOKStatus(t, resp)
}
require.Equal(t, test.wantType, team.Type)
require.Equal(t, test.wantOpenInvite, team.AllowOpenInvite)
if test.wantInviteIdChanged {
require.NotEqual(t, test.originalInviteId, team.InviteId)
} else {
require.Equal(t, test.originalInviteId, team.InviteId)
}
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
team, resp := client.UpdateTeamPrivacy(test.team.Id, test.privacy)
if test.errChecker != nil {
test.errChecker(t, resp)
return
} else {
CheckNoError(t, resp)
CheckOKStatus(t, resp)
}
require.Equal(t, test.wantType, team.Type)
require.Equal(t, test.wantOpenInvite, team.AllowOpenInvite)
if test.wantInviteIdChanged {
require.NotEqual(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) {
Client.Logout()
_, resp := Client.UpdateTeamPrivacy(teamPublic.Id, model.TEAM_INVITE)