|
@@ -17,10 +17,12 @@ import (
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
|
|
"github.com/imgproxy/imgproxy/v3/config"
|
|
|
+ "github.com/imgproxy/imgproxy/v3/fetcher"
|
|
|
"github.com/imgproxy/imgproxy/v3/httpheaders"
|
|
|
"github.com/imgproxy/imgproxy/v3/ierrors"
|
|
|
"github.com/imgproxy/imgproxy/v3/imagetype"
|
|
|
"github.com/imgproxy/imgproxy/v3/testutil"
|
|
|
+ "github.com/imgproxy/imgproxy/v3/transport"
|
|
|
)
|
|
|
|
|
|
type ImageDataTestSuite struct {
|
|
@@ -28,10 +30,11 @@ type ImageDataTestSuite struct {
|
|
|
|
|
|
server *httptest.Server
|
|
|
|
|
|
- status int
|
|
|
- data []byte
|
|
|
- header http.Header
|
|
|
- check func(*http.Request)
|
|
|
+ status int
|
|
|
+ data []byte
|
|
|
+ header http.Header
|
|
|
+ check func(*http.Request)
|
|
|
+ factory *Factory
|
|
|
|
|
|
defaultData []byte
|
|
|
}
|
|
@@ -40,8 +43,6 @@ func (s *ImageDataTestSuite) SetupSuite() {
|
|
|
config.Reset()
|
|
|
config.ClientKeepAliveTimeout = 0
|
|
|
|
|
|
- Init()
|
|
|
-
|
|
|
f, err := os.Open("../testdata/test1.jpg")
|
|
|
s.Require().NoError(err)
|
|
|
defer f.Close()
|
|
@@ -68,6 +69,20 @@ func (s *ImageDataTestSuite) SetupSuite() {
|
|
|
rw.WriteHeader(s.status)
|
|
|
rw.Write(data)
|
|
|
}))
|
|
|
+
|
|
|
+ ctr, err := transport.LoadFromEnv(transport.NewDefaultConfig())
|
|
|
+ s.Require().NoError(err)
|
|
|
+
|
|
|
+ ts, err := transport.New(ctr)
|
|
|
+ s.Require().NoError(err)
|
|
|
+
|
|
|
+ c, err := fetcher.LoadFromEnv(fetcher.NewDefaultConfig())
|
|
|
+ s.Require().NoError(err)
|
|
|
+
|
|
|
+ fetcher, err := fetcher.New(ts, c)
|
|
|
+ s.Require().NoError(err)
|
|
|
+
|
|
|
+ s.factory = NewFactory(fetcher)
|
|
|
}
|
|
|
|
|
|
func (s *ImageDataTestSuite) TearDownSuite() {
|
|
@@ -84,10 +99,11 @@ func (s *ImageDataTestSuite) SetupTest() {
|
|
|
|
|
|
s.header = http.Header{}
|
|
|
s.header.Set("Content-Type", "image/jpeg")
|
|
|
+
|
|
|
}
|
|
|
|
|
|
func (s *ImageDataTestSuite) TestDownloadStatusOK() {
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().NoError(err)
|
|
|
s.Require().NotNil(imgdata)
|
|
@@ -154,7 +170,7 @@ func (s *ImageDataTestSuite) TestDownloadStatusPartialContent() {
|
|
|
s.Run(tc.name, func() {
|
|
|
s.header.Set("Content-Range", tc.contentRange)
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
if tc.expectErr {
|
|
|
s.Require().Error(err)
|
|
@@ -174,7 +190,7 @@ func (s *ImageDataTestSuite) TestDownloadStatusNotFound() {
|
|
|
s.data = []byte("Not Found")
|
|
|
s.header.Set("Content-Type", "text/plain")
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(404, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -186,7 +202,7 @@ func (s *ImageDataTestSuite) TestDownloadStatusForbidden() {
|
|
|
s.data = []byte("Forbidden")
|
|
|
s.header.Set("Content-Type", "text/plain")
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(404, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -198,7 +214,7 @@ func (s *ImageDataTestSuite) TestDownloadStatusInternalServerError() {
|
|
|
s.data = []byte("Internal Server Error")
|
|
|
s.header.Set("Content-Type", "text/plain")
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(500, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -212,7 +228,7 @@ func (s *ImageDataTestSuite) TestDownloadUnreachable() {
|
|
|
|
|
|
serverURL := fmt.Sprintf("http://%s", l.Addr().String())
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), serverURL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), serverURL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(500, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -222,7 +238,7 @@ func (s *ImageDataTestSuite) TestDownloadUnreachable() {
|
|
|
func (s *ImageDataTestSuite) TestDownloadInvalidImage() {
|
|
|
s.data = []byte("invalid")
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(422, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -232,7 +248,7 @@ func (s *ImageDataTestSuite) TestDownloadInvalidImage() {
|
|
|
func (s *ImageDataTestSuite) TestDownloadSourceAddressNotAllowed() {
|
|
|
config.AllowLoopbackSourceAddresses = false
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(404, ierrors.Wrap(err, 0).StatusCode())
|
|
@@ -240,10 +256,11 @@ func (s *ImageDataTestSuite) TestDownloadSourceAddressNotAllowed() {
|
|
|
}
|
|
|
|
|
|
func (s *ImageDataTestSuite) TestDownloadImageFileTooLarge() {
|
|
|
- config.MaxSrcFileSize = 1
|
|
|
-
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{
|
|
|
+ MaxSrcFileSize: 1,
|
|
|
+ })
|
|
|
|
|
|
+ fmt.Println(err)
|
|
|
s.Require().Error(err)
|
|
|
s.Require().Equal(422, ierrors.Wrap(err, 0).StatusCode())
|
|
|
s.Require().Nil(imgdata)
|
|
@@ -261,7 +278,7 @@ func (s *ImageDataTestSuite) TestDownloadGzip() {
|
|
|
s.data = buf.Bytes()
|
|
|
s.header.Set("Content-Encoding", "gzip")
|
|
|
|
|
|
- imgdata, _, err := DownloadSync(context.Background(), s.server.URL, "Test image", DefaultDownloadOptions())
|
|
|
+ imgdata, _, err := s.factory.DownloadSync(context.Background(), s.server.URL, "Test image", DownloadOptions{})
|
|
|
|
|
|
s.Require().NoError(err)
|
|
|
s.Require().NotNil(imgdata)
|
|
@@ -270,7 +287,7 @@ func (s *ImageDataTestSuite) TestDownloadGzip() {
|
|
|
}
|
|
|
|
|
|
func (s *ImageDataTestSuite) TestFromFile() {
|
|
|
- imgdata, err := NewFromPath("../testdata/test1.jpg")
|
|
|
+ imgdata, err := s.factory.NewFromPath("../testdata/test1.jpg")
|
|
|
|
|
|
s.Require().NoError(err)
|
|
|
s.Require().NotNil(imgdata)
|
|
@@ -281,7 +298,7 @@ func (s *ImageDataTestSuite) TestFromFile() {
|
|
|
func (s *ImageDataTestSuite) TestFromBase64() {
|
|
|
b64 := base64.StdEncoding.EncodeToString(s.defaultData)
|
|
|
|
|
|
- imgdata, err := NewFromBase64(b64)
|
|
|
+ imgdata, err := s.factory.NewFromBase64(b64)
|
|
|
|
|
|
s.Require().NoError(err)
|
|
|
s.Require().NotNil(imgdata)
|