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")) }