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
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
412109b02e
Коммит
951456c780
370
server/cmd/mmctl/commands/team_users_test.go
Обычный файл
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)
|
||||
})
|
||||
}
|
||||
Ссылка в новой задаче
Block a user