[MM-63355] Add AuthData to mmctl user search output (#30478)

Этот коммит содержится в:
Ben Schumacher
2025-06-19 11:52:16 +02:00
коммит произвёл GitHub
родитель 04a60b6609
Коммит cfc1503d62
7 изменённых файлов: 138 добавлений и 72 удалений

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

@@ -779,6 +779,7 @@ func deleteAllUsersCmdF(c client.Client, cmd *cobra.Command, args []string) erro
type userOut struct {
*model.User
Deactivated bool
AuthData string
}
func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
@@ -799,6 +800,10 @@ func searchUserCmdF(c client.Client, cmd *cobra.Command, args []string) error {
User: user,
Deactivated: !(user.DeleteAt == 0),
}
if user.AuthData != nil {
uout.AuthData = *user.AuthData
}
tpl := `id: {{.Id}}
deactivated: {{.Deactivated}}
username: {{.Username}}
@@ -807,7 +812,8 @@ position: {{.Position}}
first_name: {{.FirstName}}
last_name: {{.LastName}}
email: {{.Email}}
auth_service: {{.AuthService}}`
auth_service: {{.AuthService}}
auth_data: {{.AuthData}}`
if i > 0 {
tpl = "------------------------------\n" + tpl
}

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

@@ -128,6 +128,8 @@ func (s *MmctlE2ETestSuite) TestSearchUserCmd() {
user := printer.GetLines()[0].(userOut)
s.Equal(s.th.BasicUser.Username, user.Username)
s.False(user.Deactivated)
s.Empty(user.AuthData)
s.Empty(user.AuthService)
s.Len(printer.GetErrorLines(), 0)
})
@@ -149,6 +151,44 @@ func (s *MmctlE2ETestSuite) TestSearchUserCmd() {
user := printer.GetLines()[0].(userOut)
s.Equal(disabledUser.Username, user.Username)
s.True(user.Deactivated) // Verify user shows as deactivated
s.Empty(user.AuthData)
s.Empty(user.AuthService)
s.Len(printer.GetErrorLines(), 0)
})
// Create a LDAP user
ldapUser, appErr := s.th.App.CreateUser(s.th.Context, &model.User{
Email: s.th.GenerateTestEmail(),
Username: model.NewUsername(),
AuthData: model.NewPointer("1234"),
AuthService: model.UserAuthServiceLdap,
})
s.Require().Nil(appErr)
s.RunForSystemAdminAndLocal("Search for a user with authData", func(c client.Client) {
printer.Clean()
err := searchUserCmdF(c, &cobra.Command{}, []string{ldapUser.Email})
s.Require().Nil(err)
s.Len(printer.GetLines(), 1)
user := printer.GetLines()[0].(userOut)
s.Equal(ldapUser.Username, user.Username)
s.False(user.Deactivated)
s.Equal(*ldapUser.AuthData, user.AuthData)
s.Equal(ldapUser.AuthService, user.AuthService)
s.Len(printer.GetErrorLines(), 0)
})
s.Run("Search for a user with authData/Client", func() {
printer.Clean()
// Non-admin should not be able to see AuthData or AuthService
err := searchUserCmdF(s.th.Client, &cobra.Command{}, []string{ldapUser.Email})
s.Require().Nil(err)
s.Len(printer.GetLines(), 1)
user := printer.GetLines()[0].(userOut)
s.Equal(ldapUser.Username, user.Username)
s.False(user.Deactivated)
s.Equal("", user.AuthData)
s.Equal("", user.AuthService)
s.Len(printer.GetErrorLines(), 0)
})

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

@@ -628,6 +628,24 @@ func (s *MmctlUnitTestSuite) TestSearchUserCmd() {
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Search for a user with authData", func() {
printer.Clean()
emailArg := "example@example.com"
mockUser := &model.User{Username: "ExampleUser", Email: emailArg, AuthData: model.NewPointer("1234"), AuthService: model.UserAuthServiceLdap}
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: false, AuthData: "1234"}, printer.GetLines()[0])
s.Require().Len(printer.GetErrorLines(), 0)
})
s.Run("Search for a nonexistent user", func() {
printer.Clean()
arg := "example@example.com"