1package deps 2 3import ( 4 "bytes" 5 "fmt" 6 "io" 7 "net" 8 "net/http" 9 "os" 10 "testing" 11) 12 13func serveTestString(w http.ResponseWriter, _ *http.Request) { 14 io.WriteString(w, "test") 15} 16 17func TestFetch(t *testing.T) { 18 http.HandleFunc("/test", serveTestString) 19 20 listener, err := net.Listen("tcp", ":0") 21 if err != nil { 22 t.Fatal(err) 23 } 24 port := listener.Addr().(*net.TCPAddr).Port 25 url := fmt.Sprintf("http://localhost:%d/test", port) 26 go http.Serve(listener, nil) 27 28 tmpdir, err := os.MkdirTemp("", "*") 29 if err != nil { 30 t.Fatal(err) 31 } 32 defer os.RemoveAll(tmpdir) 33 34 entry := Entry{ 35 Name: "com_example", 36 SHA256: "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // SHA256("test") 37 Prefix: "", 38 URL: url, 39 LastUpdated: "2022-05-18", 40 } 41 42 filename, err := FetchEntry(&entry, tmpdir) 43 if err != nil { 44 t.Fatal(err) 45 } 46 47 contents, err := os.ReadFile(filename) 48 if err != nil { 49 t.Fatal(err) 50 } 51 52 if !bytes.Equal(contents, []byte("test")) { 53 t.Errorf("Expected to get 'test', instead got '%s'", contents) 54 } 55} 56