59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
|
package tusd
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"os"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
type headStore struct {
|
||
|
zeroStore
|
||
|
}
|
||
|
|
||
|
func (s headStore) GetInfo(id string) (FileInfo, error) {
|
||
|
if id != "yes" {
|
||
|
return FileInfo{}, os.ErrNotExist
|
||
|
}
|
||
|
|
||
|
return FileInfo{
|
||
|
Offset: 11,
|
||
|
Size: 44,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func TestHead(t *testing.T) {
|
||
|
handler, _ := NewHandler(Config{
|
||
|
BasePath: "https://buy.art/",
|
||
|
DataStore: headStore{},
|
||
|
})
|
||
|
|
||
|
// Test successful request
|
||
|
req, _ := http.NewRequest("HEAD", "yes", nil)
|
||
|
req.Header.Set("TUS-Resumable", "1.0.0")
|
||
|
w := httptest.NewRecorder()
|
||
|
handler.ServeHTTP(w, req)
|
||
|
if w.Code != http.StatusNoContent {
|
||
|
t.Errorf("Expected %v (got %v)", http.StatusNoContent, w.Code)
|
||
|
}
|
||
|
|
||
|
headers := map[string]string{
|
||
|
"Offset": "11",
|
||
|
"Entity-Length": "44",
|
||
|
}
|
||
|
for header, value := range headers {
|
||
|
if v := w.HeaderMap.Get(header); value != v {
|
||
|
t.Errorf("Unexpected header value '%s': %v", header, v)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Test non-existing file
|
||
|
req, _ = http.NewRequest("HEAD", "no", nil)
|
||
|
req.Header.Set("TUS-Resumable", "1.0.0")
|
||
|
w = httptest.NewRecorder()
|
||
|
handler.ServeHTTP(w, req)
|
||
|
if w.Code != http.StatusNotFound {
|
||
|
t.Errorf("Expected %v (got %v)", http.StatusNotFound, w.Code)
|
||
|
}
|
||
|
}
|