diff --git a/handler_test.go b/handler_test.go index c1cb07b..6119b1b 100644 --- a/handler_test.go +++ b/handler_test.go @@ -44,7 +44,7 @@ type httpTest struct { ResHeader map[string]string } -func (test *httpTest) Run(handler http.Handler, t *testing.T) { +func (test *httpTest) Run(handler http.Handler, t *testing.T) *httptest.ResponseRecorder { t.Log(test.Name) req, _ := http.NewRequest(test.Method, test.URL, test.ReqBody) @@ -77,6 +77,8 @@ func (test *httpTest) Run(handler http.Handler, t *testing.T) { if test.ResBody != "" && string(w.Body.Bytes()) != test.ResBody { t.Errorf("Expected '%s' as body (got '%s'", test.ResBody, string(w.Body.Bytes())) } + + return w } type methodOverrideStore struct { diff --git a/head_test.go b/head_test.go index 53cce69..a5d80e9 100644 --- a/head_test.go +++ b/head_test.go @@ -3,6 +3,7 @@ package tusd import ( "net/http" "os" + "strconv" "testing" ) @@ -46,14 +47,32 @@ func TestHead(t *testing.T) { "Cache-Control": "no-store", }, }).Run(handler, t) +} - (&httpTest{ +func TestHead404(t *testing.T) { + handler, _ := NewHandler(Config{ + BasePath: "https://buy.art/", + DataStore: headStore{}, + }) + + resp := (&httpTest{ Name: "Non-existing file", Method: "HEAD", URL: "no", ReqHeader: map[string]string{ "Tus-Resumable": "1.0.0", }, - Code: http.StatusNotFound, + Code: http.StatusNotFound, + ResBody: "", }).Run(handler, t) + + body := string(resp.Body.Bytes()) + if body != "" { + t.Errorf("Expected body to be empty. Got: %v", body) + } + + contentLength := resp.Header().Get("Content-Length") + if contentLength != strconv.Itoa(len(body)) { + t.Errorf("Expected content length header to match body length. Got: %v", contentLength) + } }