summaryrefslogtreecommitdiff
path: root/workhorse/internal/zipartifacts/open_archive_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'workhorse/internal/zipartifacts/open_archive_test.go')
-rw-r--r--workhorse/internal/zipartifacts/open_archive_test.go68
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)
+}