From d9dc9326f2b21831155c103e0c9b8aef73b2ba50 Mon Sep 17 00:00:00 2001 From: Peter Hellberg Date: Sat, 9 May 2015 21:47:02 +0200 Subject: [PATCH] headers: Initial test for Headers --- middleware/headers/headers_test.go | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 middleware/headers/headers_test.go diff --git a/middleware/headers/headers_test.go b/middleware/headers/headers_test.go new file mode 100644 index 00000000..e6285897 --- /dev/null +++ b/middleware/headers/headers_test.go @@ -0,0 +1,50 @@ +package headers + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/mholt/caddy/middleware" +) + +func TestHeaders(t *testing.T) { + for i, test := range []struct { + from string + name string + value string + }{ + {"/a", "Foo", "Bar"}, + {"/a", "Bar", ""}, + {"/a", "Baz", ""}, + {"/b", "Foo", ""}, + {"/b", "Bar", "Removed in /a"}, + } { + he := Headers{ + Next: middleware.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) { + return 0, nil + }), + Rules: []Rule{ + {Path: "/a", Headers: []Header{ + {Name: "Foo", Value: "Bar"}, + {Name: "-Bar"}, + }}, + }, + } + + req, err := http.NewRequest("GET", test.from, nil) + if err != nil { + t.Fatalf("Test %d: Could not create HTTP request: %v", i, err) + } + + rec := httptest.NewRecorder() + rec.Header().Set("Bar", "Removed in /a") + + he.ServeHTTP(rec, req) + + if got := rec.Header().Get(test.name); got != test.value { + t.Errorf("Test %d: Expected %s header to be %q but was %q", + i, test.name, test.value, got) + } + } +}