Merge pull request #77978 from ahg-g/ahg-host-redirect

Added a unit test to verify that host header is preserved after probe…
This commit is contained in:
Kubernetes Prow Robot 2019-05-17 21:51:20 -07:00 committed by GitHub
commit ae132f626f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -314,3 +314,53 @@ func TestHTTPProbeChecker_NonLocalRedirects(t *testing.T) {
})
}
}
func TestHTTPProbeChecker_HostHeaderPreservedAfterRedirect(t *testing.T) {
successHostHeader := "www.success.com"
failHostHeader := "www.fail.com"
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/redirect":
http.Redirect(w, r, "/success", http.StatusFound)
case "/success":
if r.Host == successHostHeader {
w.WriteHeader(http.StatusOK)
} else {
http.Error(w, "", http.StatusBadRequest)
}
default:
http.Error(w, "", http.StatusInternalServerError)
}
})
server := httptest.NewServer(handler)
defer server.Close()
testCases := map[string]struct {
hostHeader string
expectedResult probe.Result
}{
"success": {successHostHeader, probe.Success},
"fail": {failHostHeader, probe.Failure},
}
for desc, test := range testCases {
headers := http.Header{}
headers.Add("Host", test.hostHeader)
t.Run(desc+"local", func(t *testing.T) {
followNonLocalRedirects := false
prober := New(followNonLocalRedirects)
target, err := url.Parse(server.URL + "/redirect")
require.NoError(t, err)
result, _, _ := prober.Probe(target, headers, wait.ForeverTestTimeout)
assert.Equal(t, test.expectedResult, result)
})
t.Run(desc+"nonlocal", func(t *testing.T) {
followNonLocalRedirects := true
prober := New(followNonLocalRedirects)
target, err := url.Parse(server.URL + "/redirect")
require.NoError(t, err)
result, _, _ := prober.Probe(target, headers, wait.ForeverTestTimeout)
assert.Equal(t, test.expectedResult, result)
})
}
}