(t *testing.T)
| 1464 | } |
| 1465 | |
| 1466 | func TestBindMultipartFormFiles(t *testing.T) { |
| 1467 | file1 := createTestFormFile("file", "file1.txt") |
| 1468 | file11 := createTestFormFile("file", "file11.txt") |
| 1469 | file2 := createTestFormFile("file2", "file2.txt") |
| 1470 | filesA := createTestFormFile("files", "filesA.txt") |
| 1471 | filesB := createTestFormFile("files", "filesB.txt") |
| 1472 | |
| 1473 | t.Run("nok, can not bind to multipart file struct", func(t *testing.T) { |
| 1474 | var target struct { |
| 1475 | File multipart.FileHeader `form:"file"` |
| 1476 | } |
| 1477 | err := bindMultipartFiles(t, &target, file1, file2) // file2 should be ignored |
| 1478 | |
| 1479 | assert.EqualError(t, err, `code=400, message=Bad Request, err=binding to multipart.FileHeader struct is not supported, use pointer to struct`) |
| 1480 | }) |
| 1481 | |
| 1482 | t.Run("ok, bind single multipart file to pointer to multipart file", func(t *testing.T) { |
| 1483 | var target struct { |
| 1484 | File *multipart.FileHeader `form:"file"` |
| 1485 | } |
| 1486 | err := bindMultipartFiles(t, &target, file1, file2) // file2 should be ignored |
| 1487 | |
| 1488 | assert.NoError(t, err) |
| 1489 | assertMultipartFileHeader(t, target.File, file1) |
| 1490 | }) |
| 1491 | |
| 1492 | t.Run("ok, bind multiple multipart files to pointer to multipart file", func(t *testing.T) { |
| 1493 | var target struct { |
| 1494 | File *multipart.FileHeader `form:"file"` |
| 1495 | } |
| 1496 | err := bindMultipartFiles(t, &target, file1, file11) |
| 1497 | |
| 1498 | assert.NoError(t, err) |
| 1499 | assertMultipartFileHeader(t, target.File, file1) // should choose first one |
| 1500 | }) |
| 1501 | |
| 1502 | t.Run("ok, bind multiple multipart files to slice of multipart file", func(t *testing.T) { |
| 1503 | var target struct { |
| 1504 | Files []multipart.FileHeader `form:"files"` |
| 1505 | } |
| 1506 | err := bindMultipartFiles(t, &target, filesA, filesB, file1) |
| 1507 | |
| 1508 | assert.NoError(t, err) |
| 1509 | |
| 1510 | assert.Len(t, target.Files, 2) |
| 1511 | assertMultipartFileHeader(t, &target.Files[0], filesA) |
| 1512 | assertMultipartFileHeader(t, &target.Files[1], filesB) |
| 1513 | }) |
| 1514 | |
| 1515 | t.Run("ok, bind multiple multipart files to slice of pointer to multipart file", func(t *testing.T) { |
| 1516 | var target struct { |
| 1517 | Files []*multipart.FileHeader `form:"files"` |
| 1518 | } |
| 1519 | err := bindMultipartFiles(t, &target, filesA, filesB, file1) |
| 1520 | |
| 1521 | assert.NoError(t, err) |
| 1522 | |
| 1523 | assert.Len(t, target.Files, 2) |
nothing calls this directly
no test coverage detected
searching dependent graphs…