Gh 19916 mmctl list deactivated users only (#26646)
Этот коммит содержится в:
@@ -9,7 +9,6 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/mattermost/mattermost/server/public/model"
|
||||
@@ -1866,28 +1865,18 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() {
|
||||
}
|
||||
|
||||
func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
cmd := &cobra.Command{}
|
||||
cmd.Flags().Int("page", 0, "")
|
||||
cmd.Flags().Int("per-page", 200, "")
|
||||
cmd.Flags().Bool("all", false, "")
|
||||
cmd.Flags().String("team", "", "")
|
||||
|
||||
s.Run("Listing users with paging", func() {
|
||||
printer.Clean()
|
||||
|
||||
email := "example@example.com"
|
||||
mockUser := model.User{Username: "ExampleUser", Email: email}
|
||||
|
||||
page := 0
|
||||
perPage := 1
|
||||
showAll := false
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), page, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "", "").
|
||||
Return([]*model.User{&mockUser}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
@@ -1905,28 +1894,25 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
email2 := "example2@example.com"
|
||||
mockUser2 := model.User{Username: "ExampleUser2", Email: email2}
|
||||
|
||||
page := 0
|
||||
perPage := 1
|
||||
showAll := true
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("all", "true")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), 0, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "", "").
|
||||
Return([]*model.User{&mockUser1}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), 1, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 1, 1, "", "").
|
||||
Return([]*model.User{&mockUser2}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), 2, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 2, 1, "", "").
|
||||
Return([]*model.User{}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
@@ -1937,19 +1923,116 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
s.Require().Equal(&mockUser2, printer.GetLines()[1])
|
||||
})
|
||||
|
||||
s.Run("Try to list all the users when there are no uses in store", func() {
|
||||
s.Run("Listing all users including inactive", func() {
|
||||
printer.Clean()
|
||||
|
||||
page := 0
|
||||
perPage := 1
|
||||
showAll := false
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
email1 := "example1@example.com"
|
||||
mockUser1 := model.User{Username: "ExampleUser1", Email: email1}
|
||||
email2 := "example2@example.com"
|
||||
mockUser2 := model.User{Username: "ExampleUser2", Email: email2, DeleteAt: model.GetMillis()}
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("all", "true")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), page, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "", "").
|
||||
Return([]*model.User{&mockUser1}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 1, 1, "", "").
|
||||
Return([]*model.User{&mockUser2}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 2, 1, "", "").
|
||||
Return([]*model.User{}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := listUsersCmdF(s.client, cmd, []string{})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 2)
|
||||
s.Require().Equal(&mockUser1, printer.GetLines()[0])
|
||||
s.Require().Equal(&mockUser2, printer.GetLines()[1])
|
||||
})
|
||||
|
||||
s.Run("Listing all inactive users", func() {
|
||||
printer.Clean()
|
||||
|
||||
email2 := "example2@example.com"
|
||||
mockUser2 := model.User{Username: "ExampleUser2", Email: email2, DeleteAt: model.GetMillis()}
|
||||
email3 := "example3@example.com"
|
||||
mockUser3 := model.User{Username: "ExampleUser3", Email: email3, DeleteAt: model.GetMillis()}
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("all", "true")
|
||||
cmd.Flags().Set("inactive", "true")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "inactive=true", "").
|
||||
Return([]*model.User{&mockUser2}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 1, 1, "inactive=true", "").
|
||||
Return([]*model.User{&mockUser3}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 2, 1, "inactive=true", "").
|
||||
Return([]*model.User{}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := listUsersCmdF(s.client, cmd, []string{})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 2)
|
||||
s.Require().Equal(&mockUser2, printer.GetLines()[0])
|
||||
s.Require().Equal(&mockUser3, printer.GetLines()[1])
|
||||
})
|
||||
|
||||
s.Run("Listing inactive users with paging skipping 1 page", func() {
|
||||
printer.Clean()
|
||||
|
||||
email := "del@example.com"
|
||||
_ = model.User{Username: "ExampleUser", Email: email, DeleteAt: model.GetMillis()}
|
||||
email1 := "del1@example.com"
|
||||
mockUser1 := model.User{Username: "ExampleUser1", Email: email1, DeleteAt: model.GetMillis()}
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "1")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("inactive", "true")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 1, 1, "inactive=true", "").
|
||||
Return([]*model.User{&mockUser1}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := listUsersCmdF(s.client, cmd, []string{})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Equal(&mockUser1, printer.GetLines()[0])
|
||||
})
|
||||
|
||||
s.Run("Try to list all the users when there are no uses in store", func() {
|
||||
printer.Clean()
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "0")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "", "").
|
||||
Return([]*model.User{}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
@@ -1958,22 +2041,19 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
s.Require().Len(printer.GetLines(), 0)
|
||||
})
|
||||
|
||||
s.Run("Return an error from GetUsers call and verify that error is properly returned", func() {
|
||||
s.Run("Return an error from GetUsersWithCustomQueryParameters call and verify that error is properly returned", func() {
|
||||
printer.Clean()
|
||||
|
||||
page := 0
|
||||
perPage := 1
|
||||
showAll := false
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "0")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
|
||||
mockError := errors.New("mock error")
|
||||
mockErrorW := errors.Wrap(mockError, "Failed to fetch users")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), page, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "", "").
|
||||
Return(nil, &model.Response{}, mockError).
|
||||
Times(1)
|
||||
|
||||
@@ -1988,16 +2068,13 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
email := "example@example.com"
|
||||
mockUser := model.User{Username: "ExampleUser", Email: email}
|
||||
|
||||
page := 2
|
||||
perPage := 1
|
||||
showAll := false
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "2")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsers(context.TODO(), page, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 2, 1, "", "").
|
||||
Return([]*model.User{&mockUser}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
@@ -2012,16 +2089,14 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
|
||||
email := "example@example.com"
|
||||
mockUser := model.User{Username: "ExampleUser", Email: email}
|
||||
resultID := "teamId"
|
||||
|
||||
page := 0
|
||||
perPage := 1
|
||||
showAll := false
|
||||
resultID := "teamId"
|
||||
team := "teamName"
|
||||
_ = cmd.Flags().Set("page", strconv.Itoa(page))
|
||||
_ = cmd.Flags().Set("per-page", strconv.Itoa(perPage))
|
||||
_ = cmd.Flags().Set("all", strconv.FormatBool(showAll))
|
||||
_ = cmd.Flags().Set("team", team)
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "0")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("team", team)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
@@ -2031,7 +2106,7 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersInTeam(context.TODO(), resultID, page, perPage, "").
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "in_team="+resultID, "").
|
||||
Return([]*model.User{&mockUser}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
@@ -2040,6 +2115,90 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() {
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Equal(&mockUser, printer.GetLines()[0])
|
||||
})
|
||||
|
||||
s.Run("Listing inactive users for given team", func() {
|
||||
printer.Clean()
|
||||
|
||||
email := "example@example.com"
|
||||
_ = model.User{Username: "ExampleUser", Email: email}
|
||||
email1 := "example1@example.com"
|
||||
mockUser1 := model.User{Username: "ExampleUser1", Email: email1, DeleteAt: model.GetMillis()}
|
||||
|
||||
resultID := "teamId"
|
||||
team := "teamName"
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "0")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("team", team)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetTeamByName(context.TODO(), team, "").
|
||||
Return(&model.Team{Id: resultID}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "in_team="+resultID, "").
|
||||
Return([]*model.User{&mockUser1}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := listUsersCmdF(s.client, cmd, []string{})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Equal(&mockUser1, printer.GetLines()[0])
|
||||
})
|
||||
|
||||
s.Run("Listing all inactive users for given team", func() {
|
||||
printer.Clean()
|
||||
|
||||
email := "example@example.com"
|
||||
_ = model.User{Username: "ExampleUser", Email: email}
|
||||
email1 := "example1@example.com"
|
||||
mockUser1 := model.User{Username: "ExampleUser1", Email: email1, DeleteAt: model.GetMillis()}
|
||||
email2 := "example2@example.com"
|
||||
mockUser2 := model.User{Username: "ExampleUser2", Email: email2, DeleteAt: model.GetMillis()}
|
||||
|
||||
resultID := "teamId"
|
||||
team := "teamName"
|
||||
|
||||
cmd := ResetListUsersCmd()
|
||||
cmd.Flags().Set("page", "0")
|
||||
cmd.Flags().Set("per-page", "1")
|
||||
cmd.Flags().Set("team", team)
|
||||
cmd.Flags().Set("all", "true")
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetTeamByName(context.TODO(), team, "").
|
||||
Return(&model.Team{Id: resultID}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 0, 1, "in_team="+resultID, "").
|
||||
Return([]*model.User{&mockUser1}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 1, 1, "in_team="+resultID, "").
|
||||
Return([]*model.User{&mockUser2}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUsersWithCustomQueryParameters(context.TODO(), 2, 1, "in_team="+resultID, "").
|
||||
Return([]*model.User{}, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := listUsersCmdF(s.client, cmd, []string{})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 2)
|
||||
s.Require().Equal(&mockUser1, printer.GetLines()[0])
|
||||
s.Require().Equal(&mockUser2, printer.GetLines()[1])
|
||||
})
|
||||
}
|
||||
|
||||
func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() {
|
||||
|
||||
Ссылка в новой задаче
Block a user