Test_SendFile_ByteRange() — fiber Function Reference
Architecture documentation for the Test_SendFile_ByteRange() function in ctx_test.go from the fiber codebase.
Entity Profile
Dependency Diagram
graph TD af6e6a66_99be_a996_d0c2_e0e7140e2cca["Test_SendFile_ByteRange()"] 7b3d4933_5ae3_f84d_ff6d_0cb34e268026["ctx_test.go"] af6e6a66_99be_a996_d0c2_e0e7140e2cca -->|defined in| 7b3d4933_5ae3_f84d_ff6d_0cb34e268026 style af6e6a66_99be_a996_d0c2_e0e7140e2cca fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
ctx_test.go lines 5628–5819
func Test_SendFile_ByteRange(t *testing.T) {
if runtime.GOOS == windowsOS {
t.Skip("SendFile byte-range tests are flaky on Windows")
}
content := []byte("0123456789")
tmpDir := t.TempDir()
fixture := filepath.Join(tmpDir, "fixture.txt")
require.NoError(t, os.WriteFile(fixture, content, 0o600))
app := New()
app.Get("/range", func(c Ctx) error {
return c.SendFile(fixture, SendFile{ByteRange: true})
})
app.Get("/norange", func(c Ctx) error {
return c.SendFile(fixture)
})
t.Run("satisfiable single range", func(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/range", http.NoBody)
req.Header.Set(HeaderRange, "bytes=0-4")
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
defer func() {
require.NoError(t, resp.Body.Close())
}()
require.Equal(t, StatusPartialContent, resp.StatusCode)
require.Equal(t, "bytes", resp.Header.Get(HeaderAcceptRanges))
require.Equal(t, "bytes 0-4/10", resp.Header.Get(HeaderContentRange))
require.EqualValues(t, len(content[:5]), resp.ContentLength)
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, content[:5], body)
})
t.Run("single byte range", func(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/range", http.NoBody)
req.Header.Set(HeaderRange, "bytes=4-4")
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
defer func() {
require.NoError(t, resp.Body.Close())
}()
require.Equal(t, StatusPartialContent, resp.StatusCode)
require.Equal(t, "bytes", resp.Header.Get(HeaderAcceptRanges))
require.Equal(t, "bytes 4-4/10", resp.Header.Get(HeaderContentRange))
require.EqualValues(t, 1, resp.ContentLength)
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, content[4:5], body)
})
t.Run("open ended range", func(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/range", http.NoBody)
req.Header.Set(HeaderRange, "bytes=4-")
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
defer func() {
require.NoError(t, resp.Body.Close())
}()
require.Equal(t, StatusPartialContent, resp.StatusCode)
require.Equal(t, "bytes", resp.Header.Get(HeaderAcceptRanges))
require.Equal(t, "bytes 4-9/10", resp.Header.Get(HeaderContentRange))
require.EqualValues(t, len(content[4:]), resp.ContentLength)
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, content[4:], body)
})
t.Run("range exceeding end", func(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/range", http.NoBody)
req.Header.Set(HeaderRange, "bytes=5-20")
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does Test_SendFile_ByteRange() do?
Test_SendFile_ByteRange() is a function in the fiber codebase, defined in ctx_test.go.
Where is Test_SendFile_ByteRange() defined?
Test_SendFile_ByteRange() is defined in ctx_test.go at line 5628.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free