|
- package service
-
- import (
- "net/http"
- "testing"
-
- "github.com/QuantumNous/new-api/types"
- "github.com/stretchr/testify/require"
- )
-
- func TestSmartDetectMimeTypeUsesTrustedHeaderBeforeFilenameAndURL(t *testing.T) {
- resp := &http.Response{Header: http.Header{
- "Content-Type": []string{"image/png; charset=binary"},
- "Content-Disposition": []string{`attachment; filename="report.pdf"`},
- }}
-
- require.Equal(t, "image/png", smartDetectMimeType(resp, "https://example.com/video.mp4", []byte("not-an-image")))
- }
-
- func TestSmartDetectMimeTypeFallsBackToFilenameAndURL(t *testing.T) {
- filenameResp := &http.Response{Header: http.Header{
- "Content-Type": []string{"application/octet-stream"},
- "Content-Disposition": []string{`attachment; filename="photo.JPEG"`},
- }}
- urlResp := &http.Response{Header: http.Header{"Content-Type": []string{"application/octet-stream"}}}
-
- require.Equal(t, "image/jpeg", smartDetectMimeType(filenameResp, "https://example.com/archive.bin", nil))
- require.Equal(t, "application/pdf", smartDetectMimeType(urlResp, "https://example.com/report.PDF?download=1", nil))
- }
-
- func TestLoadFromBase64HonorsExplicitMimeTypeAndRejectsInvalidData(t *testing.T) {
- cached, err := loadFromBase64("data:text/plain;base64,aGVsbG8=", "application/custom")
- require.NoError(t, err)
- require.Equal(t, "application/custom", cached.MimeType)
- require.EqualValues(t, 5, cached.Size)
- cached.Close()
-
- _, err = loadFromBase64("not-base64", "")
- require.Error(t, err)
- }
-
- func TestDetectFileType(t *testing.T) {
- require.Equal(t, types.FileTypeImage, DetectFileType("image/webp"))
- require.Equal(t, types.FileTypeAudio, DetectFileType("audio/mpeg"))
- require.Equal(t, types.FileTypeVideo, DetectFileType("video/mp4"))
- require.Equal(t, types.FileTypeFile, DetectFileType("application/pdf"))
- }
|