Skip to content

Commit 029e3a9

Browse files
author
TianhongWu
authored
Add Test_SaveFile (#318)
* ctx_test: impl Test_SaveFile * fixup! ctx_test: impl Test_SaveFile
1 parent 4d14679 commit 029e3a9

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

ctx_test.go

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"net/http"
1414
"net/http/httptest"
1515
"net/url"
16+
"os"
1617
"strconv"
1718
"strings"
1819
"testing"
@@ -647,7 +648,56 @@ func Test_Route(t *testing.T) {
647648
}
648649
}
649650
func Test_SaveFile(t *testing.T) {
650-
// TODO
651+
app := New()
652+
app.Post("/test", func(c *Ctx) {
653+
fh, err := c.FormFile("file")
654+
if err != nil {
655+
t.Fatalf(`%s: %s`, t.Name(), err)
656+
}
657+
tempFile, err := ioutil.TempFile(os.TempDir(), "test-")
658+
if err != nil {
659+
t.Fatalf(`%s: %s`, t.Name(), err)
660+
}
661+
defer os.Remove(tempFile.Name())
662+
err = c.SaveFile(fh, tempFile.Name())
663+
if err != nil {
664+
t.Fatalf(`%s: %s`, t.Name(), err)
665+
}
666+
bs, err := ioutil.ReadFile(tempFile.Name())
667+
if err != nil {
668+
t.Fatalf(`%s: %s`, t.Name(), err)
669+
}
670+
expect := "hello world"
671+
if string(bs) != expect {
672+
t.Fatalf(`Expecting %s, got %s`, expect, string(bs))
673+
}
674+
})
675+
676+
body := &bytes.Buffer{}
677+
writer := multipart.NewWriter(body)
678+
679+
ioWriter, err := writer.CreateFormFile("file", "test")
680+
if err != nil {
681+
t.Fatalf(`%s: %s`, t.Name(), err)
682+
}
683+
684+
_, err = ioWriter.Write([]byte("hello world"))
685+
if err != nil {
686+
t.Fatalf(`%s: %s`, t.Name(), err)
687+
}
688+
writer.Close()
689+
690+
req, _ := http.NewRequest("POST", "/test", body)
691+
req.Header.Set("Content-Type", writer.FormDataContentType())
692+
req.Header.Set("Content-Length", strconv.Itoa(len(body.Bytes())))
693+
694+
resp, err := app.Test(req)
695+
if err != nil {
696+
t.Fatalf(`%s: %s`, t.Name(), err)
697+
}
698+
if resp.StatusCode != 200 {
699+
t.Fatalf(`%s: StatusCode %v`, t.Name(), resp.StatusCode)
700+
}
651701
}
652702
func Test_Secure(t *testing.T) {
653703
app := New()

0 commit comments

Comments
 (0)