diff --git a/CommunityToolkit.Aspire.slnx b/CommunityToolkit.Aspire.slnx
index 2ca0360e0..a1c768323 100644
--- a/CommunityToolkit.Aspire.slnx
+++ b/CommunityToolkit.Aspire.slnx
@@ -81,6 +81,11 @@
+
+
+
+
+
@@ -161,6 +166,7 @@
+
@@ -181,6 +187,7 @@
+
@@ -208,6 +215,7 @@
+
@@ -228,6 +236,7 @@
+
diff --git a/Directory.Build.props b/Directory.Build.props
index d125e0932..c4a10bc5b 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -12,7 +12,7 @@
enable
9
- $(AspireMajorVersion).3.1
+ $(AspireMajorVersion).4.0
$(AspireVersion)
9.0.0
9.0.4
@@ -37,8 +37,8 @@
- 6
- 1
+ 7
+ 0
preview.1
$(AspireMajorVersion).$(ToolkitMinorVersion).$(ToolkitPatchVersion)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 965c646b7..93a899dd3 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -17,7 +17,7 @@
-
+
@@ -42,7 +42,7 @@
-
+
@@ -62,7 +62,7 @@
-
+
@@ -109,7 +109,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/CommunityToolkit.Aspire.Hosting.ActiveMQ/ActiveMQBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.ActiveMQ/ActiveMQBuilderExtensions.cs
index 6bf359ae7..f8575b96c 100644
--- a/src/CommunityToolkit.Aspire.Hosting.ActiveMQ/ActiveMQBuilderExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Hosting.ActiveMQ/ActiveMQBuilderExtensions.cs
@@ -154,10 +154,10 @@ private static IResourceBuilder WithJolokiaHealthCheck(
const int statusCode = 200;
const string endpointName = "web";
const string scheme = "http";
- EndpointReference endpoint = builder.Resource.GetEndpoint(endpointName);
- builder.ApplicationBuilder.Eventing.Subscribe((_, _) =>
+ builder.OnResourceEndpointsAllocated((resource, @event, ct) =>
{
+ var endpoint = resource.GetEndpoint(endpointName);
if (!endpoint.Exists)
{
throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
@@ -173,11 +173,12 @@ private static IResourceBuilder WithJolokiaHealthCheck(
Uri? uri = null;
string basicAuthentication = string.Empty;
- builder.ApplicationBuilder.Eventing.Subscribe(builder.Resource, async (_, ct) =>
+ builder.OnBeforeResourceStarted(async (resource, _, ct) =>
{
- Uri baseUri = new Uri(endpoint.Url, UriKind.Absolute);
- string userName = (await builder.Resource.UserNameReference.GetValueAsync(ct))!;
- string password = (await ((IValueProvider)builder.Resource.PasswordParameter).GetValueAsync(ct))!;
+ var endpoint = resource.GetEndpoint(endpointName);
+ Uri baseUri = new (endpoint.Url, UriKind.Absolute);
+ string userName = (await resource.UserNameReference.GetValueAsync(ct))!;
+ string password = (await resource.PasswordParameter.GetValueAsync(ct))!;
basicAuthentication = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes($"{userName}:{password}"));
uri = new UriBuilder(baseUri)
{
diff --git a/src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/MySqlBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/MySqlBuilderExtensions.cs
index 1ec6f3e02..332d69b7d 100644
--- a/src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/MySqlBuilderExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/MySqlBuilderExtensions.cs
@@ -135,7 +135,7 @@ private static void ConfigureDbGateContainer(EnvironmentCallbackContext context,
}
}
- internal static void ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
+ internal static async Task ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
{
var mysqlInstances = applicationBuilder.Resources.OfType();
@@ -143,35 +143,31 @@ internal static void ConfigureAdminerContainer(EnvironmentCallbackContext contex
var new_servers = mysqlInstances.ToDictionary(
mysqlServer => mysqlServer.Name,
- mysqlServer =>
+ async mysqlServer =>
{
return new AdminerLoginServer
{
Server = mysqlServer.Name,
UserName = "root",
- Password = mysqlServer.PasswordParameter.Value,
+ Password = await mysqlServer.PasswordParameter.GetValueAsync(context.CancellationToken),
Driver = "server" // driver for MySQL is called 'server'
};
});
if (string.IsNullOrEmpty(ADMINER_SERVERS))
{
- string servers_json = JsonSerializer.Serialize(new_servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
+ ADMINER_SERVERS = "{}"; // Initialize with an empty JSON object if not set
}
- else
+
+ var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
+ foreach (var server in new_servers)
{
- var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
- foreach (var server in new_servers)
+ if (!servers.ContainsKey(server.Key))
{
- if (!servers.ContainsKey(server.Key))
- {
- servers!.Add(server.Key, server.Value);
- }
+ servers!.Add(server.Key, await server.Value);
}
- string servers_json = JsonSerializer.Serialize(servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
-
+ string servers_json = JsonSerializer.Serialize(servers);
+ context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
}
\ No newline at end of file
diff --git a/src/CommunityToolkit.Aspire.Hosting.Ngrok/NgrokExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.Ngrok/NgrokExtensions.cs
index dc05ade6b..1baabac51 100644
--- a/src/CommunityToolkit.Aspire.Hosting.Ngrok/NgrokExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Hosting.Ngrok/NgrokExtensions.cs
@@ -34,7 +34,7 @@ public static IResourceBuilder AddNgrok(
ArgumentNullException.ThrowIfNull(builder);
if (configurationFolder is not null)
ArgumentException.ThrowIfNullOrWhiteSpace(configurationFolder);
-
+
if (endpointPort is not null)
{
ArgumentOutOfRangeException.ThrowIfLessThan(endpointPort.Value, 1, nameof(endpointPort));
@@ -49,28 +49,27 @@ public static IResourceBuilder AddNgrok(
configurationFolder ??= Path.Combine(builder.AppHostDirectory, ".ngrok");
if (!Directory.Exists(configurationFolder))
Directory.CreateDirectory(configurationFolder);
-
- var resource = new NgrokResource(name);
- var resourceBuilder = builder.AddResource(resource)
+
+ var resourceBuilder = builder.AddResource(new NgrokResource(name))
.WithImage(NgrokContainerValues.Image, NgrokContainerValues.Tag)
.WithImageRegistry(NgrokContainerValues.Registry)
.WithBindMount(configurationFolder, "/var/tmp/ngrok")
.WithHttpEndpoint(targetPort: 4040, port: endpointPort, name: endpointName);
- builder.Eventing.Subscribe(async (e, ct) =>
+ resourceBuilder.OnResourceEndpointsAllocated(async (resource, e, ct) =>
{
var endpointTuples = resource.Annotations
.OfType()
.SelectMany(annotation => annotation.Endpoints.Select(ngrokEndpoint => (endpointRefernce: annotation.Resource.GetEndpoint(ngrokEndpoint.EndpointName), ngrokEndpoint)))
.ToList();
await CreateNgrokConfigurationFileAsync(configurationFolder, name, endpointTuples, configurationVersion ?? 3);
-
+
resourceBuilder.WithArgs(
- "start", endpointTuples.Count > 0 ? "--all" : "--none",
+ "start", endpointTuples.Count > 0 ? "--all" : "--none",
"--config", $"/var/tmp/ngrok/{name}.yml");
});
return resourceBuilder;
}
-
+
///
/// Adds a ngrok auth token to a ngrok resource.
///
@@ -86,7 +85,7 @@ public static IResourceBuilder WithAuthToken(
return builder.WithEnvironment(NgrokContainerValues.AuthTokenEnvName, ngrokAuthToken);
}
-
+
///
/// Adds a ngrok auth token to a ngrok resource.
///
@@ -102,13 +101,13 @@ public static IResourceBuilder WithAuthToken(
return builder.WithEnvironment(NgrokContainerValues.AuthTokenEnvName, ngrokAuthToken);
}
-
+
///
/// Configures a resource with endpoints as a ngrok tunnel endpoint.
///
/// The resource type.
public static IResourceBuilder WithTunnelEndpoint(
- this IResourceBuilder builder,
+ this IResourceBuilder builder,
IResourceBuilder resource,
string endpointName,
string? ngrokUrl = null,
@@ -136,7 +135,7 @@ public static IResourceBuilder WithTunnelEndpoint(
return builder;
}
-
+
private static async Task CreateNgrokConfigurationFileAsync(
string configurationFolder,
string name,
@@ -165,7 +164,7 @@ private static async Task CreateNgrokConfigurationFileAsync(
break;
case 3:
ngrokConfig.AppendLine("agent:");
- ngrokConfig.AppendLine( " log: stdout");
+ ngrokConfig.AppendLine(" log: stdout");
if (endpointTuples.Count > 0)
{
ngrokConfig.AppendLine();
@@ -190,7 +189,7 @@ private static async Task CreateNgrokConfigurationFileAsync(
private static string GetUpstreamUrl(EndpointReference endpoint)
{
var isLocal = endpoint.Host.Equals("localhost", StringComparison.InvariantCultureIgnoreCase);
- var host = (IsWindows || IsOsx) && isLocal? "host.docker.internal" : endpoint.Host;
+ var host = (IsWindows || IsOsx) && isLocal ? "host.docker.internal" : endpoint.Host;
return $"{endpoint.Scheme}://{host}:{endpoint.Port}";
}
}
\ No newline at end of file
diff --git a/src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/PostgresBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/PostgresBuilderExtensions.cs
index 2c85ba65d..dbe6ea34b 100644
--- a/src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/PostgresBuilderExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/PostgresBuilderExtensions.cs
@@ -44,7 +44,7 @@ public static IResourceBuilder WithDbGate(this IResource
var dbGateBuilder = DbGateBuilderExtensions.AddDbGate(builder.ApplicationBuilder, containerName);
dbGateBuilder
- .WithEnvironment(context => ConfigureDbGateContainer(context, builder.ApplicationBuilder));
+ .WithEnvironment(context => ConfigureDbGateContainer(context, builder.ApplicationBuilder));
configureContainer?.Invoke(dbGateBuilder);
@@ -105,9 +105,9 @@ private static void ConfigureDbGateContainer(EnvironmentCallbackContext context,
foreach (var postgresServer in postgresInstances)
{
- var userParameter = postgresServer.UserNameParameter is null
- ? ReferenceExpression.Create($"postgres")
- : ReferenceExpression.Create($"{postgresServer.UserNameParameter}");
+ var userParameter = postgresServer.UserNameParameter is null
+ ? ReferenceExpression.Create($"postgres")
+ : ReferenceExpression.Create($"{postgresServer.UserNameParameter}");
// DbGate assumes Postgres is being accessed over a default Aspire container network and hardcodes the resource address
// This will need to be refactored once updated service discovery APIs are available
@@ -141,7 +141,7 @@ private static void ConfigureDbGateContainer(EnvironmentCallbackContext context,
}
- internal static void ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
+ internal static async Task ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
{
var postgresInstances = applicationBuilder.Resources.OfType();
@@ -149,36 +149,37 @@ internal static void ConfigureAdminerContainer(EnvironmentCallbackContext contex
var new_servers = postgresInstances.ToDictionary(
postgresServer => postgresServer.Name,
- postgresServer =>
+ async postgresServer =>
{
- var user = postgresServer.UserNameParameter?.Value ?? "postgres";
+ var user = postgresServer.UserNameParameter switch
+ {
+ null => "postgres",
+ _ => await postgresServer.UserNameParameter.GetValueAsync(context.CancellationToken)
+ };
return new AdminerLoginServer
{
Server = postgresServer.Name,
UserName = user,
- Password = postgresServer.PasswordParameter.Value,
+ Password = await postgresServer.PasswordParameter.GetValueAsync(context.CancellationToken),
Driver = "pgsql"
};
});
if (string.IsNullOrEmpty(ADMINER_SERVERS))
{
- string servers_json = JsonSerializer.Serialize(new_servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
+ ADMINER_SERVERS = "{}"; // Initialize with an empty JSON object if not set
}
- else
+
+ var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
+ foreach (var server in new_servers)
{
- var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
- foreach (var server in new_servers)
+ if (!servers.ContainsKey(server.Key))
{
- if (!servers.ContainsKey(server.Key))
- {
- servers!.Add(server.Key, server.Value);
- }
+ servers.Add(server.Key, await server.Value);
}
- string servers_json = JsonSerializer.Serialize(servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
+ string servers_json = JsonSerializer.Serialize(servers);
+ context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
}
\ No newline at end of file
diff --git a/src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/SqlServerBuilderExtensions.cs b/src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/SqlServerBuilderExtensions.cs
index d7e930c66..03573e9e5 100644
--- a/src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/SqlServerBuilderExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/SqlServerBuilderExtensions.cs
@@ -135,7 +135,7 @@ private static void ConfigureDbGateContainer(EnvironmentCallbackContext context,
}
}
- private static void ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
+ private static async Task ConfigureAdminerContainer(EnvironmentCallbackContext context, IDistributedApplicationBuilder applicationBuilder)
{
var sqlServerInstances = applicationBuilder.Resources.OfType();
@@ -143,36 +143,31 @@ private static void ConfigureAdminerContainer(EnvironmentCallbackContext context
var new_servers = sqlServerInstances.ToDictionary(
sqlServerServerResource => sqlServerServerResource.Name,
- sqlServerServerResource =>
+ async sqlServerServerResource =>
{
return new AdminerLoginServer
{
Server = sqlServerServerResource.Name,
UserName = "sa",
- Password = sqlServerServerResource.PasswordParameter.Value,
+ Password = await sqlServerServerResource.PasswordParameter.GetValueAsync(context.CancellationToken),
Driver = "mssql"
};
});
if (string.IsNullOrEmpty(ADMINER_SERVERS))
{
- string servers_json = JsonSerializer.Serialize(new_servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
+ ADMINER_SERVERS = "{}"; // Initialize with an empty JSON object if not set
}
- else
+
+ var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
+ foreach (var server in new_servers)
{
- var servers = JsonSerializer.Deserialize>(ADMINER_SERVERS) ?? throw new InvalidOperationException("The servers should not be null. This should never happen.");
- foreach (var server in new_servers)
+ if (!servers.ContainsKey(server.Key))
{
- if (!servers.ContainsKey(server.Key))
- {
- servers!.Add(server.Key, server.Value);
- }
+ servers!.Add(server.Key, await server.Value);
}
- string servers_json = JsonSerializer.Serialize(servers);
- context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
-
+ string servers_json = JsonSerializer.Serialize(servers);
+ context.EnvironmentVariables["ADMINER_SERVERS"] = servers_json;
}
-
}
\ No newline at end of file
diff --git a/src/Shared/Dapr/Core/DaprDistributedApplicationLifecycleHook.cs b/src/Shared/Dapr/Core/DaprDistributedApplicationLifecycleHook.cs
index 5017c16c3..c42ae6727 100644
--- a/src/Shared/Dapr/Core/DaprDistributedApplicationLifecycleHook.cs
+++ b/src/Shared/Dapr/Core/DaprDistributedApplicationLifecycleHook.cs
@@ -82,7 +82,7 @@ public async Task BeforeStartAsync(DistributedApplicationModel appModel, Cancell
{
foreach (var secretAnnotation in secretAnnotations)
{
- secrets[secretAnnotation.Key] = (await ((IValueProvider)secretAnnotation).GetValueAsync(cancellationToken))!;
+ secrets[secretAnnotation.Key] = (await secretAnnotation.Value.GetValueAsync(cancellationToken))!;
}
// We need to append the secret store path to the resources path
onDemandResourcesPaths.TryGetValue("secretstore", out var secretStorePath);
diff --git a/src/Shared/Dapr/Core/DaprMetadataResourceBuilderExtensions.cs b/src/Shared/Dapr/Core/DaprMetadataResourceBuilderExtensions.cs
index 219edde4a..7944bb871 100644
--- a/src/Shared/Dapr/Core/DaprMetadataResourceBuilderExtensions.cs
+++ b/src/Shared/Dapr/Core/DaprMetadataResourceBuilderExtensions.cs
@@ -74,7 +74,7 @@ public static IResourceBuilder WithMetadata(this IResour
schema.Spec.Metadata.Add(new DaprComponentSpecMetadataValue
{
Name = name,
- Value = (await ((IValueProvider)parameterResource).GetValueAsync(default))!
+ Value = (await parameterResource.GetValueAsync(default))!
});
}));
}
diff --git a/tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests/ContainerResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests/ContainerResourceCreationTests.cs
index 2afb8adee..dad97e593 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests/ContainerResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.ActiveMQ.Tests/ContainerResourceCreationTests.cs
@@ -29,7 +29,7 @@ public void AddActiveMqApiBuilderSchemeShouldNotBeNullOrWhiteSpace()
}
[Fact]
- public void AddActiveMqApiBuilderContainerDetailsSetOnResource()
+ public async Task AddActiveMqApiBuilderContainerDetailsSetOnResource()
{
IDistributedApplicationBuilder builder = DistributedApplication.CreateBuilder();
@@ -44,8 +44,8 @@ public void AddActiveMqApiBuilderContainerDetailsSetOnResource()
Assert.NotNull(resource);
Assert.Equal("amq", resource.Name);
- Assert.Equal("admin", resource.UserNameParameter!.Value);
- Assert.Equal("admin", resource.PasswordParameter.Value);
+ Assert.Equal("admin", await resource.UserNameParameter!.GetValueAsync(default));
+ Assert.Equal("admin", await resource.PasswordParameter.GetValueAsync(default));
Assert.Equal("ACTIVEMQ_CONNECTION_PASSWORD", resource.ActiveMqSettings.EnvironmentVariablePassword);
Assert.Equal("ACTIVEMQ_CONNECTION_USER", resource.ActiveMqSettings.EnvironmentVariableUsername);
@@ -59,7 +59,7 @@ public void AddActiveMqApiBuilderContainerDetailsSetOnResource()
}
[Fact]
- public void AddActiveMqArtemisApiBuilderContainerDetailsSetOnResource()
+ public async Task AddActiveMqArtemisApiBuilderContainerDetailsSetOnResource()
{
IDistributedApplicationBuilder builder = DistributedApplication.CreateBuilder();
@@ -74,8 +74,8 @@ public void AddActiveMqArtemisApiBuilderContainerDetailsSetOnResource()
Assert.NotNull(resource);
Assert.Equal("amq", resource.Name);
- Assert.Equal("admin", resource.UserNameParameter!.Value);
- Assert.Equal("admin", resource.PasswordParameter.Value);
+ Assert.Equal("admin", await resource.UserNameParameter!.GetValueAsync(default));
+ Assert.Equal("admin", await resource.PasswordParameter.GetValueAsync(default));
Assert.Equal("ARTEMIS_PASSWORD", resource.ActiveMqSettings.EnvironmentVariablePassword);
Assert.Equal("ARTEMIS_USER", resource.ActiveMqSettings.EnvironmentVariableUsername);
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests/AddAdminerTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests/AddAdminerTests.cs
index dbf2bd902..963891292 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests/AddAdminerTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Adminer.Tests/AddAdminerTests.cs
@@ -5,6 +5,7 @@
using Aspire.Hosting.Utils;
namespace CommunityToolkit.Aspire.Hosting.Adminer.Tests;
+
public class AddAdminerTests
{
[Fact]
@@ -189,8 +190,11 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "pgsql",
Server = postgresResource1.Name,
- Password = postgresResource1.PasswordParameter.Value,
- UserName = postgresResource1.UserNameParameter?.Value ?? "postgres"
+ Password = await postgresResource1.PasswordParameter.GetValueAsync(default),
+ UserName = postgresResource1.UserNameParameter switch {
+ null => "postgres",
+ _ => await postgresResource1.UserNameParameter.GetValueAsync(default)
+ }
}
},
{
@@ -199,8 +203,11 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "pgsql",
Server = postgresResource2.Name,
- Password = postgresResource2.PasswordParameter.Value,
- UserName = postgresResource2.UserNameParameter?.Value ?? "postgres"
+ Password = await postgresResource2.PasswordParameter.GetValueAsync(default),
+ UserName = postgresResource2.UserNameParameter switch {
+ null => "postgres",
+ _ => await postgresResource2.UserNameParameter.GetValueAsync(default)
+ }
}
},
{
@@ -209,7 +216,7 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "mssql",
Server = sqlserverResource1.Name,
- Password = sqlserverResource1.PasswordParameter.Value,
+ Password = await sqlserverResource1.PasswordParameter.GetValueAsync(default),
UserName = "sa"
}
},
@@ -219,7 +226,7 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "mssql",
Server = sqlserverResource2.Name,
- Password = sqlserverResource2.PasswordParameter.Value,
+ Password = await sqlserverResource2.PasswordParameter.GetValueAsync(default),
UserName = "sa"
}
},
@@ -229,7 +236,7 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "server",
Server = mysqlResource1.Name,
- Password = mysqlResource1.PasswordParameter.Value,
+ Password = await mysqlResource1.PasswordParameter.GetValueAsync(default),
UserName = "root"
}
},
@@ -239,7 +246,7 @@ public async Task WithAdminerShouldAddAnnotationsForMultipleDatabaseTypes()
{
Driver = "server",
Server = mysqlResource2.Name,
- Password = mysqlResource2.PasswordParameter.Value,
+ Password = await mysqlResource2.PasswordParameter.GetValueAsync(default),
UserName = "root"
}
}
@@ -294,7 +301,7 @@ public async Task AddAdminerWithDefaultsAddsUrlAnnotations()
var adminer = builder.AddAdminer("adminer");
var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
- builder.Eventing.Subscribe((e, ct) =>
+ adminer.OnResourceEndpointsAllocated((resource, @event, ct) =>
{
tcs.SetResult();
return Task.CompletedTask;
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests/ResourceCreationTests.cs
index f6b76d04b..df47fd4dc 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis.Tests/ResourceCreationTests.cs
@@ -29,56 +29,56 @@ public void WithReference_WhenAADDisabled_UsesPasswordSecret()
string redisBicep = redisCache.GetBicepTemplateString();
string expectedRedisBicep = $$"""
- @description('The location for the resource(s) to be deployed.')
- param location string = resourceGroup().location
-
- param keyVaultName string
-
- resource redisState 'Microsoft.Cache/redis@2024-03-01' = {
- name: take('redisState-${uniqueString(resourceGroup().id)}', 63)
- location: location
- properties: {
- sku: {
- name: 'Basic'
- family: 'C'
- capacity: 1
- }
- enableNonSslPort: false
- minimumTlsVersion: '1.2'
- }
- tags: {
- 'aspire-resource-name': 'redisState'
- }
- }
+@description('The location for the resource(s) to be deployed.')
+param location string = resourceGroup().location
+
+param redisstate_kv_outputs_name string
+
+resource redisState 'Microsoft.Cache/redis@2024-11-01' = {
+ name: take('redisState-${uniqueString(resourceGroup().id)}', 63)
+ location: location
+ properties: {
+ sku: {
+ name: 'Basic'
+ family: 'C'
+ capacity: 1
+ }
+ enableNonSslPort: false
+ minimumTlsVersion: '1.2'
+ }
+ tags: {
+ 'aspire-resource-name': 'redisState'
+ }
+}
- resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
- name: keyVaultName
- }
+resource keyVault 'Microsoft.KeyVault/vaults@2024-11-01' existing = {
+ name: redisstate_kv_outputs_name
+}
- resource connectionString 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = {
- name: 'connectionstrings--redisState'
- properties: {
- value: '${redisState.properties.hostName},ssl=true,password=${redisState.listKeys().primaryKey}'
- }
- parent: keyVault
- }
+resource connectionString 'Microsoft.KeyVault/vaults/secrets@2024-11-01' = {
+ name: 'connectionstrings--redisState'
+ properties: {
+ value: '${redisState.properties.hostName},ssl=true,password=${redisState.listKeys().primaryKey}'
+ }
+ parent: keyVault
+}
- resource redisPassword 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = {
- name: 'redis-password'
- properties: {
- value: redisState.listKeys().primaryKey
- }
- parent: keyVault
- }
+resource redisPassword 'Microsoft.KeyVault/vaults/secrets@2024-11-01' = {
+ name: 'redis-password'
+ properties: {
+ value: redisState.listKeys().primaryKey
+ }
+ parent: keyVault
+}
- output name string = redisState.name
+output name string = redisState.name
- output daprConnectionString string = '${redisState.properties.hostName}:${redisState.properties.sslPort}'
+output daprConnectionString string = '${redisState.properties.hostName}:${redisState.properties.sslPort}'
- output redisKeyVaultName string = keyVaultName
- """;
+output redisKeyVaultName string = redisstate_kv_outputs_name
+""";
- Assert.Equal(NormalizeLineEndings(expectedRedisBicep), NormalizeLineEndings(redisBicep));
+ Assert.Equal(expectedRedisBicep.ReplaceLineEndings(), redisBicep.ReplaceLineEndings());
var componentResources = appModel.Resources.OfType();
var daprResource = Assert.Single(componentResources, _ => _.Name == "redisDaprComponent");
@@ -86,48 +86,48 @@ param keyVaultName string
string daprBicep = daprResource.GetBicepTemplateString();
string expectedDaprBicep = $$"""
- @description('The location for the resource(s) to be deployed.')
- param location string = resourceGroup().location
+@description('The location for the resource(s) to be deployed.')
+param location string = resourceGroup().location
- param redisHost string
+param redisHost string
- param secretStoreComponent string
+param secretStoreComponent string
- var resourceToken = uniqueString(resourceGroup().id)
+var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
- name: 'cae-${resourceToken}'
- }
+resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
+ name: 'cae-${resourceToken}'
+}
- resource redisDaprComponent 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
- name: 'statestore'
- properties: {
- componentType: 'state.redis'
- metadata: [
- {
- name: 'redisHost'
- value: redisHost
- }
- {
- name: 'enableTLS'
- value: 'true'
- }
- {
- name: 'actorStateStore'
- value: 'true'
- }
- {
- name: 'redisPassword'
- secretRef: 'redis-password'
- }
- ]
- secretStoreComponent: secretStoreComponent
- version: 'v1'
- }
- parent: containerAppEnvironment
- }
- """;
- Assert.Equal(NormalizeLineEndings(expectedDaprBicep), NormalizeLineEndings(daprBicep));
+resource redisDaprComponent 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
+ name: 'statestore'
+ properties: {
+ componentType: 'state.redis'
+ metadata: [
+ {
+ name: 'redisHost'
+ value: redisHost
+ }
+ {
+ name: 'enableTLS'
+ value: 'true'
+ }
+ {
+ name: 'actorStateStore'
+ value: 'true'
+ }
+ {
+ name: 'redisPassword'
+ secretRef: 'redis-password'
+ }
+ ]
+ secretStoreComponent: secretStoreComponent
+ version: 'v1'
+ }
+ parent: containerAppEnvironment
+}
+""";
+ Assert.Equal(expectedDaprBicep.ReplaceLineEndings(), daprBicep.ReplaceLineEndings());
}
@@ -154,7 +154,7 @@ public void WithReference_WhenAADEnabled_SkipsPasswordSecret()
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
- resource redisState 'Microsoft.Cache/redis@2024-03-01' = {
+ resource redisState 'Microsoft.Cache/redis@2024-11-01' = {
name: take('redisState-${uniqueString(resourceGroup().id)}', 63)
location: location
properties: {
@@ -182,7 +182,7 @@ public void WithReference_WhenAADEnabled_SkipsPasswordSecret()
output daprConnectionString string = '${redisState.properties.hostName}:${redisState.properties.sslPort}'
""";
- Assert.Equal(NormalizeLineEndings(expectedRedisBicep), NormalizeLineEndings(redisBicep));
+ Assert.Equal(expectedRedisBicep.ReplaceLineEndings(), redisBicep.ReplaceLineEndings());
var componentResources = appModel.Resources.OfType();
@@ -200,11 +200,11 @@ param principalId string
var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
+ resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
name: 'cae-${resourceToken}'
}
- resource redisDaprComponent 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
+ resource redisDaprComponent 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
name: 'statestore'
properties: {
componentType: 'state.redis'
@@ -237,7 +237,7 @@ param principalId string
""";
- Assert.Equal(NormalizeLineEndings(expectedDaprBicep), NormalizeLineEndings(daprBicep));
+ Assert.Equal(expectedDaprBicep.ReplaceLineEndings(), daprBicep.ReplaceLineEndings());
}
@@ -270,7 +270,7 @@ public void WithReference_WhenTLSDisabled_UsesNonSslPort()
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
- resource redisState 'Microsoft.Cache/redis@2024-03-01' = {
+ resource redisState 'Microsoft.Cache/redis@2024-11-01' = {
name: take('redisState-${uniqueString(resourceGroup().id)}', 63)
location: location
properties: {
@@ -299,7 +299,7 @@ public void WithReference_WhenTLSDisabled_UsesNonSslPort()
""";
- Assert.Equal(NormalizeLineEndings(expectedRedisBicep), NormalizeLineEndings(redisBicep));
+ Assert.Equal(expectedRedisBicep.ReplaceLineEndings(), redisBicep.ReplaceLineEndings());
}
[Fact]
@@ -316,9 +316,4 @@ public void WithReference_WhenNonStateType_ThrowsException()
Assert.Contains("Unsupported Dapr component type: pubsub", ex.Message);
}
- public static string NormalizeLineEndings(string input)
- {
- return input.Replace("\r\n", "\n");
- }
-
}
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/AzureDaprPublishingHelperTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/AzureDaprPublishingHelperTests.cs
index 065ff160b..df9cbc3e3 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/AzureDaprPublishingHelperTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/AzureDaprPublishingHelperTests.cs
@@ -6,6 +6,7 @@
using System.Threading.Tasks;
namespace CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests;
+
public class AzureDaprPublishingHelperTests
{
[Fact]
@@ -22,9 +23,11 @@ public async Task ExecuteProviderSpecificRequirements_AddsAzureContainerAppCusto
.WithReference(daprState)
.WithDaprSidecar();
+ builder.AddAzureContainerAppEnvironment("name-env");
+
using var app = builder.Build();
- await ExecuteBeforeStartHooksAsync(app, default);
+ await ExecuteBeforeStartHooksAsync(app, default);
var appModel = app.Services.GetRequiredService();
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/ResourceCreationTests.cs
index 44bd20c21..d6323a30a 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Tests/ResourceCreationTests.cs
@@ -8,61 +8,61 @@ namespace CommunityToolkit.Aspire.Hosting.Dapr.AzureExtensions.Tests;
public class ResourceCreationTests
{
- [Fact]
- public void AddAzureDaprResource_AddsToAppBuilder()
- {
- var builder = DistributedApplication.CreateBuilder();
+ [Fact]
+ public void AddAzureDaprResource_AddsToAppBuilder()
+ {
+ var builder = DistributedApplication.CreateBuilder();
- var daprStateBuilder = builder.AddDaprStateStore("statestore")
- .AddAzureDaprResource("AzureDaprResource", _ =>
- {
- // no-op
- });
+ var daprStateBuilder = builder.AddDaprStateStore("statestore")
+ .AddAzureDaprResource("AzureDaprResource", _ =>
+ {
+ // no-op
+ });
- using var app = builder.Build();
+ using var app = builder.Build();
- var appModel = app.Services.GetRequiredService();
+ var appModel = app.Services.GetRequiredService();
- var resource = Assert.Single(appModel.Resources.OfType());
+ var resource = Assert.Single(appModel.Resources.OfType());
- }
+ }
- [Fact]
- public void CreateDaprComponent_ReturnsPopulatedComponent()
- {
- var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
+ [Fact]
+ public void CreateDaprComponent_ReturnsPopulatedComponent()
+ {
+ var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
- Assert.NotNull(daprResource);
- Assert.Equal("daprComponent", daprResource.BicepIdentifier);
- Assert.Equal("state.redis", daprResource.ComponentType.Value);
- Assert.Equal("v1", daprResource.Version.Value);
- }
+ Assert.NotNull(daprResource);
+ Assert.Equal("daprComponent", daprResource.BicepIdentifier);
+ Assert.Equal("state.redis", daprResource.ComponentType.Value);
+ Assert.Equal("v1", daprResource.Version.Value);
+ }
- [Fact]
- public void GetInfrastructureConfigurationAction_ComponentNameCanBeOverwritten()
- {
- using var builder = TestDistributedApplicationBuilder.Create();
+ [Fact]
+ public void GetInfrastructureConfigurationAction_ComponentNameCanBeOverwritten()
+ {
+ using var builder = TestDistributedApplicationBuilder.Create();
- var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
- var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
+ var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
+ var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
- daprResource.Name = "myDaprComponent";
+ daprResource.Name = "myDaprComponent";
- var azureDaprResourceBuilder = builder.AddDaprStateStore("daprState");
+ var azureDaprResourceBuilder = builder.AddDaprStateStore("daprState");
- var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource, [redisHost]);
+ var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource, [redisHost]);
- azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
+ azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
- using var app = builder.Build();
+ using var app = builder.Build();
- var appModel = app.Services.GetRequiredService();
+ var appModel = app.Services.GetRequiredService();
- var resource = Assert.Single(appModel.Resources.OfType());
+ var resource = Assert.Single(appModel.Resources.OfType());
- string bicepTemplate = resource.GetBicepTemplateString();
+ string bicepTemplate = resource.GetBicepTemplateString();
- string expectedBicep = $$"""
+ string expectedBicep = $$"""
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
@@ -70,11 +70,11 @@ param daprConnectionString string
var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
+ resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
name: 'cae-${resourceToken}'
}
- resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
+ resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
name: 'myDaprComponent'
properties: {
componentType: 'state.redis'
@@ -84,32 +84,32 @@ param daprConnectionString string
}
""";
- Assert.Equal(expectedBicep, bicepTemplate);
- }
+ Assert.Equal(expectedBicep.ReplaceLineEndings(), bicepTemplate.ReplaceLineEndings());
+ }
- [Fact]
- public void GetInfrastructureConfigurationAction_AddsContainerAppEnv_AndDaprComponent_AndParametersAsync()
- {
- using var builder = TestDistributedApplicationBuilder.Create();
+ [Fact]
+ public void GetInfrastructureConfigurationAction_AddsContainerAppEnv_AndDaprComponent_AndParametersAsync()
+ {
+ using var builder = TestDistributedApplicationBuilder.Create();
- var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
- var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
+ var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
+ var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
- var azureDaprResourceBuilder = builder.AddDaprStateStore("daprState");
+ var azureDaprResourceBuilder = builder.AddDaprStateStore("daprState");
- var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource, [redisHost]);
+ var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource, [redisHost]);
- azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
+ azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
- using var app = builder.Build();
+ using var app = builder.Build();
- var appModel = app.Services.GetRequiredService();
+ var appModel = app.Services.GetRequiredService();
- var resource = Assert.Single(appModel.Resources.OfType());
+ var resource = Assert.Single(appModel.Resources.OfType());
- string bicepTemplate = resource.GetBicepTemplateString();
+ string bicepTemplate = resource.GetBicepTemplateString();
- string expectedBicep = $$"""
+ string expectedBicep = $$"""
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
@@ -117,11 +117,11 @@ param daprConnectionString string
var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
+ resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
name: 'cae-${resourceToken}'
}
- resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
+ resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
name: 'componentName'
properties: {
componentType: 'state.redis'
@@ -131,41 +131,41 @@ param daprConnectionString string
}
""";
- Assert.Equal(expectedBicep, bicepTemplate);
- }
+ Assert.Equal(expectedBicep.ReplaceLineEndings(), bicepTemplate.ReplaceLineEndings());
+ }
- [Fact]
- public void GetInfrastructureConfigurationAction_HandlesNullParameters()
- {
- using var builder = TestDistributedApplicationBuilder.Create();
+ [Fact]
+ public void GetInfrastructureConfigurationAction_HandlesNullParameters()
+ {
+ using var builder = TestDistributedApplicationBuilder.Create();
- var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
+ var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
- var azureDaprResourceBuilder = builder.AddDaprStateStore("statestore");
+ var azureDaprResourceBuilder = builder.AddDaprStateStore("statestore");
- var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource);
+ var configureInfrastructure = azureDaprResourceBuilder.GetInfrastructureConfigurationAction(daprResource);
- azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
+ azureDaprResourceBuilder.AddAzureDaprResource("AzureDaprResource", configureInfrastructure);
- using var app = builder.Build();
+ using var app = builder.Build();
- var appModel = app.Services.GetRequiredService();
+ var appModel = app.Services.GetRequiredService();
- var resource = Assert.Single(appModel.Resources.OfType());
+ var resource = Assert.Single(appModel.Resources.OfType());
- string bicepTemplate = resource.GetBicepTemplateString();
+ string bicepTemplate = resource.GetBicepTemplateString();
- string expectedBicep = $$"""
+ string expectedBicep = $$"""
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
+ resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
name: 'cae-${resourceToken}'
}
- resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
+ resource daprComponent 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
name: 'componentName'
properties: {
componentType: 'state.redis'
@@ -175,32 +175,32 @@ public void GetInfrastructureConfigurationAction_HandlesNullParameters()
}
""";
- Assert.Equal(expectedBicep, bicepTemplate);
- }
+ Assert.Equal(expectedBicep.ReplaceLineEndings(), bicepTemplate.ReplaceLineEndings());
+ }
- [Fact]
- public void ConfigureKeyVaultSecretsComponent_AddsKeyVaultSecretsComponent()
- {
- using var builder = TestDistributedApplicationBuilder.Create();
+ [Fact]
+ public void ConfigureKeyVaultSecretsComponent_AddsKeyVaultSecretsComponent()
+ {
+ using var builder = TestDistributedApplicationBuilder.Create();
- var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
- var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
+ var redisHost = new ProvisioningParameter("daprConnectionString", typeof(string));
+ var daprResource = AzureDaprHostingExtensions.CreateDaprComponent("daprComponent", "componentName", "state.redis", "v1");
- var keyVaultName = new ProvisioningParameter(AzureBicepResource.KnownParameters.KeyVaultName, typeof(string));
+ var keyVaultName = new ProvisioningParameter("keyVaultName", typeof(string));
- var azureDaprResourceBuilder = builder.AddDaprStateStore("statestore")
- .ConfigureKeyVaultSecretsComponent(keyVaultName);
+ var azureDaprResourceBuilder = builder.AddDaprStateStore("statestore")
+ .ConfigureKeyVaultSecretsComponent(keyVaultName);
- using var app = builder.Build();
+ using var app = builder.Build();
- var appModel = app.Services.GetRequiredService();
+ var appModel = app.Services.GetRequiredService();
- var resource = Assert.Single(appModel.Resources.OfType());
+ var resource = Assert.Single(appModel.Resources.OfType());
- string bicepTemplate = resource.GetBicepTemplateString();
+ string bicepTemplate = resource.GetBicepTemplateString();
- string expectedBicep = $$"""
+ string expectedBicep = $$"""
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
@@ -210,11 +210,11 @@ param keyVaultName string
var resourceToken = uniqueString(resourceGroup().id)
- resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-03-01' existing = {
+ resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2025-01-01' existing = {
name: 'cae-${resourceToken}'
}
- resource secretStore 'Microsoft.App/managedEnvironments/daprComponents@2024-03-01' = {
+ resource secretStore 'Microsoft.App/managedEnvironments/daprComponents@2025-01-01' = {
name: 'statestore-secretstore'
properties: {
componentType: 'secretstores.azure.keyvault'
@@ -236,8 +236,8 @@ param keyVaultName string
output secretStoreComponent string = 'statestore-secretstore'
""";
- Assert.Equal(expectedBicep, bicepTemplate);
- }
+ Assert.Equal(expectedBicep.ReplaceLineEndings(), bicepTemplate.ReplaceLineEndings());
+ }
}
diff --git a/tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests/AddDbGateTests.cs b/tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests/AddDbGateTests.cs
index 3bbb31a75..ec0cbd1a1 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests/AddDbGateTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.DbGate.Tests/AddDbGateTests.cs
@@ -168,7 +168,7 @@ public void VerifyWithData(bool useVolume)
}
else
{
- Assert.Equal(Path.GetFullPath("/data/dbgate", appBuilder.AppHostDirectory), mountAnnotation.Source);
+ Assert.Equal("/data/dbgate", mountAnnotation.Source);
Assert.Equal(ContainerMountType.BindMount, mountAnnotation.Type);
Assert.False(mountAnnotation.IsReadOnly);
}
@@ -331,7 +331,7 @@ public async Task WithDbGateShouldAddAnnotationsForMultipleDatabaseTypes()
async item =>
{
Assert.Equal("PASSWORD_postgres2", item.Key);
- var expectedPassword = await ((IValueProvider)postgresResource2.PasswordParameter).GetValueAsync(default);
+ var expectedPassword = await postgresResource2.PasswordParameter.GetValueAsync(default);
Assert.Equal(expectedPassword, item.Value);
},
item =>
@@ -402,7 +402,7 @@ public async Task WithDbGateShouldAddAnnotationsForMultipleDatabaseTypes()
async item =>
{
Assert.Equal("PASSWORD_sqlserver1", item.Key);
- var expectedPassword = await ((IValueProvider)sqlserverResource1.PasswordParameter).GetValueAsync(default);
+ var expectedPassword = await sqlserverResource1.PasswordParameter.GetValueAsync(default);
Assert.Equal(expectedPassword, item.Value);
},
item =>
@@ -433,7 +433,7 @@ public async Task WithDbGateShouldAddAnnotationsForMultipleDatabaseTypes()
async item =>
{
Assert.Equal("PASSWORD_sqlserver2", item.Key);
- var expectedPassword = await ((IValueProvider)sqlserverResource2.PasswordParameter).GetValueAsync(default);
+ var expectedPassword = await sqlserverResource2.PasswordParameter.GetValueAsync(default);
Assert.Equal(expectedPassword, item.Value);
},
item =>
@@ -464,7 +464,7 @@ public async Task WithDbGateShouldAddAnnotationsForMultipleDatabaseTypes()
async item =>
{
Assert.Equal("PASSWORD_mysql1", item.Key);
- var expectedPassword = await ((IValueProvider)mysqlResource1.PasswordParameter).GetValueAsync(default);
+ var expectedPassword = await mysqlResource1.PasswordParameter.GetValueAsync(default);
Assert.Equal(expectedPassword, item.Value);
},
item =>
@@ -495,7 +495,7 @@ public async Task WithDbGateShouldAddAnnotationsForMultipleDatabaseTypes()
async item =>
{
Assert.Equal("PASSWORD_mysql2", item.Key);
- var expectedPassword = await ((IValueProvider)mysqlResource2.PasswordParameter).GetValueAsync(default);
+ var expectedPassword = await mysqlResource2.PasswordParameter.GetValueAsync(default);
Assert.Equal(expectedPassword, item.Value);
},
item =>
@@ -564,7 +564,7 @@ public async Task AddDbGateWithDefaultsAddsUrlAnnotations()
var dbgate = builder.AddDbGate("dbgate");
var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
- builder.Eventing.Subscribe((e, ct) =>
+ dbgate.OnResourceEndpointsAllocated((resource, @event, ct) =>
{
tcs.SetResult();
return Task.CompletedTask;
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/AddMeilisearchTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/AddMeilisearchTests.cs
index 86ee3deb5..1037d13cd 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/AddMeilisearchTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/AddMeilisearchTests.cs
@@ -5,6 +5,7 @@
using Aspire.Hosting;
namespace CommunityToolkit.Aspire.Hosting.Meilisearch.Tests;
+
public class AddMeilisearchTests
{
[Fact]
@@ -51,7 +52,7 @@ public async Task AddMeilisearchContainerAddsAnnotationMetadata()
var appBuilder = DistributedApplication.CreateBuilder();
var masterKey = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(appBuilder, $"masterKey");
- appBuilder.Configuration["Parameters:masterkey"] = masterKey.Value;
+ appBuilder.Configuration["Parameters:masterkey"] = await masterKey.GetValueAsync(default);
var masterKeyParameter = appBuilder.AddParameter(masterKey.Name);
var meilisearch = appBuilder.AddMeilisearch("meilisearch", masterKeyParameter);
@@ -101,7 +102,7 @@ public async Task MeilisearchCreatesConnectionString()
var connectionStringResource = Assert.Single(appModel.Resources.OfType()) as IResourceWithConnectionString;
var connectionString = await connectionStringResource.GetConnectionStringAsync();
- Assert.Equal($"Endpoint=http://localhost:27020;MasterKey={meilisearch.Resource.MasterKeyParameter.Value}", connectionString);
+ Assert.Equal($"Endpoint=http://localhost:27020;MasterKey={await meilisearch.Resource.MasterKeyParameter.GetValueAsync(default)}", connectionString);
Assert.Equal("Endpoint=http://{meilisearch.bindings.http.host}:{meilisearch.bindings.http.port};MasterKey={meilisearch-masterKey.value}", connectionStringResource.ConnectionStringExpression.ValueExpression);
}
}
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/MeilisearchFunctionalTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/MeilisearchFunctionalTests.cs
index c54143930..f8ec90e33 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/MeilisearchFunctionalTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Meilisearch.Tests/MeilisearchFunctionalTests.cs
@@ -69,7 +69,7 @@ public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
var meilisearch1 = builder1.AddMeilisearch("meilisearch");
- var masterKey = meilisearch1.Resource.MasterKeyParameter.Value;
+ var masterKey = await meilisearch1.Resource.MasterKeyParameter.GetValueAsync(default);
if (useVolume)
{
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioFunctionalTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioFunctionalTests.cs
index 26d0ddcfb..1ccdc8641 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioFunctionalTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioFunctionalTests.cs
@@ -19,7 +19,7 @@ public async Task StorageGetsCreatedAndUsable()
var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(distributedApplicationBuilder,
$"rootPassword");
- distributedApplicationBuilder.Configuration["Parameters:rootPassword"] = passwordParameter.Value;
+ distributedApplicationBuilder.Configuration["Parameters:rootPassword"] = await passwordParameter.GetValueAsync(default);
var rootPasswordParameter = distributedApplicationBuilder.AddParameter(passwordParameter.Name);
var minio = distributedApplicationBuilder
@@ -39,9 +39,9 @@ public async Task StorageGetsCreatedAndUsable()
var webApplicationBuilder = Host.CreateApplicationBuilder();
- webApplicationBuilder.Services.AddMinio(configureClient => configureClient
+ webApplicationBuilder.Services.AddMinio(async configureClient => configureClient
.WithEndpoint("localhost", minioEndpoint.Port)
- .WithCredentials(rootUser, passwordParameter.Value)
+ .WithCredentials(rootUser, await passwordParameter.GetValueAsync(default))
.WithSSL(false)
.Build());
@@ -70,7 +70,7 @@ public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder1,
$"rootPassword");
- builder1.Configuration["Parameters:rootPassword"] = passwordParameter.Value;
+ builder1.Configuration["Parameters:rootPassword"] = await passwordParameter.GetValueAsync(default);
var rootPasswordParameter = builder1.AddParameter(passwordParameter.Name);
var minio1 = builder1.AddMinioContainer("minio",
@@ -106,9 +106,9 @@ public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
{
var webApplicationBuilder = Host.CreateApplicationBuilder();
- webApplicationBuilder.Services.AddMinio(configureClient => configureClient
+ webApplicationBuilder.Services.AddMinio(async configureClient => configureClient
.WithEndpoint("localhost", minio1Endpoint.Port)
- .WithCredentials(rootUser, passwordParameter.Value)
+ .WithCredentials(rootUser, await passwordParameter.GetValueAsync(default))
.WithSSL(false)
.Build());
@@ -127,7 +127,7 @@ public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
}
using var builder2 = TestDistributedApplicationBuilder.Create(testOutputHelper);
- builder2.Configuration["Parameters:rootPassword"] = passwordParameter.Value;
+ builder2.Configuration["Parameters:rootPassword"] = await passwordParameter.GetValueAsync(default);
var rootPasswordParameter2 = builder2.AddParameter(passwordParameter.Name);
@@ -159,9 +159,9 @@ public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume)
{
var webApplicationBuilder = Host.CreateApplicationBuilder();
- webApplicationBuilder.Services.AddMinio(configureClient => configureClient
+ webApplicationBuilder.Services.AddMinio(async configureClient => configureClient
.WithEndpoint("localhost", minio2Endpoint.Port)
- .WithCredentials(rootUser, passwordParameter.Value)
+ .WithCredentials(rootUser, await passwordParameter.GetValueAsync(default))
.WithSSL(false)
.Build());
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioPublicApiTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioPublicApiTests.cs
index fa0ccda43..ff4ebc97e 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioPublicApiTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Minio.Tests/MinioPublicApiTests.cs
@@ -106,6 +106,6 @@ public async Task VerifyMinioContainerResourceWithUserName()
.WithEndpoint("http", e => e.AllocatedEndpoint = new AllocatedEndpoint(e, "localhost", 2000));
var connectionString = await postgres.Resource.GetConnectionStringAsync();
- Assert.Equal($"Endpoint=http://localhost:2000;AccessKey=user1;SecretKey={postgres.Resource.PasswordParameter.Value}", connectionString);
+ Assert.Equal($"Endpoint=http://localhost:2000;AccessKey=user1;SecretKey={await postgres.Resource.PasswordParameter.GetValueAsync(default)}", connectionString);
}
}
diff --git a/tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests/ResourceCreationTests.cs
index de7b08fd3..55ddce346 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.MySql.Extensions.Tests/ResourceCreationTests.cs
@@ -37,7 +37,7 @@ public async Task WithAdminerAddsAnnotations()
{
Driver = "server",
Server = mysqlResource.Name,
- Password = mysqlResource.PasswordParameter.Value,
+ Password = await mysqlResource.PasswordParameter.GetValueAsync(default),
UserName = "root"
}
},
@@ -138,7 +138,7 @@ public async Task WithAdminerAddsAnnotationsForMultipleMySqlResource()
{
Driver = "server",
Server = mysqlResource1.Name,
- Password = mysqlResource1.PasswordParameter.Value,
+ Password = await mysqlResource1.PasswordParameter.GetValueAsync(default),
UserName = "root"
}
},
@@ -148,7 +148,7 @@ public async Task WithAdminerAddsAnnotationsForMultipleMySqlResource()
{
Driver = "server",
Server = mysqlResource2.Name,
- Password = mysqlResource2.PasswordParameter.Value,
+ Password = await mysqlResource2.PasswordParameter.GetValueAsync(default),
UserName = "root"
}
}
@@ -199,10 +199,10 @@ public async Task WithDbGateAddsAnnotations()
Assert.Equal("USER_mysql1", item.Key);
Assert.Equal("root", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_mysql1", item.Key);
- Assert.Equal(mysqlResource.PasswordParameter.Value, item.Value);
+ Assert.Equal(await mysqlResource.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -317,10 +317,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleMySqlResource()
Assert.Equal("USER_mysql1", item.Key);
Assert.Equal("root", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_mysql1", item.Key);
- Assert.Equal(mysqlResource1.PasswordParameter.Value, item.Value);
+ Assert.Equal(await mysqlResource1.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -347,10 +347,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleMySqlResource()
Assert.Equal("USER_mysql2", item.Key);
Assert.Equal("root", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_mysql2", item.Key);
- Assert.Equal(mysqlResource2.PasswordParameter.Value, item.Value);
+ Assert.Equal(await mysqlResource2.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
diff --git a/tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests/ResourceCreationTests.cs
index 6c442c495..73c699796 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions.Tests/ResourceCreationTests.cs
@@ -44,10 +44,10 @@ public async Task WithDbGateAddsAnnotations()
Assert.Equal("USER_postgres1", item.Key);
Assert.Equal("postgres", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_postgres1", item.Key);
- Assert.Equal(postgresResource.PasswordParameter.Value, item.Value);
+ Assert.Equal(await postgresResource.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -162,10 +162,10 @@ public async Task WithDbGateAddsAnnotationsForMultiplePostgresResource()
Assert.Equal("USER_postgres1", item.Key);
Assert.Equal("postgres", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_postgres1", item.Key);
- Assert.Equal(postgresResource1.PasswordParameter.Value, item.Value);
+ Assert.Equal(await postgresResource1.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -192,10 +192,10 @@ public async Task WithDbGateAddsAnnotationsForMultiplePostgresResource()
Assert.Equal("USER_postgres2", item.Key);
Assert.Equal("postgres", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_postgres2", item.Key);
- Assert.Equal(postgresResource2.PasswordParameter.Value, item.Value);
+ Assert.Equal(await postgresResource2.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -312,8 +312,8 @@ public async Task WithAdminerAddsAnnotations()
{
Driver = "pgsql",
Server = postgresResource.Name,
- Password = postgresResource.PasswordParameter.Value,
- UserName = postgresResource.UserNameParameter?.Value ?? "postgres"
+ Password = await postgresResource.PasswordParameter.GetValueAsync(default),
+ UserName = postgresResource.UserNameParameter is null ? "postgres" : await postgresResource.UserNameParameter.GetValueAsync(default)
}
},
};
@@ -413,8 +413,8 @@ public async Task WithAdminerAddsAnnotationsForMultiplePostgresResource()
{
Driver = "pgsql",
Server = postgresResource1.Name,
- Password = postgresResource1.PasswordParameter.Value,
- UserName = postgresResource1.UserNameParameter?.Value ?? "postgres"
+ Password = await postgresResource1.PasswordParameter.GetValueAsync(default),
+ UserName = postgresResource1.UserNameParameter is null ? "postgres" : await postgresResource1.UserNameParameter.GetValueAsync(default)
}
},
{
@@ -423,8 +423,8 @@ public async Task WithAdminerAddsAnnotationsForMultiplePostgresResource()
{
Driver = "pgsql",
Server = postgresResource2.Name,
- Password = postgresResource2.PasswordParameter.Value,
- UserName = postgresResource2.UserNameParameter?.Value ?? "postgres"
+ Password = await postgresResource2.PasswordParameter.GetValueAsync(default),
+ UserName = postgresResource2.UserNameParameter is null ? "postgres" : await postgresResource2.UserNameParameter.GetValueAsync(default)
}
}
};
diff --git a/tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/ResourceCreationTests.cs
index 6b2caf915..6da1cbf18 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/ResourceCreationTests.cs
@@ -34,10 +34,10 @@ public async Task WithDbGateAddsAnnotations()
Assert.Equal("LABEL_redis1", item.Key);
Assert.Equal(redisResource.Name, item.Value);
},
- item =>
+ async item =>
{
var redisUrl = redisResource.PasswordParameter is not null ?
- $"redis://:{redisResource.PasswordParameter.Value}@{redisResource.Name}:{redisResource.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource.Name}:{redisResource.PrimaryEndpoint.TargetPort}";
+ $"redis://:{await redisResource.PasswordParameter.GetValueAsync(default)}@{redisResource.Name}:{redisResource.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource.Name}:{redisResource.PrimaryEndpoint.TargetPort}";
Assert.Equal("URL_redis1", item.Key);
Assert.Equal(redisUrl, item.Value);
},
@@ -141,10 +141,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleRedisResource()
Assert.Equal("LABEL_redis1", item.Key);
Assert.Equal(redisResource1.Name, item.Value);
},
- item =>
+ async item =>
{
var redisUrl = redisResource1.PasswordParameter is not null ?
- $"redis://:{redisResource1.PasswordParameter.Value}@{redisResource1.Name}:{redisResource1.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource1.Name}:{redisResource1.PrimaryEndpoint.TargetPort}";
+ $"redis://:{await redisResource1.PasswordParameter.GetValueAsync(default)}@{redisResource1.Name}:{redisResource1.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource1.Name}:{redisResource1.PrimaryEndpoint.TargetPort}";
Assert.Equal("URL_redis1", item.Key);
Assert.Equal(redisUrl, item.Value);
@@ -159,10 +159,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleRedisResource()
Assert.Equal("LABEL_redis2", item.Key);
Assert.Equal(redisResource2.Name, item.Value);
},
- item =>
+ async item =>
{
var redisUrl = redisResource2.PasswordParameter is not null ?
- $"redis://:{redisResource2.PasswordParameter.Value}@{redisResource2.Name}:{redisResource2.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource2.Name}:{redisResource2.PrimaryEndpoint.TargetPort}";
+ $"redis://:{await redisResource2.PasswordParameter.GetValueAsync(default)}@{redisResource2.Name}:{redisResource2.PrimaryEndpoint.TargetPort}" : $"redis://{redisResource2.Name}:{redisResource2.PrimaryEndpoint.TargetPort}";
Assert.Equal("URL_redis2", item.Key);
Assert.Equal(redisUrl, item.Value);
diff --git a/tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests/ResourceCreationTests.cs
index 6ed2589af..121154e25 100644
--- a/tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests/ResourceCreationTests.cs
+++ b/tests/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions.Tests/ResourceCreationTests.cs
@@ -44,10 +44,10 @@ public async Task WithDbGateAddsAnnotations()
Assert.Equal("USER_sqlserver1", item.Key);
Assert.Equal("sa", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_sqlserver1", item.Key);
- Assert.Equal(sqlserverResource.PasswordParameter.Value, item.Value);
+ Assert.Equal(await sqlserverResource.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -162,10 +162,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleSqlServerResource()
Assert.Equal("USER_sqlserver1", item.Key);
Assert.Equal("sa", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_sqlserver1", item.Key);
- Assert.Equal(sqlserverResource1.PasswordParameter.Value, item.Value);
+ Assert.Equal(await sqlserverResource1.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -192,10 +192,10 @@ public async Task WithDbGateAddsAnnotationsForMultipleSqlServerResource()
Assert.Equal("USER_sqlserver2", item.Key);
Assert.Equal("sa", item.Value);
},
- item =>
+ async item =>
{
Assert.Equal("PASSWORD_sqlserver2", item.Key);
- Assert.Equal(sqlserverResource2.PasswordParameter.Value, item.Value);
+ Assert.Equal(await sqlserverResource2.PasswordParameter.GetValueAsync(default), item.Value);
},
item =>
{
@@ -246,7 +246,7 @@ public async Task WithAdminerAddsAnnotations()
{
Driver = "mssql",
Server = sqlserverResource.Name,
- Password = sqlserverResource.PasswordParameter.Value,
+ Password = await sqlserverResource.PasswordParameter.GetValueAsync(default),
UserName = "sa"
}
},
@@ -347,7 +347,7 @@ public async Task WithAdminerAddsAnnotationsForMultipleSqlServerResource()
{
Driver = "mssql",
Server = sqlserverResource1.Name,
- Password = sqlserverResource1.PasswordParameter.Value,
+ Password = await sqlserverResource1.PasswordParameter.GetValueAsync(default),
UserName = "sa"
}
},
@@ -357,7 +357,7 @@ public async Task WithAdminerAddsAnnotationsForMultipleSqlServerResource()
{
Driver = "mssql",
Server = sqlserverResource2.Name,
- Password = sqlserverResource2.PasswordParameter.Value,
+ Password = await sqlserverResource2.PasswordParameter.GetValueAsync(default),
UserName = "sa"
}
}