@@ -106,3 +106,53 @@ func TestGCPHealthcheckNotIngressPut(t *testing.T) {
106106
107107 assert.Equal(t, "test", rw.Body.String())
108108}
109+
110+func TestRedirectToHTTPSTrue(t *testing.T) {
111+ opts := NewOptions()
112+ opts.ForceHTTPS = true
113+ handler := func(w http.ResponseWriter, req *http.Request) {
114+ w.Write([]byte("test"))
115+ }
116+
117+ h := redirectToHTTPS(opts, http.HandlerFunc(handler))
118+ rw := httptest.NewRecorder()
119+ r, _ := http.NewRequest("GET", "/", nil)
120+ h.ServeHTTP(rw, r)
121+
122+ assert.Equal(t, http.StatusPermanentRedirect, rw.Code, "status code should be %d, got: %d", http.StatusPermanentRedirect, rw.Code)
123+}
124+
125+func TestRedirectToHTTPSFalse(t *testing.T) {
126+ opts := NewOptions()
127+ handler := func(w http.ResponseWriter, req *http.Request) {
128+ w.Write([]byte("test"))
129+ }
130+
131+ h := redirectToHTTPS(opts, http.HandlerFunc(handler))
132+ rw := httptest.NewRecorder()
133+ r, _ := http.NewRequest("GET", "/", nil)
134+ h.ServeHTTP(rw, r)
135+
136+ assert.Equal(t, http.StatusOK, rw.Code, "status code should be %d, got: %d", http.StatusOK, rw.Code)
137+}
138+
139+func TestRedirectNotWhenHTTPS(t *testing.T) {
140+ opts := NewOptions()
141+ opts.ForceHTTPS = true
142+ handler := func(w http.ResponseWriter, req *http.Request) {
143+ w.Write([]byte("test"))
144+ }
145+
146+ h := redirectToHTTPS(opts, http.HandlerFunc(handler))
147+ s := httptest.NewTLSServer(h)
148+ defer s.Close()
149+
150+ opts.HTTPSAddress = s.URL
151+ client := s.Client()
152+ res, err := client.Get(s.URL)
153+ if err != nil {
154+ t.Fatalf("request to test server failed with error: %v", err)
155+ }
156+
157+ assert.Equal(t, http.StatusOK, res.StatusCode, "status code should be %d, got: %d", http.StatusOK, res.StatusCode)
158+}