git.iko.soy/typeable/oauth2-proxy
on v3.2.0 help sign in
typeable/oauth2-proxy/logging_handler_test.go
48 lines 1.1 kB history raw
1package main
3import (
4 "bytes"
5 "fmt"
6 "net/http"
7 "net/http/httptest"
8 "strings"
9 "testing"
10 "time"
13func TestLoggingHandler_ServeHTTP(t *testing.T) {
14 ts := time.Now()
16 tests := []struct {
17 Format,
18 ExpectedLogMessage string
19 }{
20 {defaultRequestLoggingFormat, fmt.Sprintf("127.0.0.1 - - [%s] test-server GET - \"/foo/bar\" HTTP/1.1 \"\" 200 4 0", ts.Format("02/Jan/2006:15:04:05 -0700"))},
21 {"{{.RequestMethod}}", "GET\n"},
22 }
24 for _, test := range tests {
25 buf := bytes.NewBuffer(nil)
26 handler := func(w http.ResponseWriter, req *http.Request) {
27 _, ok := w.(http.Hijacker)
28 if !ok {
29 t.Error("http.Hijacker is not available")
30 }
32 w.Write([]byte("test"))
33 }
35 h := LoggingHandler(buf, http.HandlerFunc(handler), true, test.Format)
37 r, _ := http.NewRequest("GET", "/foo/bar", nil)
38 r.RemoteAddr = "127.0.0.1"
39 r.Host = "test-server"
41 h.ServeHTTP(httptest.NewRecorder(), r)
43 actual := buf.String()
44 if !strings.Contains(actual, test.ExpectedLogMessage) {
45 t.Errorf("Log message was\n%s\ninstead of matching \n%s", actual, test.ExpectedLogMessage)
46 }
47 }