diff --git a/DevProxy.Integration.Tests/ApiCenterClientTests.cs b/DevProxy.Integration.Tests/ApiCenterClientTests.cs index 7c27ec1b..b561ef53 100644 --- a/DevProxy.Integration.Tests/ApiCenterClientTests.cs +++ b/DevProxy.Integration.Tests/ApiCenterClientTests.cs @@ -10,6 +10,8 @@ namespace DevProxy.Integration.Tests; public sealed class ApiCenterClientTests { + private const string VariableName = "DEVPROXY_TEST_APICENTER_SUBSCRIPTION_ID"; + [Theory] [InlineData("subscriptionId")] [InlineData("resourceGroupName")] @@ -30,4 +32,42 @@ public void Constructor_MissingSetting_ErrorUsesConfigKeyName(string missingKey) Assert.Equal($"Specify {missingKey} in the configuration.", ex.Message); } + + [Fact] + public void Constructor_UnsetEnvironmentVariable_Throws() + { + Environment.SetEnvironmentVariable(VariableName, null); + + var ex = Assert.Throws(() => CreateClient($"@{VariableName}")); + + Assert.Contains(VariableName, ex.Message, StringComparison.Ordinal); + Assert.Contains("subscriptionId", ex.Message, StringComparison.Ordinal); + } + + [Fact] + public void Constructor_SetEnvironmentVariable_UsesItsValue() + { + Environment.SetEnvironmentVariable(VariableName, "00000000-0000-0000-0000-000000000000"); + try + { + var configuration = NewConfiguration($"@{VariableName}"); + using var client = new ApiCenterClient(configuration, NullLogger.Instance); + + Assert.Equal("00000000-0000-0000-0000-000000000000", configuration.SubscriptionId); + } + finally + { + Environment.SetEnvironmentVariable(VariableName, null); + } + } + + private static ApiCenterClient CreateClient(string subscriptionId) => + new(NewConfiguration(subscriptionId), NullLogger.Instance); + + private static ApiCenterClientConfiguration NewConfiguration(string subscriptionId) => new() + { + SubscriptionId = subscriptionId, + ResourceGroupName = "rg", + ServiceName = "svc" + }; } diff --git a/DevProxy.Plugins/ApiCenter/ApiCenterClient.cs b/DevProxy.Plugins/ApiCenter/ApiCenterClient.cs index f267482d..7cb5fd02 100644 --- a/DevProxy.Plugins/ApiCenter/ApiCenterClient.cs +++ b/DevProxy.Plugins/ApiCenter/ApiCenterClient.cs @@ -56,22 +56,10 @@ internal ApiCenterClient(ApiCenterClientConfiguration configuration, ILogger GetAccessTokenAsync(CancellationToken cancellationToken) => _authenticationHandler.GetAccessTokenAsync(cancellationToken);