MCPcopy
hub / github.com/gofiber/fiber / Test_App_AutoHead_Compliance_SendFile

Function Test_App_AutoHead_Compliance_SendFile

app_test.go:1240–1286  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1238}
1239
1240func Test_App_AutoHead_Compliance_SendFile(t *testing.T) {
1241 t.Parallel()
1242
1243 if runtime.GOOS == "windows" {
1244 t.Skip("SendFile auto-HEAD test is skipped on Windows due to file locking semantics")
1245 }
1246
1247 tmpDir := t.TempDir()
1248 filePath := filepath.Join(tmpDir, "hello.txt")
1249 fileContent := []byte("file-body")
1250 require.NoError(t, os.WriteFile(filePath, fileContent, 0o644))
1251
1252 app := New()
1253 app.Get("/file", func(c Ctx) error {
1254 c.Set("X-Test", "file")
1255 return c.SendFile(filePath)
1256 })
1257 app.startupProcess()
1258
1259 getReq := httptest.NewRequest(MethodGet, "/file", http.NoBody)
1260 getResp, err := app.Test(getReq)
1261 require.NoError(t, err, "app.Test(get)")
1262 defer func() {
1263 require.NoError(t, getResp.Body.Close())
1264 }()
1265
1266 body, err := io.ReadAll(getResp.Body)
1267 require.NoError(t, err)
1268 require.Equal(t, fileContent, body)
1269 require.Equal(t, "file", getResp.Header.Get("X-Test"))
1270
1271 headReq := httptest.NewRequest(MethodHead, "/file", http.NoBody)
1272 headResp, err := app.Test(headReq)
1273 require.NoError(t, err, "app.Test(head)")
1274 defer func() {
1275 require.NoError(t, headResp.Body.Close())
1276 }()
1277
1278 require.Equal(t, getResp.StatusCode, headResp.StatusCode)
1279 require.Equal(t, strconv.Itoa(len(fileContent)), headResp.Header.Get(HeaderContentLength))
1280 require.Equal(t, getResp.Header.Get(HeaderContentType), headResp.Header.Get(HeaderContentType))
1281 require.Equal(t, getResp.Header.Get("X-Test"), headResp.Header.Get("X-Test"))
1282
1283 headBody, err := io.ReadAll(headResp.Body)
1284 require.NoError(t, err)
1285 require.Empty(t, headBody)
1286}
1287
1288func Test_App_Methods(t *testing.T) {
1289 t.Parallel()

Callers

nothing calls this directly

Calls 7

startupProcessMethod · 0.80
TestMethod · 0.80
NewFunction · 0.70
GetMethod · 0.65
SetMethod · 0.65
SendFileMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected