go test -run Test_Ctx_SaveFile
(t *testing.T)
| 5466 | |
| 5467 | // go test -run Test_Ctx_SaveFile |
| 5468 | func Test_Ctx_SaveFile(t *testing.T) { |
| 5469 | // TODO We should clean this up |
| 5470 | t.Parallel() |
| 5471 | app := New() |
| 5472 | |
| 5473 | app.Post("/test", func(c Ctx) error { |
| 5474 | fh, err := c.Req().FormFile("file") |
| 5475 | require.NoError(t, err) |
| 5476 | |
| 5477 | tempFile, err := os.CreateTemp(os.TempDir(), "test-") |
| 5478 | require.NoError(t, err) |
| 5479 | |
| 5480 | defer func(file *os.File) { |
| 5481 | closeErr := file.Close() |
| 5482 | require.NoError(t, closeErr) |
| 5483 | closeErr = os.Remove(file.Name()) |
| 5484 | require.NoError(t, closeErr) |
| 5485 | }(tempFile) |
| 5486 | err = c.SaveFile(fh, tempFile.Name()) |
| 5487 | require.NoError(t, err) |
| 5488 | |
| 5489 | bs, err := os.ReadFile(tempFile.Name()) |
| 5490 | require.NoError(t, err) |
| 5491 | require.Equal(t, "hello world", string(bs)) |
| 5492 | return nil |
| 5493 | }) |
| 5494 | |
| 5495 | body := &bytes.Buffer{} |
| 5496 | writer := multipart.NewWriter(body) |
| 5497 | |
| 5498 | ioWriter, err := writer.CreateFormFile("file", "test") |
| 5499 | require.NoError(t, err) |
| 5500 | |
| 5501 | _, err = ioWriter.Write([]byte("hello world")) |
| 5502 | require.NoError(t, err) |
| 5503 | require.NoError(t, writer.Close()) |
| 5504 | |
| 5505 | req := httptest.NewRequest(MethodPost, "/test", body) |
| 5506 | req.Header.Set("Content-Type", writer.FormDataContentType()) |
| 5507 | req.Header.Set("Content-Length", strconv.Itoa(len(body.Bytes()))) |
| 5508 | |
| 5509 | resp, err := app.Test(req) |
| 5510 | require.NoError(t, err, "app.Test(req)") |
| 5511 | require.Equal(t, StatusOK, resp.StatusCode, "Status code") |
| 5512 | } |
| 5513 | |
| 5514 | func createMultipartFileHeader(t *testing.T, filename string, data []byte) *multipart.FileHeader { |
| 5515 | t.Helper() |