package website import ( "net/http" "net/http/httptest" "testing" "github.com/schollz/progressbar/v3" ) func TestDownloadAndPackageWebsite(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case "/": w.Header().Set("Content-Type", "text/html") w.Write([]byte(` Test Website

Hello, Website!

Page 2 `)) case "/style.css": w.Header().Set("Content-Type", "text/css") w.Write([]byte(`body { color: red; }`)) case "/image.png": w.Header().Set("Content-Type", "image/png") w.Write([]byte("fake image data")) case "/page2.html": w.Header().Set("Content-Type", "text/html") w.Write([]byte(` Page 2

Page 2

Page 3 `)) case "/page3.html": w.Header().Set("Content-Type", "text/html") w.Write([]byte(` Page 3

Page 3

`)) default: http.NotFound(w, r) } })) defer server.Close() bar := progressbar.New(1) dn, err := DownloadAndPackageWebsite(server.URL, 2, bar) if err != nil { t.Fatalf("DownloadAndPackageWebsite failed: %v", err) } expectedFiles := []string{"", "style.css", "image.png", "page2.html", "page3.html"} for _, file := range expectedFiles { exists, err := dn.Exists(file) if err != nil { t.Fatalf("Exists failed for %s: %v", file, err) } if !exists { t.Errorf("Expected to find file %s in DataNode, but it was not found", file) } } }