diff --git a/sdk/environments/from_endpoint_test.go b/sdk/environments/from_endpoint_test.go index b3e4c061407..f1a83a3decf 100644 --- a/sdk/environments/from_endpoint_test.go +++ b/sdk/environments/from_endpoint_test.go @@ -17,6 +17,14 @@ func TestFromEndpoint_Public(t *testing.T) { if actual.Name != "AzureCloud" { t.Fatalf("expected the Environment name to be `AzureCloud` but got %q", actual.Name) } + + endpoint, ok := actual.ResourceManager.Endpoint() + if !ok { + t.Fatalf("refreshing MetaData from Endpoint: no `ResourceManager` endpoint was defined") + } + if *endpoint != "https://management.azure.com" { + t.Fatalf("expected the ResourceManager endpoint to be `https://management.azure.com` but got %q", *endpoint) + } } func TestFromEndpoint_USGovernment(t *testing.T) { @@ -28,4 +36,12 @@ func TestFromEndpoint_USGovernment(t *testing.T) { if actual.Name != "AzureUSGovernment" { t.Fatalf("expected the Environment name to be `AzureUSGovernment` but got %q", actual.Name) } + + endpoint, ok := actual.ResourceManager.Endpoint() + if !ok { + t.Fatalf("refreshing MetaData from Endpoint: no `ResourceManager` endpoint was defined") + } + if *endpoint != "https://management.usgovcloudapi.net" { + t.Fatalf("expected the ResourceManager endpoint to be `https://management.usgovcloudapi.net` but got %q", *endpoint) + } } diff --git a/sdk/internal/metadata/client.go b/sdk/internal/metadata/client.go index c9bc16f7226..e5399636768 100644 --- a/sdk/internal/metadata/client.go +++ b/sdk/internal/metadata/client.go @@ -14,6 +14,7 @@ import ( "net" "net/http" "runtime" + "strings" "time" ) @@ -115,7 +116,9 @@ func (c *Client) GetMetaData(ctx context.Context) (*MetaData, error) { OSSRDBMS: normalizeResourceId(metadata.OssrDbmsResourceId), Synapse: normalizeResourceId(metadata.SynapseAnalyticsResourceId), }, - ResourceManagerEndpoint: metadata.ResourceManager, + // The resourceManager endpoint returned from the ARM metadata service is in an inconsistent format + // between clouds so sanitize it here to prevent downstream issues. + ResourceManagerEndpoint: strings.TrimRight(metadata.ResourceManager, "/"), }, nil } diff --git a/sdk/internal/metadata/client_test.go b/sdk/internal/metadata/client_test.go index ee53c7270e3..b8c367c3f0f 100644 --- a/sdk/internal/metadata/client_test.go +++ b/sdk/internal/metadata/client_test.go @@ -74,7 +74,7 @@ func TestGetMetaData(t *testing.T) { OSSRDBMS: "https://ossrdbms-aad.database.windows.net", Synapse: "https://dev.azuresynapse.net", }, - ResourceManagerEndpoint: "https://management.azure.com/", + ResourceManagerEndpoint: "https://management.azure.com", } m, err := client.GetMetaData(ctx)