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:
authoryigithankardas <root>2022-02-16 16:34:05 +0300
committeryigithankardas <root>2022-02-16 16:34:05 +0300
commitd8f645df7f1fb711698ecc31f71b577b3f8dc617 (patch)
treeff4b8dcc1bf5933e91caf790b285f056ee93a7e4
parentd4a251ae1bb492fee8af0d3d3619bdd3f5bfc1c0 (diff)
reset: go back to initial commit.
-rw-r--r--internal/auth/auth_test.go10
-rw-r--r--internal/httpfs/http_fs_test.go3
-rw-r--r--internal/httptransport/metered_round_tripper_test.go3
-rw-r--r--internal/serving/disk/local/serving_test.go2
-rw-r--r--internal/serving/disk/zip/serving_test.go2
-rw-r--r--internal/testhelpers/testhelpers.go10
-rw-r--r--internal/urilimiter/urilimiter_test.go3
-rw-r--r--test/acceptance/acme_test.go6
-rw-r--r--test/acceptance/artifacts_test.go14
-rw-r--r--test/acceptance/auth_test.go68
-rw-r--r--test/acceptance/encodings_test.go6
-rw-r--r--test/acceptance/metrics_test.go6
-rw-r--r--test/acceptance/proxyv2_test.go4
-rw-r--r--test/acceptance/redirects_test.go7
-rw-r--r--test/acceptance/rewrites_test.go3
-rw-r--r--test/acceptance/serving_test.go32
-rw-r--r--test/acceptance/status_test.go4
-rw-r--r--test/acceptance/unknown_http_method_test.go4
-rw-r--r--test/acceptance/zip_test.go13
19 files changed, 118 insertions, 82 deletions
diff --git a/internal/auth/auth_test.go b/internal/auth/auth_test.go
index 47e424c1..94ffc23b 100644
--- a/internal/auth/auth_test.go
+++ b/internal/auth/auth_test.go
@@ -17,6 +17,8 @@ import (
"gitlab.com/gitlab-org/gitlab-pages/internal/request"
"gitlab.com/gitlab-org/gitlab-pages/internal/source/mock"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func createTestAuth(t *testing.T, internalServer string, publicServer string) *Auth {
@@ -68,7 +70,7 @@ func setSessionValues(t *testing.T, r *http.Request, store sessions.Store, value
session.Save(tmpRequest, result)
res := result.Result()
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
for _, cookie := range res.Cookies() {
r.AddCookie(cookie)
@@ -232,7 +234,7 @@ func testTryAuthenticateWithCodeAndState(t *testing.T, https bool) {
require.True(t, auth.TryAuthenticate(result, r, mockSource))
res := result.Result()
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, http.StatusFound, result.Code)
require.Equal(t, "https://pages.gitlab-example.com/project/", result.Header().Get("Location"))
@@ -318,7 +320,7 @@ func TestCheckAuthenticationWhenNoAccess(t *testing.T) {
contentServed := auth.CheckAuthentication(w, r, &domainMock{projectID: 1000, notFoundContent: "Generic 404"})
require.True(t, contentServed)
res := w.Result()
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, http.StatusNotFound, res.StatusCode)
@@ -493,7 +495,7 @@ func TestCheckResponseForInvalidTokenWhenInvalidToken(t *testing.T) {
r := &http.Request{URL: reqURL, Host: "pages.gitlab-example.com", RequestURI: "/test"}
resp := &http.Response{StatusCode: http.StatusUnauthorized, Body: io.NopCloser(bytes.NewReader([]byte("{\"error\":\"invalid_token\"}")))}
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.True(t, auth.CheckResponseForInvalidToken(result, r, resp))
res := result.Result()
diff --git a/internal/httpfs/http_fs_test.go b/internal/httpfs/http_fs_test.go
index 991c6017..25003726 100644
--- a/internal/httpfs/http_fs_test.go
+++ b/internal/httpfs/http_fs_test.go
@@ -11,6 +11,7 @@ import (
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-pages/internal/httptransport"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestFSOpen(t *testing.T) {
@@ -161,7 +162,7 @@ func TestFileSystemPathCanServeHTTP(t *testing.T) {
res, err := client.Do(req)
require.NoError(t, err)
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, test.expectedStatusCode, res.StatusCode)
content, err := io.ReadAll(res.Body)
diff --git a/internal/httptransport/metered_round_tripper_test.go b/internal/httptransport/metered_round_tripper_test.go
index 2b126760..8a298e20 100644
--- a/internal/httptransport/metered_round_tripper_test.go
+++ b/internal/httptransport/metered_round_tripper_test.go
@@ -10,6 +10,7 @@ import (
"github.com/prometheus/client_golang/prometheus/testutil"
"github.com/stretchr/testify/require"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestReconfigureMeteredRoundTripper(t *testing.T) {
@@ -23,7 +24,7 @@ func TestReconfigureMeteredRoundTripper(t *testing.T) {
res, err := mrt.RoundTrip(r)
require.NoError(t, err)
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, http.StatusOK, res.StatusCode)
body, err := io.ReadAll(res.Body)
diff --git a/internal/serving/disk/local/serving_test.go b/internal/serving/disk/local/serving_test.go
index 8352bfc9..dbb14138 100644
--- a/internal/serving/disk/local/serving_test.go
+++ b/internal/serving/disk/local/serving_test.go
@@ -79,7 +79,7 @@ func TestDisk_ServeFileHTTP(t *testing.T) {
require.True(t, s.ServeFileHTTP(handler))
resp := w.Result()
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, test.expectedStatus, resp.StatusCode)
body, err := io.ReadAll(resp.Body)
diff --git a/internal/serving/disk/zip/serving_test.go b/internal/serving/disk/zip/serving_test.go
index 2b603b5d..c3b18f2b 100644
--- a/internal/serving/disk/zip/serving_test.go
+++ b/internal/serving/disk/zip/serving_test.go
@@ -209,7 +209,7 @@ func TestZip_ServeFileHTTP(t *testing.T) {
require.True(t, s.ServeFileHTTP(handler))
resp := w.Result()
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, test.expectedStatus, resp.StatusCode)
body, err := io.ReadAll(resp.Body)
diff --git a/internal/testhelpers/testhelpers.go b/internal/testhelpers/testhelpers.go
index 11bf7e65..2f708743 100644
--- a/internal/testhelpers/testhelpers.go
+++ b/internal/testhelpers/testhelpers.go
@@ -95,3 +95,13 @@ func PerformRequest(t *testing.T, handler http.Handler, r *http.Request) (int, s
return res.StatusCode, string(b)
}
+
+// Close will call the close function on a closer as part
+// of the t.Cleanup function.
+func Close(t *testing.T, c io.Closer) {
+ t.Helper()
+
+ t.Cleanup(func() {
+ require.NoError(t, c.Close())
+ })
+}
diff --git a/internal/urilimiter/urilimiter_test.go b/internal/urilimiter/urilimiter_test.go
index 0ac89ea0..a314ec91 100644
--- a/internal/urilimiter/urilimiter_test.go
+++ b/internal/urilimiter/urilimiter_test.go
@@ -8,6 +8,7 @@ import (
"testing"
"github.com/stretchr/testify/require"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestNewMiddleware(t *testing.T) {
@@ -56,7 +57,7 @@ func TestNewMiddleware(t *testing.T) {
middleware.ServeHTTP(ww, rr)
res := ww.Result()
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, tt.expectedStatus, res.StatusCode)
if tt.expectedStatus == http.StatusOK {
diff --git a/test/acceptance/acme_test.go b/test/acceptance/acme_test.go
index 77c4d6c0..d743a4e1 100644
--- a/test/acceptance/acme_test.go
+++ b/test/acceptance/acme_test.go
@@ -7,6 +7,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
const (
@@ -41,8 +43,8 @@ func TestAcmeChallengesWhenItIsNotConfigured(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "withacmechallenge.domain.com",
test.token)
+ testhelpers.Close(t, rsp.Body)
require.NoError(t, err)
- defer rsp.Body.Close()
require.Equal(t, test.expectedStatus, rsp.StatusCode)
body, err := io.ReadAll(rsp.Body)
require.NoError(t, err)
@@ -82,8 +84,8 @@ func TestAcmeChallengesWhenItIsConfigured(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "withacmechallenge.domain.com",
test.token)
+ testhelpers.Close(t, rsp.Body)
require.NoError(t, err)
- defer rsp.Body.Close()
require.Equal(t, test.expectedStatus, rsp.StatusCode)
body, err := io.ReadAll(rsp.Body)
require.NoError(t, err)
diff --git a/test/acceptance/artifacts_test.go b/test/acceptance/artifacts_test.go
index f087581c..ba38146b 100644
--- a/test/acceptance/artifacts_test.go
+++ b/test/acceptance/artifacts_test.go
@@ -11,6 +11,8 @@ import (
"time"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestArtifactProxyRequest(t *testing.T) {
@@ -133,7 +135,7 @@ func TestArtifactProxyRequest(t *testing.T) {
resp, err := GetPageFromListener(t, httpListener, tt.host, tt.path)
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, tt.status, resp.StatusCode)
require.Equal(t, tt.contentType, resp.Header.Get("Content-Type"))
@@ -229,7 +231,7 @@ func TestPrivateArtifactProxyRequest(t *testing.T) {
resp, err := GetRedirectPage(t, httpsListener, tt.host, tt.path)
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, http.StatusFound, resp.StatusCode)
@@ -245,7 +247,7 @@ func TestPrivateArtifactProxyRequest(t *testing.T) {
resp, err = GetRedirectPage(t, httpsListener, url.Host, url.Path+"?"+url.RawQuery)
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, http.StatusFound, resp.StatusCode)
pagesDomainCookie := resp.Header.Get("Set-Cookie")
@@ -255,7 +257,7 @@ func TestPrivateArtifactProxyRequest(t *testing.T) {
state, pagesDomainCookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// Will redirect auth callback to correct host
url, err = url.Parse(authrsp.Header.Get("Location"))
@@ -266,7 +268,7 @@ func TestPrivateArtifactProxyRequest(t *testing.T) {
// Request auth callback in project domain
authrsp, err = GetRedirectPageWithCookie(t, httpsListener, url.Host, url.Path+"?"+url.RawQuery, cookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// server returns the ticket, user will be redirected to the project page
require.Equal(t, http.StatusFound, authrsp.StatusCode)
@@ -276,7 +278,7 @@ func TestPrivateArtifactProxyRequest(t *testing.T) {
require.Equal(t, tt.status, resp.StatusCode)
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
})
}
}
diff --git a/test/acceptance/auth_test.go b/test/acceptance/auth_test.go
index 18b73161..7c14bc80 100644
--- a/test/acceptance/auth_test.go
+++ b/test/acceptance/auth_test.go
@@ -8,6 +8,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestWhenAuthIsDisabledPrivateIsNotAccessible(t *testing.T) {
@@ -33,7 +35,7 @@ func TestWhenAuthIsEnabledPrivateWillRedirectToAuthorize(t *testing.T) {
rsp, err := GetRedirectPage(t, httpsListener, "group.auth.gitlab-example.com", "private.project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusFound, rsp.StatusCode)
require.Equal(t, 1, len(rsp.Header["Location"]))
@@ -41,7 +43,7 @@ func TestWhenAuthIsEnabledPrivateWillRedirectToAuthorize(t *testing.T) {
require.NoError(t, err)
rsp, err = GetRedirectPage(t, httpsListener, url.Host, url.Path+"?"+url.RawQuery)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusFound, rsp.StatusCode)
require.Equal(t, 1, len(rsp.Header["Location"]))
@@ -69,7 +71,7 @@ func TestWhenAuthDeniedWillCauseUnauthorized(t *testing.T) {
rsp, err := GetPageFromListener(t, httpsListener, "projects.gitlab-example.com", "/auth?error=access_denied")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusUnauthorized, rsp.StatusCode)
}
@@ -84,13 +86,13 @@ func TestWhenLoginCallbackWithWrongStateShouldFail(t *testing.T) {
rsp, err := GetRedirectPage(t, httpsListener, "group.auth.gitlab-example.com", "private.project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
// Go to auth page with wrong state will cause failure
authrsp, err := GetPageFromListener(t, httpsListener, "projects.gitlab-example.com", "/auth?code=0&state=0")
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
require.Equal(t, http.StatusUnauthorized, authrsp.StatusCode)
}
@@ -106,7 +108,7 @@ func TestWhenLoginCallbackWithUnencryptedCode(t *testing.T) {
rsp, err := GetRedirectPage(t, httpsListener, "group.auth.gitlab-example.com", "private.project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
cookie := rsp.Header.Get("Set-Cookie")
@@ -122,7 +124,7 @@ func TestWhenLoginCallbackWithUnencryptedCode(t *testing.T) {
url.Query().Get("state"), header)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// Will cause 500 because the code is not encrypted
require.Equal(t, http.StatusInternalServerError, authrsp.StatusCode)
@@ -153,7 +155,7 @@ func TestAccessControlUnderCustomDomain(t *testing.T) {
t.Run(name, func(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, tt.domain, tt.path)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
cookie := rsp.Header.Get("Set-Cookie")
@@ -165,7 +167,7 @@ func TestAccessControlUnderCustomDomain(t *testing.T) {
pagesrsp, err := GetRedirectPage(t, httpListener, url.Host, url.Path+"?"+url.RawQuery)
require.NoError(t, err)
- defer pagesrsp.Body.Close()
+ testhelpers.Close(t, pagesrsp.Body)
pagescookie := pagesrsp.Header.Get("Set-Cookie")
@@ -174,7 +176,7 @@ func TestAccessControlUnderCustomDomain(t *testing.T) {
state, pagescookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
url, err = url.Parse(authrsp.Header.Get("Location"))
require.NoError(t, err)
@@ -188,7 +190,7 @@ func TestAccessControlUnderCustomDomain(t *testing.T) {
state, cookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// Will redirect to the page
cookie = authrsp.Header.Get("Set-Cookie")
@@ -203,7 +205,7 @@ func TestAccessControlUnderCustomDomain(t *testing.T) {
// Fetch page in custom domain
authrsp, err = GetRedirectPageWithCookie(t, httpListener, tt.domain, tt.path, cookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
require.Equal(t, http.StatusOK, authrsp.StatusCode)
})
}
@@ -254,7 +256,7 @@ func TestCustomErrorPageWithAuth(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, tt.domain, tt.path)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
cookie := rsp.Header.Get("Set-Cookie")
@@ -266,7 +268,7 @@ func TestCustomErrorPageWithAuth(t *testing.T) {
pagesrsp, err := GetRedirectPage(t, httpListener, url.Host, url.Path+"?"+url.RawQuery)
require.NoError(t, err)
- defer pagesrsp.Body.Close()
+ testhelpers.Close(t, pagesrsp.Body)
pagescookie := pagesrsp.Header.Get("Set-Cookie")
@@ -275,7 +277,7 @@ func TestCustomErrorPageWithAuth(t *testing.T) {
state, pagescookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
url, err = url.Parse(authrsp.Header.Get("Location"))
require.NoError(t, err)
@@ -292,7 +294,7 @@ func TestCustomErrorPageWithAuth(t *testing.T) {
state, cookie)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// Will redirect to the page
groupCookie := authrsp.Header.Get("Set-Cookie")
@@ -307,7 +309,7 @@ func TestCustomErrorPageWithAuth(t *testing.T) {
// Fetch page in custom domain
anotherResp, err := GetRedirectPageWithCookie(t, httpListener, tt.domain, tt.path, groupCookie)
require.NoError(t, err)
- defer anotherResp.Body.Close()
+ testhelpers.Close(t, anotherResp.Body)
require.Equal(t, http.StatusNotFound, anotherResp.StatusCode)
@@ -328,7 +330,7 @@ func TestAccessControlUnderCustomDomainWithHTTPSProxy(t *testing.T) {
rsp, err := GetProxyRedirectPageWithCookie(t, proxyListener, "private.domain.com", "/", "", true)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
cookie := rsp.Header.Get("Set-Cookie")
@@ -339,7 +341,7 @@ func TestAccessControlUnderCustomDomainWithHTTPSProxy(t *testing.T) {
require.Equal(t, url.Query().Get("domain"), "https://private.domain.com")
pagesrsp, err := GetProxyRedirectPageWithCookie(t, proxyListener, url.Host, url.Path+"?"+url.RawQuery, "", true)
require.NoError(t, err)
- defer pagesrsp.Body.Close()
+ testhelpers.Close(t, pagesrsp.Body)
pagescookie := pagesrsp.Header.Get("Set-Cookie")
@@ -349,7 +351,7 @@ func TestAccessControlUnderCustomDomainWithHTTPSProxy(t *testing.T) {
pagescookie, true)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
url, err = url.Parse(authrsp.Header.Get("Location"))
require.NoError(t, err)
@@ -366,7 +368,7 @@ func TestAccessControlUnderCustomDomainWithHTTPSProxy(t *testing.T) {
"/auth?code="+code+"&state="+state, cookie, true)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
// Will redirect to the page
cookie = authrsp.Header.Get("Set-Cookie")
@@ -381,7 +383,7 @@ func TestAccessControlUnderCustomDomainWithHTTPSProxy(t *testing.T) {
authrsp, err = GetProxyRedirectPageWithCookie(t, proxyListener, "private.domain.com", "/",
cookie, true)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
require.Equal(t, http.StatusOK, authrsp.StatusCode)
}
@@ -395,7 +397,7 @@ func TestAccessControlGroupDomain404RedirectsAuth(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "group.gitlab-example.com", "/nonexistent/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusFound, rsp.StatusCode)
// Redirects to the projects under gitlab pages domain for authentication flow
url, err := url.Parse(rsp.Header.Get("Location"))
@@ -414,7 +416,7 @@ func TestAccessControlProject404DoesNotRedirect(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "group.gitlab-example.com", "/project/nonexistent/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusNotFound, rsp.StatusCode)
}
@@ -488,7 +490,7 @@ func testAccessControl(t *testing.T, runPages runPagesFunc) {
t.Run(tn, func(t *testing.T) {
rsp1, err1 := GetRedirectPage(t, httpsListener, tt.host, tt.path)
require.NoError(t, err1)
- defer rsp1.Body.Close()
+ testhelpers.Close(t, rsp1.Body)
require.Equal(t, http.StatusFound, rsp1.StatusCode)
cookie := rsp1.Header.Get("Set-Cookie")
@@ -502,7 +504,7 @@ func testAccessControl(t *testing.T, runPages runPagesFunc) {
rsp2, err2 := GetRedirectPage(t, httpsListener, loc1.Host, loc1.Path+"?"+loc1.RawQuery)
require.NoError(t, err2)
- defer rsp2.Body.Close()
+ testhelpers.Close(t, rsp2.Body)
require.Equal(t, http.StatusFound, rsp2.StatusCode)
pagesDomainCookie := rsp2.Header.Get("Set-Cookie")
@@ -511,7 +513,7 @@ func testAccessControl(t *testing.T, runPages runPagesFunc) {
authrsp1, err := GetRedirectPageWithCookie(t, httpsListener, "projects.gitlab-example.com", "/auth?code=1&state="+
state, pagesDomainCookie)
require.NoError(t, err)
- defer authrsp1.Body.Close()
+ testhelpers.Close(t, authrsp1.Body)
// Will redirect auth callback to correct host
authLoc, err := url.Parse(authrsp1.Header.Get("Location"))
@@ -522,7 +524,7 @@ func testAccessControl(t *testing.T, runPages runPagesFunc) {
// Request auth callback in project domain
authrsp2, err := GetRedirectPageWithCookie(t, httpsListener, authLoc.Host, authLoc.Path+"?"+authLoc.RawQuery, cookie)
require.NoError(t, err)
- defer authrsp2.Body.Close()
+ testhelpers.Close(t, authrsp2.Body)
// server returns the ticket, user will be redirected to the project page
require.Equal(t, http.StatusFound, authrsp2.StatusCode)
@@ -530,7 +532,7 @@ func testAccessControl(t *testing.T, runPages runPagesFunc) {
rsp3, err3 := GetRedirectPageWithCookie(t, httpsListener, tt.host, tt.path, cookie)
require.NoError(t, err3)
- defer rsp3.Body.Close()
+ testhelpers.Close(t, rsp3.Body)
require.Equal(t, tt.status, rsp3.StatusCode)
@@ -580,7 +582,7 @@ func TestHijackedCode(t *testing.T) {
hackedURL := fmt.Sprintf("/auth?domain=http://%s&state=%s", attackersDomain, "irrelevant")
maliciousResp, err := GetProxyRedirectPageWithCookie(t, proxyListener, "projects.gitlab-example.com", hackedURL, "", true)
require.NoError(t, err)
- defer maliciousResp.Body.Close()
+ testhelpers.Close(t, maliciousResp.Body)
pagesCookie := maliciousResp.Header.Get("Set-Cookie")
@@ -597,7 +599,7 @@ func TestHijackedCode(t *testing.T) {
pagesCookie, true)
require.NoError(t, err)
- defer authrsp.Body.Close()
+ testhelpers.Close(t, authrsp.Body)
/****ATTACKER******/
// Target is redirected to attacker's domain and attacker receives the proper code
@@ -614,7 +616,7 @@ func TestHijackedCode(t *testing.T) {
impersonatingRes, err := GetProxyRedirectPageWithCookie(t, proxyListener, targetDomain,
"/auth?code="+hijackedCode+"&state="+attackerState, attackerCookie, true)
require.NoError(t, err)
- defer impersonatingRes.Body.Close()
+ testhelpers.Close(t, impersonatingRes.Body)
require.Equal(t, impersonatingRes.StatusCode, http.StatusInternalServerError, "should fail to decode code")
}
@@ -626,7 +628,7 @@ func getValidCookieAndState(t *testing.T, domain string) (string, string) {
// visit https://<domain>/
rsp, err := GetProxyRedirectPageWithCookie(t, proxyListener, domain, "/", "", true)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
cookie := rsp.Header.Get("Set-Cookie")
require.NotEmpty(t, cookie)
diff --git a/test/acceptance/encodings_test.go b/test/acceptance/encodings_test.go
index 18f2c492..c3532bd9 100644
--- a/test/acceptance/encodings_test.go
+++ b/test/acceptance/encodings_test.go
@@ -6,6 +6,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestMIMETypes(t *testing.T) {
@@ -27,7 +29,7 @@ func TestMIMETypes(t *testing.T) {
t.Run(name, func(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com", "project/"+tt.file)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
mt, _, err := mime.ParseMediaType(rsp.Header.Get("Content-Type"))
@@ -69,7 +71,7 @@ func TestCompressedEncoding(t *testing.T) {
}
rsp, err := GetPageFromListenerWithHeaders(t, httpListener, "group.gitlab-example.com", "index.html", header)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
require.Equal(t, tt.encoding, rsp.Header.Get("Content-Encoding"))
diff --git a/test/acceptance/metrics_test.go b/test/acceptance/metrics_test.go
index 32a36638..d1e8a1b6 100644
--- a/test/acceptance/metrics_test.go
+++ b/test/acceptance/metrics_test.go
@@ -6,6 +6,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestPrometheusMetricsCanBeScraped(t *testing.T) {
@@ -20,13 +22,13 @@ func TestPrometheusMetricsCanBeScraped(t *testing.T) {
res, err := GetPageFromListener(t, httpListener, "zip.gitlab.io",
"/symlink.html")
require.NoError(t, err)
- defer res.Body.Close()
+ testhelpers.Close(t, res.Body)
require.Equal(t, http.StatusOK, res.StatusCode)
resp, err := http.Get("http://127.0.0.1:42345/metrics")
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
diff --git a/test/acceptance/proxyv2_test.go b/test/acceptance/proxyv2_test.go
index 81a7ff94..45bdcb89 100644
--- a/test/acceptance/proxyv2_test.go
+++ b/test/acceptance/proxyv2_test.go
@@ -7,6 +7,8 @@ import (
"time"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestProxyv2(t *testing.T) {
@@ -37,7 +39,7 @@ func TestProxyv2(t *testing.T) {
response, err := GetPageFromListener(t, httpsProxyv2Listener, tt.host, tt.urlSuffix)
require.NoError(t, err)
- defer response.Body.Close()
+ testhelpers.Close(t, response.Body)
require.Equal(t, tt.expectedStatusCode, response.StatusCode)
diff --git a/test/acceptance/redirects_test.go b/test/acceptance/redirects_test.go
index 6c1158a4..5846d2cd 100644
--- a/test/acceptance/redirects_test.go
+++ b/test/acceptance/redirects_test.go
@@ -9,6 +9,7 @@ import (
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-pages/internal/feature"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestRedirectStatusPage(t *testing.T) {
@@ -22,7 +23,7 @@ func TestRedirectStatusPage(t *testing.T) {
body, err := io.ReadAll(rsp.Body)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Contains(t, string(body), "14 rules")
require.Equal(t, http.StatusOK, rsp.StatusCode)
@@ -37,7 +38,7 @@ func TestRedirect(t *testing.T) {
// Test that serving a file still works with redirects enabled
rsp, err := GetRedirectPage(t, httpListener, "group.redirects.gitlab-example.com", "/project-redirects/index.html")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
@@ -95,7 +96,7 @@ func TestRedirect(t *testing.T) {
t.Run(fmt.Sprintf("%s%s -> %s (%d)", tt.host, tt.path, tt.expectedLocation, tt.expectedStatus), func(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, tt.host, tt.path)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, tt.expectedLocation, rsp.Header.Get("Location"))
require.Equal(t, tt.expectedStatus, rsp.StatusCode)
diff --git a/test/acceptance/rewrites_test.go b/test/acceptance/rewrites_test.go
index aa105789..eefb1e82 100644
--- a/test/acceptance/rewrites_test.go
+++ b/test/acceptance/rewrites_test.go
@@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-pages/internal/feature"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestRewrites(t *testing.T) {
@@ -47,7 +48,7 @@ func TestRewrites(t *testing.T) {
t.Run(name, func(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, tt.host, tt.path)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
body, err := io.ReadAll(rsp.Body)
require.NoError(t, err)
diff --git a/test/acceptance/serving_test.go b/test/acceptance/serving_test.go
index 8b01f5b2..bab69357 100644
--- a/test/acceptance/serving_test.go
+++ b/test/acceptance/serving_test.go
@@ -10,6 +10,8 @@ import (
"time"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestUnknownHostReturnsNotFound(t *testing.T) {
@@ -29,7 +31,7 @@ func TestUnknownProjectReturnsNotFound(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com", "/nonexistent/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusNotFound, rsp.StatusCode)
}
@@ -38,7 +40,7 @@ func TestGroupDomainReturns200(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com", "/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
body, err := io.ReadAll(rsp.Body)
@@ -154,7 +156,7 @@ func TestCustom404(t *testing.T) {
rsp, err := GetPageFromListener(t, spec, test.host, test.path)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusNotFound, rsp.StatusCode)
page, err := io.ReadAll(rsp.Body)
@@ -171,7 +173,7 @@ func TestCORSWhenDisabled(t *testing.T) {
for _, spec := range supportedListeners() {
for _, method := range []string{http.MethodGet, http.MethodHead, http.MethodOptions} {
rsp := doCrossOriginRequest(t, spec, method, method, spec.URL("project/"))
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
require.Equal(t, "", rsp.Header.Get("Access-Control-Allow-Origin"))
@@ -219,7 +221,7 @@ func TestCORSAllowsMethod(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
for _, spec := range supportedListeners() {
rsp := doCrossOriginRequest(t, spec, tt.method, tt.method, spec.URL("project/"))
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, tt.expectedStatus, rsp.StatusCode)
require.Equal(t, tt.expectedOrigin, rsp.Header.Get("Access-Control-Allow-Origin"))
@@ -237,7 +239,7 @@ func TestCustomHeaders(t *testing.T) {
for _, spec := range supportedListeners() {
rsp, err := GetPageFromListener(t, spec, "group.gitlab-example.com:", "project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
require.Equal(t, "Testing1", rsp.Header.Get("X-Test1"))
require.Equal(t, "Testing2", rsp.Header.Get("X-Test2"))
@@ -261,12 +263,12 @@ func TestHttpToHttpsRedirectDisabled(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "group.gitlab-example.com", "project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
rsp, err = GetPageFromListener(t, httpsListener, "group.gitlab-example.com", "project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
}
@@ -275,14 +277,14 @@ func TestHttpToHttpsRedirectEnabled(t *testing.T) {
rsp, err := GetRedirectPage(t, httpListener, "group.gitlab-example.com", "project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusTemporaryRedirect, rsp.StatusCode)
require.Equal(t, 1, len(rsp.Header["Location"]))
require.Equal(t, "https://group.gitlab-example.com/project/", rsp.Header.Get("Location"))
rsp, err = GetPageFromListener(t, httpsListener, "group.gitlab-example.com", "project/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
}
@@ -408,7 +410,7 @@ func TestDomainResolverError(t *testing.T) {
response, err := GetPageFromListener(t, httpListener, domainName, "/my/pages/project/")
require.NoError(t, err)
- defer response.Body.Close()
+ testhelpers.Close(t, response.Body)
require.True(t, opts.getAPICalled(), "api must have been called")
@@ -450,7 +452,7 @@ func TestQueryStringPersistedInSlashRewrite(t *testing.T) {
rsp, err := GetRedirectPage(t, httpsListener, "group.gitlab-example.com", "project?q=test")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusFound, rsp.StatusCode)
require.Equal(t, 1, len(rsp.Header["Location"]))
@@ -458,7 +460,7 @@ func TestQueryStringPersistedInSlashRewrite(t *testing.T) {
rsp, err = GetPageFromListener(t, httpsListener, "group.gitlab-example.com", "project/?q=test")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
}
@@ -488,7 +490,7 @@ func TestServerRepliesWithHeaders(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com", "/")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
@@ -540,7 +542,7 @@ func TestDiskDisabledFailsToServeFileAndLocalContent(t *testing.T) {
t.Run(host, func(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, host, suffix)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusInternalServerError, rsp.StatusCode)
})
diff --git a/test/acceptance/status_test.go b/test/acceptance/status_test.go
index ef01c692..c48aaff7 100644
--- a/test/acceptance/status_test.go
+++ b/test/acceptance/status_test.go
@@ -5,6 +5,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestStatusPage(t *testing.T) {
@@ -15,6 +17,6 @@ func TestStatusPage(t *testing.T) {
rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com", "@statuscheck")
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, http.StatusOK, rsp.StatusCode)
}
diff --git a/test/acceptance/unknown_http_method_test.go b/test/acceptance/unknown_http_method_test.go
index dfe9c82f..7e96c5e2 100644
--- a/test/acceptance/unknown_http_method_test.go
+++ b/test/acceptance/unknown_http_method_test.go
@@ -5,6 +5,8 @@ import (
"testing"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestUnknownHTTPMethod(t *testing.T) {
@@ -18,7 +20,7 @@ func TestUnknownHTTPMethod(t *testing.T) {
resp, err := DoPagesRequest(t, httpListener, req)
require.NoError(t, err)
- defer resp.Body.Close()
+ testhelpers.Close(t, resp.Body)
require.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
}
diff --git a/test/acceptance/zip_test.go b/test/acceptance/zip_test.go
index dcb831e7..5bb2a0d1 100644
--- a/test/acceptance/zip_test.go
+++ b/test/acceptance/zip_test.go
@@ -10,6 +10,8 @@ import (
"time"
"github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers"
)
func TestZipServing(t *testing.T) {
@@ -85,8 +87,7 @@ func TestZipServing(t *testing.T) {
t.Run(name, func(t *testing.T) {
response, err := GetPageFromListener(t, httpListener, tt.host, tt.urlSuffix)
require.NoError(t, err)
- defer response.Body.Close()
-
+ testhelpers.Close(t, response.Body)
require.Equal(t, tt.expectedStatusCode, response.StatusCode)
if tt.expectedStatusCode == http.StatusOK {
@@ -217,7 +218,7 @@ func TestZipServingCache(t *testing.T) {
// send a request to get the ETag
response, err := GetPageFromListener(t, httpListener, tt.host, tt.urlSuffix)
require.NoError(t, err)
- defer response.Body.Close()
+ testhelpers.Close(t, response.Body)
require.Equal(t, http.StatusOK, response.StatusCode)
etag := response.Header.Get("ETag")
@@ -231,7 +232,7 @@ func TestZipServingCache(t *testing.T) {
body, err := io.ReadAll(rsp.Body)
require.NoError(t, err)
- defer rsp.Body.Close()
+ testhelpers.Close(t, rsp.Body)
require.Equal(t, tt.expectedContent, string(body), "content mismatch")
})
}
@@ -308,7 +309,7 @@ func TestZipServingFromDisk(t *testing.T) {
t.Run(name, func(t *testing.T) {
response, err := GetPageFromListener(t, httpListener, tt.host, tt.urlSuffix)
require.NoError(t, err)
- defer response.Body.Close()
+ testhelpers.Close(t, response.Body)
require.Equal(t, tt.expectedStatusCode, response.StatusCode)
@@ -333,7 +334,7 @@ func TestZipServingConfigShortTimeout(t *testing.T) {
response, err := GetPageFromListener(t, httpListener, "zip.gitlab.io", "/")
require.NoError(t, err)
- defer response.Body.Close()
+ testhelpers.Close(t, response.Body)
require.Equal(t, http.StatusInternalServerError, response.StatusCode, "should fail to serve")
}