Merge pull request #996 from tw4452852/host_header

proxy: add Host header checking
This commit is contained in:
Matt Holt 2016-08-05 16:20:06 -06:00 committed by GitHub
commit c6c221b8db

View file

@ -357,9 +357,11 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
defer log.SetOutput(os.Stderr) defer log.SetOutput(os.Stderr)
var actualHeaders http.Header var actualHeaders http.Header
var actualHost string
backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, client")) w.Write([]byte("Hello, client"))
actualHeaders = r.Header actualHeaders = r.Header
actualHost = r.Host
})) }))
defer backend.Close() defer backend.Close()
@ -371,6 +373,7 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
"+Add-Me": {"Add-Value"}, "+Add-Me": {"Add-Value"},
"-Remove-Me": {""}, "-Remove-Me": {""},
"Replace-Me": {"{hostname}"}, "Replace-Me": {"{hostname}"},
"Host": {"{>Host}"},
} }
// set up proxy // set up proxy
p := &Proxy{ p := &Proxy{
@ -385,10 +388,12 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
} }
w := httptest.NewRecorder() w := httptest.NewRecorder()
const expectHost = "example.com"
//add initial headers //add initial headers
r.Header.Add("Merge-Me", "Initial") r.Header.Add("Merge-Me", "Initial")
r.Header.Add("Remove-Me", "Remove-Value") r.Header.Add("Remove-Me", "Remove-Value")
r.Header.Add("Replace-Me", "Replace-Value") r.Header.Add("Replace-Me", "Replace-Value")
r.Header.Add("Host", expectHost)
p.ServeHTTP(w, r) p.ServeHTTP(w, r)
@ -421,6 +426,10 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
t.Errorf("Request sent to upstream backend should replace value of %v header with %v. Instead value was %v", headerKey, headerValue, value) t.Errorf("Request sent to upstream backend should replace value of %v header with %v. Instead value was %v", headerKey, headerValue, value)
} }
if actualHost != expectHost {
t.Errorf("Request sent to upstream backend should have value of Host with %s, but got %s", expectHost, actualHost)
}
} }
func TestDownstreamHeadersUpdate(t *testing.T) { func TestDownstreamHeadersUpdate(t *testing.T) {