[MM-59350] Include LDAP vendor errors in Support Packet (#27571)

Этот коммит содержится в:
Ben Schumacher
2024-07-13 10:17:07 +02:00
коммит произвёл GitHub
родитель 9bb22a369a
Коммит bbc8baac0a
4 изменённых файлов: 55 добавлений и 7 удалений

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

@@ -123,8 +123,19 @@ func (a *App) generateSupportPacketYaml(c request.CTX) (*model.FileData, error)
/* LDAP */ /* LDAP */
var vendorName, vendorVersion string var vendorName, vendorVersion string
if ldapInterface := a.Ldap(); ldapInterface != nil { ldap := a.Ldap()
vendorName, vendorVersion = ldapInterface.GetVendorNameAndVendorVersion(c) if ldap != nil {
vendorName, vendorVersion, err = ldap.GetVendorNameAndVendorVersion(c)
if err != nil {
rErr = multierror.Append(errors.Wrap(err, "error while getting LDAP vendor info"))
}
if vendorName == "" {
vendorName = "unknown"
}
if vendorVersion == "" {
vendorVersion = "unknown"
}
} }
/* Elastic Search */ /* Elastic Search */

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

@@ -9,6 +9,7 @@ import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
@@ -16,6 +17,7 @@ import (
"github.com/mattermost/mattermost/server/v8/channels/app/platform" "github.com/mattermost/mattermost/server/v8/channels/app/platform"
smocks "github.com/mattermost/mattermost/server/v8/channels/store/storetest/mocks" smocks "github.com/mattermost/mattermost/server/v8/channels/store/storetest/mocks"
"github.com/mattermost/mattermost/server/v8/config" "github.com/mattermost/mattermost/server/v8/config"
emocks "github.com/mattermost/mattermost/server/v8/einterfaces/mocks"
fmocks "github.com/mattermost/mattermost/server/v8/platform/shared/filestore/mocks" fmocks "github.com/mattermost/mattermost/server/v8/platform/shared/filestore/mocks"
) )
@@ -46,7 +48,7 @@ func TestGenerateSupportPacketYaml(t *testing.T) {
defer th.TearDown() defer th.TearDown()
licenseUsers := 100 licenseUsers := 100
license := model.NewTestLicense() license := model.NewTestLicense("ldap")
license.Features.Users = model.NewInt(licenseUsers) license.Features.Users = model.NewInt(licenseUsers)
th.App.Srv().SetLicense(license) th.App.Srv().SetLicense(license)
@@ -148,6 +150,34 @@ func TestGenerateSupportPacketYaml(t *testing.T) {
assert.Equal(t, "mock", packet.FileDriver) assert.Equal(t, "mock", packet.FileDriver)
assert.Equal(t, "FAIL: all broken", packet.FileStatus) assert.Equal(t, "FAIL: all broken", packet.FileStatus)
}) })
t.Run("no LDAP vendor info", func(t *testing.T) {
ldapMock := &emocks.LdapInterface{}
ldapMock.On(
"GetVendorNameAndVendorVersion",
mock.AnythingOfType("*request.Context"),
).Return("", "", nil)
th.App.Channels().Ldap = ldapMock
packet := generateSupportPacket(t)
assert.Equal(t, "unknown", packet.LdapVendorName)
assert.Equal(t, "unknown", packet.LdapVendorVersion)
})
t.Run("found LDAP vendor info", func(t *testing.T) {
ldapMock := &emocks.LdapInterface{}
ldapMock.On(
"GetVendorNameAndVendorVersion",
mock.AnythingOfType("*request.Context"),
).Return("some vendor", "v1.0.0", nil)
th.App.Channels().Ldap = ldapMock
packet := generateSupportPacket(t)
assert.Equal(t, "some vendor", packet.LdapVendorName)
assert.Equal(t, "v1.0.0", packet.LdapVendorVersion)
})
} }
func TestGenerateSupportPacket(t *testing.T) { func TestGenerateSupportPacket(t *testing.T) {

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

@@ -26,5 +26,5 @@ type LdapInterface interface {
UpdateProfilePictureIfNecessary(request.CTX, model.User, model.Session) UpdateProfilePictureIfNecessary(request.CTX, model.User, model.Session)
GetADLdapIdFromSAMLId(c request.CTX, authData string) string GetADLdapIdFromSAMLId(c request.CTX, authData string) string
GetSAMLIdFromADLdapId(c request.CTX, authData string) string GetSAMLIdFromADLdapId(c request.CTX, authData string) string
GetVendorNameAndVendorVersion(rctx request.CTX) (string, string) GetVendorNameAndVendorVersion(rctx request.CTX) (string, string, error)
} }

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

@@ -329,7 +329,7 @@ func (_m *LdapInterface) GetUserAttributes(rctx request.CTX, id string, attribut
} }
// GetVendorNameAndVendorVersion provides a mock function with given fields: rctx // GetVendorNameAndVendorVersion provides a mock function with given fields: rctx
func (_m *LdapInterface) GetVendorNameAndVendorVersion(rctx request.CTX) (string, string) { func (_m *LdapInterface) GetVendorNameAndVendorVersion(rctx request.CTX) (string, string, error) {
ret := _m.Called(rctx) ret := _m.Called(rctx)
if len(ret) == 0 { if len(ret) == 0 {
@@ -338,7 +338,8 @@ func (_m *LdapInterface) GetVendorNameAndVendorVersion(rctx request.CTX) (string
var r0 string var r0 string
var r1 string var r1 string
if rf, ok := ret.Get(0).(func(request.CTX) (string, string)); ok { var r2 error
if rf, ok := ret.Get(0).(func(request.CTX) (string, string, error)); ok {
return rf(rctx) return rf(rctx)
} }
if rf, ok := ret.Get(0).(func(request.CTX) string); ok { if rf, ok := ret.Get(0).(func(request.CTX) string); ok {
@@ -353,7 +354,13 @@ func (_m *LdapInterface) GetVendorNameAndVendorVersion(rctx request.CTX) (string
r1 = ret.Get(1).(string) r1 = ret.Get(1).(string)
} }
return r0, r1 if rf, ok := ret.Get(2).(func(request.CTX) error); ok {
r2 = rf(rctx)
} else {
r2 = ret.Error(2)
}
return r0, r1, r2
} }
// MigrateIDAttribute provides a mock function with given fields: c, toAttribute // MigrateIDAttribute provides a mock function with given fields: c, toAttribute