Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfeistel <6742251-feistel@users.noreply.gitlab.com>2022-04-26 21:18:00 +0300
committerfeistel <6742251-feistel@users.noreply.gitlab.com>2022-04-26 21:18:00 +0300
commit479af9eb05e15cf682f0c4d3b606721d94476374 (patch)
tree26fe8de31d472ba59e77f22613a1c823a36846fa /internal
parentf9754e61e392203d9dbb61cc2276373b90322e85 (diff)
Rework HTTPS tests and assert location header
Diffstat (limited to 'internal')
-rw-r--r--internal/handlers/https_test.go47
1 files changed, 28 insertions, 19 deletions
diff --git a/internal/handlers/https_test.go b/internal/handlers/https_test.go
index df78ecbd..c5ec812c 100644
--- a/internal/handlers/https_test.go
+++ b/internal/handlers/https_test.go
@@ -2,6 +2,7 @@ package handlers_test
import (
"net/http"
+ "net/http/httptest"
"testing"
"github.com/stretchr/testify/require"
@@ -9,7 +10,7 @@ import (
"gitlab.com/gitlab-org/gitlab-pages/internal/handlers"
)
-func TestAcmeMiddleware(t *testing.T) {
+func TestHTTPSMiddleware(t *testing.T) {
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
})
@@ -17,42 +18,50 @@ func TestAcmeMiddleware(t *testing.T) {
httpsURL := "https://example.com"
httpURL := "http://example.com"
- testCases := []struct {
- name string
- redirect bool
- path string
- expectedStatus int
+ testCases := map[string]struct {
+ redirect bool
+ path string
+ expectedStatus int
+ expectedLocation string
}{
- {
- name: "http redirects to https with redirect enabled",
- redirect: true,
- path: httpURL,
- expectedStatus: http.StatusTemporaryRedirect,
+ "http redirects to https with redirect enabled": {
+ redirect: true,
+ path: httpURL,
+ expectedStatus: http.StatusTemporaryRedirect,
+ expectedLocation: httpsURL,
},
- {
- name: "https handled successfully with redirect enabled",
+ "https handled successfully with redirect enabled": {
redirect: true,
path: httpsURL,
expectedStatus: http.StatusAccepted,
},
- {
- name: "http does not redirect to https with redirect disabled",
+ "http does not redirect to https with redirect disabled": {
redirect: false,
path: httpURL,
expectedStatus: http.StatusAccepted,
},
- {
- name: "https handled successfully with redirect disabled",
+ "https handled successfully with redirect disabled": {
redirect: false,
path: httpsURL,
expectedStatus: http.StatusAccepted,
},
}
- for _, tc := range testCases {
- t.Run(tc.name, func(t *testing.T) {
+ for name, tc := range testCases {
+ t.Run(name, func(t *testing.T) {
m := handlers.HTTPSRedirectMiddleware(h, tc.redirect)
require.HTTPStatusCode(t, m.ServeHTTP, http.MethodGet, tc.path, nil, tc.expectedStatus)
+
+ // if we expected a redirect make sure the location header is correct
+ if tc.expectedStatus == http.StatusTemporaryRedirect {
+ w := httptest.NewRecorder()
+ req, err := http.NewRequest(http.MethodGet, tc.path, nil)
+ require.NoError(t, err)
+
+ m.ServeHTTP(w, req)
+
+ require.Equal(t, []string{httpsURL}, w.Result().Header["Location"])
+ }
})
}
}