diff --git a/src/Achieve.Aspire.AzureProvisioning/CosmosDb.cs b/src/Achieve.Aspire.AzureProvisioning/CosmosDb.cs index 67f3f26..1ba78dd 100644 --- a/src/Achieve.Aspire.AzureProvisioning/CosmosDb.cs +++ b/src/Achieve.Aspire.AzureProvisioning/CosmosDb.cs @@ -18,6 +18,8 @@ public static class CosmosDbExtensions /// public static IResourceBuilder AddAzureCosmosDbNoSqlAccount(this IDistributedApplicationBuilder builder, string name, Action configure) { + builder.AddAzureProvisioning(); + var accountResource = new CosmosDbAccountResource(name); var options = new CosmosDbAccountOptions(accountResource); configure(options); diff --git a/src/Achieve.Aspire.AzureProvisioning/RoleAssignment.cs b/src/Achieve.Aspire.AzureProvisioning/RoleAssignment.cs index 897a726..34bc81d 100644 --- a/src/Achieve.Aspire.AzureProvisioning/RoleAssignment.cs +++ b/src/Achieve.Aspire.AzureProvisioning/RoleAssignment.cs @@ -23,6 +23,8 @@ public static class RoleAssignmentExtensions { return default; } + + builder.AddAzureProvisioning(); var bicepFileOutput = BicepFileOutput.GetAspireFileOutput(); bicepFileOutput.AddParameter(new BicepParameter("resourceName", BicepSupportedType.String, Description: "The target resource.")); diff --git a/tests/Achieve.Aspire.AzureProvisioning.Tests/CosmosDbTests.cs b/tests/Achieve.Aspire.AzureProvisioning.Tests/CosmosDbTests.cs index 3cadb4f..c10bafb 100644 --- a/tests/Achieve.Aspire.AzureProvisioning.Tests/CosmosDbTests.cs +++ b/tests/Achieve.Aspire.AzureProvisioning.Tests/CosmosDbTests.cs @@ -2,6 +2,7 @@ using Achieve.Aspire.AzureProvisioning.Bicep.CosmosDb; using Achieve.Aspire.AzureProvisioning.Tests.Utils; using Aspire.Hosting; +using Aspire.Hosting.Azure; using Azure.ResourceManager.Models; using Xunit.Abstractions; @@ -9,6 +10,14 @@ namespace Achieve.Aspire.AzureProvisioning.Tests; public class CosmosDbTests(ITestOutputHelper output) { + [Fact] + public void AzureProvisionerIsAdded() + { + using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); + var cosmos = builder.AddAzureCosmosDbNoSqlAccount("cosmos", acc => {}); + Assert.Contains(builder.Services, m => m.ServiceKey != null && m.ServiceKey as Type == typeof(AzureBicepResource)); + } + [Fact] public async Task BasicCosmosDbGeneratesCorrectly() { diff --git a/tests/Achieve.Aspire.AzureProvisioning.Tests/IdentityTests.cs b/tests/Achieve.Aspire.AzureProvisioning.Tests/IdentityTests.cs index d2bf663..c867a5a 100644 --- a/tests/Achieve.Aspire.AzureProvisioning.Tests/IdentityTests.cs +++ b/tests/Achieve.Aspire.AzureProvisioning.Tests/IdentityTests.cs @@ -1,6 +1,7 @@ using System.Text.Json; using Achieve.Aspire.AzureProvisioning.Tests.Utils; using Aspire.Hosting; +using Aspire.Hosting.Azure; using Azure.ResourceManager.Models; using Xunit.Abstractions; @@ -8,6 +9,14 @@ namespace Achieve.Aspire.AzureProvisioning.Tests; public class IdentityTests(ITestOutputHelper output) { + [Fact] + public void AzureProvisionerIsAdded() + { + using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); + var cosmos = builder.AddManagedIdentity("testid"); + Assert.Contains(builder.Services, m => m.ServiceKey != null && m.ServiceKey as Type == typeof(AzureBicepResource)); + } + [Fact] public async Task ManagedIdentityGetsAddedForDeployment() { diff --git a/tests/Achieve.Aspire.AzureProvisioning.Tests/KeyVaultTests.cs b/tests/Achieve.Aspire.AzureProvisioning.Tests/KeyVaultTests.cs index be15867..8aa976d 100644 --- a/tests/Achieve.Aspire.AzureProvisioning.Tests/KeyVaultTests.cs +++ b/tests/Achieve.Aspire.AzureProvisioning.Tests/KeyVaultTests.cs @@ -1,6 +1,7 @@ using System.Text.Json; using Achieve.Aspire.AzureProvisioning.Tests.Utils; using Aspire.Hosting; +using Aspire.Hosting.Azure; using Azure.ResourceManager.Models; using Bicep.Core.Diagnostics; using Bicep.Core.Parsing; @@ -11,6 +12,14 @@ namespace Achieve.Aspire.AzureProvisioning.Tests; public class KeyVaultTests(ITestOutputHelper output) { + [Fact] + public void AzureProvisionerIsAdded() + { + using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); + var kv = builder.AddZtAzureKeyVault("kv", _ => { }); + Assert.Contains(builder.Services, m => m.ServiceKey != null && m.ServiceKey as Type == typeof(AzureBicepResource)); + } + [Fact] public async Task ZeroTrustKeyVaultCanHaveManagedIdentityAndSecrets() { diff --git a/tests/Achieve.Aspire.AzureProvisioning.Tests/RoleAssignmentTests.cs b/tests/Achieve.Aspire.AzureProvisioning.Tests/RoleAssignmentTests.cs index d225f83..e673463 100644 --- a/tests/Achieve.Aspire.AzureProvisioning.Tests/RoleAssignmentTests.cs +++ b/tests/Achieve.Aspire.AzureProvisioning.Tests/RoleAssignmentTests.cs @@ -1,6 +1,7 @@ using System.Text.Json; using Achieve.Aspire.AzureProvisioning.Tests.Utils; using Aspire.Hosting; +using Aspire.Hosting.Azure; using Azure.ResourceManager.Models; using Xunit.Abstractions; @@ -8,6 +9,16 @@ namespace Achieve.Aspire.AzureProvisioning.Tests; public class RoleAssignmentTests(ITestOutputHelper output) { + [Fact] + public void AzureProvisionerIsAdded() + { + using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); + var id = builder.AddManagedIdentity("testid"); + var kv = builder.AddZtAzureKeyVault("kv", o => { }); + var ra = builder.AddAzureRoleAssignment(kv, id, KeyVaultRoles.CertificateUser); + Assert.Contains(builder.Services, m => m.ServiceKey != null && m.ServiceKey as Type == typeof(AzureBicepResource)); + } + [Fact] public async Task RoleAssignmentGeneratesCorrectly() {