From 200b2c0ba7753dc695ff74f0fe1860025b1480c7 Mon Sep 17 00:00:00 2001 From: Kelsey Hightower Date: Sat, 26 Jul 2014 21:17:10 -0700 Subject: [PATCH] httplog: Improve test coverage --- pkg/httplog/log_test.go | 89 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 11 deletions(-) diff --git a/pkg/httplog/log_test.go b/pkg/httplog/log_test.go index 648c4b5bf55..0a53c33d501 100644 --- a/pkg/httplog/log_test.go +++ b/pkg/httplog/log_test.go @@ -37,7 +37,7 @@ func TestHandler(t *testing.T) { }) req, err := http.NewRequest("GET", "http://example.com/kube", nil) if err != nil { - t.Errorf("Unexpected error: %#v", err) + t.Errorf("Unexpected error: %v", err) } w := httptest.NewRecorder() handler.ServeHTTP(w, req) @@ -46,17 +46,16 @@ func TestHandler(t *testing.T) { } } -var statusTestTable = []struct { - status int - statuses []int - want bool -}{ - {http.StatusOK, []int{}, true}, - {http.StatusOK, []int{http.StatusOK}, false}, - {http.StatusCreated, []int{http.StatusOK, http.StatusAccepted}, true}, -} - func TestStatusIsNot(t *testing.T) { + statusTestTable := []struct { + status int + statuses []int + want bool + }{ + {http.StatusOK, []int{}, true}, + {http.StatusOK, []int{http.StatusOK}, false}, + {http.StatusCreated, []int{http.StatusOK, http.StatusAccepted}, true}, + } for _, tt := range statusTestTable { sp := StatusIsNot(tt.statuses...) got := sp(tt.status) @@ -65,3 +64,71 @@ func TestStatusIsNot(t *testing.T) { } } } + +func TestMakeLogged(t *testing.T) { + req, err := http.NewRequest("GET", "http://example.com", nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + handler := func(w http.ResponseWriter, r *http.Request) { + MakeLogged(req, &w) + defer func() { + if r := recover(); r == nil { + t.Errorf("Expected MakeLogged to panic") + } + }() + MakeLogged(req, &w) + } + w := httptest.NewRecorder() + handler(w, req) +} + +func TestLogOf(t *testing.T) { + logOfTests := []bool{true, false} + for _, makeLogger := range logOfTests { + req, err := http.NewRequest("GET", "http://example.com", nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + handler := func(w http.ResponseWriter, r *http.Request) { + var want *respLogger + if makeLogger { + want = MakeLogged(req, &w) + } else { + defer func() { + if r := recover(); r == nil { + t.Errorf("Expected LogOf to panic") + } + }() + } + got := LogOf(w) + if want != got { + t.Errorf("Expected %v, got %v", want, got) + } + } + w := httptest.NewRecorder() + handler(w, req) + } +} + +func TestUnlogged(t *testing.T) { + unloggedTests := []bool{true, false} + for _, makeLogger := range unloggedTests { + req, err := http.NewRequest("GET", "http://example.com", nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + handler := func(w http.ResponseWriter, r *http.Request) { + want := w + if makeLogger { + MakeLogged(req, &w) + } + got := Unlogged(w) + if want != got { + t.Errorf("Expected %v, got %v", want, got) + } + } + w := httptest.NewRecorder() + handler(w, req) + } +}