Add deactivation status to mmctl user search output (#30379)

Этот коммит содержится в:
Ben Schumacher
2025-05-13 08:52:13 +02:00
коммит произвёл GitHub
родитель a8a2ae3af0
Коммит e1c94e7b63
3 изменённых файлов: 56 добавлений и 5 удалений

Просмотреть файл

@@ -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)
}) })