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:
authorVladimir Shushlin <vshushlin@gitlab.com>2020-10-15 11:42:58 +0300
committerVladimir Shushlin <vshushlin@gitlab.com>2020-10-15 11:42:58 +0300
commite728fe3617fb977739a9a7fbf0b165cbd0a09f07 (patch)
treeecd9ab4c1582761f732d7f0c0a3415e780815909 /internal/serving
parentdb87fd9fdf0b7b661fd09c1b4aea71211142c3c3 (diff)
parent715421d626df612c78264a6377edcca1fbb1e36a (diff)
Merge branch 'fix-zip-directories' into 'master'
Fix support for archives without directory structure Closes #482 See merge request gitlab-org/gitlab-pages!373
Diffstat (limited to 'internal/serving')
-rw-r--r--internal/serving/disk/zip/serving_test.go64
1 files changed, 46 insertions, 18 deletions
diff --git a/internal/serving/disk/zip/serving_test.go b/internal/serving/disk/zip/serving_test.go
index 14fdabdf..e95432ae 100644
--- a/internal/serving/disk/zip/serving_test.go
+++ b/internal/serving/disk/zip/serving_test.go
@@ -13,32 +13,60 @@ import (
)
func TestZip_ServeFileHTTP(t *testing.T) {
- testServerURL, cleanup := newZipFileServerURL(t, "group/zip.gitlab.io/public.zip")
+ testServerURL, cleanup := newZipFileServerURL(t, "group/zip.gitlab.io/public-without-dirs.zip")
defer cleanup()
- s := Instance()
- w := httptest.NewRecorder()
- r := httptest.NewRequest("GET", "http://zip.gitlab.io/zip/index.html", nil)
- handler := serving.Handler{
- Writer: w,
- Request: r,
- LookupPath: &serving.LookupPath{
- Prefix: "",
- Path: testServerURL + "/public.zip",
+ tests := map[string]struct {
+ path string
+ expectedStatus int
+ expectedBody string
+ }{
+ "accessing /index.html": {
+ path: "/index.html",
+ expectedStatus: http.StatusOK,
+ expectedBody: "zip.gitlab.io/project/index.html\n",
+ },
+ "accessing /": {
+ path: "/",
+ expectedStatus: http.StatusOK,
+ expectedBody: "zip.gitlab.io/project/index.html\n",
+ },
+ "accessing without /": {
+ path: "",
+ expectedStatus: http.StatusFound,
+ expectedBody: `<a href="//zip.gitlab.io/zip/">Found</a>.`,
},
- SubPath: "/index.html",
}
- require.True(t, s.ServeFileHTTP(handler))
+ s := Instance()
+
+ for name, test := range tests {
+ t.Run(name, func(t *testing.T) {
+ w := httptest.NewRecorder()
+ r := httptest.NewRequest("GET", "http://zip.gitlab.io/zip"+test.path, nil)
+
+ handler := serving.Handler{
+ Writer: w,
+ Request: r,
+ LookupPath: &serving.LookupPath{
+ Prefix: "/zip/",
+ Path: testServerURL + "/public.zip",
+ },
+ SubPath: test.path,
+ }
- resp := w.Result()
- defer resp.Body.Close()
+ require.True(t, s.ServeFileHTTP(handler))
- require.Equal(t, http.StatusOK, resp.StatusCode)
- body, err := ioutil.ReadAll(resp.Body)
- require.NoError(t, err)
+ resp := w.Result()
+ defer resp.Body.Close()
- require.Contains(t, string(body), "zip.gitlab.io/project/index.html\n")
+ require.Equal(t, test.expectedStatus, resp.StatusCode)
+ body, err := ioutil.ReadAll(resp.Body)
+ require.NoError(t, err)
+
+ require.Contains(t, string(body), test.expectedBody)
+ })
+ }
}
var chdirSet = false