@@ -13,6 +13,7 @@ import (
13
13
"net/http"
14
14
"net/http/httptest"
15
15
"net/url"
16
+ "os"
16
17
"strconv"
17
18
"strings"
18
19
"testing"
@@ -647,7 +648,56 @@ func Test_Route(t *testing.T) {
647
648
}
648
649
}
649
650
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
+ }
651
701
}
652
702
func Test_Secure (t * testing.T ) {
653
703
app := New ()
0 commit comments