[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 удалений

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

@@ -1638,6 +1638,38 @@ func TestSearchUsers(t *testing.T) {
require.NoError(t, err)
require.Equal(t, users[0].Id, th.BasicUser.Id)
})
// Create LDAP user
authData := "some auth data"
ldapUser := &model.User{
Email: th.GenerateTestEmail(),
Username: GenerateTestUsername(),
EmailVerified: true,
AuthService: model.UserAuthServiceLdap,
AuthData: &authData,
}
ldapUser, appErr = th.App.CreateUser(th.Context, ldapUser)
require.Nil(t, appErr)
t.Run("LDAP authdata field is returned appropriately", func(t *testing.T) {
// Search as regular user
search := &model.UserSearch{Term: ldapUser.Username}
users, resp, err := th.Client.SearchUsers(context.Background(), search)
require.NoError(t, err)
CheckOKStatus(t, resp)
require.Len(t, users, 1, "should find the ldap user")
require.Equal(t, ldapUser.Id, users[0].Id)
require.Empty(t, users[0].AuthData, "regular user should not see AuthData")
// Search as system admin
users, resp, err = th.SystemAdminClient.SearchUsers(context.Background(), search)
require.NoError(t, err)
CheckOKStatus(t, resp)
require.Len(t, users, 1, "should find the ldap user")
require.Equal(t, ldapUser.Id, users[0].Id)
require.NotNil(t, users[0].AuthData, "admin should see AuthData")
require.Equal(t, *ldapUser.AuthData, *users[0].AuthData)
})
}
func findUserInList(id string, users []*model.User) bool { //nolint:unused
@@ -2993,6 +3025,27 @@ func TestGetUsers(t *testing.T) {
require.Equal(t, err.Error(), "Invalid or missing role in request body.")
})
th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) {
user := &model.User{
Email: th.GenerateTestEmail(),
Username: GenerateTestUsername(),
AuthService: model.UserAuthServiceLdap,
AuthData: model.NewPointer(model.NewId()),
}
u, resp, err := c.CreateUser(context.Background(), user)
require.NoError(t, err)
CheckCreatedStatus(t, resp)
require.NotNil(t, u)
u, resp, err = c.GetUser(context.Background(), u.Id, "")
require.NoError(t, err)
CheckOKStatus(t, resp)
require.NotNil(t, u)
assert.Equal(t, user.AuthService, u.AuthService)
assert.Equal(t, user.AuthData, u.AuthData)
}, "AuthData is returned for admins")
_, err := th.Client.Logout(context.Background())
require.NoError(t, err)
_, resp, err := th.Client.GetUsers(context.Background(), 0, 60, "")

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

@@ -51,6 +51,7 @@ func (us *UserService) GetSanitizeOptions(asAdmin bool) map[string]bool {
options["email"] = true
options["fullname"] = true
options["authservice"] = true
options["authdata"] = true
}
return options
}

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

@@ -2795,13 +2795,6 @@ func testUserStoreSearch(t *testing.T, rctx request.CTX, ss store.Store) {
require.NoError(t, err)
defer func() { require.NoError(t, ss.User().PermanentDelete(rctx, u3.Id)) }()
// The users returned from the database will have AuthData as an empty string.
nilAuthData := new(string)
*nilAuthData = ""
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
t1id := model.NewId()
_, nErr := ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: t1id, UserId: u1.Id, SchemeAdmin: true, SchemeUser: true}, -1)
require.NoError(t, nErr)
@@ -2981,14 +2974,6 @@ func testUserStoreSearchNotInChannel(t *testing.T, rctx request.CTX, ss store.St
_, nErr = ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: tid, UserId: u3.Id}, -1)
require.NoError(t, nErr)
// The users returned from the database will have AuthData as an empty string.
nilAuthData := new(string)
*nilAuthData = ""
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
ch1 := model.Channel{
TeamId: tid,
DisplayName: "NameName",
@@ -3210,14 +3195,6 @@ func testUserStoreSearchInChannel(t *testing.T, rctx request.CTX, ss store.Store
_, nErr = ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: tid, UserId: u3.Id}, -1)
require.NoError(t, nErr)
// The users returned from the database will have AuthData as an empty string.
nilAuthData := new(string)
*nilAuthData = ""
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
ch1 := model.Channel{
TeamId: tid,
DisplayName: "NameName",
@@ -3481,17 +3458,6 @@ func testUserStoreSearchNotInTeam(t *testing.T, rctx request.CTX, ss store.Store
_, nErr = ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: teamID2, UserId: u4.Id}, -1)
require.NoError(t, nErr)
// The users returned from the database will have AuthData as an empty string.
nilAuthData := new(string)
*nilAuthData = ""
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
u4.AuthData = nilAuthData
u5.AuthData = nilAuthData
u6.AuthData = nilAuthData
testCases := []struct {
Description string
TeamID string
@@ -3629,14 +3595,6 @@ func testUserStoreSearchWithoutTeam(t *testing.T, rctx request.CTX, ss store.Sto
_, nErr = ss.Team().SaveMember(rctx, &model.TeamMember{TeamId: tid, UserId: u3.Id}, -1)
require.NoError(t, nErr)
// The users returned from the database will have AuthData as an empty string.
nilAuthData := new(string)
*nilAuthData = ""
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
testCases := []struct {
Description string
Term string
@@ -3721,13 +3679,6 @@ func testUserStoreSearchInGroup(t *testing.T, rctx request.CTX, ss store.Store)
require.NoError(t, err)
defer func() { require.NoError(t, ss.User().PermanentDelete(rctx, u3.Id)) }()
// The users returned from the database will have AuthData as an empty string.
nilAuthData := model.NewPointer("")
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
g1 := &model.Group{
Name: model.NewPointer(NewTestID()),
DisplayName: NewTestID(),
@@ -3864,13 +3815,6 @@ func testUserStoreSearchNotInGroup(t *testing.T, rctx request.CTX, ss store.Stor
require.NoError(t, err)
defer func() { require.NoError(t, ss.User().PermanentDelete(rctx, u3.Id)) }()
// The users returned from the database will have AuthData as an empty string.
nilAuthData := model.NewPointer("")
u1.AuthData = nilAuthData
u2.AuthData = nilAuthData
u3.AuthData = nilAuthData
g1 := &model.Group{
Name: model.NewPointer(NewTestID()),
DisplayName: NewTestID(),