summaryrefslogtreecommitdiff
path: root/logging
diff options
context:
space:
mode:
authortjpcc <tjp@ctrl-c.club>2023-01-26 16:22:58 -0700
committertjpcc <tjp@ctrl-c.club>2023-01-26 16:22:58 -0700
commita27b879accb191b6a6c6e76a6251ed751967f73a (patch)
treed7c5f337ca9cb4143997665fc616759fbf5e2d3f /logging
parent32e45e3557e49cc868aa4437ef0aa56ab6470be8 (diff)
test coverage and resulting bugfixes
Diffstat (limited to 'logging')
-rw-r--r--logging/middleware.go1
-rw-r--r--logging/middleware_test.go47
2 files changed, 48 insertions, 0 deletions
diff --git a/logging/middleware.go b/logging/middleware.go
index 01278e1..5527ce7 100644
--- a/logging/middleware.go
+++ b/logging/middleware.go
@@ -48,6 +48,7 @@ func (lr *loggedResponseBody) log() {
func (lr *loggedResponseBody) Read(b []byte) (int, error) {
if lr.body == nil {
+ lr.log()
return 0, io.EOF
}
diff --git a/logging/middleware_test.go b/logging/middleware_test.go
new file mode 100644
index 0000000..288c960
--- /dev/null
+++ b/logging/middleware_test.go
@@ -0,0 +1,47 @@
+package logging_test
+
+import (
+ "context"
+ "io"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+
+ "tildegit.org/tjp/gus"
+ "tildegit.org/tjp/gus/logging"
+)
+
+func TestLogRequests(t *testing.T) {
+ logger := logRecorder{}
+ handler := logging.LogRequests(&logger)(func(_ context.Context, _ *gus.Request) *gus.Response {
+ return &gus.Response{}
+ })
+
+ response := handler(context.Background(), &gus.Request{})
+ _, err := io.ReadAll(response.Body)
+ assert.Nil(t, err)
+
+ require.Equal(t, 1, len(logger))
+
+ keyvals := map[string]any{}
+ for i := 0; i < len(logger[0])-1; i += 2 {
+ keyvals[logger[0][i].(string)] = logger[0][i+1]
+ }
+
+ if assert.Contains(t, keyvals, "msg") {
+ assert.Equal(t, keyvals["msg"], "request")
+ }
+ assert.Contains(t, keyvals, "ts")
+ assert.Contains(t, keyvals, "dur")
+ assert.Contains(t, keyvals, "url")
+ assert.Contains(t, keyvals, "status")
+ assert.Contains(t, keyvals, "bodylen")
+}
+
+type logRecorder [][]any
+
+func (lr *logRecorder) Log(keyvals ...any) error {
+ *lr = append(*lr, keyvals)
+ return nil
+}