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
124 lines
3.5 KiB
Go
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")
|
|
}
|