github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/services/services_test.go (about) 1 package services_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/ngocphuongnb/tetua/app/entities" 8 "github.com/ngocphuongnb/tetua/app/fs" 9 "github.com/ngocphuongnb/tetua/app/mock" 10 "github.com/ngocphuongnb/tetua/app/server" 11 "github.com/ngocphuongnb/tetua/app/services" 12 "github.com/stretchr/testify/assert" 13 "github.com/valyala/fasthttp" 14 ) 15 16 func TestFile(t *testing.T) { 17 mock.CreateRepositories() 18 fs.New("disk_mock", []fs.FSDisk{&mock.Disk{}}) 19 mockLogger := mock.CreateLogger(true) 20 mockServer := mock.CreateServer() 21 mockServer.Post("/test-upload-invalid-header", func(c server.Context) error { 22 f, err := services.SaveFile(c, "featured_image") 23 assert.Equal(t, (*entities.File)(nil), f) 24 assert.Equal(t, fasthttp.ErrNoMultipartForm, err) 25 assert.Equal(t, fasthttp.ErrNoMultipartForm.Error(), fmt.Sprintf("%v", mockLogger.Last().Params[0])) 26 return c.SendString("ok") 27 }) 28 29 mock.PostRequest(mockServer, "/test-upload-invalid-header") 30 31 mockServer.Post("/test-upload-empty", func(c server.Context) error { 32 f, err := services.SaveFile(c, "featured_image") 33 assert.Equal(t, (*entities.File)(nil), f) 34 assert.NoError(t, err) 35 assert.Equal(t, 1, len(mockLogger.Messages)) 36 return c.SendString("ok") 37 }) 38 39 req := mock.CreateUploadRequest("POST", "/test-upload-empty", "some_field", "image.jpg") 40 mockServer.Test(req) 41 42 mockServer.Post("/test-upload-disk-error", func(c server.Context) error { 43 f, err := services.SaveFile(c, "featured_image") 44 assert.Equal(t, (*entities.File)(nil), f) 45 assert.Equal(t, "PutMultipart error", err.Error()) 46 assert.Equal(t, 1, len(mockLogger.Messages)) 47 return c.SendString("ok") 48 }) 49 50 req = mock.CreateUploadRequest("POST", "/test-upload-disk-error", "featured_image", "error.jpg") 51 mockServer.Test(req) 52 53 mockServer.Post("/test-upload-success", func(c server.Context) error { 54 c.Locals("user", &entities.User{ID: 2}) 55 f, err := services.SaveFile(c, "featured_image") 56 assert.NoError(t, err) 57 assert.Equal(t, 1, f.ID) 58 assert.Equal(t, "disk_mock", f.Disk) 59 assert.Equal(t, "image.jpg", f.Path) 60 assert.Equal(t, "image/jpeg", f.Type) 61 assert.Equal(t, 100, f.Size) 62 assert.Equal(t, 2, f.UserID) 63 return c.SendString("ok") 64 }) 65 66 req = mock.CreateUploadRequest("POST", "/test-upload-success", "featured_image", "image.jpg") 67 mockServer.Test(req) 68 }