// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. package config import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/shared/mlog" ) func TestMloggerConfigFromAuditConfig(t *testing.T) { auditSettings := model.ExperimentalAuditSettings{ FileEnabled: model.NewPointer(true), FileName: model.NewPointer("audit.log"), FileMaxSizeMB: model.NewPointer(20), FileMaxAgeDays: model.NewPointer(1), FileMaxBackups: model.NewPointer(5), FileCompress: model.NewPointer(true), FileMaxQueueSize: model.NewPointer(5000), } t.Run("validate default audit settings", func(t *testing.T) { cfg, err := MloggerConfigFromAuditConfig(auditSettings, nil) require.NoError(t, err, "audit config should not error") require.Len(t, cfg, 1, "default audit config should have one target") targetCfg := cfg["_defAudit"] // check general assert.Equal(t, targetCfg.Type, "file") assert.Equal(t, targetCfg.Format, "json") assert.ElementsMatch(t, targetCfg.Levels, []mlog.Level{mlog.LvlAuditAPI, mlog.LvlAuditContent, mlog.LvlAuditPerms, mlog.LvlAuditCLI}) // check format options optionsExpected := map[string]any{ "disable_timestamp": false, "disable_msg": true, "disable_stacktrace": true, "disable_level": true, } var optionsReceived map[string]any err = json.Unmarshal(targetCfg.FormatOptions, &optionsReceived) require.NoError(t, err, "unmarshal should not fail") assert.Equal(t, optionsExpected, optionsReceived) }) }