Browse Source

Use custom HTTP client with Azure; Fix Azure transport tests

DarthSim 1 year ago
parent
commit
3b252b83e4
2 changed files with 19 additions and 3 deletions
  1. 15 2
      transport/azure/azure.go
  2. 4 1
      transport/azure/azure_test.go

+ 15 - 2
transport/azure/azure.go

@@ -10,6 +10,7 @@ import (
 	"strings"
 	"strings"
 
 
 	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
 	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
+	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
 	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
 	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob"
 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob"
@@ -17,6 +18,7 @@ import (
 
 
 	"github.com/imgproxy/imgproxy/v3/config"
 	"github.com/imgproxy/imgproxy/v3/config"
 	"github.com/imgproxy/imgproxy/v3/httprange"
 	"github.com/imgproxy/imgproxy/v3/httprange"
+	defaultTransport "github.com/imgproxy/imgproxy/v3/transport"
 	"github.com/imgproxy/imgproxy/v3/transport/notmodified"
 	"github.com/imgproxy/imgproxy/v3/transport/notmodified"
 )
 )
 
 
@@ -46,20 +48,31 @@ func New() (http.RoundTripper, error) {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+	trans, err := defaultTransport.New(false)
+	if err != nil {
+		return nil, err
+	}
+
+	opts := azblob.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Transport: &http.Client{Transport: trans},
+		},
+	}
+
 	if len(config.ABSKey) > 0 {
 	if len(config.ABSKey) > 0 {
 		sharedKeyCredential, err = azblob.NewSharedKeyCredential(config.ABSName, config.ABSKey)
 		sharedKeyCredential, err = azblob.NewSharedKeyCredential(config.ABSName, config.ABSKey)
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
 
 
-		client, err = azblob.NewClientWithSharedKeyCredential(endpointURL.String(), sharedKeyCredential, nil)
+		client, err = azblob.NewClientWithSharedKeyCredential(endpointURL.String(), sharedKeyCredential, &opts)
 	} else {
 	} else {
 		defaultAzureCredential, err = azidentity.NewDefaultAzureCredential(nil)
 		defaultAzureCredential, err = azidentity.NewDefaultAzureCredential(nil)
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
 
 
-		client, err = azblob.NewClient(endpointURL.String(), defaultAzureCredential, nil)
+		client, err = azblob.NewClient(endpointURL.String(), defaultAzureCredential, &opts)
 	}
 	}
 
 
 	if err != nil {
 	if err != nil {

+ 4 - 1
transport/azure/azure_test.go

@@ -28,10 +28,12 @@ func (s *AzureTestSuite) SetupSuite() {
 
 
 	logrus.SetOutput(os.Stdout)
 	logrus.SetOutput(os.Stdout)
 
 
+	config.IgnoreSslVerification = true
+
 	s.etag = "testetag"
 	s.etag = "testetag"
 	s.lastModified, _ = time.Parse(http.TimeFormat, "Wed, 21 Oct 2015 07:28:00 GMT")
 	s.lastModified, _ = time.Parse(http.TimeFormat, "Wed, 21 Oct 2015 07:28:00 GMT")
 
 
-	s.server = httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
+	s.server = httptest.NewTLSServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
 		require.Equal(s.T(), "/test/foo/test.png", r.URL.Path)
 		require.Equal(s.T(), "/test/foo/test.png", r.URL.Path)
 
 
 		rw.Header().Set("Etag", s.etag)
 		rw.Header().Set("Etag", s.etag)
@@ -52,6 +54,7 @@ func (s *AzureTestSuite) SetupSuite() {
 
 
 func (s *AzureTestSuite) TearDownSuite() {
 func (s *AzureTestSuite) TearDownSuite() {
 	s.server.Close()
 	s.server.Close()
+	config.IgnoreSslVerification = false
 }
 }
 
 
 func (s *AzureTestSuite) TestRoundTripWithETagDisabledReturns200() {
 func (s *AzureTestSuite) TestRoundTripWithETagDisabledReturns200() {