frostfs-http-gw/internal/handler/reader_test.go
Nikita Zinkevich a9065038c5
Some checks failed
/ DCO (pull_request) Failing after 1m11s
/ Builds (pull_request) Successful in 1m15s
/ Vulncheck (pull_request) Successful in 1m36s
/ Lint (pull_request) Successful in 2m20s
/ Tests (pull_request) Successful in 1m17s
[#142] Fix multipart-objects download
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
(cherry picked from commit 495f745535)
2024-10-18 12:35:26 +03:00

48 lines
1 KiB
Go

//go:build !integration
package handler
import (
"io"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestDetector(t *testing.T) {
txtContentType := "text/plain; charset=utf-8"
sb := strings.Builder{}
for i := 0; i < 10; i++ {
sb.WriteString("Some txt content. Content-Type must be detected properly by detector.")
}
for _, tc := range []struct {
Name string
ContentType string
Expected string
}{
{
Name: "less than 512b",
ContentType: txtContentType,
Expected: sb.String()[:256],
},
{
Name: "more than 512b",
ContentType: txtContentType,
Expected: sb.String(),
},
} {
t.Run(tc.Name, func(t *testing.T) {
contentType, data, err := readContentType(uint64(len(tc.Expected)),
func(uint64) (io.Reader, error) {
return strings.NewReader(tc.Expected), nil
},
)
require.NoError(t, err)
require.Equal(t, tc.ContentType, contentType)
require.True(t, strings.HasPrefix(tc.Expected, string(data)))
})
}
}