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
|
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 {
|
func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
|
||||||
printer.SetSingle(true)
|
printer.SetSingle(true)
|
||||||
|
|
||||||
@@ -789,7 +795,12 @@ func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, user := range users {
|
for i, user := range users {
|
||||||
|
uout := userOut{
|
||||||
|
User: user,
|
||||||
|
Deactivated: !(user.DeleteAt == 0),
|
||||||
|
}
|
||||||
tpl := `id: {{.Id}}
|
tpl := `id: {{.Id}}
|
||||||
|
deactivated: {{.Deactivated}}
|
||||||
username: {{.Username}}
|
username: {{.Username}}
|
||||||
nickname: {{.Nickname}}
|
nickname: {{.Nickname}}
|
||||||
position: {{.Position}}
|
position: {{.Position}}
|
||||||
@@ -801,7 +812,7 @@ auth_service: {{.AuthService}}`
|
|||||||
tpl = "------------------------------\n" + tpl
|
tpl = "------------------------------\n" + tpl
|
||||||
}
|
}
|
||||||
|
|
||||||
printer.PrintT(tpl, user)
|
printer.PrintT(tpl, uout)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -125,8 +125,30 @@ func (s *MmctlE2ETestSuite) TestSearchUserCmd() {
|
|||||||
err := searchUserCmdF(c, &cobra.Command{}, []string{s.th.BasicUser.Email})
|
err := searchUserCmdF(c, &cobra.Command{}, []string{s.th.BasicUser.Email})
|
||||||
s.Require().Nil(err)
|
s.Require().Nil(err)
|
||||||
s.Len(printer.GetLines(), 1)
|
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.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)
|
s.Len(printer.GetErrorLines(), 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -596,17 +596,35 @@ func (s *MmctlUnitTestSuite) TestDeleteAllUsersCmd() {
|
|||||||
func (s *MmctlUnitTestSuite) TestSearchUserCmd() {
|
func (s *MmctlUnitTestSuite) TestSearchUserCmd() {
|
||||||
s.Run("Search for an existing user", func() {
|
s.Run("Search for an existing user", func() {
|
||||||
emailArg := "example@example.com"
|
emailArg := "example@example.com"
|
||||||
mockUser := model.User{Username: "ExampleUser", Email: emailArg}
|
mockUser := &model.User{Username: "ExampleUser", Email: emailArg}
|
||||||
|
|
||||||
s.client.
|
s.client.
|
||||||
EXPECT().
|
EXPECT().
|
||||||
GetUserByEmail(context.TODO(), emailArg, "").
|
GetUserByEmail(context.TODO(), emailArg, "").
|
||||||
Return(&mockUser, &model.Response{}, nil).
|
Return(mockUser, &model.Response{}, nil).
|
||||||
Times(1)
|
Times(1)
|
||||||
|
|
||||||
err := searchUserCmdF(s.client, &cobra.Command{}, []string{emailArg})
|
err := searchUserCmdF(s.client, &cobra.Command{}, []string{emailArg})
|
||||||
s.Require().Nil(err)
|
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)
|
s.Require().Len(printer.GetErrorLines(), 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user