Add deactivation status to mmctl user search output (#30379)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
a8a2ae3af0
Коммит
e1c94e7b63
@@ -775,6 +775,12 @@ func deleteAllUsersCmdF(c client.Client, cmd *cobra.Command, args []string) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
// userOut is the output format for users.
|
||||
type userOut struct {
|
||||
*model.User
|
||||
Deactivated bool
|
||||
}
|
||||
|
||||
func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
|
||||
printer.SetSingle(true)
|
||||
|
||||
@@ -789,7 +795,12 @@ func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
for i, user := range users {
|
||||
uout := userOut{
|
||||
User: user,
|
||||
Deactivated: !(user.DeleteAt == 0),
|
||||
}
|
||||
tpl := `id: {{.Id}}
|
||||
deactivated: {{.Deactivated}}
|
||||
username: {{.Username}}
|
||||
nickname: {{.Nickname}}
|
||||
position: {{.Position}}
|
||||
@@ -801,7 +812,7 @@ auth_service: {{.AuthService}}`
|
||||
tpl = "------------------------------\n" + tpl
|
||||
}
|
||||
|
||||
printer.PrintT(tpl, user)
|
||||
printer.PrintT(tpl, uout)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -125,8 +125,30 @@ func (s *MmctlE2ETestSuite) TestSearchUserCmd() {
|
||||
err := searchUserCmdF(c, &cobra.Command{}, []string{s.th.BasicUser.Email})
|
||||
s.Require().Nil(err)
|
||||
s.Len(printer.GetLines(), 1)
|
||||
user := printer.GetLines()[0].(*model.User)
|
||||
user := printer.GetLines()[0].(userOut)
|
||||
s.Equal(s.th.BasicUser.Username, user.Username)
|
||||
s.False(user.Deactivated)
|
||||
s.Len(printer.GetErrorLines(), 0)
|
||||
})
|
||||
|
||||
s.RunForAllClients("Search for a disabled user", func(c client.Client) {
|
||||
printer.Clean()
|
||||
|
||||
// Create a disabled user
|
||||
disabledUser, appErr := s.th.App.CreateUser(s.th.Context, &model.User{
|
||||
Email: s.th.GenerateTestEmail(),
|
||||
Username: model.NewUsername(),
|
||||
Password: model.NewId(),
|
||||
DeleteAt: model.GetMillis(), // Set DeleteAt to disable the user
|
||||
})
|
||||
s.Require().Nil(appErr)
|
||||
|
||||
err := searchUserCmdF(c, &cobra.Command{}, []string{disabledUser.Email})
|
||||
s.Require().Nil(err)
|
||||
s.Len(printer.GetLines(), 1)
|
||||
user := printer.GetLines()[0].(userOut)
|
||||
s.Equal(disabledUser.Username, user.Username)
|
||||
s.True(user.Deactivated) // Verify user shows as deactivated
|
||||
s.Len(printer.GetErrorLines(), 0)
|
||||
})
|
||||
|
||||
|
||||
@@ -596,17 +596,35 @@ func (s *MmctlUnitTestSuite) TestDeleteAllUsersCmd() {
|
||||
func (s *MmctlUnitTestSuite) TestSearchUserCmd() {
|
||||
s.Run("Search for an existing user", func() {
|
||||
emailArg := "example@example.com"
|
||||
mockUser := model.User{Username: "ExampleUser", Email: emailArg}
|
||||
mockUser := &model.User{Username: "ExampleUser", Email: emailArg}
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), emailArg, "").
|
||||
Return(&mockUser, &model.Response{}, nil).
|
||||
Return(mockUser, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := searchUserCmdF(s.client, &cobra.Command{}, []string{emailArg})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Equal(&mockUser, printer.GetLines()[0])
|
||||
s.Require().Equal(userOut{User: mockUser, Deactivated: false}, printer.GetLines()[0])
|
||||
s.Require().Len(printer.GetErrorLines(), 0)
|
||||
})
|
||||
|
||||
s.Run("Search for a disabled user", func() {
|
||||
printer.Clean()
|
||||
emailArg := "example@example.com"
|
||||
mockUser := &model.User{Username: "ExampleUser", Email: emailArg, DeleteAt: 1234}
|
||||
|
||||
s.client.
|
||||
EXPECT().
|
||||
GetUserByEmail(context.TODO(), emailArg, "").
|
||||
Return(mockUser, &model.Response{}, nil).
|
||||
Times(1)
|
||||
|
||||
err := searchUserCmdF(s.client, &cobra.Command{}, []string{emailArg})
|
||||
s.Require().Nil(err)
|
||||
s.Require().Len(printer.GetLines(), 1)
|
||||
s.Require().Equal(userOut{User: mockUser, Deactivated: true}, printer.GetLines()[0])
|
||||
s.Require().Len(printer.GetErrorLines(), 0)
|
||||
})
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user