| File: AzureSqlDeploymentScriptTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Azure.Tests\Aspire.Hosting.Azure.Tests.csproj (Aspire.Hosting.Azure.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #pragma warning disable ASPIREAZURE003 using Aspire.Hosting.Utils; using static Aspire.Hosting.Utils.AzureManifestUtils; namespace Aspire.Hosting.Azure.Tests; public class AzureSqlDeploymentScriptTests { [Fact] public async Task SqlWithPrivateEndpoint_AutoCreatesBothSubnetAndStorage() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); peSubnet.AddPrivateEndpoint(sqlServer); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_ExplicitSubnet_AutoCreatesStorage() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var aciSubnet = vnet.AddSubnet("acisubnet", "10.0.2.0/29"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); peSubnet.AddPrivateEndpoint(sqlServer); sqlServer.WithAdminDeploymentScriptSubnet(aciSubnet); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_ExplicitStorage_AutoCreatesSubnet() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); peSubnet.AddPrivateEndpoint(sqlServer); var storage = builder.AddAzureStorage("depscriptstorage"); sqlServer.WithAdminDeploymentScriptStorage(storage); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_BothExplicitSubnetAndStorage() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var aciSubnet = vnet.AddSubnet("acisubnet", "10.0.2.0/29"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); peSubnet.AddPrivateEndpoint(sqlServer); sqlServer.WithAdminDeploymentScriptSubnet(aciSubnet); var storage = builder.AddAzureStorage("depscriptstorage"); sqlServer.WithAdminDeploymentScriptStorage(storage); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_StorageBeforePrivateEndpoint() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); // Call WithAdminDeploymentScriptStorage BEFORE AddPrivateEndpoint var storage = builder.AddAzureStorage("depscriptstorage"); sqlServer.WithAdminDeploymentScriptStorage(storage); peSubnet.AddPrivateEndpoint(sqlServer); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_SubnetBeforePrivateEndpoint() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var aciSubnet = vnet.AddSubnet("acisubnet", "10.0.2.0/29"); var sqlServer = builder.AddAzureSqlServer("sql"); var db = sqlServer.AddDatabase("db"); // Call WithAdminDeploymentScriptSubnet BEFORE AddPrivateEndpoint sqlServer.WithAdminDeploymentScriptSubnet(aciSubnet); peSubnet.AddPrivateEndpoint(sqlServer); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } [Fact] public async Task SqlWithPrivateEndpoint_ClearDefaultRoleAssignments_RemovesDeploymentScriptInfra() { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); builder.AddAzureContainerAppEnvironment("env"); var vnet = builder.AddAzureVirtualNetwork("myvnet"); var peSubnet = vnet.AddSubnet("pesubnet", "10.0.1.0/24"); var sqlServer = builder.AddAzureSqlServer("sql") .ClearDefaultRoleAssignments(); var db = sqlServer.AddDatabase("db"); peSubnet.AddPrivateEndpoint(sqlServer); builder.AddProject<Project>("api", launchProfileName: null) .WithReference(db); await VerifyAllAzureBicep(builder); } private sealed class Project : IProjectMetadata { public string ProjectPath => "project"; } }