mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
[MM-57963] Log Name and DisplayName of groups (#26836)
This commit is contained in:
parent
3513d310af
commit
0e6bfbdd26
@ -7,3 +7,13 @@ func NewBool(b bool) *bool { return &b }
|
|||||||
func NewInt(n int) *int { return &n }
|
func NewInt(n int) *int { return &n }
|
||||||
func NewInt64(n int64) *int64 { return &n }
|
func NewInt64(n int64) *int64 { return &n }
|
||||||
func NewString(s string) *string { return &s }
|
func NewString(s string) *string { return &s }
|
||||||
|
|
||||||
|
// SafeDereference returns the zero value of T if t is nil.
|
||||||
|
// Otherwise it return the derference of t.
|
||||||
|
func SafeDereference[T any](t *T) T {
|
||||||
|
if t == nil {
|
||||||
|
var t T
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
return *t
|
||||||
|
}
|
||||||
|
39
server/public/model/builtin_test.go
Normal file
39
server/public/model/builtin_test.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSafeDereference(t *testing.T) {
|
||||||
|
t.Run("any", func(t *testing.T) {
|
||||||
|
s := SafeDereference[any](nil)
|
||||||
|
assert.Nil(t, s)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("struct", func(t *testing.T) {
|
||||||
|
s := SafeDereference[struct{}](nil)
|
||||||
|
assert.Equal(t, struct{}{}, s)
|
||||||
|
|
||||||
|
s = SafeDereference(&struct{}{})
|
||||||
|
assert.Equal(t, struct{}{}, s)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("string", func(t *testing.T) {
|
||||||
|
s := SafeDereference[string](nil)
|
||||||
|
assert.Equal(t, "", s)
|
||||||
|
|
||||||
|
s = SafeDereference(NewString("foo"))
|
||||||
|
assert.Equal(t, "foo", s)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("string pointer", func(t *testing.T) {
|
||||||
|
s := SafeDereference[*string](nil)
|
||||||
|
assert.Nil(t, s)
|
||||||
|
|
||||||
|
f := NewString("foo")
|
||||||
|
s = SafeDereference(&f)
|
||||||
|
assert.Equal(t, f, s)
|
||||||
|
})
|
||||||
|
}
|
@ -52,18 +52,30 @@ func (group *Group) Auditable() map[string]interface{} {
|
|||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"id": group.Id,
|
"id": group.Id,
|
||||||
"source": group.Source,
|
"source": group.Source,
|
||||||
"remote_id": group.RemoteId,
|
"remote_id": group.GetRemoteId(),
|
||||||
"create_at": group.CreateAt,
|
"create_at": group.CreateAt,
|
||||||
"update_at": group.UpdateAt,
|
"update_at": group.UpdateAt,
|
||||||
"delete_at": group.DeleteAt,
|
"delete_at": group.DeleteAt,
|
||||||
"has_syncables": group.HasSyncables,
|
"has_syncables": group.HasSyncables,
|
||||||
"member_count": group.MemberCount,
|
"member_count": group.GetMemberCount(),
|
||||||
"allow_reference": group.AllowReference,
|
"allow_reference": group.AllowReference,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (group *Group) LogClone() any {
|
func (group *Group) LogClone() any {
|
||||||
return group.Auditable()
|
return map[string]interface{}{
|
||||||
|
"id": group.Id,
|
||||||
|
"name": group.GetName(),
|
||||||
|
"display_name": group.DisplayName,
|
||||||
|
"source": group.Source,
|
||||||
|
"remote_id": group.GetRemoteId(),
|
||||||
|
"create_at": group.CreateAt,
|
||||||
|
"update_at": group.UpdateAt,
|
||||||
|
"delete_at": group.DeleteAt,
|
||||||
|
"has_syncables": group.HasSyncables,
|
||||||
|
"member_count": group.GetMemberCount(),
|
||||||
|
"allow_reference": group.AllowReference,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type GroupWithUserIds struct {
|
type GroupWithUserIds struct {
|
||||||
@ -75,12 +87,12 @@ func (group *GroupWithUserIds) Auditable() map[string]interface{} {
|
|||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"id": group.Id,
|
"id": group.Id,
|
||||||
"source": group.Source,
|
"source": group.Source,
|
||||||
"remote_id": group.RemoteId,
|
"remote_id": group.GetRemoteId(),
|
||||||
"create_at": group.CreateAt,
|
"create_at": group.CreateAt,
|
||||||
"update_at": group.UpdateAt,
|
"update_at": group.UpdateAt,
|
||||||
"delete_at": group.DeleteAt,
|
"delete_at": group.DeleteAt,
|
||||||
"has_syncables": group.HasSyncables,
|
"has_syncables": group.HasSyncables,
|
||||||
"member_count": group.MemberCount,
|
"member_count": group.GetMemberCount(),
|
||||||
"allow_reference": group.AllowReference,
|
"allow_reference": group.AllowReference,
|
||||||
"user_ids": group.UserIds,
|
"user_ids": group.UserIds,
|
||||||
}
|
}
|
||||||
@ -268,17 +280,15 @@ func (group *Group) IsValidName() *AppError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (group *Group) GetName() string {
|
func (group *Group) GetName() string {
|
||||||
if group.Name == nil {
|
return SafeDereference(group.Name)
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return *group.Name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (group *Group) GetRemoteId() string {
|
func (group *Group) GetRemoteId() string {
|
||||||
if group.RemoteId == nil {
|
return SafeDereference(group.RemoteId)
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
return *group.RemoteId
|
|
||||||
|
func (group *Group) GetMemberCount() int {
|
||||||
|
return SafeDereference(group.MemberCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
type GroupsWithCount struct {
|
type GroupsWithCount struct {
|
||||||
|
99
server/public/model/group_test.go
Normal file
99
server/public/model/group_test.go
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGroupAuditable(t *testing.T) {
|
||||||
|
t.Run("zero value", func(t *testing.T) {
|
||||||
|
var g Group
|
||||||
|
m := g.Auditable()
|
||||||
|
require.NotNil(t, m)
|
||||||
|
assert.Equal(t, "", m["remote_id"])
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("values set", func(t *testing.T) {
|
||||||
|
id := NewId()
|
||||||
|
now := GetMillis()
|
||||||
|
g := Group{
|
||||||
|
Id: id,
|
||||||
|
Name: NewString("some name"),
|
||||||
|
DisplayName: "some display name",
|
||||||
|
Source: GroupSourceLdap,
|
||||||
|
RemoteId: NewString("some_remote"),
|
||||||
|
CreateAt: now,
|
||||||
|
UpdateAt: now,
|
||||||
|
DeleteAt: now,
|
||||||
|
HasSyncables: true,
|
||||||
|
MemberCount: NewInt(10),
|
||||||
|
AllowReference: true,
|
||||||
|
}
|
||||||
|
m := g.Auditable()
|
||||||
|
|
||||||
|
expected := map[string]any{
|
||||||
|
"id": id,
|
||||||
|
"source": GroupSourceLdap,
|
||||||
|
"remote_id": "some_remote",
|
||||||
|
"create_at": now,
|
||||||
|
"update_at": now,
|
||||||
|
"delete_at": now,
|
||||||
|
"has_syncables": true,
|
||||||
|
"member_count": 10,
|
||||||
|
"allow_reference": true,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.Equal(t, expected, m)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGroupLogClone(t *testing.T) {
|
||||||
|
t.Run("zero value", func(t *testing.T) {
|
||||||
|
var g Group
|
||||||
|
l := g.LogClone()
|
||||||
|
require.NotNil(t, l)
|
||||||
|
|
||||||
|
m, ok := l.(map[string]interface{})
|
||||||
|
require.True(t, ok)
|
||||||
|
assert.Equal(t, "", m["remote_id"])
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("values set", func(t *testing.T) {
|
||||||
|
id := NewId()
|
||||||
|
now := GetMillis()
|
||||||
|
g := Group{
|
||||||
|
Id: id,
|
||||||
|
Name: NewString("some name"),
|
||||||
|
DisplayName: "some display name",
|
||||||
|
Source: GroupSourceLdap,
|
||||||
|
RemoteId: NewString("some_remote"),
|
||||||
|
CreateAt: now,
|
||||||
|
UpdateAt: now,
|
||||||
|
DeleteAt: now,
|
||||||
|
HasSyncables: true,
|
||||||
|
MemberCount: NewInt(10),
|
||||||
|
AllowReference: true,
|
||||||
|
}
|
||||||
|
l := g.LogClone()
|
||||||
|
m, ok := l.(map[string]interface{})
|
||||||
|
require.True(t, ok)
|
||||||
|
|
||||||
|
expected := map[string]any{
|
||||||
|
"id": id,
|
||||||
|
"name": "some name",
|
||||||
|
"display_name": "some display name",
|
||||||
|
"source": GroupSourceLdap,
|
||||||
|
"remote_id": "some_remote",
|
||||||
|
"create_at": now,
|
||||||
|
"update_at": now,
|
||||||
|
"delete_at": now,
|
||||||
|
"has_syncables": true,
|
||||||
|
"member_count": 10,
|
||||||
|
"allow_reference": true,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.Equal(t, expected, m)
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user