Home / Function/ Test_SendFile_ByteRange() — fiber Function Reference

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

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