Do not parse developer flags if empty (#19097)

* Do not parse developer flags if empty

Attempting to parse an empty flag would
result in a spurious log line which would
clog up the console.

```release-note
NONE
```

* add test

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2021-11-30 14:27:25 +05:30
коммит произвёл GitHub
родитель f075690195
Коммит 9fde5aa5e2
2 изменённых файлов: 46 добавлений и 18 удалений

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

@@ -100,6 +100,7 @@ func generateDevCSP(c Context) string {
} }
// Add supported flags for debugging during development, even if not on a dev build. // Add supported flags for debugging during development, even if not on a dev build.
if *c.App.Config().ServiceSettings.DeveloperFlags != "" {
for _, devFlagKVStr := range strings.Split(*c.App.Config().ServiceSettings.DeveloperFlags, ",") { for _, devFlagKVStr := range strings.Split(*c.App.Config().ServiceSettings.DeveloperFlags, ",") {
devFlagKVSplit := strings.SplitN(devFlagKVStr, "=", 2) devFlagKVSplit := strings.SplitN(devFlagKVStr, "=", 2)
if len(devFlagKVSplit) != 2 { if len(devFlagKVSplit) != 2 {
@@ -122,6 +123,7 @@ func generateDevCSP(c Context) string {
c.Logger.Warn("Unrecognized developer flag", mlog.String("developer_flag", devFlagKVStr)) c.Logger.Warn("Unrecognized developer flag", mlog.String("developer_flag", devFlagKVStr))
} }
} }
}
var devCSP string var devCSP string
supportedCSPFlags := []string{"unsafe-eval", "unsafe-inline"} supportedCSPFlags := []string{"unsafe-eval", "unsafe-inline"}
for _, devCSPFlag := range supportedCSPFlags { for _, devCSPFlag := range supportedCSPFlags {

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

@@ -14,6 +14,7 @@ import (
"github.com/mattermost/mattermost-server/v6/app" "github.com/mattermost/mattermost-server/v6/app"
"github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/model"
"github.com/mattermost/mattermost-server/v6/plugin/plugintest/mock" "github.com/mattermost/mattermost-server/v6/plugin/plugintest/mock"
"github.com/mattermost/mattermost-server/v6/shared/mlog"
"github.com/mattermost/mattermost-server/v6/store/storetest/mocks" "github.com/mattermost/mattermost-server/v6/store/storetest/mocks"
) )
@@ -485,6 +486,31 @@ func TestGenerateDevCSP(t *testing.T) {
assert.Equal(t, " 'unsafe-eval'", devCSP) assert.Equal(t, " 'unsafe-eval'", devCSP)
}) })
t.Run("empty dev flags", func(t *testing.T) {
th := Setup(t)
defer th.TearDown()
th.App.UpdateConfig(func(cfg *model.Config) {
*cfg.ServiceSettings.DeveloperFlags = ""
})
logger := mlog.CreateConsoleTestLogger(false, mlog.LvlWarn)
buf := &mlog.Buffer{}
require.NoError(t, mlog.AddWriterTarget(logger, buf, false, mlog.LvlWarn))
c := &Context{
App: th.App,
AppContext: th.Context,
Logger: logger,
}
generateDevCSP(*c)
require.NoError(t, logger.Shutdown())
assert.Equal(t, "", buf.String())
})
} }
func TestHandlerServeInvalidToken(t *testing.T) { func TestHandlerServeInvalidToken(t *testing.T) {