From 59c58cc46b8c377f1e9046eca036421fa8e183d4 Mon Sep 17 00:00:00 2001 From: Reasno Date: Mon, 22 Feb 2021 16:27:54 +0800 Subject: [PATCH] test(ginmw): test log middleware --- ginmw/log_test.go | 59 +++++++++++++++++++++++++++++++++++++++++++ ginmw/metrics_test.go | 40 +++++++++++++++++++++-------- 2 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 ginmw/log_test.go diff --git a/ginmw/log_test.go b/ginmw/log_test.go new file mode 100644 index 00000000..299e5f86 --- /dev/null +++ b/ginmw/log_test.go @@ -0,0 +1,59 @@ +package ginmw + +import ( + "net/http/httptest" + "testing" + + "github.com/DoNewsCode/core/key" + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" +) + +type MockLogger struct { + values []interface{} +} + +func (m *MockLogger) Log(keyvals ...interface{}) error { + m.values = keyvals + return nil +} + +func TestWithLogger(t *testing.T) { + cases := []struct { + name string + ignore []string + assert func(t *testing.T, logger MockLogger) + }{ + { + "normal", + []string{}, + func(t *testing.T, logger MockLogger) { + assert.Contains(t, logger.values, 200) + }, + }, + { + "ignore", + []string{"/"}, + func(t *testing.T, logger MockLogger) { + assert.NotContains(t, logger.values, 200) + }, + }, + } + + for _, c := range cases { + c := c + t.Run(c.name, func(t *testing.T) { + t.Parallel() + g := gin.New() + logger := MockLogger{} + g.Use(WithLogger(&logger, key.New("module", "foo"), c.ignore...)) + g.Handle("GET", "/", func(context *gin.Context) { + context.String(200, "%s", "ok") + }) + req := httptest.NewRequest("GET", "/", nil) + writer := httptest.NewRecorder() + g.ServeHTTP(writer, req) + c.assert(t, logger) + }) + } +} diff --git a/ginmw/metrics_test.go b/ginmw/metrics_test.go index fa124dc0..e5a21964 100644 --- a/ginmw/metrics_test.go +++ b/ginmw/metrics_test.go @@ -22,14 +22,34 @@ func (m *mockMetric) Observe(value float64) { } func TestWithMetrics(t *testing.T) { - metric := &mockMetric{} - g := gin.New() - g.Use(WithMetrics(metric, key.New("module", "foo"), false)) - g.Handle("GET", "/", func(context *gin.Context) { - context.String(200, "%s", "ok") - }) - req := httptest.NewRequest("GET", "/", nil) - writer := httptest.NewRecorder() - g.ServeHTTP(writer, req) - assert.NotZero(t, metric.observed) + cases := []struct { + name string + addPath bool + }{ + { + "addPath", + true, + }, + { + "addPath", + false, + }, + } + + for _, c := range cases { + c := c + t.Run(c.name, func(t *testing.T) { + t.Parallel() + metric := &mockMetric{} + g := gin.New() + g.Use(WithMetrics(metric, key.New("module", "foo"), c.addPath)) + g.Handle("GET", "/", func(context *gin.Context) { + context.String(200, "%s", "ok") + }) + req := httptest.NewRequest("GET", "/", nil) + writer := httptest.NewRecorder() + g.ServeHTTP(writer, req) + assert.NotZero(t, metric.observed) + }) + } }