Includes mmctl into the mono-repo (#23091)

* Includes mmctl into the mono-repo

* Update to use the new public module paths

* Adds docs check to the mmctl CI

* Fix public utils import path

* Tidy up modules

* Fix linter

* Update CI tasks to use the new file structure

* Update CI references
Этот коммит содержится в:
Miguel de la Cruz
2023-06-05 12:42:55 +02:00
коммит произвёл GitHub
родитель 412109b02e
Коммит 951456c780
305 изменённых файлов: 47027 добавлений и 88 удалений

370
server/cmd/mmctl/commands/team_users_test.go Обычный файл
Просмотреть файл

@@ -0,0 +1,370 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package commands
import (
"errors"
"net/http"
"github.com/mattermost/mattermost-server/server/public/model"
"github.com/spf13/cobra"
"github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/printer"
)
func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() {
teamArg := "example-team-id"
userArg := "example-user-id"
s.Run("Remove users from team with a non-existent team returns an error", func() {
printer.Clean()
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(nil, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetTeamByName(teamArg, "").
Return(nil, &model.Response{}, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{teamArg, userArg})
s.Require().Equal(err.Error(), "Unable to find team '"+teamArg+"'")
s.Require().Len(printer.GetLines(), 0)
})
s.Run("Remove users from team with a non-existent user returns an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg}
mockUser := &model.User{Id: userArg}
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetUserByUsername(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetUser(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{teamArg, mockUser.Id})
s.Require().Error(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0], "can't find user '"+userArg+"'")
})
s.Run("Remove users from team by email and get team by name should not return an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg}
mockUser := &model.User{Id: userArg}
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetTeamByName(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(mockUser, nil, nil).
Times(1)
s.client.
EXPECT().
RemoveTeamMember(mockTeam.Id, mockUser.Id).
Return(&model.Response{StatusCode: http.StatusBadRequest}, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{mockTeam.Id, mockUser.Id})
s.Require().Nil(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Remove users from team by email and get team should not return an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg}
mockUser := &model.User{Id: userArg}
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(mockUser, nil, nil).
Times(1)
s.client.
EXPECT().
RemoveTeamMember(mockTeam.Id, mockUser.Id).
Return(&model.Response{StatusCode: http.StatusBadRequest}, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{mockTeam.Id, mockUser.Id})
s.Require().Nil(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Remove users from team by username and get team should not return an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg}
mockUser := &model.User{Id: userArg}
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetUserByUsername(mockUser.Id, "").
Return(mockUser, nil, nil).
Times(1)
s.client.
EXPECT().
RemoveTeamMember(mockTeam.Id, mockUser.Id).
Return(&model.Response{StatusCode: http.StatusBadRequest}, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{mockTeam.Id, mockUser.Id})
s.Require().Nil(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Remove users from team by user and get team should not return an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg}
mockUser := &model.User{Id: userArg}
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetUserByUsername(mockUser.Id, "").
Return(nil, nil, nil).
Times(1)
s.client.
EXPECT().
GetUser(mockUser.Id, "").
Return(mockUser, nil, nil).
Times(1)
s.client.
EXPECT().
RemoveTeamMember(mockTeam.Id, mockUser.Id).
Return(&model.Response{StatusCode: http.StatusBadRequest}, nil).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{mockTeam.Id, mockUser.Id})
s.Require().Nil(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Remove users from team with an erroneous RemoveTeamMember should return an error", func() {
printer.Clean()
mockTeam := &model.Team{Id: teamArg, Name: "example-name"}
mockUser := &model.User{Id: userArg}
mockError := errors.New("mock error")
s.client.
EXPECT().
GetTeam(teamArg, "").
Return(mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail(mockUser.Id, "").
Return(mockUser, nil, nil).
Times(1)
s.client.
EXPECT().
RemoveTeamMember(mockTeam.Id, mockUser.Id).
Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError).
Times(1)
err := teamUsersRemoveCmdF(s.client, &cobra.Command{}, []string{mockTeam.Id, mockUser.Id})
s.Require().Error(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0], "unable to remove '"+mockUser.Id+"' from "+mockTeam.Name+". Error: "+mockError.Error())
})
}
func (s *MmctlUnitTestSuite) TestAddUsersCmd() {
mockTeam := model.Team{
Id: "TeamId",
Name: "team1",
DisplayName: "DisplayName",
}
mockUser := model.User{
Id: "UserID",
Username: "ExampleUser",
Email: "example@example.com",
}
s.Run("Add users with a team that cannot be found returns error", func() {
cmd := &cobra.Command{}
s.client.
EXPECT().
GetTeam("team1", "").
Return(nil, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetTeamByName("team1", "").
Return(nil, &model.Response{}, nil).
Times(1)
err := teamUsersAddCmdF(s.client, cmd, []string{"team1", "user1"})
s.Require().Equal(err.Error(), "Unable to find team 'team1'")
s.Require().Len(printer.GetLines(), 0)
})
s.Run("Add users with nonexistent user in arguments prints error", func() {
printer.Clean()
cmd := &cobra.Command{}
s.client.
EXPECT().
GetTeam("team1", "").
Return(&mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail("user1", "").
Return(nil, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByUsername("user1", "").
Return(nil, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUser("user1", "").
Return(nil, &model.Response{}, nil).
Times(1)
err := teamUsersAddCmdF(s.client, cmd, []string{"team1", "user1"})
s.Require().Error(err)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().ErrorContains(err, "can't find user 'user1'")
})
s.Run("Add users should print error when cannot add team member", func() {
printer.Clean()
cmd := &cobra.Command{}
s.client.
EXPECT().
GetTeam("team1", "").
Return(&mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail("user1", "").
Return(&mockUser, &model.Response{}, nil).
Times(1)
mockError := errors.New("cannot add team member")
s.client.
EXPECT().
AddTeamMember("TeamId", "UserID").
Return(nil, &model.Response{}, mockError).
Times(1)
err := teamUsersAddCmdF(s.client, cmd, []string{"team1", "user1"})
s.Require().Nil(err)
s.Require().Len(printer.GetErrorLines(), 1)
s.Require().Equal(printer.GetErrorLines()[0],
"Unable to add 'user1' to team1. Error: cannot add team member")
})
s.Run("Add users should not print in console anything on success", func() {
printer.Clean()
cmd := &cobra.Command{}
s.client.
EXPECT().
GetTeam("team1", "").
Return(&mockTeam, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
GetUserByEmail("user1", "").
Return(&mockUser, &model.Response{}, nil).
Times(1)
s.client.
EXPECT().
AddTeamMember("TeamId", "UserID").
Return(nil, &model.Response{}, nil).
Times(1)
err := teamUsersAddCmdF(s.client, cmd, []string{"team1", "user1"})
s.Require().Nil(err)
s.Require().Len(printer.GetLines(), 0)
s.Require().Len(printer.GetErrorLines(), 0)
})
}