2022-12-08 13:05:19 -03:00

88 lines
2.7 KiB
Go

// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package log
import (
"bytes"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/sirupsen/logrus"
)
func TestFromBuffer(t *testing.T) {
tests := []struct {
Description string
Input []byte
Expected []byte
}{
{
"Empty",
[]byte("\x00"),
[]byte(""),
},
{
"With null and without msg or message field",
[]byte("\x00{\"notMessages\":\"\"}"),
[]byte(""),
},
{
"Output without msg or message field",
[]byte("\x00{\"notMessages\":\"\"}"),
[]byte(""),
},
{
"Output with message field",
[]byte("{\"level\":\"info\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
[]byte("{\"context\":\"test\",\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
},
{
"Output with msg field",
[]byte("{\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
[]byte("{\"context\":\"test\",\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
},
{
"Output with msg field and error level",
[]byte("{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
},
{
"Output with msg field and error level",
[]byte("{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
},
{
"With invalid JSON",
[]byte("{\"notMessages\":\"\""),
[]byte(""),
},
{
"Text as JSON",
[]byte("NOT JSON"),
[]byte(""),
},
{
"Mixed content - text and valid JSON",
[]byte("SOMETHING INVALID\n{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
},
}
for _, test := range tests {
logger := logrus.New()
var buffer bytes.Buffer
logger.SetFormatter(&logrus.JSONFormatter{})
logger.SetOutput(&buffer)
logger.SetLevel(logrus.DebugLevel)
entry := logger.WithField("context", "test")
FromBuffer(bytes.NewBuffer(test.Input), entry)
if diff := cmp.Diff(string(test.Expected), buffer.String()); diff != "" {
t.Errorf("%v: unexpected result (-want +got):\n%s", test.Description, diff)
}
}
}