go test -run Test_Ctx_FormFile
(t *testing.T)
| 2363 | |
| 2364 | // go test -run Test_Ctx_FormFile |
| 2365 | func Test_Ctx_FormFile(t *testing.T) { |
| 2366 | // TODO: We should clean this up |
| 2367 | t.Parallel() |
| 2368 | app := New() |
| 2369 | |
| 2370 | app.Post("/test", func(c Ctx) error { |
| 2371 | fh, err := c.FormFile("file") |
| 2372 | require.NoError(t, err) |
| 2373 | require.Equal(t, "test", fh.Filename) |
| 2374 | |
| 2375 | f, err := fh.Open() |
| 2376 | require.NoError(t, err) |
| 2377 | defer func() { |
| 2378 | require.NoError(t, f.Close()) |
| 2379 | }() |
| 2380 | |
| 2381 | b := new(bytes.Buffer) |
| 2382 | _, err = io.Copy(b, f) |
| 2383 | require.NoError(t, err) |
| 2384 | require.Equal(t, "hello world", b.String()) |
| 2385 | return nil |
| 2386 | }) |
| 2387 | |
| 2388 | body := &bytes.Buffer{} |
| 2389 | writer := multipart.NewWriter(body) |
| 2390 | |
| 2391 | ioWriter, err := writer.CreateFormFile("file", "test") |
| 2392 | require.NoError(t, err) |
| 2393 | |
| 2394 | _, err = ioWriter.Write([]byte("hello world")) |
| 2395 | require.NoError(t, err) |
| 2396 | require.NoError(t, writer.Close()) |
| 2397 | |
| 2398 | req := httptest.NewRequest(MethodPost, "/test", body) |
| 2399 | req.Header.Set(HeaderContentType, writer.FormDataContentType()) |
| 2400 | req.Header.Set(HeaderContentLength, strconv.Itoa(len(body.Bytes()))) |
| 2401 | |
| 2402 | resp, err := app.Test(req) |
| 2403 | require.NoError(t, err, "app.Test(req)") |
| 2404 | defer func() { require.NoError(t, resp.Body.Close()) }() |
| 2405 | require.Equal(t, StatusOK, resp.StatusCode, "Status code") |
| 2406 | |
| 2407 | respBody, err := io.ReadAll(resp.Body) |
| 2408 | require.NoError(t, err, "io.ReadAll(resp.Body)") |
| 2409 | require.Empty(t, respBody) |
| 2410 | require.Empty(t, resp.Header.Get(HeaderContentType)) |
| 2411 | require.Equal(t, int64(0), resp.ContentLength) |
| 2412 | } |
| 2413 | |
| 2414 | // go test -run Test_Ctx_FormValue |
| 2415 | func Test_Ctx_FormValue(t *testing.T) { |