| File: Publishing\ExistingSecretStoreBicepTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Radius.Tests\Aspire.Hosting.Radius.Tests.csproj (Aspire.Hosting.Radius.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 ASPIRERADIUS006 // Experimental: the secret-store APIs are under test. #pragma warning disable ASPIREPIPELINES001 using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Radius.Publishing; using Aspire.Hosting.Utils; using Microsoft.Extensions.DependencyInjection; namespace Aspire.Hosting.Radius.Tests.Publishing; public class ExistingSecretStoreBicepTests { private static string GenerateStoreBicep( string environmentNamespace, Action<IResourceBuilder<RadiusEnvironmentResource>> configure) { using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish); var env = builder.AddRadiusEnvironment("radius").WithNamespace(environmentNamespace); configure(env); using var app = builder.Build(); var model = app.Services.GetRequiredService<DistributedApplicationModel>(); var radiusEnv = model.Resources.OfType<RadiusEnvironmentResource>().First(); RadiusTestHelper.AttachDeploymentTargets(radiusEnv, model); return new RadiusBicepPublishingContext(radiusEnv).GenerateBicep(model); } [Fact] public void WithExistingSecret_QualifiedName_EmitsResourceAndEmptyKeys() { var bicep = GenerateStoreBicep("default", env => env.WithSecretStore("tls-cert", RadiusSecretStoreType.Certificate, s => s.WithExistingSecret("app/tls-cert", "tls.crt", "tls.key"))); Assert.Contains("Applications.Core/secretStores@2023-10-01-preview", bicep); Assert.Contains("type: 'certificate'", bicep); Assert.Contains("resource: 'app/tls-cert'", bicep); Assert.Contains("tls.crt", bicep); Assert.Contains("tls.key", bicep); // No secret value / @secure() param flows through Aspire for a referenced secret. Assert.DoesNotContain("@secure()", bicep); } [Fact] public void WithExistingSecret_BareName_DefaultsNamespaceFromEnvironment() { var bicep = GenerateStoreBicep("team-a", env => env.WithSecretStore("tls-cert", RadiusSecretStoreType.Certificate, s => s.WithExistingSecret("tls-cert", "tls.crt", "tls.key"))); // A bare name is prefixed with the owning environment's namespace. Assert.Contains("resource: 'team-a/tls-cert'", bicep); } }