diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 11:59:07 +0000 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /workhorse/internal/zipartifacts/open_archive_test.go | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) | |
download | gitlab-ce-8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca.tar.gz |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'workhorse/internal/zipartifacts/open_archive_test.go')
-rw-r--r-- | workhorse/internal/zipartifacts/open_archive_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/workhorse/internal/zipartifacts/open_archive_test.go b/workhorse/internal/zipartifacts/open_archive_test.go new file mode 100644 index 00000000000..f7624d053d9 --- /dev/null +++ b/workhorse/internal/zipartifacts/open_archive_test.go @@ -0,0 +1,68 @@ +package zipartifacts + +import ( + "archive/zip" + "context" + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestOpenHTTPArchive(t *testing.T) { + const ( + zipFile = "test.zip" + entryName = "hello.txt" + contents = "world" + testRoot = "testdata/public" + ) + + require.NoError(t, os.MkdirAll(testRoot, 0755)) + f, err := os.Create(filepath.Join(testRoot, zipFile)) + require.NoError(t, err, "create file") + defer f.Close() + + zw := zip.NewWriter(f) + w, err := zw.Create(entryName) + require.NoError(t, err, "create zip entry") + _, err = fmt.Fprint(w, contents) + require.NoError(t, err, "write zip entry contents") + require.NoError(t, zw.Close(), "close zip writer") + require.NoError(t, f.Close(), "close file") + + srv := httptest.NewServer(http.FileServer(http.Dir(testRoot))) + defer srv.Close() + + zr, err := OpenArchive(context.Background(), srv.URL+"/"+zipFile) + require.NoError(t, err, "call OpenArchive") + require.Len(t, zr.File, 1) + + zf := zr.File[0] + require.Equal(t, entryName, zf.Name, "zip entry name") + + entry, err := zf.Open() + require.NoError(t, err, "get zip entry reader") + defer entry.Close() + + actualContents, err := ioutil.ReadAll(entry) + require.NoError(t, err, "read zip entry contents") + require.Equal(t, contents, string(actualContents), "compare zip entry contents") +} + +func TestOpenHTTPArchiveNotSendingAcceptEncodingHeader(t *testing.T) { + requestHandler := func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, "GET", r.Method) + require.Nil(t, r.Header["Accept-Encoding"]) + w.WriteHeader(http.StatusOK) + } + + srv := httptest.NewServer(http.HandlerFunc(requestHandler)) + defer srv.Close() + + OpenArchive(context.Background(), srv.URL) +} |