From 6c18eaf74a4155481d97eac6c32bbd6e58e0a944 Mon Sep 17 00:00:00 2001 From: Michael <52096428+michaelmajgaard@users.noreply.github.com> Date: Fri, 24 May 2024 12:26:51 +0200 Subject: [PATCH] feat: IntegrationTestConfiguration - supply-default-azure-credentials (#320) --- .../TestCommon/documents/release-notes/release-notes.md | 4 ++++ .../Configuration/IntegrationTestConfigurationTests.cs | 9 ++------- .../Configuration/IConfigurationBuilderExtensions.cs | 5 +++-- .../Configuration/IntegrationTestConfiguration.cs | 9 +++++---- .../FunctionApp.TestCommon/FunctionApp.TestCommon.csproj | 2 +- source/TestCommon/source/TestCommon/TestCommon.csproj | 2 +- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/source/TestCommon/documents/release-notes/release-notes.md b/source/TestCommon/documents/release-notes/release-notes.md index 4634e3af4..28d9e8719 100644 --- a/source/TestCommon/documents/release-notes/release-notes.md +++ b/source/TestCommon/documents/release-notes/release-notes.md @@ -1,5 +1,9 @@ # TestCommon Release notes +## Version 5.2.1 + +- Extended `IntegrationTestConfiguration` with the option to pass in `DefaultAzureCredential` from the outside. + ## Version 5.2.0 - Changes to `SqlServerDatabaseManager`: diff --git a/source/TestCommon/source/FunctionApp.TestCommon.Tests/Integration/Configuration/IntegrationTestConfigurationTests.cs b/source/TestCommon/source/FunctionApp.TestCommon.Tests/Integration/Configuration/IntegrationTestConfigurationTests.cs index c9beacfbf..ea92c5ee3 100644 --- a/source/TestCommon/source/FunctionApp.TestCommon.Tests/Integration/Configuration/IntegrationTestConfigurationTests.cs +++ b/source/TestCommon/source/FunctionApp.TestCommon.Tests/Integration/Configuration/IntegrationTestConfigurationTests.cs @@ -19,14 +19,9 @@ namespace Energinet.DataHub.Core.FunctionApp.TestCommon.Tests.Integration.Configuration; -public class IntegrationTestConfigurationTests : IClassFixture +public class IntegrationTestConfigurationTests { - public IntegrationTestConfigurationTests(IntegrationTestConfiguration sut) - { - Sut = sut; - } - - public IntegrationTestConfiguration Sut { get; } + private IntegrationTestConfiguration Sut { get; } = new(); [Fact] public void Given_IdentityHasAccess_When_DatabricksSettings_Then_EachPropertyHasValue() diff --git a/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IConfigurationBuilderExtensions.cs b/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IConfigurationBuilderExtensions.cs index 8974f02c8..b1da917e2 100644 --- a/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IConfigurationBuilderExtensions.cs +++ b/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IConfigurationBuilderExtensions.cs @@ -28,14 +28,15 @@ public static class ConfigurationBuilderExtensions /// /// The configuration builder. /// KeyVault URL eg. https://myexamplekeyvault.vault.azure.net/ - public static IConfigurationBuilder AddAuthenticatedAzureKeyVault(this IConfigurationBuilder builder, string keyVaultUrl) + /// used for key vault authentication, if not supplied, a new will be created and used + public static IConfigurationBuilder AddAuthenticatedAzureKeyVault(this IConfigurationBuilder builder, string keyVaultUrl, DefaultAzureCredential? defaultAzureCredential = null) { if (string.IsNullOrEmpty(keyVaultUrl)) { throw new ArgumentException("Value cannot be null or empty.", nameof(keyVaultUrl)); } - var credential = new DefaultAzureCredential(); + var credential = defaultAzureCredential ?? new DefaultAzureCredential(); builder.AddAzureKeyVault(new Uri(keyVaultUrl), credential); return builder; diff --git a/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IntegrationTestConfiguration.cs b/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IntegrationTestConfiguration.cs index 4598c096a..8ea241fc9 100644 --- a/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IntegrationTestConfiguration.cs +++ b/source/TestCommon/source/FunctionApp.TestCommon/Configuration/IntegrationTestConfiguration.cs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using Azure.Identity; using Microsoft.Extensions.Configuration; namespace Energinet.DataHub.Core.FunctionApp.TestCommon.Configuration; @@ -27,9 +28,9 @@ namespace Energinet.DataHub.Core.FunctionApp.TestCommon.Configuration; /// public class IntegrationTestConfiguration { - public IntegrationTestConfiguration() + public IntegrationTestConfiguration(DefaultAzureCredential? defaultAzureCredential = null) { - Configuration = BuildKeyVaultConfigurationRoot(); + Configuration = BuildKeyVaultConfigurationRoot(defaultAzureCredential); #pragma warning disable CS0618 // Type or member is obsolete ApplicationInsightsInstrumentationKey = Configuration.GetValue("AZURE-APPINSIGHTS-INSTRUMENTATIONKEY"); @@ -90,7 +91,7 @@ public IntegrationTestConfiguration() /// public DatabricksSettings DatabricksSettings { get; } - private static IConfigurationRoot BuildKeyVaultConfigurationRoot() + private static IConfigurationRoot BuildKeyVaultConfigurationRoot(DefaultAzureCredential? defaultAzureCredential) { var integrationtestConfiguration = new ConfigurationBuilder() .AddJsonFile("integrationtest.local.settings.json", optional: true) @@ -101,7 +102,7 @@ private static IConfigurationRoot BuildKeyVaultConfigurationRoot() GuardKeyVaultUrl(keyVaultUrl); return new ConfigurationBuilder() - .AddAuthenticatedAzureKeyVault(keyVaultUrl) + .AddAuthenticatedAzureKeyVault(keyVaultUrl, defaultAzureCredential) .Build(); } diff --git a/source/TestCommon/source/FunctionApp.TestCommon/FunctionApp.TestCommon.csproj b/source/TestCommon/source/FunctionApp.TestCommon/FunctionApp.TestCommon.csproj index 12761db87..2b81c046b 100644 --- a/source/TestCommon/source/FunctionApp.TestCommon/FunctionApp.TestCommon.csproj +++ b/source/TestCommon/source/FunctionApp.TestCommon/FunctionApp.TestCommon.csproj @@ -31,7 +31,7 @@ limitations under the License. Energinet.DataHub.Core.FunctionApp.TestCommon - 5.2.0$(VersionSuffix) + 5.2.1$(VersionSuffix) FunctionApp TestCommon library Energinet-DataHub Energinet-DataHub diff --git a/source/TestCommon/source/TestCommon/TestCommon.csproj b/source/TestCommon/source/TestCommon/TestCommon.csproj index 1a779f3d4..d2273b16d 100644 --- a/source/TestCommon/source/TestCommon/TestCommon.csproj +++ b/source/TestCommon/source/TestCommon/TestCommon.csproj @@ -31,7 +31,7 @@ limitations under the License. Energinet.DataHub.Core.TestCommon - 5.2.0$(VersionSuffix) + 5.2.1$(VersionSuffix) TestCommon library Energinet-DataHub Energinet-DataHub