invoke config listeners when app.UpdateConfig is used (#7773)

Этот коммит содержится в:
Chris
2017-11-03 17:23:33 -05:00
коммит произвёл Christopher Speller
родитель 2acb548615
Коммит 85efdd6b5b
3 изменённых файлов: 32 добавлений и 3 удалений

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

@@ -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)
}