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  }