mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-11 16:24:11 +01:00
183 lines
6.0 KiB
Go
183 lines
6.0 KiB
Go
package fs
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/photoprism/photoprism/pkg/http/header"
|
|
)
|
|
|
|
func TestDetectMimeType(t *testing.T) {
|
|
t.Run("MP4", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.mp4")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "video/mp4", mimeType)
|
|
})
|
|
t.Run("MOV", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.mov")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "video/quicktime", mimeType)
|
|
assert.Equal(t, "video/quicktime", MimeType(filename))
|
|
})
|
|
t.Run("JPEG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.jpg")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/jpeg", mimeType)
|
|
assert.Equal(t, "image/jpeg", MimeType(filename))
|
|
})
|
|
t.Run("InvalidFilename", func(t *testing.T) {
|
|
filename := Abs("./testdata/xxx.jpg")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "", mimeType)
|
|
assert.Equal(t, "", MimeType(filename))
|
|
})
|
|
t.Run("EmptyFilename", func(t *testing.T) {
|
|
mimeType, _ := DetectMimeType("")
|
|
assert.Equal(t, "", mimeType)
|
|
assert.Equal(t, "", MimeType(""))
|
|
})
|
|
t.Run("AVIF", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.avif")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/avif", mimeType)
|
|
assert.Equal(t, "image/avif", MimeType(filename))
|
|
})
|
|
t.Run("AVIFS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.avifs")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/avif-sequence", mimeType)
|
|
assert.Equal(t, "image/avif-sequence", MimeType(filename))
|
|
})
|
|
t.Run("HEIC", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.heic")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/heic", mimeType)
|
|
assert.Equal(t, "image/heic", MimeType(filename))
|
|
})
|
|
t.Run("HEICS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.heics")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/heic-sequence", mimeType)
|
|
})
|
|
t.Run("DNG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.dng")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/dng", mimeType)
|
|
})
|
|
t.Run("SVG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.svg")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/svg+xml", mimeType)
|
|
assert.Equal(t, "image/svg+xml", MimeType(filename))
|
|
})
|
|
t.Run("AI", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.ai")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "application/vnd.adobe.illustrator", mimeType)
|
|
assert.Equal(t, "application/vnd.adobe.illustrator", MimeType(filename))
|
|
})
|
|
t.Run("PS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.ps")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "application/postscript", mimeType)
|
|
assert.Equal(t, "application/postscript", MimeType(filename))
|
|
})
|
|
t.Run("EPS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.eps")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/eps", mimeType)
|
|
assert.Equal(t, "image/eps", MimeType(filename))
|
|
})
|
|
}
|
|
|
|
func TestBaseType(t *testing.T) {
|
|
t.Run("MP4", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.mp4")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "video/mp4", result)
|
|
})
|
|
t.Run("MOV", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.mov")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "video/quicktime", result)
|
|
})
|
|
t.Run("JPEG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.jpg")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/jpeg", result)
|
|
})
|
|
t.Run("InvalidFilename", func(t *testing.T) {
|
|
filename := Abs("./testdata/xxx.jpg")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "", result)
|
|
})
|
|
t.Run("EmptyFilename", func(t *testing.T) {
|
|
assert.Equal(t, "", BaseType(""))
|
|
})
|
|
t.Run("AVIF", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.avif")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/avif", result)
|
|
})
|
|
t.Run("AVIFS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.avifs")
|
|
mimeType, _ := DetectMimeType(filename)
|
|
assert.Equal(t, "image/avif-sequence", mimeType)
|
|
assert.Equal(t, "image/avif-sequence", BaseType(mimeType))
|
|
})
|
|
t.Run("HEIC", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.heic")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/heic", result)
|
|
})
|
|
t.Run("HEICS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.heics")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/heic-sequence", result)
|
|
})
|
|
t.Run("DNG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.dng")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/dng", result)
|
|
})
|
|
t.Run("SVG", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.svg")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/svg+xml", result)
|
|
})
|
|
t.Run("AI", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.ai")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "application/vnd.adobe.illustrator", result)
|
|
})
|
|
t.Run("PS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.ps")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "application/postscript", result)
|
|
})
|
|
t.Run("EPS", func(t *testing.T) {
|
|
filename := Abs("./testdata/test.eps")
|
|
result := BaseType(MimeType(filename))
|
|
assert.Equal(t, "image/eps", result)
|
|
})
|
|
}
|
|
|
|
func TestIsType(t *testing.T) {
|
|
t.Run("True", func(t *testing.T) {
|
|
assert.True(t, SameType("", MimeTypeUnknown))
|
|
assert.True(t, SameType("video/jpg", "video/jpg"))
|
|
assert.True(t, SameType("video/jpeg", "video/jpeg"))
|
|
assert.True(t, SameType("video/mp4", "video/mp4"))
|
|
assert.True(t, SameType("video/mp4", header.ContentTypeMp4))
|
|
assert.True(t, SameType("video/mp4", "video/Mp4"))
|
|
assert.True(t, SameType("video/mp4", "video/Mp4; codecs=\"avc1.640028\""))
|
|
})
|
|
t.Run("False", func(t *testing.T) {
|
|
assert.False(t, SameType("", header.ContentTypeMp4))
|
|
assert.False(t, SameType("video/jpeg", "video/jpg"))
|
|
assert.False(t, SameType("video/mp4", MimeTypeUnknown))
|
|
assert.False(t, SameType(header.ContentTypeMp4, header.ContentTypeJpeg))
|
|
})
|
|
}
|