MM-61032: Add default_team_id to accept invite flow (#28841)

* add default_team_id to accept invite api

* add team selector to accept invite flow UI

* e2e

* lint/i18n
Этот коммит содержится в:
Caleb Roseland
2024-10-18 05:26:38 -05:00
коммит произвёл GitHub
родитель 5a923e0b94
Коммит fcded9559c
16 изменённых файлов: 124 добавлений и 32 удалений

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

@@ -464,6 +464,16 @@ func remoteClusterAcceptInvite(c *Context, w http.ResponseWriter, r *http.Reques
return
}
if rcAcceptInvite.DefaultTeamId == "" {
c.SetInvalidParam("remoteCluster.default_team_id")
return
}
if _, teamErr := c.App.GetTeam(rcAcceptInvite.DefaultTeamId); teamErr != nil {
c.SetInvalidParamWithErr("remoteCluster.default_team_id", teamErr)
return
}
audit.AddEventParameter(auditRec, "name", rcAcceptInvite.Name)
audit.AddEventParameter(auditRec, "display_name", rcAcceptInvite.DisplayName)
@@ -485,7 +495,7 @@ func remoteClusterAcceptInvite(c *Context, w http.ResponseWriter, r *http.Reques
return
}
rc, aErr := rcs.AcceptInvitation(invite, rcAcceptInvite.Name, rcAcceptInvite.DisplayName, c.AppContext.Session().UserId, url)
rc, aErr := rcs.AcceptInvitation(invite, rcAcceptInvite.Name, rcAcceptInvite.DisplayName, c.AppContext.Session().UserId, url, rcAcceptInvite.DefaultTeamId)
if aErr != nil {
c.Err = model.NewAppError("remoteClusterAcceptInvite", "api.remote_cluster.accept_invitation_error", nil, "", http.StatusInternalServerError).Wrap(aErr)
if appErr, ok := aErr.(*model.AppError); ok {

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

@@ -295,9 +295,10 @@ func TestCreateRemoteCluster(t *testing.T) {
func TestRemoteClusterAcceptinvite(t *testing.T) {
rcAcceptInvite := &model.RemoteClusterAcceptInvite{
Name: "remotecluster",
Invite: "myinvitecode",
Password: "mysupersecret",
Name: "remotecluster",
Invite: "myinvitecode",
Password: "mysupersecret",
DefaultTeamId: "",
}
t.Run("Should not work if the remote cluster service is not enabled", func(t *testing.T) {
@@ -313,6 +314,8 @@ func TestRemoteClusterAcceptinvite(t *testing.T) {
th := setupForSharedChannels(t).InitBasic()
defer th.TearDown()
rcAcceptInvite.DefaultTeamId = th.BasicTeam.Id
remoteId := model.NewId()
invite := &model.RemoteClusterInvite{
RemoteId: remoteId,
@@ -335,7 +338,7 @@ func TestRemoteClusterAcceptinvite(t *testing.T) {
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.SiteURL = "http://localhost:8065" })
t.Run("should fail if the parameters are not valid", func(t *testing.T) {
t.Run("should fail if the name parameter is not valid", func(t *testing.T) {
rcAcceptInvite.Name = ""
defer func() { rcAcceptInvite.Name = "remotecluster" }()
@@ -345,6 +348,26 @@ func TestRemoteClusterAcceptinvite(t *testing.T) {
require.Empty(t, rc)
})
t.Run("should fail if the default team parameter is empty", func(t *testing.T) {
rcAcceptInvite.DefaultTeamId = ""
defer func() { rcAcceptInvite.DefaultTeamId = th.BasicTeam.Id }()
rc, resp, err := th.SystemAdminClient.RemoteClusterAcceptInvite(context.Background(), rcAcceptInvite)
CheckBadRequestStatus(t, resp)
require.Error(t, err)
require.Empty(t, rc)
})
t.Run("should fail if the default team provided doesn't exist", func(t *testing.T) {
rcAcceptInvite.DefaultTeamId = model.NewId()
defer func() { rcAcceptInvite.DefaultTeamId = th.BasicTeam.Id }()
rc, resp, err := th.SystemAdminClient.RemoteClusterAcceptInvite(context.Background(), rcAcceptInvite)
CheckBadRequestStatus(t, resp)
require.Error(t, err)
require.Empty(t, rc)
})
t.Run("should fail with the correct status code if the invite returns an app error", func(t *testing.T) {
rcAcceptInvite.Invite = "malformedinvite"
// reset the invite after

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

@@ -190,7 +190,7 @@ func (rp *RemoteProvider) doAccept(a *app.App, args *model.CommandArgs, margs ma
return responsef(args.T("api.command_remote.site_url_not_set"))
}
rc, err := rcs.AcceptInvitation(invite, name, displayname, args.UserId, url)
rc, err := rcs.AcceptInvitation(invite, name, displayname, args.UserId, url, "")
if err != nil {
return responsef(args.T("api.command_remote.accept_invitation.error", map[string]any{"Error": err.Error()}))
}