• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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