package livekit
import (
"testing"
"github.com/stretchr/testify/require"
"go.uber.org/zap/zapcore"
"github.com/livekit/protocol/logger"
"github.com/livekit/protocol/logger/testutil"
"github.com/livekit/protocol/logger/zaputil"
)
type TestEgressLogOutput struct {
testutil.TestLogOutput
S3 map[string]string
}
func TestLoggerProto(t *testing.T) {
ws := &testutil.BufferedWriteSyncer{}
l, err := logger.NewZapLogger(&logger.Config{}, logger.WithTap(zaputil.NewWriteEnabler(ws, zapcore.DebugLevel)))
require.NoError(t, err)
s3 := &S3Upload{
AccessKey: "Field1",
Secret: "Field2",
AssumeRoleArn: "Field3",
SessionToken: "Field4",
Endpoint: "Field5",
}
l.Debugw("foo", "s3", logger.Proto(s3))
var log TestEgressLogOutput
require.NoError(t, ws.Unmarshal(&log))
require.NotEqual(t, 0, log.TS)
require.NotEqual(t, "", log.Caller)
require.Equal(t, "foo", log.Msg)
require.Equal(t, "<redacted>", log.S3["accessKey"])
require.Equal(t, "<redacted>", log.S3["secret"])
require.Equal(t, "<redacted>", log.S3["assumeRoleArn"])
require.Equal(t, "<redacted>", log.S3["sessionToken"])
require.Equal(t, "Field5", log.S3["endpoint"])
}