[bugfix] Fix thumbnail image type (#406)
* fix thumbnail content-type * test fix thumbnail content-type
This commit is contained in:
parent
a089a98ea9
commit
15d1e6b3a1
|
@ -29,7 +29,6 @@ import (
|
||||||
"codeberg.org/gruf/go-store/kv"
|
"codeberg.org/gruf/go-store/kv"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/fileserver"
|
"github.com/superseriousbusiness/gotosocial/internal/api/client/fileserver"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||||
|
@ -117,8 +116,8 @@ func (suite *ServeFileTestSuite) TearDownTest() {
|
||||||
|
|
||||||
func (suite *ServeFileTestSuite) TestServeOriginalFileSuccessful() {
|
func (suite *ServeFileTestSuite) TestServeOriginalFileSuccessful() {
|
||||||
targetAttachment, ok := suite.testAttachments["admin_account_status_1_attachment_1"]
|
targetAttachment, ok := suite.testAttachments["admin_account_status_1_attachment_1"]
|
||||||
assert.True(suite.T(), ok)
|
suite.True(ok)
|
||||||
assert.NotNil(suite.T(), targetAttachment)
|
suite.NotNil(targetAttachment)
|
||||||
|
|
||||||
recorder := httptest.NewRecorder()
|
recorder := httptest.NewRecorder()
|
||||||
ctx, _ := gin.CreateTestContext(recorder)
|
ctx, _ := gin.CreateTestContext(recorder)
|
||||||
|
@ -149,15 +148,62 @@ func (suite *ServeFileTestSuite) TestServeOriginalFileSuccessful() {
|
||||||
// call the function we're testing and check status code
|
// call the function we're testing and check status code
|
||||||
suite.fileServer.ServeFile(ctx)
|
suite.fileServer.ServeFile(ctx)
|
||||||
suite.EqualValues(http.StatusOK, recorder.Code)
|
suite.EqualValues(http.StatusOK, recorder.Code)
|
||||||
|
suite.EqualValues("image/jpeg", recorder.Header().Get("content-type"))
|
||||||
|
|
||||||
b, err := ioutil.ReadAll(recorder.Body)
|
b, err := ioutil.ReadAll(recorder.Body)
|
||||||
assert.NoError(suite.T(), err)
|
suite.NoError(err)
|
||||||
assert.NotNil(suite.T(), b)
|
suite.NotNil(b)
|
||||||
|
|
||||||
fileInStorage, err := suite.storage.Get(targetAttachment.File.Path)
|
fileInStorage, err := suite.storage.Get(targetAttachment.File.Path)
|
||||||
assert.NoError(suite.T(), err)
|
suite.NoError(err)
|
||||||
assert.NotNil(suite.T(), fileInStorage)
|
suite.NotNil(fileInStorage)
|
||||||
assert.Equal(suite.T(), b, fileInStorage)
|
suite.Equal(b, fileInStorage)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *ServeFileTestSuite) TestServeSmallFileSuccessful() {
|
||||||
|
targetAttachment, ok := suite.testAttachments["admin_account_status_1_attachment_1"]
|
||||||
|
suite.True(ok)
|
||||||
|
suite.NotNil(targetAttachment)
|
||||||
|
|
||||||
|
recorder := httptest.NewRecorder()
|
||||||
|
ctx, _ := gin.CreateTestContext(recorder)
|
||||||
|
ctx.Request = httptest.NewRequest(http.MethodGet, targetAttachment.Thumbnail.URL, nil)
|
||||||
|
ctx.Request.Header.Set("accept", "*/*")
|
||||||
|
|
||||||
|
// normally the router would populate these params from the path values,
|
||||||
|
// but because we're calling the ServeFile function directly, we need to set them manually.
|
||||||
|
ctx.Params = gin.Params{
|
||||||
|
gin.Param{
|
||||||
|
Key: fileserver.AccountIDKey,
|
||||||
|
Value: targetAttachment.AccountID,
|
||||||
|
},
|
||||||
|
gin.Param{
|
||||||
|
Key: fileserver.MediaTypeKey,
|
||||||
|
Value: string(media.TypeAttachment),
|
||||||
|
},
|
||||||
|
gin.Param{
|
||||||
|
Key: fileserver.MediaSizeKey,
|
||||||
|
Value: string(media.SizeSmall),
|
||||||
|
},
|
||||||
|
gin.Param{
|
||||||
|
Key: fileserver.FileNameKey,
|
||||||
|
Value: fmt.Sprintf("%s.jpeg", targetAttachment.ID),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// call the function we're testing and check status code
|
||||||
|
suite.fileServer.ServeFile(ctx)
|
||||||
|
suite.EqualValues(http.StatusOK, recorder.Code)
|
||||||
|
suite.EqualValues("image/jpeg", recorder.Header().Get("content-type"))
|
||||||
|
|
||||||
|
b, err := ioutil.ReadAll(recorder.Body)
|
||||||
|
suite.NoError(err)
|
||||||
|
suite.NotNil(b)
|
||||||
|
|
||||||
|
fileInStorage, err := suite.storage.Get(targetAttachment.Thumbnail.Path)
|
||||||
|
suite.NoError(err)
|
||||||
|
suite.NotNil(fileInStorage)
|
||||||
|
suite.Equal(b, fileInStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestServeFileTestSuite(t *testing.T) {
|
func TestServeFileTestSuite(t *testing.T) {
|
||||||
|
|
|
@ -77,6 +77,7 @@ func (suite *ManagerTestSuite) TestSimpleJpegProcessBlocking() {
|
||||||
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
||||||
}, attachment.FileMeta.Small)
|
}, attachment.FileMeta.Small)
|
||||||
suite.Equal("image/jpeg", attachment.File.ContentType)
|
suite.Equal("image/jpeg", attachment.File.ContentType)
|
||||||
|
suite.Equal("image/jpeg", attachment.Thumbnail.ContentType)
|
||||||
suite.Equal(269739, attachment.File.FileSize)
|
suite.Equal(269739, attachment.File.FileSize)
|
||||||
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
||||||
|
|
||||||
|
@ -155,6 +156,7 @@ func (suite *ManagerTestSuite) TestSimpleJpegProcessAsync() {
|
||||||
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
||||||
}, attachment.FileMeta.Small)
|
}, attachment.FileMeta.Small)
|
||||||
suite.Equal("image/jpeg", attachment.File.ContentType)
|
suite.Equal("image/jpeg", attachment.File.ContentType)
|
||||||
|
suite.Equal("image/jpeg", attachment.Thumbnail.ContentType)
|
||||||
suite.Equal(269739, attachment.File.FileSize)
|
suite.Equal(269739, attachment.File.FileSize)
|
||||||
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
||||||
|
|
||||||
|
@ -237,6 +239,7 @@ func (suite *ManagerTestSuite) TestSimpleJpegQueueSpamming() {
|
||||||
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
||||||
}, attachment.FileMeta.Small)
|
}, attachment.FileMeta.Small)
|
||||||
suite.Equal("image/jpeg", attachment.File.ContentType)
|
suite.Equal("image/jpeg", attachment.File.ContentType)
|
||||||
|
suite.Equal("image/jpeg", attachment.Thumbnail.ContentType)
|
||||||
suite.Equal(269739, attachment.File.FileSize)
|
suite.Equal(269739, attachment.File.FileSize)
|
||||||
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
||||||
|
|
||||||
|
@ -325,6 +328,7 @@ func (suite *ManagerTestSuite) TestSimpleJpegProcessBlockingWithDiskStorage() {
|
||||||
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
Width: 512, Height: 288, Size: 147456, Aspect: 1.7777777777777777,
|
||||||
}, attachment.FileMeta.Small)
|
}, attachment.FileMeta.Small)
|
||||||
suite.Equal("image/jpeg", attachment.File.ContentType)
|
suite.Equal("image/jpeg", attachment.File.ContentType)
|
||||||
|
suite.Equal("image/jpeg", attachment.Thumbnail.ContentType)
|
||||||
suite.Equal(269739, attachment.File.FileSize)
|
suite.Equal(269739, attachment.File.FileSize)
|
||||||
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
suite.Equal("LjBzUo#6RQR._NvzRjWF?urqV@a$", attachment.Blurhash)
|
||||||
|
|
||||||
|
|
|
@ -331,7 +331,7 @@ func (m *manager) preProcessMedia(ctx context.Context, data DataFunc, accountID
|
||||||
thumbnail := gtsmodel.Thumbnail{
|
thumbnail := gtsmodel.Thumbnail{
|
||||||
URL: uris.GenerateURIForAttachment(accountID, string(TypeAttachment), string(SizeSmall), id, mimeJpeg), // all thumbnails are encoded as jpeg,
|
URL: uris.GenerateURIForAttachment(accountID, string(TypeAttachment), string(SizeSmall), id, mimeJpeg), // all thumbnails are encoded as jpeg,
|
||||||
Path: fmt.Sprintf("%s/%s/%s/%s.%s", accountID, TypeAttachment, SizeSmall, id, mimeJpeg), // all thumbnails are encoded as jpeg,
|
Path: fmt.Sprintf("%s/%s/%s/%s.%s", accountID, TypeAttachment, SizeSmall, id, mimeJpeg), // all thumbnails are encoded as jpeg,
|
||||||
ContentType: mimeJpeg,
|
ContentType: mimeImageJpeg,
|
||||||
UpdatedAt: time.Now(),
|
UpdatedAt: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue