internal/modules: replace download test with writeZip test

Change-Id: I822279e99473a3760146dd66ee854c2dfe7d10a3
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/477175
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Zvonimir Pavlinovic <zpavlinovic@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/modules/modules_test.go b/internal/modules/modules_test.go
index 2e9ccb7..b0ea71d 100644
--- a/internal/modules/modules_test.go
+++ b/internal/modules/modules_test.go
@@ -5,36 +5,60 @@
 package modules
 
 import (
-	"context"
+	"archive/zip"
+	"bytes"
 	"os"
+	"path/filepath"
 	"testing"
-
-	"golang.org/x/pkgsite-metrics/internal/proxy"
 )
 
-func TestDownload(t *testing.T) {
-	t.Skip()
-
-	tempDir, err := os.MkdirTemp("", "testModuleDownload")
+func TestWriteZip(t *testing.T) {
+	// Create an in-memory zipped test module.
+	buf := new(bytes.Buffer)
+	w := zip.NewWriter(buf)
+	var files = []struct {
+		Name, Body string
+	}{
+		{filepath.Join("golang.org@v0.0.0", "README"), "This is a readme."},
+		{filepath.Join("golang.org@v0.0.0", "main"), "package main"},
+	}
+	for _, file := range files {
+		f, err := w.Create(file.Name)
+		if err != nil {
+			t.Fatal(err)
+		}
+		_, err = f.Write([]byte(file.Body))
+		if err != nil {
+			t.Fatal(err)
+		}
+	}
+	err := w.Close()
 	if err != nil {
 		t.Fatal(err)
 	}
 
+	// Create a zip.Reader for the module.
+	br := bytes.NewReader(buf.Bytes())
+	r, err := zip.NewReader(br, int64(len(buf.Bytes())))
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	// Create space to unpack the module.
+	tempDir, err := os.MkdirTemp("", "testWriteZip")
+	if err != nil {
+		t.Fatal(err)
+	}
 	defer func() {
 		if err := os.RemoveAll(tempDir); err != nil {
 			t.Fatal(err)
 		}
 	}()
 
-	proxyClient, err := proxy.New("https://proxy.golang.org")
-	if err != nil {
-		t.Fatal(err)
+	if err := writeZip(r, tempDir, ""); err != nil {
+		t.Error(err)
 	}
-
-	// Use golang.org/x/net@v0.0.0-20221012135044-0b7e1fb9d458
-	module := "golang.org/x/net"
-	version := "v0.0.0-20221012135044-0b7e1fb9d458"
-	if err := Download(context.Background(), module, version, tempDir, proxyClient, true); err != nil {
-		t.Errorf("failed to download %v@%v: %v", module, version, err)
+	if err := writeZip(r, tempDir, "golang.org@v0.0.0"); err != nil {
+		t.Error(err)
 	}
 }