65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
type fakeWriter func([]byte) (int, error)
|
|
|
|
func (fake fakeWriter) Write(buf []byte) (int, error) {
|
|
return fake(buf)
|
|
}
|
|
|
|
func TestLogInfo(t *testing.T) {
|
|
var buf []byte
|
|
writer := fakeWriter(func(b []byte) (int, error) {
|
|
buf = b
|
|
return 0, nil
|
|
})
|
|
|
|
noopHandler := func(w http.ResponseWriter, r *http.Request) {}
|
|
log := NewLog(http.HandlerFunc(noopHandler), writer, "info")
|
|
|
|
ts := httptest.NewServer(log)
|
|
defer ts.Close()
|
|
|
|
_, err := http.Get(ts.URL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
data := string(buf)
|
|
if strings.Contains(data, http.MethodGet) == false ||
|
|
strings.Contains(data, "HTTP/1.1") == false ||
|
|
strings.Contains(data, " 200 ") == false {
|
|
t.Fatalf("Invalid log output: %s", data)
|
|
}
|
|
}
|
|
|
|
func TestLogError(t *testing.T) {
|
|
var buf []byte
|
|
writer := fakeWriter(func(b []byte) (int, error) {
|
|
buf = b
|
|
return 0, nil
|
|
})
|
|
|
|
noopHandler := func(w http.ResponseWriter, r *http.Request) {}
|
|
log := NewLog(http.HandlerFunc(noopHandler), writer, "error")
|
|
|
|
ts := httptest.NewServer(log)
|
|
defer ts.Close()
|
|
|
|
_, err := http.Get(ts.URL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
data := string(buf)
|
|
if data != "" {
|
|
t.Fatalf("Invalid log output: %s", data)
|
|
}
|
|
}
|