A powerful HTTP router and URL matcher for building Go web servers with 🦍
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.5 KiB

package mux
import (
"bytes"
"github.com/stretchr/testify/assert"
"net/http"
"testing"
)
func testHandler(status int) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(status)
}
}
func TestLogger(t *testing.T) {
buffer := new(bytes.Buffer)
r := NewRouter()
r.Use(LoggerWithConfig(LogConfig{Output: buffer}))
r.HandleFunc("/example", testHandler(http.StatusOK)).
Methods("GET", "POST", "PUT", "DELETE", "OPTIONS")
rw := NewRecorder()
req := newRequest("GET", "/example")
r.ServeHTTP(rw, req)
assert.Contains(t, buffer.String(), "200")
assert.Contains(t, buffer.String(), "GET")
assert.Contains(t, buffer.String(), "/example")
buffer.Reset()
req = newRequest("POST", "/example")
r.ServeHTTP(rw, req)
assert.Contains(t, buffer.String(), "200")
assert.Contains(t, buffer.String(), "POST")
assert.Contains(t, buffer.String(), "/example")
buffer.Reset()
req = newRequest("PUT", "/example")
r.ServeHTTP(rw, req)
assert.Contains(t, buffer.String(), "200")
assert.Contains(t, buffer.String(), "PUT")
assert.Contains(t, buffer.String(), "/example")
buffer.Reset()
req = newRequest("DELETE", "/example")
r.ServeHTTP(rw, req)
assert.Contains(t, buffer.String(), "200")
assert.Contains(t, buffer.String(), "DELETE")
assert.Contains(t, buffer.String(), "/example")
buffer.Reset()
req = newRequest("OPTIONS", "/example")
r.ServeHTTP(rw, req)
assert.Contains(t, buffer.String(), "200")
assert.Contains(t, buffer.String(), "OPTIONS")
assert.Contains(t, buffer.String(), "/example")
}