1649 references to Resource
Aspire.Hosting (105)
ApplicationModel\ResourceExtensions.cs (4)
304(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await GetValue(key: null, provider, logger, resource.IsContainer(), containerHostName, cancellationToken).ConfigureAwait(false),
306(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false),
363(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await GetValue(key, provider, logger, resource.IsContainer(), containerHostName, cancellationToken).ConfigureAwait(false),
365(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false),
ResourceBuilderExtensions.cs (57)
171builder.WithReferenceRelationship(parameter.Resource);
175context.EnvironmentVariables[name] = parameter.Resource;
197builder.WithReferenceRelationship(resource.Resource);
201context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false);
381var resource = source.Resource;
408ApplyEndpoints(builder, source.Resource);
466var endpointReferenceAnnotation = builder.Resource.Annotations
530var endpoint = builder.Resource.Annotations
544builder.Resource.Annotations.Add(endpoint);
584if (builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(sb => string.Equals(sb.Name, annotation.Name, StringComparisons.EndpointAnnotationName)))
590if (env is not null && builder.Resource is IResourceWithEndpoints resourceWithEndpoints and IResourceWithEnvironment)
675if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints))
703return builder.Resource.GetEndpoint(name);
920context.Logger.LogWarning("Could not execute callback to customize endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name);
967context.Logger.LogWarning("Could not execute callback to add an endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name);
1066if (builder.Resource as IResource == dependency.Resource)
1068throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1071if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1073throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1076if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
1088if (dependency.Resource is ConnectionStringResource cs)
1099builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1102return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior });
1162if (builder.Resource as IResource == dependency.Resource)
1164throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1167if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1169throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1172builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1174return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode));
1218if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key))
1220throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'.");
1302?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
1306throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint.");
1318throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
1325builder.ApplicationBuilder.Eventing.Subscribe<BeforeResourceStartedEvent>(builder.Resource, (@event, ct) =>
1332var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check";
1422var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1425builder.Resource.Annotations.Remove(existingAnnotation);
1487var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1490builder.Resource.Annotations.Remove(existingAnnotation);
1654?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
1658throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint.");
1756var endpoints = builder.Resource.GetEndpoints();
1766throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as the endpoint with name '{matchingEndpoint.EndpointName}' and scheme '{matchingEndpoint.Scheme}' is not an HTTP endpoint.");
1774throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}");
1782var endpoints = builder.Resource.GetEndpoints();
1794throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints.");
1891AddReference(resourceBuilder.Resource);
1922return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference));
1952return builder.WithParentRelationship(parent.Resource);
2001builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource));
Aspire.Hosting.Azure (27)
Aspire.Hosting.Azure.AppConfiguration (1)
Aspire.Hosting.Azure.AppContainers (1)
Aspire.Hosting.Azure.ApplicationInsights (1)
Aspire.Hosting.Azure.CognitiveServices (5)
Aspire.Hosting.Azure.ContainerRegistry (2)
Aspire.Hosting.Azure.CosmosDB (21)
AzureCosmosDBExtensions.cs (21)
92builder.ApplicationBuilder.Eventing.Subscribe<ConnectionStringAvailableEvent>(builder.Resource, async (@event, ct) =>
94var connectionString = await builder.Resource.ConnectionStringExpression.GetValueAsync(ct).ConfigureAwait(false);
98throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null.");
104builder.ApplicationBuilder.Eventing.Subscribe<ResourceReadyEvent>(builder.Resource, async (@event, ct) =>
113foreach (var database in builder.Resource.Databases)
125var healthCheckKey = $"{builder.Resource.Name}_check";
135var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource);
174var dataPath = builder.Resource.InnerResource.IsPreviewEmulator ? "/data" : "/tmp/cosmos/appdata";
209if (builder.Resource.InnerResource.IsPreviewEmulator)
254var database = new AzureCosmosDBDatabaseResource(name, databaseName, builder.Resource);
255builder.Resource.Databases.Add(database);
277var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPath, builder.Resource);
278builder.Resource.Containers.Add(container);
297if (!builder.Resource.InnerResource.IsPreviewEmulator)
346var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv")
347.WithParentRelationship(builder.Resource);
355if (builder.Resource.IsEmulator)
357data.Model.Resources.Remove(kv.Resource);
376var azureResource = builder.Resource;
377azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret(
380builder.WithParameter(AzureBicepResource.KnownParameters.KeyVaultName, keyVaultBuilder.Resource.NameOutputReference);
Aspire.Hosting.Azure.EventHubs (17)
Aspire.Hosting.Azure.Functions (9)
Aspire.Hosting.Azure.KeyVault (1)
Aspire.Hosting.Azure.PostgreSQL (21)
Aspire.Hosting.Azure.Redis (12)
Aspire.Hosting.Azure.Search (1)
Aspire.Hosting.Azure.ServiceBus (22)
AzureServiceBusExtensions.cs (21)
148var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource);
149builder.Resource.Queues.Add(queue);
165configure(builder.Resource);
225var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource);
226builder.Resource.Topics.Add(topic);
242configure(builder.Resource);
262if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource)
291var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource);
292builder.Resource.Subscriptions.Add(subscription);
308configure(builder.Resource);
342if (builder.Resource.IsEmulator)
355var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1);
369.AddContainer($"{builder.Resource.Name}-sqledge",
383var sqlEndpoint = sqlEdgeResource.Resource.GetEndpoint("tcp");
394var surrogate = new AzureServiceBusEmulatorResource(builder.Resource);
413var hasCustomConfigJson = builder.Resource.Annotations.OfType<ContainerMountAnnotation>().Any(v => v.Target == AzureServiceBusEmulatorResource.EmulatorConfigJsonPath);
421var tempConfigFile = WriteEmulatorConfigJson(builder.Resource);
426var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
452var configJsonPath = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-Config.json", tempConfigFile);
497var configFileMount = builder.Resource.Annotations.OfType<ContainerMountAnnotation>().LastOrDefault(v => v.Target == AzureServiceBusEmulatorResource.EmulatorConfigJsonPath);
500builder.Resource.Annotations.Remove(configFileMount);
Aspire.Hosting.Azure.SignalR (2)
Aspire.Hosting.Azure.Sql (10)
Aspire.Hosting.Azure.Storage (17)
AzureStorageExtensions.cs (16)
135builder.ApplicationBuilder.Eventing.Subscribe<BeforeResourceStartedEvent>(builder.Resource, async (@event, ct) =>
137var connectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false);
140throw new DistributedApplicationException($"BeforeResourceStartedEvent was published for the '{builder.Resource.Name}' resource but the connection string was null.");
146builder.ApplicationBuilder.Eventing.Subscribe<ResourceReadyEvent>(builder.Resource, async (@event, ct) =>
150throw new DistributedApplicationException($"BlobServiceClient was not created for the '{builder.Resource.Name}' resource.");
153var connectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false);
156throw new DistributedApplicationException($"ResourceReadyEvent was published for the '{builder.Resource.Name}' resource but the connection string was null.");
159foreach (var blobContainer in builder.Resource.BlobContainers)
165var healthCheckKey = $"{builder.Resource.Name}_check";
177var surrogate = new AzureStorageEmulatorResource(builder.Resource);
210return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly);
310var resource = new AzureBlobStorageResource(name, builder.Resource);
328AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource);
330builder.Resource.Parent.BlobContainers.Add(resource);
346var resource = new AzureTableStorageResource(name, builder.Resource);
361var resource = new AzureQueueStorageResource(name, builder.Resource);
Aspire.Hosting.Azure.Tests (492)
AzureBicepProvisionerTests.cs (25)
25await BicepProvisioner.SetParametersAsync(parameters, bicep0.Resource);
57.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1"))
80Assert.Same(connectionStringResource.Resource, r.Resource);
85Assert.Same(param.Resource, r.Resource);
90Assert.Same(container.Resource, r.Resource);
197await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
198var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, null);
204var checkSum1 = await BicepProvisioner.GetCurrentChecksumAsync(bicep1.Resource, config);
216bicep0.Resource.Scope = new("rg0");
220bicep1.Resource.Scope = new("rg1");
224await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
225await BicepProvisioner.SetScopeAsync(scope0, bicep0.Resource);
226var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, scope0);
230await BicepProvisioner.SetParametersAsync(parameters1, bicep1.Resource);
231await BicepProvisioner.SetScopeAsync(scope1, bicep1.Resource);
232var checkSum1 = BicepProvisioner.GetChecksum(bicep1.Resource, parameters1, scope1);
244bicep0.Resource.Scope = new("rg0");
248bicep1.Resource.Scope = new("rg0");
252await BicepProvisioner.SetParametersAsync(parameters0, bicep0.Resource);
253await BicepProvisioner.SetScopeAsync(scope0, bicep0.Resource);
254var checkSum0 = BicepProvisioner.GetChecksum(bicep0.Resource, parameters0, scope0);
258await BicepProvisioner.SetParametersAsync(parameters1, bicep1.Resource);
259await BicepProvisioner.SetScopeAsync(scope1, bicep1.Resource);
260var checkSum1 = BicepProvisioner.GetChecksum(bicep1.Resource, parameters1, scope1);
284if (resourceEvent.Resource == entries.Resource)
AzureBicepResourceTests.cs (148)
35Assert.Equal("content", bicepResource.Resource.TemplateString);
36Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]);
37Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]);
99if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource)
120if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource)
138bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint";
150bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43";
229Assert.True(cosmos.Resource.IsContainer());
231var csExpr = cosmos.Resource.ConnectionStringExpression;
237Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync());
310var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
336var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
338Assert.Equal("cosmos", cosmos.Resource.Name);
356cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
358var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
380var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
382Assert.Equal("cosmos", cosmos.Resource.Name);
420kv.Resource.SecretResolver = (secretRef, _) =>
430var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
457var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
459Assert.Equal("cosmos", cosmos.Resource.Name);
477cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
479var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
499var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
501Assert.Equal("cosmos", cosmos.Resource.Name);
511appConfig.Resource.Outputs["appConfigEndpoint"] = "https://myendpoint";
512Assert.Equal("https://myendpoint", await appConfig.Resource.ConnectionStringExpression.GetValueAsync(default));
516var manifest = await GetManifestWithBicep(model, appConfig.Resource);
518var connectionStringResource = (IResourceWithConnectionString)appConfig.Resource;
593appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
595var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
597Assert.Equal("appInsights", appInsights.Resource.Name);
599Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
601var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
625appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
627var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
629Assert.Equal("appInsights", appInsights.Resource.Name);
631Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
633var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
655appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
657var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
659Assert.Equal("appInsights", appInsights.Resource.Name);
661Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
663var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
687Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name);
688Assert.Equal("{logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId}", logAnalyticsWorkspace.Resource.WorkspaceId.ValueExpression);
690var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(logAnalyticsWorkspace.Resource);
710appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
715var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
736var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
761var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
800var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
830Assert.True(redis.Resource.IsContainer());
831Assert.NotNull(redis.Resource.PasswordParameter);
833Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync());
835var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
863var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource);
865Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
869Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
870Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
895var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource);
897Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
901Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
902Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
932Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
936var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
941Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
976Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
980var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
985Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
1021var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
1027Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync());
1053var manifest = await ManifestUtils.GetManifest(postgres.Resource);
1073manifest = await ManifestUtils.GetManifest(postgres.Resource);
1092manifest = await ManifestUtils.GetManifest(postgres.Resource);
1136serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint";
1138var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource;
1140Assert.Equal("sb", serviceBus.Resource.Name);
1146var manifest = await GetManifestWithBicep(model, serviceBus.Resource);
1196wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
1206var connectionStringResource = (IResourceWithConnectionString)wps.Resource;
1212var manifest = await GetManifestWithBicep(model, wps.Resource);
1216Assert.Equal("wps1", wps.Resource.Name);
1259wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
1272var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
1275Assert.Equal("wps1", wps.Resource.Name);
1293Assert.True(storage.Resource.IsContainer());
1300=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port));
1306Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression);
1307Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression);
1308Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression);
1314Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync());
1315Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
1316Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync());
1335storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
1336storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
1337storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
1340Assert.Equal("storage", storage.Resource.Name);
1342var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
1361var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
1370var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
1376var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
1385var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
1391var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
1400var tableManifest = await ManifestUtils.GetManifest(table.Resource);
1421storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
1422storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
1423storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
1426Assert.Equal("storage", storage.Resource.Name);
1428var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
1447var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
1456var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
1462var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
1471var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
1477var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
1486var tableManifest = await ManifestUtils.GetManifest(table.Resource);
1506storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
1507storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
1508storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
1511Assert.Equal("storage", storage.Resource.Name);
1515var storageManifest = await GetManifestWithBicep(model, storage.Resource);
1583var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
1592var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
1598var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
1607var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
1613var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
1622var tableManifest = await ManifestUtils.GetManifest(table.Resource);
1643storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
1644storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
1645storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
1648Assert.Equal("storage", storage.Resource.Name);
1650var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
1670var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
1679var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
1685var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
1694var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
1700var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
1709var tableManifest = await ManifestUtils.GetManifest(table.Resource);
1729search.Resource.Outputs["connectionString"] = fakeConnectionString;
1731var connectionStringResource = (IResourceWithConnectionString)search.Resource;
1734Assert.Equal("search", search.Resource.Name);
1740var manifest = await GetManifestWithBicep(model, search.Resource);
1811var aiManifest = await ManifestUtils.GetManifest(ai.Resource);
1815var serviceBusManifest = await ManifestUtils.GetManifest(serviceBus.Resource);
1819var serviceManifest = await ManifestUtils.GetManifest(serviceA.Resource);
1871var manifest = await GetManifestWithBicep(model, openai.Resource);
1979var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(provisioningResource.Resource);
AzureCosmosDBExtensionsTests.cs (20)
30var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
51var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
68var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
101Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
104Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
105Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
131Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
132Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
133Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
134Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
136Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression);
137Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression);
150((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos");
157((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1");
166((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1");
201var manifest = await GetManifestWithBicep(model, cosmos.Resource);
252Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
253Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression);
254Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression);
256var manifest = await GetManifestWithBicep(cosmos.Resource);
AzureEventHubsExtensionsTests.cs (29)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
47await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
51await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
76await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
82hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
88hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
89hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
90hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
128await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
134hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
135hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
136hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
140hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None) + $";EntityPath={hubName};";
166var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
185var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
204var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
223var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
242var endpoints = eventHubs.Resource.Annotations.OfType<EndpointAnnotation>().ToList();
270var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
290var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, eventHubs.Resource);
323var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
525serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
550Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression);
551Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression);
552Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression);
565((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh");
575((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1");
591((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1");
AzurePostgresExtensionsTests.cs (16)
39var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource, skipPreparer: true);
96var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
104"administratorLogin": "{{{userName?.Resource.Name ?? "postgres-data-username"}}.value}",
105"administratorLoginPassword": "{{{password?.Resource.Name ?? "postgres-data-password"}}.value}",
147Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
148Assert.StartsWith("Host=localhost;Port=12455;Username=postgres;Password=", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
150var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
154var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
196var endpoint = Assert.Single(innerPostgres.Resource.Annotations.OfType<EndpointAnnotation>());
205Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
206Assert.Equal("Host=localhost;Port=12455;Username=user1;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
208var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
211var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
245Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
246Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db1", await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
247Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db2Name", await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
AzureServiceBusExtensionsTests.cs (28)
37var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
62var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
94await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
96await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
100await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
102await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
128hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
135await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
136await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
140await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
143await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
163serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(),
186var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
264var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
631serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
658Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression);
659Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression);
660Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression);
661Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression);
675((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb");
681((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue");
688((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic");
695((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub");
743hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
746await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
747await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
754await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
757await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
AzureStorageEmulatorFunctionalTests.cs (13)
48await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
50await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
54await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token);
55await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token);
56await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token);
58await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
94await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
96await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
100await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token);
102await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
120hb.Configuration["ConnectionStrings:BlobConnection"] = await storage.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
150hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
157await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, CancellationToken.None);
AzureWebPubSubExtensionsTests.cs (34)
33Assert.Equal(hubName, hub.Resource.Name);
34var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
55var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
61Assert.Equal("wps1", wps.Resource.Name);
74Assert.Equal("{wps1.outputs.endpoint}", wps.Resource.ConnectionStringExpression.ValueExpression);
75Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=abc", hub.Resource.ConnectionStringExpression.ValueExpression);
77Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hij", otherHub.Resource.ConnectionStringExpression.ValueExpression);
100var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
106Assert.Equal("wps1", wps.Resource.Name);
130var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
136Assert.Equal("wps1", wps.Resource.Name);
156wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
157var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
162Assert.Equal("wps1", wps.Resource.Name);
191wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
206var connectionStringResource = (IResourceWithConnectionString)wps.Resource;
209var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
216Assert.Equal("wps1", wps.Resource.Name);
232Assert.Equal("hub1", hub1.Resource.Name);
233Assert.Equal("resource2", hub2.Resource.Name);
234Assert.Equal("hub3", hub3.Resource.Name);
235Assert.Equal("hub4", hub4.Resource.Name);
237Assert.Equal("hub1", hub1.Resource.HubName);
238Assert.Equal("hub2", hub2.Resource.HubName);
239Assert.Equal("hub3", hub3.Resource.HubName);
240Assert.Equal("hub4", hub4.Resource.HubName);
242Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub1", hub1.Resource.ConnectionStringExpression.ValueExpression);
243Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub2", hub2.Resource.ConnectionStringExpression.ValueExpression);
244Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub3", hub3.Resource.ConnectionStringExpression.ValueExpression);
245Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub4", hub4.Resource.ConnectionStringExpression.ValueExpression);
259Assert.Same(hub1.Resource, hub2.Resource);
260Assert.Equal("resource1", hub1.Resource.Name);
261Assert.Equal("same-hub", hub1.Resource.HubName);
ExistingAzureResourceTests.cs (26)
23var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
40var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
57var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
77var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource);
98var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
115var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
130var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
147var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource);
164var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
181var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource);
198var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource);
215var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
236var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
253var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource);
270var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource);
287var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource);
304var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
320var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
353var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
370var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
393var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource);
413var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
434var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
450var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
467var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (5)
22var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
42var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
62var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
96var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
114var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
ResourceWithAzureFunctionsConfigTests.cs (36)
16var storageResource = builder.AddAzureStorage("storage").Resource;
28var blobResource = storageResource.AddBlobs("blobs").Resource;
40var queueResource = storageResource.AddQueues("queues").Resource;
51var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource;
63var dbResource = cosmosResource.AddCosmosDatabase("database").Resource;
76var containerResource = dbResource.AddContainer("container", "/id").Resource;
87var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource;
98var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource;
109var storage = builder.AddAzureStorage("storage").RunAsEmulator().Resource;
127var storage = builder.AddAzureStorage("storage").Resource;
148var blobResource = storage.AddBlobs("blobs").Resource;
165var tableResource = storage.AddTables("tables").Resource;
182var queueResource = storage.AddQueues("queues").Resource;
198var cosmosResource = builder.AddAzureCosmosDB("cosmos").RunAsEmulator().Resource;
214var cosmosResource = builder.AddAzureCosmosDB("cosmos").WithAccessKeyAuthentication().Resource;
230var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource;
247var dbResource = cosmosResource.AddCosmosDatabase("database").Resource;
256Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression);
259Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression);
272var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource;
281Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression);
284Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression);
300var dbResource = cosmosResource.AddCosmosDatabase("database").Resource;
309Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression);
322var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource;
331Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression);
342var eventHubsResource = builder.AddAzureEventHubs("eventhubs").RunAsEmulator().Resource;
362var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource;
382var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource;
399var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource;
418var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource;
438var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource;
457var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource;
478var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource;
500var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource;
515Assert.Equal(serviceBusResource.Resource.ConnectionStringExpression.ValueExpression, connectionStringExpression.ValueExpression);
Aspire.Hosting.Azure.WebPubSub (5)
Aspire.Hosting.Containers.Tests (38)
ContainerResourceBuilderTests.cs (17)
17Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
25Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
26Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
34container.Resource.Annotations.RemoveAt(0);
37Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
38Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
46container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" });
49Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image);
50Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag);
58Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
66Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry);
74Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256);
152var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
164var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
177var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
213var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single();
221var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
Aspire.Hosting.Docker (3)
Aspire.Hosting.Docker.Tests (4)
Aspire.Hosting.Garnet (1)
Aspire.Hosting.Garnet.Tests (21)
Aspire.Hosting.Kafka (1)
Aspire.Hosting.Kafka.Tests (15)
Aspire.Hosting.Keycloak (2)
Aspire.Hosting.Keycloak.Tests (7)
Aspire.Hosting.Kubernetes (1)
Aspire.Hosting.Kubernetes.Tests (1)
Aspire.Hosting.Milvus (5)
Aspire.Hosting.Milvus.Tests (18)
Aspire.Hosting.MongoDB (6)
Aspire.Hosting.MongoDB.Tests (27)
Aspire.Hosting.MySql (5)
Aspire.Hosting.MySql.Tests (58)
AddMySqlTests.cs (21)
23Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName);
33Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName);
160var mySqlManifest = await ManifestUtils.GetManifest(mysql.Resource);
161var dbManifest = await ManifestUtils.GetManifest(db.Resource);
199var serverManifest = await ManifestUtils.GetManifest(mysql.Resource);
251Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]);
283string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';";
284string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';";
333Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys);
334Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values);
336Assert.Equal("customers1", db1.Resource.DatabaseName);
337Assert.Equal("customers2", db2.Resource.DatabaseName);
339Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
340Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
354Assert.Equal("imports", db1.Resource.DatabaseName);
355Assert.Equal("imports", db2.Resource.DatabaseName);
357Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
358Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
MySqlFunctionalTests.cs (37)
50await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
56await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
58await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
91[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
94hb.AddMySqlDataSource(db.Resource.Name);
133var password = mysql1.Resource.PasswordParameter.Value;
165[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
168hb.AddMySqlDataSource(db1.Resource.Name);
234[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
237hb.AddMySqlDataSource(db2.Resource.Name);
335[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
338hb.AddMySqlDataSource(db.Resource.Name);
405[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
408hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name);
568hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
570hb.AddMySqlDataSource(newDb.Resource.Name);
576await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
643hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
645hb.AddMySqlDataSource(newDb.Resource.Name);
651await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token);
702hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
703hb.AddKeyedMySqlDataSource(db.Resource.Name);
712await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
714var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name);
744hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
745hb.AddMySqlDataSource(newDb.Resource.Name);
750await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (2)
Aspire.Hosting.Nats.Tests (33)
NatsFunctionalTests.cs (19)
36await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
40hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
81await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
85var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
86hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
123await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
127var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
132hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
185await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
190hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
233await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
238hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
343await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
345await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
349await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
351await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.NodeJs.Tests (2)
Aspire.Hosting.Oracle (3)
Aspire.Hosting.Oracle.Tests (32)
AddOracleTests.cs (13)
22Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
32Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
200var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
201var dbManifest = await ManifestUtils.GetManifest(db.Resource);
239var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
295Assert.Equal("customers1", db1.Resource.DatabaseName);
296Assert.Equal("customers2", db2.Resource.DatabaseName);
298Assert.Equal("{oracle1.connectionString}/customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
299Assert.Equal("{oracle1.connectionString}/customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
313Assert.Equal("imports", db1.Resource.DatabaseName);
314Assert.Equal("imports", db2.Resource.DatabaseName);
316Assert.Equal("{oracle1.connectionString}/imports", db1.Resource.ConnectionStringExpression.ValueExpression);
317Assert.Equal("{oracle2.connectionString}/imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Orleans (7)
Aspire.Hosting.PostgreSQL (12)
Aspire.Hosting.PostgreSQL.Tests (71)
AddPostgresTests.cs (27)
22Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check");
32Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
42Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
158var connectionStringResource = postgres.Resource as IResourceWithConnectionString;
162Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
249var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
250var dbManifest = await ManifestUtils.GetManifest(db.Resource);
293var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
319serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
345serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
493Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString());
500Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString());
503Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString());
510Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString());
568Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents);
575Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents);
621Assert.Equal("customers1", db1.Resource.DatabaseName);
622Assert.Equal("customers2", db2.Resource.DatabaseName);
624Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
625Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
639Assert.Equal("imports", db1.Resource.DatabaseName);
640Assert.Equal("imports", db2.Resource.DatabaseName);
642Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
643Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
686var connectionString = await postgres.Resource.GetConnectionStringAsync();
700var connectionString = await postgres.Resource.GetConnectionStringAsync();
701Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
PostgresFunctionalTests.cs (41)
53await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
62await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
65await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
87await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name);
89var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http");
120[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
123hb.AddNpgsqlDataSource(db.Resource.Name);
129await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
166var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http");
168await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
234await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
242[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
245hb.AddNpgsqlDataSource(db1.Resource.Name);
296await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
304[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default)
307hb.AddNpgsqlDataSource(db2.Resource.Name);
396[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
399hb.AddNpgsqlDataSource(db.Resource.Name);
405await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
529hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
531hb.AddNpgsqlDataSource(newDb.Resource.Name);
537await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
570hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
572hb.AddNpgsqlDataSource(newDb.Resource.Name);
578await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
639hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
641hb.AddNpgsqlDataSource(newDb.Resource.Name);
647await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
698hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
699hb.AddKeyedNpgsqlDataSource(db.Resource.Name);
708await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
710var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python.Tests (3)
Aspire.Hosting.Qdrant (5)
Aspire.Hosting.Qdrant.Tests (21)
Aspire.Hosting.RabbitMQ (5)
Aspire.Hosting.RabbitMQ.Tests (20)
Aspire.Hosting.Redis (7)
Aspire.Hosting.Redis.Tests (63)
AddRedisTests.cs (22)
20Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check");
136var manifest = await ManifestUtils.GetManifest(redis.Resource);
174var manifest = await ManifestUtils.GetManifest(redis.Resource);
209var manifest = await ManifestUtils.GetManifest(redis.Resource);
278Assert.Equal(redis1.Resource.Name, item.Value);
283Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
288Assert.Equal(redis1.Resource.Name, item.Value);
293Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value);
298Assert.Equal(redis2.Resource.Name, item.Value);
303Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
308Assert.Equal(redis2.Resource.Name, item.Value);
313Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value);
435Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
456Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]);
480Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
500var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
525var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
595var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
606Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
RedisFunctionalTests.cs (41)
52await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
58await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
60await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
81await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name);
83var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http");
86var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
107[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
110hb.AddRedisClient(redis.Resource.Name);
145await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
147var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
163Assert.Equal(redis1.Resource.Name, db.Name);
164Assert.Equal(redis1.Resource.Name, db.Host);
165Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port);
169Assert.Equal(redis2.Resource.Name, db.Name);
170Assert.Equal(redis2.Resource.Name, db.Host);
171Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port);
206[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
209hb.AddRedisClient(redis1.Resource.Name);
242[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
245hb.AddRedisClient(redis2.Resource.Name);
289[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
292hb.AddRedisClient(redis1.Resource.Name);
324[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
327hb.AddRedisClient(redis2.Resource.Name);
373[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
376hb.AddRedisClient(redis1.Resource.Name);
403[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
406hb.AddRedisClient(redis2.Resource.Name);
471await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
475var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
506await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
510var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
609await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.Seq.Tests (9)
Aspire.Hosting.SqlServer (5)
Aspire.Hosting.SqlServer.Tests (47)
AddSqlServerTests.cs (13)
22Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
32Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
130var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
131var dbManifest = await ManifestUtils.GetManifest(db.Resource);
171var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
228Assert.Equal("customers1", db1.Resource.DatabaseName);
229Assert.Equal("customers2", db2.Resource.DatabaseName);
231Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
232Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
246Assert.Equal("imports", db1.Resource.DatabaseName);
247Assert.Equal("imports", db2.Resource.DatabaseName);
249Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
250Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
SqlServerFunctionalTests.cs (34)
44await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
46await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
50await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
81hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
83hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name);
84hb.AddSqlServerClient(newDb.Resource.Name);
142var password = sqlserver1.Resource.PasswordParameter.Value;
179await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
187[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default),
190hb1.AddSqlServerClient(db1.Resource.Name);
264await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
272[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default),
275hb2.AddSqlServerClient(db2.Resource.Name);
368hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
370hb.AddSqlServerClient(newDb.Resource.Name);
376await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
421hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
423hb.AddSqlServerClient(newDb.Resource.Name);
429await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
493hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
495hb.AddSqlServerClient(newDb.Resource.Name);
501await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token);
553hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
554hb.AddKeyedSqlServerClient(db.Resource.Name);
563await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
565var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (1)
Aspire.Hosting.Tests (285)
DistributedApplicationTests.cs (12)
386using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
387using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
394var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
1007await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration);
1010var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
1028var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1076using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1084Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter?.Value}", env.Value);
1091Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter?.Value}", otherRedisEnv.Value);
1126using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1138Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter!.Value}", env.Value);
1145Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter!.Value}", otherRedisEnv.Value);
ExpressionResolverTests.cs (5)
98var csRef = new ConnectionStringReference(target.Resource, false);
110var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
144var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
163var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
184var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance, "ContainerHostName").DefaultTimeout();
Health\ResourceHealthCheckServiceTests.cs (28)
73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
81await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
116await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
124await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
152builder.Eventing.Subscribe<ResourceReadyEvent>(resource.Resource, (@event, ct) =>
164await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
173Assert.Equal(resource.Resource, e1.Resource);
179await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
187await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
201Assert.Equal(resource.Resource, e2.Resource);
230await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
234await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout();
271await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
314await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
318await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout();
381await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
419builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
444await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
478builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
490await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
523builder.Eventing.Subscribe<ResourceReadyEvent>(parent.Resource, (@event, ct) =>
529var child = builder.AddResource(new ChildResource("child", parent.Resource));
542await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
556Assert.Equal(parentReadyEvent.Resource, parent.Resource);
586await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
594await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
632await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
640await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
Orchestrator\ApplicationOrchestratorTests.cs (23)
24var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
41if (item.Resource == parentResource.Resource)
45else if (item.Resource == childResource.Resource)
88if (item.Resource == parentResource.Resource)
92else if (item.Resource == childResource.Resource)
127applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) =>
145Assert.Equal(resource.Resource, initEvent.Resource);
179if (item.Resource == parent.Resource)
183else if (item.Resource == child.Resource)
188else if (item.Resource == nestedChild.Resource)
192else if (item.Resource == child2.Resource)
244if (item.Resource == firstParent.Resource)
248else if (item.Resource == secondParent.Resource)
252else if (item.Resource == child.Resource)
295if (item.Resource == projectA.Resource)
299else if (item.Resource == projectB.Resource)
344new ChildResourceWithConnectionString("child", new Dictionary<string, string> { {"Namespace", "ns"} }, parentResource.Resource)
347new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { {"Database", "db"} }, childResource.Resource)
364applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) =>
369applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) =>
374applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) =>
380await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parentResource.Resource, parentResource.Resource.Name));
Orchestrator\RelationshipEvaluatorTests.cs (14)
18var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
19var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource));
20var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource));
34Assert.Collection(parentChildLookup[parentResource.Resource],
35x => Assert.Equal(childResource.Resource, x),
36x => Assert.Equal(childWithAnnotationsResource.Resource, x));
38Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource);
39Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource);
41Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]);
43Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource);
45Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]);
WaitForTests.cs (16)
32await app.ResourceNotifications.WaitForResourceAsync(throwingResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
33await app.ResourceNotifications.WaitForResourceAsync(dependingContainerResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
34await app.ResourceNotifications.WaitForResourceAsync(dependingExecutableResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
138await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
244dependency.Resource.Name,
268dependency.Resource.Name,
298await app.ResourceNotifications.WaitForResourceHealthyAsync(dependency.Resource.Name)
453await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
468await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
609await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
623await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
713await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
721await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
729await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
762await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
770await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
WithEnvironmentTests.cs (27)
33container.Resource,
55var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
59Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
64Assert.Same(projectA.Resource, r.Resource);
76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
92var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
108var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
125var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
129Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
134Assert.Same(parameter.Resource, r.Resource);
148var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource,
165projectA.Resource,
190var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
214var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
239.WithEnvironment("HOST", $"{test.Resource};name=1");
241var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
242var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
256Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
261Assert.Same(container.Resource, r.Resource);
266Assert.Same(test.Resource, r.Resource);
287Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
292Assert.Same(container.Resource, r.Resource);
313var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
337var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout();
343var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
348Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
353Assert.Same(sourceBuilder.Resource, r.Resource);
WithHttpCommandTests.cs (23)
89var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
95Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name);
122var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
152var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList();
184var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
193ResourceName = resourceBuilder.Resource.Name,
214var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
223ResourceName = resourceBuilder.Resource.Name,
243var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
252ResourceName = resourceBuilder.Resource.Name,
288var command = serviceB.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
297ResourceName = serviceB.Resource.Name,
331var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
340ResourceName = resourceBuilder.Resource.Name,
375var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().First(c => c.Name == "mycommand");
384ResourceName = resourceBuilder.Resource.Name,
430await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
434await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Starting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
440await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
444await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
499await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
503await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
510await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
WithReferenceTests.cs (23)
29var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
33Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
38Assert.Same(projectA.Resource, r.Resource);
60var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
85var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
108var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
113Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
118Assert.Same(projectA.Resource, r.Resource);
137var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
142Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
147Assert.Same(projectA.Resource, r.Resource);
196var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
215var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
231var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
247var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
290var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
296Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
301Assert.Same(resource.Resource, r.Resource);
304Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships));
309Assert.Same(endpoint.Resource, r.Resource);
314Assert.Same(key.Resource, r.Resource);
336var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
390var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithUrlsTests.cs (30)
26var urlsCallback = projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()
39Assert.Empty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>());
43Assert.NotEmpty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>());
62builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
88builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
143builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
153var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
168builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
178var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
191projectA.WithUrl($"{projectA.Resource.GetEndpoint("https")}/test", "Example");
194builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
204var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
223builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
233var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
247builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
257var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
271builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
281var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
302builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
312var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>();
330var httpEndpoint = servicea.Resource.GetEndpoint("http");
364var httpEndpoint = servicea.Resource.GetEndpoint("http");
508builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
538builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
566builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
576var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test");
597builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
607var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path"));
628builder.Eventing.Subscribe<BeforeResourceStartedEvent>(projectA.Resource, (e, ct) =>
638var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path"));
Aspire.Hosting.Valkey (1)
Aspire.Hosting.Valkey.Tests (22)
Aspire.Playground.Tests (1)
BicepSample.AppHost (1)
KafkaBasic.AppHost (2)
Mongo.AppHost (2)
Stress.AppHost (2)