[#1125] added support for partial/range file requests

This commit is contained in:
Gani Georgiev
2022-11-29 15:52:37 +02:00
parent 328b99a690
commit bd65125744
4 changed files with 70 additions and 24 deletions
+38 -3
View File
@@ -265,9 +265,10 @@ func TestFileSystemServe(t *testing.T) {
}
for _, scenario := range scenarios {
r := httptest.NewRecorder()
res := httptest.NewRecorder()
req := httptest.NewRequest("GET", "/", nil)
err := fs.Serve(r, scenario.path, scenario.name)
err := fs.Serve(res, req, scenario.path, scenario.name)
hasErr := err != nil
if hasErr != scenario.expectError {
@@ -279,7 +280,7 @@ func TestFileSystemServe(t *testing.T) {
continue
}
result := r.Result()
result := res.Result()
for hName, hValue := range scenario.expectHeaders {
v := result.Header.Get(hName)
@@ -298,6 +299,40 @@ func TestFileSystemServe(t *testing.T) {
}
}
func TestFileSystemServeRange(t *testing.T) {
dir := createTestDir(t)
defer os.RemoveAll(dir)
fs, err := filesystem.NewLocal(dir)
if err != nil {
t.Fatal(err)
}
defer fs.Close()
res := httptest.NewRecorder()
req := httptest.NewRequest("GET", "/", nil)
req.Header.Add("Range", "bytes=0-20")
if err := fs.Serve(res, req, "image.png", "image.png"); err != nil {
t.Fatal(err)
}
result := res.Result()
if result.StatusCode != http.StatusPartialContent {
t.Fatalf("Expected StatusCode %d, got %d", http.StatusPartialContent, result.StatusCode)
}
expectedRange := "bytes 0-20/73"
if cr := result.Header.Get("Content-Range"); cr != expectedRange {
t.Fatalf("Expected Content-Range %q, got %q", expectedRange, cr)
}
if l := result.Header.Get("Content-Length"); l != "21" {
t.Fatalf("Expected Content-Length %v, got %v", 21, l)
}
}
func TestFileSystemCreateThumb(t *testing.T) {
dir := createTestDir(t)
defer os.RemoveAll(dir)