|
@@ -1,126 +0,0 @@
|
|
|
-package contentdisposition
|
|
|
-
|
|
|
-import (
|
|
|
- "net/url"
|
|
|
- "testing"
|
|
|
-
|
|
|
- "github.com/stretchr/testify/require"
|
|
|
-)
|
|
|
-
|
|
|
-func TestStemExt(t *testing.T) {
|
|
|
- // Test cases for stem and ext detection
|
|
|
- tests := []struct {
|
|
|
- name string
|
|
|
- url string
|
|
|
- stem string
|
|
|
- ext string
|
|
|
- fn func(StemExt) (string, string)
|
|
|
- }{
|
|
|
- {
|
|
|
- name: "BasicURL",
|
|
|
- url: "http://example.com/test.jpg",
|
|
|
- stem: "test",
|
|
|
- ext: ".jpg",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return se.StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "EmptyFilename",
|
|
|
- url: "http://example.com/path/to/",
|
|
|
- stem: "",
|
|
|
- ext: "",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return se.StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "EmptyFilenameWithContentType",
|
|
|
- url: "http://example.com/path/to/",
|
|
|
- stem: "",
|
|
|
- ext: ".png",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).SetExtFromContentTypeIfEmpty("image/png").StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "EmptyFilenameWithContentTypeAndOverride",
|
|
|
- url: "http://example.com/path/to/",
|
|
|
- stem: "example",
|
|
|
- ext: ".png",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).OverrideStem("example").SetExtFromContentTypeIfEmpty("image/png").StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "EmptyFilenameWithOverride",
|
|
|
- url: "http://example.com/path/to/",
|
|
|
- stem: "example",
|
|
|
- ext: ".jpg",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).OverrideStem("example").OverrideExt(".jpg").StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "PresentFilenameWithOverride",
|
|
|
- url: "http://example.com/path/to/face",
|
|
|
- stem: "face",
|
|
|
- ext: ".jpg",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).OverrideExt(".jpg").StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "PresentFilenameWithOverride",
|
|
|
- url: "http://example.com/path/to/123",
|
|
|
- stem: "face",
|
|
|
- ext: ".jpg",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).OverrideStem("face").OverrideExt(".jpg").StemExt()
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "EmptyFilenameWithFallback",
|
|
|
- url: "http://example.com/path/to/",
|
|
|
- stem: "image",
|
|
|
- ext: ".png",
|
|
|
- fn: func(se StemExt) (string, string) {
|
|
|
- return (&se).SetExtFromContentTypeIfEmpty("image/png").StemExtWithFallback()
|
|
|
- },
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- for _, tc := range tests {
|
|
|
- t.Run(tc.name, func(t *testing.T) {
|
|
|
- u, err := url.Parse(tc.url)
|
|
|
- require.NoError(t, err)
|
|
|
-
|
|
|
- se := FromURL(u)
|
|
|
- stem, ext := tc.fn(se)
|
|
|
-
|
|
|
- require.Equal(t, tc.stem, stem)
|
|
|
- require.Equal(t, tc.ext, ext)
|
|
|
- })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func BenchmarkFromURL(b *testing.B) {
|
|
|
- u, _ := url.Parse("http://example.com/path/to/test.jpg")
|
|
|
-
|
|
|
- b.ResetTimer()
|
|
|
- for i := 0; i < b.N; i++ {
|
|
|
- se := FromURL(u)
|
|
|
- _, _ = se.StemExt()
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func BenchmarkMethodChaining(b *testing.B) {
|
|
|
- u, _ := url.Parse("http://example.com/path/to/")
|
|
|
-
|
|
|
- b.ResetTimer()
|
|
|
- for i := 0; i < b.N; i++ {
|
|
|
- se := FromURL(u)
|
|
|
- (&se).SetExtFromContentTypeIfEmpty("image/png").OverrideStem("example")
|
|
|
- _, _ = se.StemExtWithFallback()
|
|
|
- }
|
|
|
-}
|