From 0566e701f64fef987e509c0360a751659580ede7 Mon Sep 17 00:00:00 2001 From: Sebastian Zagrodzki Date: Sun, 9 Apr 2017 00:58:47 +0200 Subject: [PATCH] add tests for URL fetching --- usbid/load_test.go | 58 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/usbid/load_test.go b/usbid/load_test.go index dc617dd..07c9ad0 100644 --- a/usbid/load_test.go +++ b/usbid/load_test.go @@ -15,7 +15,15 @@ package usbid -import "testing" +import ( + "fmt" + "io" + "net/http" + "net/http/httptest" + "os" + "reflect" + "testing" +) func TestLoaded(t *testing.T) { if got, min := len(Vendors), 1000; got < min { @@ -25,3 +33,51 @@ func TestLoaded(t *testing.T) { t.Errorf("%d classes loaded, want at least %d", got, min) } } + +type handler struct{} + +func (handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + f, err := os.Open(testDBPath) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + fmt.Fprintf(w, "Open(%q): %v", testDBPath, err) + return + } + defer f.Close() + w.Header().Set("content-type", "text/plain") + io.Copy(w, f) +} + +func TestLoadFromURL(t *testing.T) { + origV, origC := Vendors, Classes + Vendors, Classes = nil, nil + defer func() { Vendors, Classes = origV, origC }() + + s := httptest.NewServer(handler{}) + defer s.Close() + + err := LoadFromURL(s.URL) + if err != nil { + t.Fatalf("LoadFromURL(%q): got unexpected error: %v", s.URL, err) + } + if !reflect.DeepEqual(Vendors, testDBVendors) { + t.Errorf("LoadFromURL Vendors:\ngot: %v\nwant: %v", Vendors, testDBVendors) + } +} + +func TestLoadFromURLError(t *testing.T) { + origV, origC := Vendors, Classes + defer func() { Vendors, Classes = origV, origC }() + + s := httptest.NewServer(http.NotFoundHandler()) + defer s.Close() + + ts := LastUpdate + err := LoadFromURL(s.URL) + if err == nil { + t.Fatalf("LoadFromURL(%q): err is nil, want not nil", s.URL) + } + if LastUpdate != ts { + t.Errorf("LastUpdate was unexpectedly updated when LoadFromURL failed") + } +}