Added a unit test to verify that host header is preserved after probe redirect.

This commit is contained in:
Abdullah Gharaibeh 2019-05-16 10:37:56 -04:00
parent 746404f82a
commit 792ab9d3d0

View File

@ -314,3 +314,39 @@ func TestHTTPProbeChecker_NonLocalRedirects(t *testing.T) {
})
}
}
func TestHTTPProbeChecker_HostHeaderPreservedAfterRedirect(t *testing.T) {
hostHeader := "www.example.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 != hostHeader {
w.WriteHeader(http.StatusOK)
} else {
http.Error(w, "", http.StatusBadRequest)
}
default:
http.Error(w, "", http.StatusInternalServerError)
}
})
server := httptest.NewServer(handler)
defer server.Close()
t.Run("local", func(t *testing.T) {
prober := New(false)
target, err := url.Parse(server.URL + "/redirect")
require.NoError(t, err)
result, _, _ := prober.Probe(target, nil, wait.ForeverTestTimeout)
assert.Equal(t, probe.Success, result)
})
t.Run("nonlocal", func(t *testing.T) {
prober := New(true)
target, err := url.Parse(server.URL + "/redirect")
require.NoError(t, err)
result, _, _ := prober.Probe(target, nil, wait.ForeverTestTimeout)
assert.Equal(t, probe.Success, result)
})
}