corso/src/pkg/logger/logger_test.go
Keepers 7aaabcefdf
check for log file location in artifacts (#3470)
ensure test artifacts have log files

---

#### Does this PR need a docs update or release note?

- [x]  No

#### Type of change

- [x] 🤖 Supportability/Tests

#### Test Plan

- [x] 💚 E2E
2023-05-23 20:21:29 +00:00

124 lines
3.5 KiB
Go

package logger_test
import (
"testing"
"github.com/alcionai/clues"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/alcionai/corso/src/internal/tester"
"github.com/alcionai/corso/src/pkg/logger"
)
type LoggerUnitSuite struct {
tester.Suite
}
func TestLoggerUnitSuite(t *testing.T) {
suite.Run(t, &LoggerUnitSuite{Suite: tester.NewUnitSuite(t)})
}
func (suite *LoggerUnitSuite) TestAddLoggingFlags() {
t := suite.T()
logger.DebugAPIFV = false
logger.ReadableLogsFV = false
cmd := &cobra.Command{
Use: "test",
Run: func(cmd *cobra.Command, args []string) {
assert.True(t, logger.DebugAPIFV, logger.DebugAPIFN)
assert.True(t, logger.ReadableLogsFV, logger.ReadableLogsFN)
assert.Equal(t, string(logger.LLError), logger.LogLevelFV, logger.LogLevelFN)
assert.Equal(t, string(logger.LFText), logger.LogFormatFV, logger.LogFormatFN)
assert.True(t, logger.MaskSensitiveDataFV, logger.MaskSensitiveDataFN)
// empty assertion here, instead of matching "log-file", because the LogFile
// var isn't updated by running the command (this is expected and correct),
// while the logFileFV remains unexported.
assert.Empty(t, logger.ResolvedLogFile, logger.LogFileFN)
},
}
logger.AddLoggingFlags(cmd)
// Test arg parsing for few args
cmd.SetArgs([]string{
"test",
"--" + logger.DebugAPIFN,
"--" + logger.LogFileFN, "log-file",
"--" + logger.LogLevelFN, string(logger.LLError),
"--" + logger.LogFormatFN, string(logger.LFText),
"--" + logger.ReadableLogsFN,
"--" + logger.MaskSensitiveDataFN,
})
err := cmd.Execute()
require.NoError(t, err, clues.ToCore(err))
}
func (suite *LoggerUnitSuite) TestPreloadLoggingFlags() {
t := suite.T()
logger.DebugAPIFV = false
logger.ReadableLogsFV = false
args := []string{
"--" + logger.DebugAPIFN,
"--" + logger.LogFileFN, "log-file",
"--" + logger.LogLevelFN, string(logger.LLError),
"--" + logger.LogFormatFN, string(logger.LFText),
"--" + logger.ReadableLogsFN,
"--" + logger.MaskSensitiveDataFN,
}
settings := logger.PreloadLoggingFlags(args)
assert.True(t, logger.DebugAPIFV, logger.DebugAPIFN)
assert.True(t, logger.ReadableLogsFV, logger.ReadableLogsFN)
assert.Equal(t, "log-file", settings.File, "settings.File")
assert.Equal(t, logger.LLError, settings.Level, "settings.Level")
assert.Equal(t, logger.LFText, settings.Format, "settings.Format")
assert.Equal(t, logger.PIIHash, settings.PIIHandling, "settings.PIIHandling")
}
func (suite *LoggerUnitSuite) TestPreloadLoggingFlags_badArgsEnsureDefault() {
t := suite.T()
logger.DebugAPIFV = false
logger.ReadableLogsFV = false
args := []string{
"--" + logger.DebugAPIFN,
"--" + logger.LogFileFN, "log-file",
"--" + logger.LogLevelFN, "not-a-level",
"--" + logger.LogFormatFN, "not-a-format",
"--" + logger.ReadableLogsFN,
"--" + logger.MaskSensitiveDataFN,
}
settings := logger.PreloadLoggingFlags(args)
settings = settings.EnsureDefaults()
assert.Equal(t, logger.LLInfo, settings.Level, "settings.Level")
assert.Equal(t, logger.LFText, settings.Format, "settings.Format")
}
func (suite *LoggerUnitSuite) TestSettings_ensureDefaults() {
t := suite.T()
s := logger.Settings{}
require.Empty(t, s.File, "file")
require.Empty(t, s.Level, "level")
require.Empty(t, s.Format, "format")
require.Empty(t, s.PIIHandling, "piialg")
s = s.EnsureDefaults()
require.NotEmpty(t, s.File, "file")
require.NotEmpty(t, s.Level, "level")
require.NotEmpty(t, s.Format, "format")
require.NotEmpty(t, s.PIIHandling, "piialg")
}