[GH-13031] Split tests into subtests or table testing for the file "https://github.com/mattermost/mattermost-server/blob/master/model/file_info_test.go" (#13032)
* Split tests into subtests and table testing for 'model/file_info_test.go' * Improve error messages and fit testify function parameter order
Этот коммит содержится в:
коммит произвёл
Jesús Espino
родитель
c2fbcd71d1
Коммит
613a015cd0
@@ -24,109 +24,182 @@ func TestFileInfoIsValid(t *testing.T) {
|
||||
Path: "fake/path.png",
|
||||
}
|
||||
|
||||
require.Nil(t, info.IsValid())
|
||||
t.Run("Valid File Info", func(t *testing.T) {
|
||||
assert.Nil(t, info.IsValid())
|
||||
})
|
||||
|
||||
info.Id = ""
|
||||
require.NotNil(t, info.IsValid(), "empty Id isn't valid")
|
||||
t.Run("Empty ID is not valid", func(t *testing.T) {
|
||||
info.Id = ""
|
||||
assert.NotNil(t, info.IsValid(), "empty Id isn't valid")
|
||||
info.Id = NewId()
|
||||
})
|
||||
|
||||
info.Id = NewId()
|
||||
info.CreateAt = 0
|
||||
require.NotNil(t, info.IsValid(), "empty CreateAt isn't valid")
|
||||
t.Run("CreateAt 0 is not valid", func(t *testing.T) {
|
||||
info.CreateAt = 0
|
||||
assert.NotNil(t, info.IsValid(), "empty CreateAt isn't valid")
|
||||
info.CreateAt = 1234
|
||||
})
|
||||
|
||||
info.CreateAt = 1234
|
||||
info.UpdateAt = 0
|
||||
require.NotNil(t, info.IsValid(), "empty UpdateAt isn't valid")
|
||||
t.Run("UpdateAt 0 is not valid", func(t *testing.T) {
|
||||
info.UpdateAt = 0
|
||||
assert.NotNil(t, info.IsValid(), "empty UpdateAt isn't valid")
|
||||
info.UpdateAt = 1234
|
||||
})
|
||||
|
||||
info.UpdateAt = 1234
|
||||
info.PostId = NewId()
|
||||
require.Nil(t, info.IsValid())
|
||||
t.Run("New Post ID is valid", func(t *testing.T) {
|
||||
info.PostId = NewId()
|
||||
assert.Nil(t, info.IsValid())
|
||||
})
|
||||
|
||||
info.Path = ""
|
||||
require.NotNil(t, info.IsValid(), "empty Path isn't valid")
|
||||
|
||||
info.Path = "fake/path.png"
|
||||
require.Nil(t, info.IsValid())
|
||||
t.Run("Empty path is not valid", func(t *testing.T) {
|
||||
info.Path = ""
|
||||
assert.NotNil(t, info.IsValid(), "empty Path isn't valid")
|
||||
info.Path = "fake/path.png"
|
||||
})
|
||||
}
|
||||
|
||||
func TestFileInfoIsImage(t *testing.T) {
|
||||
info := &FileInfo{MimeType: "image/png"}
|
||||
assert.True(t, info.IsImage(), "file is an image")
|
||||
info := &FileInfo{}
|
||||
t.Run("MimeType set to image/png is considered an image", func(t *testing.T) {
|
||||
info.MimeType = "image/png"
|
||||
assert.True(t, info.IsImage(), "PNG file should be considered as an image")
|
||||
})
|
||||
|
||||
info.MimeType = "text/plain"
|
||||
assert.False(t, info.IsImage(), "file is not an image")
|
||||
t.Run("MimeType set to text/plain is not considered an image", func(t *testing.T) {
|
||||
info.MimeType = "text/plain"
|
||||
assert.False(t, info.IsImage(), "Text file should not be considered as an image")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetInfoForFile(t *testing.T) {
|
||||
fakeFile := make([]byte, 1000)
|
||||
|
||||
info, errApp := GetInfoForBytes("file.txt", fakeFile)
|
||||
require.Nil(t, errApp)
|
||||
assert.Equalf(t, info.Name, "file.txt", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "txt", "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValuesf(t, info.Size, 1000, "Got incorrect size: %v", info.Size)
|
||||
assert.Truef(t, strings.HasPrefix(info.MimeType, "text/plain"), "Got incorrect mime type: %v", info.MimeType)
|
||||
assert.Equalf(t, info.Width, 0, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, info.Height, 0, "Got incorrect height: %v", info.Height)
|
||||
assert.Falsef(t, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
|
||||
pngFile, err := ioutil.ReadFile("../tests/test.png")
|
||||
require.Nilf(t, err, "Failed to load test.png")
|
||||
|
||||
info, err = GetInfoForBytes("test.png", pngFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "test.png", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "png", "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValues(t, info.Size, 279591, "Got incorrect size: %v", info.Size)
|
||||
assert.Equalf(t, info.MimeType, "image/png", "Got incorrect mime type: %v", info.MimeType)
|
||||
assert.Equalf(t, info.Width, 408, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, info.Height, 336, "Got incorrect height: %v", info.Height)
|
||||
assert.Truef(t, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
|
||||
// base 64 encoded version of handtinywhite.gif from http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever
|
||||
gifFile, _ := base64.StdEncoding.DecodeString("R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=")
|
||||
info, err = GetInfoForBytes("handtinywhite.gif", gifFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "handtinywhite.gif", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "gif", "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValuesf(t, info.Size, 35, "Got incorrect size: %v", info.Size)
|
||||
assert.Equalf(t, info.MimeType, "image/gif", "Got incorrect mime type: %v", info.MimeType)
|
||||
assert.Equalf(t, info.Width, 1, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, info.Height, 1, "Got incorrect height: %v", info.Height)
|
||||
assert.Truef(t, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
|
||||
animatedGifFile, err := ioutil.ReadFile("../tests/testgif.gif")
|
||||
require.Nilf(t, err, "Failed to load testgif.gif")
|
||||
|
||||
info, err = GetInfoForBytes("testgif.gif", animatedGifFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "testgif.gif", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "gif", "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValuesf(t, info.Size, 38689, "Got incorrect size: %v", info.Size)
|
||||
assert.Equalf(t, info.MimeType, "image/gif", "Got incorrect mime type: %v", info.MimeType)
|
||||
assert.Equalf(t, info.Width, 118, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, info.Height, 118, "Got incorrect height: %v", info.Height)
|
||||
assert.Falsef(t, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
var ttc = []struct {
|
||||
testName string
|
||||
filename string
|
||||
file []byte
|
||||
usePrefixForMime bool
|
||||
expectedExtension string
|
||||
expectedSize int
|
||||
expectedMime string
|
||||
expectedWidth int
|
||||
expectedHeight int
|
||||
expectedHasPreviewImage bool
|
||||
}{
|
||||
{
|
||||
testName: "Text File",
|
||||
filename: "file.txt",
|
||||
file: fakeFile,
|
||||
usePrefixForMime: true,
|
||||
expectedExtension: "txt",
|
||||
expectedSize: 1000,
|
||||
expectedMime: "text/plain",
|
||||
expectedWidth: 0,
|
||||
expectedHeight: 0,
|
||||
expectedHasPreviewImage: false,
|
||||
},
|
||||
{
|
||||
testName: "PNG file",
|
||||
filename: "test.png",
|
||||
file: pngFile,
|
||||
usePrefixForMime: false,
|
||||
expectedExtension: "png",
|
||||
expectedSize: 279591,
|
||||
expectedMime: "image/png",
|
||||
expectedWidth: 408,
|
||||
expectedHeight: 336,
|
||||
expectedHasPreviewImage: true,
|
||||
},
|
||||
{
|
||||
testName: "Static Gif File",
|
||||
filename: "handtinywhite.gif",
|
||||
file: gifFile,
|
||||
usePrefixForMime: false,
|
||||
expectedExtension: "gif",
|
||||
expectedSize: 35,
|
||||
expectedMime: "image/gif",
|
||||
expectedWidth: 1,
|
||||
expectedHeight: 1,
|
||||
expectedHasPreviewImage: true,
|
||||
},
|
||||
{
|
||||
testName: "Animated Gif File",
|
||||
filename: "testgif.gif",
|
||||
file: animatedGifFile,
|
||||
usePrefixForMime: false,
|
||||
expectedExtension: "gif",
|
||||
expectedSize: 38689,
|
||||
expectedMime: "image/gif",
|
||||
expectedWidth: 118,
|
||||
expectedHeight: 118,
|
||||
expectedHasPreviewImage: false,
|
||||
},
|
||||
{
|
||||
testName: "No extension File",
|
||||
filename: "filewithoutextension",
|
||||
file: fakeFile,
|
||||
usePrefixForMime: false,
|
||||
expectedExtension: "",
|
||||
expectedSize: 1000,
|
||||
expectedMime: "",
|
||||
expectedWidth: 0,
|
||||
expectedHeight: 0,
|
||||
expectedHasPreviewImage: false,
|
||||
},
|
||||
{
|
||||
// Always make the extension lower case to make it easier to use in other places
|
||||
testName: "Uppercase extension File",
|
||||
filename: "file.TXT",
|
||||
file: fakeFile,
|
||||
usePrefixForMime: true,
|
||||
expectedExtension: "txt",
|
||||
expectedSize: 1000,
|
||||
expectedMime: "text/plain",
|
||||
expectedWidth: 0,
|
||||
expectedHeight: 0,
|
||||
expectedHasPreviewImage: false,
|
||||
},
|
||||
{
|
||||
// Don't error out for image formats we don't support
|
||||
testName: "Not supported File",
|
||||
filename: "file.tif",
|
||||
file: fakeFile,
|
||||
usePrefixForMime: false,
|
||||
expectedExtension: "tif",
|
||||
expectedSize: 1000,
|
||||
expectedMime: "image/tiff",
|
||||
expectedWidth: 0,
|
||||
expectedHeight: 0,
|
||||
expectedHasPreviewImage: false,
|
||||
},
|
||||
}
|
||||
|
||||
info, err = GetInfoForBytes("filewithoutextension", fakeFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "filewithoutextension", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "", "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValuesf(t, info.Size, 1000, "Got incorrect size: %v", info.Size)
|
||||
assert.Equalf(t, info.MimeType, "", "Got incorrect mime type: %v", info.MimeType)
|
||||
assert.Equalf(t, info.Width, 0, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, info.Height, 0, "Got incorrect height: %v", info.Height)
|
||||
assert.Falsef(t, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
for _, tc := range ttc {
|
||||
t.Run(tc.testName, func(t *testing.T) {
|
||||
info, errApp := GetInfoForBytes(tc.filename, tc.file)
|
||||
require.Nil(t, errApp)
|
||||
|
||||
// Always make the extension lower case to make it easier to use in other places
|
||||
info, err = GetInfoForBytes("file.TXT", fakeFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "file.TXT", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "txt", "Got incorrect extension: %v", info.Extension)
|
||||
assert.Equalf(t, tc.filename, info.Name, "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, tc.expectedExtension, info.Extension, "Got incorrect extension: %v", info.Extension)
|
||||
assert.EqualValuesf(t, tc.expectedSize, info.Size, "Got incorrect size: %v", info.Size)
|
||||
assert.Equalf(t, tc.expectedWidth, info.Width, "Got incorrect width: %v", info.Width)
|
||||
assert.Equalf(t, tc.expectedHeight, info.Height, "Got incorrect height: %v", info.Height)
|
||||
assert.Equalf(t, tc.expectedHasPreviewImage, info.HasPreviewImage, "Got incorrect has preview image: %v", info.HasPreviewImage)
|
||||
|
||||
// Don't error out for image formats we don't support
|
||||
info, err = GetInfoForBytes("file.tif", fakeFile)
|
||||
require.Nil(t, err)
|
||||
assert.Equalf(t, info.Name, "file.tif", "Got incorrect filename: %v", info.Name)
|
||||
assert.Equalf(t, info.Extension, "tif", "Got incorrect extension: %v", info.Extension)
|
||||
assert.True(t, info.MimeType == "image/x-tiff" || info.MimeType == "image/tiff", "Got incorrect mime type: %v", info.MimeType)
|
||||
if tc.usePrefixForMime {
|
||||
assert.Truef(t, strings.HasPrefix(info.MimeType, tc.expectedMime), "Got incorrect mime type: %v", info.MimeType)
|
||||
} else {
|
||||
assert.Equalf(t, tc.expectedMime, info.MimeType, "Got incorrect mime type: %v", info.MimeType)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user