MM-27353 Mini image previews (#15376)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2f47cf5994
Коммит
b8ceb610e6
@@ -215,51 +215,57 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageThumbnailNames []string
|
||||
expectedImagePreviewNames []string
|
||||
expectedImageHasPreview []bool
|
||||
expectedImageMiniPreview []bool
|
||||
setupConfig func(a *app.App) func(a *app.App)
|
||||
checkResponse func(t *testing.T, resp *model.Response)
|
||||
}{
|
||||
// Upload a bunch of files, mixed images and non-images
|
||||
{
|
||||
title: "Happy",
|
||||
names: []string{"test.png", "testgif.gif", "testplugin.tar.gz", "test-search.md", "test.tiff"},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
title: "Happy",
|
||||
names: []string{"test.png", "testgif.gif", "testplugin.tar.gz", "test-search.md", "test.tiff"},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageMiniPreview: []bool{true, true, false, false, true},
|
||||
},
|
||||
// Upload a bunch of files, with clientIds
|
||||
{
|
||||
title: "Happy client_ids",
|
||||
names: []string{"test.png", "testgif.gif", "testplugin.tar.gz", "test-search.md", "test.tiff"},
|
||||
clientIds: []string{"1", "2", "3", "4", "5"},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
title: "Happy client_ids",
|
||||
names: []string{"test.png", "testgif.gif", "testplugin.tar.gz", "test-search.md", "test.tiff"},
|
||||
clientIds: []string{"1", "2", "3", "4", "5"},
|
||||
expectedImageMiniPreview: []bool{true, true, false, false, true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
// Upload a bunch of images. testgif.gif is an animated GIF,
|
||||
// so it does not have HasPreviewImage set.
|
||||
{
|
||||
title: "Happy images",
|
||||
names: []string{"test.png", "testgif.gif"},
|
||||
expectImage: true,
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageWidths: []int{408, 118},
|
||||
expectedImageHeights: []int{336, 118},
|
||||
expectedImageHasPreview: []bool{true, false},
|
||||
title: "Happy images",
|
||||
names: []string{"test.png", "testgif.gif"},
|
||||
expectImage: true,
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageWidths: []int{408, 118},
|
||||
expectedImageHeights: []int{336, 118},
|
||||
expectedImageHasPreview: []bool{true, false},
|
||||
expectedImageMiniPreview: []bool{true, true},
|
||||
},
|
||||
{
|
||||
title: "Happy invalid image",
|
||||
names: []string{"testgif.gif"},
|
||||
blobs: [][]byte{fileBytes(t, "test-search.md")},
|
||||
skipPayloadValidation: true,
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
title: "Happy invalid image",
|
||||
names: []string{"testgif.gif"},
|
||||
blobs: [][]byte{fileBytes(t, "test-search.md")},
|
||||
skipPayloadValidation: true,
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageMiniPreview: []bool{false},
|
||||
},
|
||||
// Simple POST, chunked encoding
|
||||
{
|
||||
title: "Happy image chunked post",
|
||||
skipMultipart: true,
|
||||
useChunkedInSimplePost: true,
|
||||
names: []string{"test.png"},
|
||||
expectImage: true,
|
||||
expectedImageWidths: []int{408},
|
||||
expectedImageHeights: []int{336},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
title: "Happy image chunked post",
|
||||
skipMultipart: true,
|
||||
useChunkedInSimplePost: true,
|
||||
names: []string{"test.png"},
|
||||
expectImage: true,
|
||||
expectedImageWidths: []int{408},
|
||||
expectedImageHeights: []int{336},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
},
|
||||
// Image thumbnail and preview: size and orientation. Note that
|
||||
// the expected image dimensions remain the same regardless of the
|
||||
@@ -275,6 +281,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
},
|
||||
{
|
||||
title: "Happy image thumbnail/preview 2",
|
||||
@@ -285,6 +292,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -296,6 +304,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -307,6 +316,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -318,6 +328,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -329,6 +340,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -340,6 +352,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
@@ -351,6 +364,7 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{2860},
|
||||
expectedImageHeights: []int{1578},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
// TIFF preview test
|
||||
@@ -363,13 +377,15 @@ func TestUploadFiles(t *testing.T) {
|
||||
expectedImageWidths: []int{701},
|
||||
expectedImageHeights: []int{701},
|
||||
expectedImageHasPreview: []bool{true},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
{
|
||||
title: "Happy admin",
|
||||
client: th.SystemAdminClient,
|
||||
names: []string{"test.png"},
|
||||
expectedCreatorId: th.SystemAdminUser.Id,
|
||||
title: "Happy admin",
|
||||
client: th.SystemAdminClient,
|
||||
names: []string{"test.png"},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
expectedCreatorId: th.SystemAdminUser.Id,
|
||||
},
|
||||
{
|
||||
title: "Happy stream",
|
||||
@@ -384,7 +400,8 @@ func TestUploadFiles(t *testing.T) {
|
||||
a.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.MaxFileSize = maxFileSize })
|
||||
}
|
||||
},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
expectedImageMiniPreview: []bool{false},
|
||||
expectedCreatorId: th.BasicUser.Id,
|
||||
},
|
||||
// Error cases
|
||||
{
|
||||
@@ -397,19 +414,21 @@ func TestUploadFiles(t *testing.T) {
|
||||
{
|
||||
// on simple post this uploads the last file
|
||||
// successfully, without a ClientId
|
||||
title: "Error too few client_ids",
|
||||
skipSimplePost: true,
|
||||
names: []string{"test.png", "testplugin.tar.gz", "test-search.md"},
|
||||
clientIds: []string{"1", "4"},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckBadRequestStatus,
|
||||
title: "Error too few client_ids",
|
||||
skipSimplePost: true,
|
||||
names: []string{"test.png", "testplugin.tar.gz", "test-search.md"},
|
||||
clientIds: []string{"1", "4"},
|
||||
expectedImageMiniPreview: []bool{true, false, false},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckBadRequestStatus,
|
||||
},
|
||||
{
|
||||
title: "Error invalid channel_id",
|
||||
channelId: "../../junk",
|
||||
names: []string{"test.png"},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckBadRequestStatus,
|
||||
title: "Error invalid channel_id",
|
||||
channelId: "../../junk",
|
||||
names: []string{"test.png"},
|
||||
expectedImageMiniPreview: []bool{true},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckBadRequestStatus,
|
||||
},
|
||||
{
|
||||
title: "Error admin channel_id does not exist",
|
||||
@@ -456,12 +475,13 @@ func TestUploadFiles(t *testing.T) {
|
||||
},
|
||||
// File too large (chunked, simple POST only, multipart would've been redundant with above)
|
||||
{
|
||||
title: "File too large chunked",
|
||||
useChunkedInSimplePost: true,
|
||||
skipMultipart: true,
|
||||
names: []string{"test.png"},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckRequestEntityTooLargeStatus,
|
||||
title: "File too large chunked",
|
||||
useChunkedInSimplePost: true,
|
||||
skipMultipart: true,
|
||||
names: []string{"test.png"},
|
||||
skipSuccessValidation: true,
|
||||
checkResponse: CheckRequestEntityTooLargeStatus,
|
||||
expectedImageMiniPreview: []bool{false},
|
||||
setupConfig: func(a *app.App) func(a *app.App) {
|
||||
maxFileSize := *a.Config().FileSettings.MaxFileSize
|
||||
a.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.MaxFileSize = 279590 })
|
||||
@@ -560,6 +580,9 @@ func TestUploadFiles(t *testing.T) {
|
||||
assert.Equal(t, ri.Path, "", "File path should not be set on returned info")
|
||||
assert.Equal(t, ri.ThumbnailPath, "", "File thumbnail path should not be set on returned info")
|
||||
assert.Equal(t, ri.PreviewPath, "", "File preview path should not be set on returned info")
|
||||
if len(tc.expectedImageMiniPreview) == len(fileResp.FileInfos) {
|
||||
assert.Equal(t, ri.MiniPreview != nil, tc.expectedImageMiniPreview[i], "File: %s mini preview state unexpected", tc.names[i])
|
||||
}
|
||||
if len(tc.clientIds) > i {
|
||||
assert.True(t, len(fileResp.ClientIds) == len(tc.clientIds),
|
||||
fmt.Sprintf("Wrong number of clientIds returned, expected %v, got %v", len(tc.clientIds), len(fileResp.ClientIds)))
|
||||
|
||||
Ссылка в новой задаче
Block a user