package deps import ( "bytes" "fmt" "io" "net" "net/http" "os" "testing" ) func serveTestString(w http.ResponseWriter, _ *http.Request) { io.WriteString(w, "test") } func TestFetch(t *testing.T) { http.HandleFunc("/test", serveTestString) listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatal(err) } port := listener.Addr().(*net.TCPAddr).Port url := fmt.Sprintf("http://localhost:%d/test", port) go http.Serve(listener, nil) tmpdir, err := os.MkdirTemp("", "*") if err != nil { t.Fatal(err) } defer os.RemoveAll(tmpdir) entry := Entry{ Name: "com_example", SHA256: "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // SHA256("test") Prefix: "", URL: url, LastUpdated: "2022-05-18", } filename, err := FetchEntry(&entry, tmpdir) if err != nil { t.Fatal(err) } contents, err := os.ReadFile(filename) if err != nil { t.Fatal(err) } if !bytes.Equal(contents, []byte("test")) { t.Errorf("Expected to get 'test', instead got '%s'", contents) } }