From aa0182008f46af6ab4d1150ad5cb83a4f5caa95a Mon Sep 17 00:00:00 2001 From: Bobby DeSimone Date: Sat, 28 Sep 2019 13:38:44 -0700 Subject: [PATCH] internal/log: add unit tests Signed-off-by: Bobby DeSimone --- internal/log/example_test.go | 34 +++++++++++++++++++++++++++++++++ internal/log/middleware_test.go | 27 ++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 internal/log/example_test.go diff --git a/internal/log/example_test.go b/internal/log/example_test.go new file mode 100644 index 000000000..f46e09c01 --- /dev/null +++ b/internal/log/example_test.go @@ -0,0 +1,34 @@ +// Adapted from https://golang.org/src/log/example_test.go +// Copyright 2013 The Go Authors. See 3RD-PARTY file for license. + +package log_test + +import ( + "bytes" + "fmt" + stdlog "log" + "os" + + "github.com/pomerium/pomerium/internal/log" + "github.com/rs/zerolog" +) + +func ExampleLogger() { + log.Logger = zerolog.New(os.Stdout).With().Str("level-logging?", "yep!").Logger() + + var ( + buf bytes.Buffer + logger = stdlog.New(&log.StdLogWrapper{Logger: &log.Logger}, "", 0) + ) + + logger.Print("Hello logger!") + log.SetDebugMode() + + logger.Print("Debug") + + fmt.Print(&buf) + // Output: + // {"level":"error","level-logging?":"yep!","message":"Hello logger!"} + // ERR Debug level-logging?=yep! + +} diff --git a/internal/log/middleware_test.go b/internal/log/middleware_test.go index 067dac6b8..8241f742b 100644 --- a/internal/log/middleware_test.go +++ b/internal/log/middleware_test.go @@ -10,7 +10,9 @@ import ( "reflect" "regexp" "testing" + "time" + "github.com/google/go-cmp/cmp" "github.com/rs/zerolog" ) @@ -268,3 +270,28 @@ func TestForwardedAddrHandler(t *testing.T) { t.Errorf("Invalid log output, got: %s, want: %s", got, want) } } +func TestAccessHandler(t *testing.T) { + out := &bytes.Buffer{} + + r := httptest.NewRequest(http.MethodGet, "/", nil) + + h := AccessHandler(func(r *http.Request, status, size int, duration time.Duration) { + l := FromRequest(r) + l.Log().Int("status", status).Int("size", size).Msg("info") + + })(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("some inner logging") + w.Write([]byte("Add something to the request of non-zero size")) + })) + h = NewHandler(zerolog.New(out))(h) + w := httptest.NewRecorder() + + h.ServeHTTP(w, r) + want := "{\"message\":\"some inner logging\"}\n{\"status\":200,\"size\":45,\"message\":\"info\"}\n" + got := decodeIfBinary(out) + if diff := cmp.Diff(want, got); diff != "" { + t.Errorf("TestAccessHandler: %s", diff) + } + +}