2015-12-25 21:33:27 +00:00
|
|
|
package tusd_test
|
2015-02-09 18:37:06 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
"testing"
|
2015-12-25 21:33:27 +00:00
|
|
|
|
|
|
|
. "github.com/tus/tusd"
|
2015-02-09 18:37:06 +00:00
|
|
|
)
|
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
func TestHead(t *testing.T) {
|
2016-10-13 14:45:40 +00:00
|
|
|
SubTest(t, "Status", func(t *testing.T, store *MockFullDataStore) {
|
2016-10-13 09:33:20 +00:00
|
|
|
store.EXPECT().GetInfo("yes").Return(FileInfo{
|
|
|
|
Offset: 11,
|
|
|
|
Size: 44,
|
|
|
|
MetaData: map[string]string{
|
|
|
|
"name": "lunrjs.png",
|
|
|
|
"type": "image/png",
|
|
|
|
},
|
|
|
|
}, nil)
|
2015-02-09 18:37:06 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
handler, _ := NewHandler(Config{
|
|
|
|
DataStore: store,
|
|
|
|
})
|
2015-02-09 18:37:06 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
res := (&httpTest{
|
|
|
|
Method: "HEAD",
|
|
|
|
URL: "yes",
|
|
|
|
ReqHeader: map[string]string{
|
|
|
|
"Tus-Resumable": "1.0.0",
|
|
|
|
},
|
|
|
|
Code: http.StatusOK,
|
|
|
|
ResHeader: map[string]string{
|
|
|
|
"Upload-Offset": "11",
|
|
|
|
"Upload-Length": "44",
|
|
|
|
"Cache-Control": "no-store",
|
|
|
|
},
|
|
|
|
}).Run(handler, t)
|
2015-02-09 18:37:06 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
// Since the order of a map is not guaranteed in Go, we need to be prepared
|
|
|
|
// for the case, that the order of the metadata may have been changed
|
|
|
|
if v := res.Header().Get("Upload-Metadata"); v != "name bHVucmpzLnBuZw==,type aW1hZ2UvcG5n" &&
|
|
|
|
v != "type aW1hZ2UvcG5n,name bHVucmpzLnBuZw==" {
|
|
|
|
t.Errorf("Expected valid metadata (got '%s')", v)
|
|
|
|
}
|
2015-02-09 18:37:06 +00:00
|
|
|
})
|
|
|
|
|
2016-10-13 14:45:40 +00:00
|
|
|
SubTest(t, "UploadNotFoundFail", func(t *testing.T, store *MockFullDataStore) {
|
2016-10-13 09:33:20 +00:00
|
|
|
store.EXPECT().GetInfo("no").Return(FileInfo{}, os.ErrNotExist)
|
2015-02-17 14:44:12 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
handler, _ := NewHandler(Config{
|
|
|
|
DataStore: store,
|
|
|
|
})
|
2015-11-26 15:25:34 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
res := (&httpTest{
|
|
|
|
Method: "HEAD",
|
|
|
|
URL: "no",
|
|
|
|
ReqHeader: map[string]string{
|
|
|
|
"Tus-Resumable": "1.0.0",
|
|
|
|
},
|
|
|
|
Code: http.StatusNotFound,
|
|
|
|
ResHeader: map[string]string{
|
|
|
|
"Content-Length": "0",
|
|
|
|
},
|
|
|
|
}).Run(handler, t)
|
2015-12-02 17:59:22 +00:00
|
|
|
|
2016-10-13 09:33:20 +00:00
|
|
|
if string(res.Body.Bytes()) != "" {
|
|
|
|
t.Errorf("Expected empty body for failed HEAD request")
|
|
|
|
}
|
|
|
|
})
|
2015-02-09 18:37:06 +00:00
|
|
|
}
|