Add test for attempting empty download
This commit is contained in:
parent
5ff46eb2d7
commit
888049ce50
24
get_test.go
24
get_test.go
|
@ -66,4 +66,28 @@ func TestGet(t *testing.T) {
|
||||||
t.Error("expected reader to be closed")
|
t.Error("expected reader to be closed")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SubTest(t, "EmptyDownload", func(t *testing.T, store *MockFullDataStore) {
|
||||||
|
store.EXPECT().GetInfo("yes").Return(FileInfo{
|
||||||
|
Offset: 0,
|
||||||
|
MetaData: map[string]string{
|
||||||
|
"filename": "file.jpg\"evil",
|
||||||
|
},
|
||||||
|
}, nil)
|
||||||
|
|
||||||
|
handler, _ := NewHandler(Config{
|
||||||
|
DataStore: store,
|
||||||
|
})
|
||||||
|
|
||||||
|
(&httpTest{
|
||||||
|
Method: "GET",
|
||||||
|
URL: "yes",
|
||||||
|
ResHeader: map[string]string{
|
||||||
|
"Content-Length": "0",
|
||||||
|
"Content-Disposition": `inline;filename="file.jpg\"evil"`,
|
||||||
|
},
|
||||||
|
Code: http.StatusNoContent,
|
||||||
|
ResBody: "",
|
||||||
|
}).Run(handler, t)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -499,6 +499,12 @@ func (handler *UnroutedHandler) GetFile(w http.ResponseWriter, r *http.Request)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set headers before sending responses
|
||||||
|
w.Header().Set("Content-Length", strconv.FormatInt(info.Offset, 10))
|
||||||
|
if filename, ok := info.MetaData["filename"]; ok {
|
||||||
|
w.Header().Set("Content-Disposition", "inline;filename="+strconv.Quote(filename))
|
||||||
|
}
|
||||||
|
|
||||||
// Do not do anything if no data is stored yet.
|
// Do not do anything if no data is stored yet.
|
||||||
if info.Offset == 0 {
|
if info.Offset == 0 {
|
||||||
handler.sendResp(w, r, http.StatusNoContent)
|
handler.sendResp(w, r, http.StatusNoContent)
|
||||||
|
@ -512,11 +518,6 @@ func (handler *UnroutedHandler) GetFile(w http.ResponseWriter, r *http.Request)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if filename, ok := info.MetaData["filename"]; ok {
|
|
||||||
w.Header().Set("Content-Disposition", "inline;filename="+strconv.Quote(filename))
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Length", strconv.FormatInt(info.Offset, 10))
|
|
||||||
handler.sendResp(w, r, http.StatusOK)
|
handler.sendResp(w, r, http.StatusOK)
|
||||||
io.Copy(w, src)
|
io.Copy(w, src)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue