diff --git a/state/azure/blobstorage/blobstorage.go b/state/azure/blobstorage/blobstorage.go index 90677ac9d..09485cf0b 100644 --- a/state/azure/blobstorage/blobstorage.go +++ b/state/azure/blobstorage/blobstorage.go @@ -40,6 +40,7 @@ import ( "context" b64 "encoding/base64" "fmt" + "net" "net/url" "strings" @@ -98,17 +99,21 @@ func (r *StateStore) Init(metadata state.Metadata) error { } p := azblob.NewPipeline(credential, options) - var containerURL azblob.ContainerURL + var URL *url.URL customEndpoint, ok := metadata.Properties[endpointKey] if ok && customEndpoint != "" { - URL, parseErr := url.Parse(fmt.Sprintf("%s/%s/%s", customEndpoint, meta.accountName, meta.containerName)) - if parseErr != nil { - return parseErr - } - containerURL = azblob.NewContainerURL(*URL, p) + URL, err = url.Parse(fmt.Sprintf("%s/%s/%s", customEndpoint, meta.accountName, meta.containerName)) } else { - URL, _ := url.Parse(fmt.Sprintf("https://%s.blob.%s/%s", meta.accountName, env.StorageEndpointSuffix, meta.containerName)) - containerURL = azblob.NewContainerURL(*URL, p) + URL, err = url.Parse(fmt.Sprintf("https://%s.blob.%s/%s", meta.accountName, env.StorageEndpointSuffix, meta.containerName)) + } + if err != nil { + return err + } + containerURL := azblob.NewContainerURL(*URL, p) + + _, err = net.LookupHost(URL.Hostname()) + if err != nil { + return err } ctx := context.Background() diff --git a/state/azure/blobstorage/blobstorage_test.go b/state/azure/blobstorage/blobstorage_test.go index 775cc4bb1..5ccd6108e 100644 --- a/state/azure/blobstorage/blobstorage_test.go +++ b/state/azure/blobstorage/blobstorage_test.go @@ -46,6 +46,16 @@ func TestInit(t *testing.T) { assert.NotNil(t, err) assert.Equal(t, err, fmt.Errorf("missing or empty accountName field from metadata")) }) + + t.Run("Init with invalid account name", func(t *testing.T) { + m.Properties = map[string]string{ + "accountName": "invalid-account", + "accountKey": "e+Dnvl8EOxYxV94nurVaRQ==", + "containerName": "dapr", + } + err := s.Init(m) + assert.NotNil(t, err) + }) } func TestGetBlobStorageMetaData(t *testing.T) {