package handlers import ( "bytes" "compress/gzip" "io" "io/ioutil" "net/http" "testing" ) func assertTrue(cond bool, msg string, t *testing.T) bool { if !cond { t.Error(msg) return false } return true } func assertStatus(ex, ac int, t *testing.T) { if ex != ac { t.Errorf("expected status code to be %d, got %d", ex, ac) } } func assertBody(ex []byte, res *http.Response, t *testing.T) { buf, err := ioutil.ReadAll(res.Body) if err != nil { panic(err) } defer res.Body.Close() if !bytes.Equal(ex, buf) { t.Errorf("expected body to be '%s' (%d), got '%s' (%d)", ex, len(ex), buf, len(buf)) } } func assertGzippedBody(ex []byte, res *http.Response, t *testing.T) { gr, err := gzip.NewReader(res.Body) if err != nil { panic(err) } defer res.Body.Close() buf := bytes.NewBuffer(nil) _, err = io.Copy(buf, gr) if err != nil { panic(err) } if !bytes.Equal(ex, buf.Bytes()) { t.Errorf("expected unzipped body to be '%s' (%d), got '%s' (%d)", ex, len(ex), buf.Bytes(), buf.Len()) } } func assertHeader(hName, ex string, res *http.Response, t *testing.T) { hVal, ok := res.Header[hName] if (!ok || len(hVal) == 0) && len(ex) > 0 { t.Errorf("expected header %s to be %s, was not set", hName, ex) } else if len(hVal) > 0 && hVal[0] != ex { t.Errorf("expected header %s to be %s, got %s", hName, ex, hVal) } } func assertPanic(t *testing.T) { if err := recover(); err == nil { t.Error("expected a panic, got none") } }