invoke config listeners when app.UpdateConfig is used (#7773)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
2acb548615
Коммит
85efdd6b5b
@@ -253,7 +253,9 @@ func (a *App) Config() *model.Config {
|
||||
}
|
||||
|
||||
func (a *App) UpdateConfig(f func(*model.Config)) {
|
||||
old := utils.Cfg.Clone()
|
||||
f(utils.Cfg)
|
||||
utils.InvokeGlobalConfigListeners(old, utils.Cfg)
|
||||
}
|
||||
|
||||
func (a *App) PersistConfig() {
|
||||
|
||||
@@ -10,6 +10,9 @@ import (
|
||||
|
||||
l4g "github.com/alecthomas/log4go"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
"github.com/mattermost/mattermost-server/store/storetest"
|
||||
"github.com/mattermost/mattermost-server/utils"
|
||||
)
|
||||
@@ -49,3 +52,23 @@ func TestAppRace(t *testing.T) {
|
||||
a.Shutdown()
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateConfig(t *testing.T) {
|
||||
th := Setup()
|
||||
defer th.TearDown()
|
||||
|
||||
prev := *th.App.Config().ServiceSettings.SiteURL
|
||||
defer th.App.UpdateConfig(func(cfg *model.Config) {
|
||||
*cfg.ServiceSettings.SiteURL = prev
|
||||
})
|
||||
|
||||
listener := utils.AddConfigListener(func(old, current *model.Config) {
|
||||
assert.Equal(t, prev, *old.ServiceSettings.SiteURL)
|
||||
assert.Equal(t, "foo", *current.ServiceSettings.SiteURL)
|
||||
})
|
||||
defer utils.RemoveConfigListener(listener)
|
||||
|
||||
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||
*cfg.ServiceSettings.SiteURL = "foo"
|
||||
})
|
||||
}
|
||||
|
||||
@@ -414,13 +414,17 @@ func LoadGlobalConfig(fileName string) *model.Config {
|
||||
SetDefaultRolesBasedOnConfig()
|
||||
SetSiteURL(*Cfg.ServiceSettings.SiteURL)
|
||||
|
||||
for _, listener := range cfgListeners {
|
||||
listener(&oldConfig, config)
|
||||
}
|
||||
InvokeGlobalConfigListeners(&oldConfig, config)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func InvokeGlobalConfigListeners(old, current *model.Config) {
|
||||
for _, listener := range cfgListeners {
|
||||
listener(old, current)
|
||||
}
|
||||
}
|
||||
|
||||
func RegenerateClientConfig() {
|
||||
ClientCfg = getClientConfig(Cfg)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user