Skip to content

Commit

Permalink
test(ginmw): test log middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
Reasno committed Feb 22, 2021
1 parent d18515f commit 59c58cc
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 10 deletions.
59 changes: 59 additions & 0 deletions ginmw/log_test.go
Original file line number Diff line number Diff line change
@@ -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)
})
}
}
40 changes: 30 additions & 10 deletions ginmw/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})
}
}

0 comments on commit 59c58cc

Please sign in to comment.