1 implementation of Resource
Aspire.Hosting (1)
3044 references to Resource
Aspire.Hosting (200)
ResourceBuilderExtensions.cs (107)
173builder.WithReferenceRelationship(externalService.Resource);
175if (externalService.Resource.Uri is not null)
177builder.WithEnvironment(name, externalService.Resource.Uri.ToString());
179else if (externalService.Resource.UrlParameter is not null)
186var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false);
189throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}");
193context.EnvironmentVariables[name] = externalService.Resource.UrlParameter;
214builder.WithReferenceRelationship(parameter.Resource);
218context.EnvironmentVariables[name] = parameter.Resource;
240builder.WithReferenceRelationship(resource.Resource);
244context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false);
511var resource = source.Resource;
517builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
595ApplyEndpoints(builder, source.Resource);
615ApplyEndpoints(builder, source.Resource, endpointName: null, name);
657builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
687builder.WithReferenceRelationship(externalService.Resource);
690builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
693if (externalService.Resource.Uri is { } uri)
697var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name);
703var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
707else if (externalService.Resource.UrlParameter is not null)
713var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name);
718discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0";
721else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message))
723discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
729throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}");
734context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter;
739context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter;
773var endpointReferenceAnnotation = builder.Resource.Annotations
781if (builder.Resource.IsContainer())
841var endpoint = builder.Resource.Annotations
859builder.Resource.Annotations.Add(endpoint);
904if (builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(sb => string.Equals(sb.Name, annotation.Name, StringComparisons.EndpointAnnotationName)))
910if (env is not null && builder.Resource is IResourceWithEndpoints resourceWithEndpoints and IResourceWithEnvironment)
995if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints))
1024return builder.Resource.GetEndpoint(name, contextNetworkID);
1039return builder.Resource.GetEndpoint(name);
1290context.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);
1337context.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);
1367Source = source.Resource,
1404builder.Resource.Annotations
1407.ForEach(w => builder.Resource.Annotations.Remove(w));
1504if (builder.Resource as IResource == dependency.Resource)
1506throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1509if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1511throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1514if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
1527builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1530return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior });
1608if (builder.Resource as IResource == dependency.Resource)
1610throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1613if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1615throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1618if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
1630if (dependency.Resource is ConnectionStringResource cs)
1641builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1644return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior });
1704if (builder.Resource as IResource == dependency.Resource)
1706throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1709if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1711throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1714builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1716return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode));
1760if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key))
1762throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'.");
1844?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
1848throw 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.");
1860throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
1874var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check";
1964var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1967builder.Resource.Annotations.Remove(existingAnnotation);
2029var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
2032builder.Resource.Annotations.Remove(existingAnnotation);
2196?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
2200throw 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.");
2317CertificateAuthorityCollections = { certificateAuthorityCollection.Resource },
2319if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2323if (existingCollection != certificateAuthorityCollection.Resource)
2374if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2422if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2494Password = password?.Resource,
2528Password = password?.Resource,
2607var endpoints = builder.Resource.GetEndpoints();
2617throw 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.");
2625throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}");
2633var endpoints = builder.Resource.GetEndpoints();
2645throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints.");
2742AddReference(resourceBuilder.Resource);
2773return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference));
2803return builder.WithParentRelationship(parent.Resource);
2864child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent);
2951builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource));
3072var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
3101if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation)
3103builder.Resource.Annotations.Remove(existingAnnotation);
Aspire.Hosting.Azure (30)
Aspire.Hosting.Azure.AIFoundry (7)
Aspire.Hosting.Azure.AppConfiguration (3)
Aspire.Hosting.Azure.AppContainers (3)
Aspire.Hosting.Azure.ApplicationInsights (1)
Aspire.Hosting.Azure.AppService (10)
Aspire.Hosting.Azure.CognitiveServices (5)
Aspire.Hosting.Azure.ContainerRegistry (2)
Aspire.Hosting.Azure.CosmosDB (20)
Aspire.Hosting.Azure.EventHubs (14)
Aspire.Hosting.Azure.Functions (9)
Aspire.Hosting.Azure.KeyVault (12)
AzureKeyVaultResourceExtensions.cs (11)
170return builder.Resource.GetSecret(secretName);
185return builder.AddSecret(name, name, parameterResource.Resource);
202var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, parameterResource);
203builder.Resource.Secrets.Add(secret);
222var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, value);
223builder.Resource.Secrets.Add(secret);
241return builder.AddSecret(name, secretName, parameterResource.Resource);
259var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, parameterResource);
260builder.Resource.Secrets.Add(secret);
280var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value);
281builder.Resource.Secrets.Add(secret);
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (13)
114var kustoDatabase = new AzureKustoReadWriteDatabaseResource(name, databaseName, builder.Resource);
115builder.Resource.Databases.Add(kustoDatabase);
125kcsb = GetConnectionStringBuilder(builder.Resource, connectionString);
168var surrogate = new AzureKustoEmulatorResource(builder.Resource);
227var resource = resourceBuilder.Resource;
350if (resourceBuilder.Resource.IsEmulator)
361.Resource
365throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
368var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
376.Resource
380throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
383var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
394message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
Aspire.Hosting.Azure.Kusto.Tests (33)
Aspire.Hosting.Azure.PostgreSQL (22)
Aspire.Hosting.Azure.Redis (20)
Aspire.Hosting.Azure.Search (1)
Aspire.Hosting.Azure.ServiceBus (19)
AzureServiceBusExtensions.cs (18)
162var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource);
163builder.Resource.Queues.Add(queue);
179configure(builder.Resource);
239var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource);
240builder.Resource.Topics.Add(topic);
256configure(builder.Resource);
276if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource)
305var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource);
306builder.Resource.Subscriptions.Add(subscription);
322configure(builder.Resource);
356if (builder.Resource.IsEmulator)
372var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1);
386.AddContainer($"{builder.Resource.Name}-mssql",
400var sqlEndpoint = sqlServerResource.Resource.GetEndpoint("tcp");
409var surrogate = new AzureServiceBusEmulatorResource(builder.Resource);
430var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault();
443var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource));
451var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
Aspire.Hosting.Azure.SignalR (2)
Aspire.Hosting.Azure.Sql (11)
Aspire.Hosting.Azure.Storage (25)
AzureStorageExtensions.cs (24)
181var blobConnectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null.");
184var queueConnectionString = await builder.Resource.GetQueueConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null.");
195foreach (var container in builder.Resource.BlobContainers)
201foreach (var queue in builder.Resource.Queues)
209var healthCheckKey = $"{builder.Resource.Name}_check";
221var surrogate = new AzureStorageEmulatorResource(builder.Resource);
242return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly);
341if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName))
378var name = builder.Resource.Name + "-blobs";
380return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name);
397AzureBlobStorageContainerResource resource = new(name, blobContainerName, GetBlobService(builder).Resource);
398builder.Resource.BlobContainers.Add(resource);
434AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource);
435builder.Resource.Parent.BlobContainers.Add(resource);
480if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName))
499var name = builder.Resource.Name + "-queues";
501return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name);
518AzureQueueStorageQueueResource resource = new(name, queueName, builder.GetQueueService().Resource);
519builder.Resource.Queues.Add(resource);
598var resource = new AzureBlobStorageResource(name, builder.Resource);
623var resource = new AzureTableStorageResource(name, builder.Resource);
629var resource = new AzureQueueStorageResource(name, builder.Resource);
Aspire.Hosting.Azure.Tests (851)
AzureApplicationInsightsExtensionsTests.cs (19)
19appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
21var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
23Assert.Equal("appInsights", appInsights.Resource.Name);
25Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
27var (appInsightsManifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
40appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
42var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
44Assert.Equal("appInsights", appInsights.Resource.Name);
46Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
48var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
69appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
71var connectionStringResource = (IResourceWithConnectionString)appInsights.Resource;
73Assert.Equal("appInsights", appInsights.Resource.Name);
75Assert.Equal("{appInsights.outputs.appInsightsConnectionString}", appInsights.Resource.ConnectionStringExpression.ValueExpression);
77var (appInsightsManifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
90appInsights.Resource.Outputs["appInsightsConnectionString"] = "myinstrumentationkey";
95var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
112var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
127var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
AzureCosmosDBEmulatorFunctionalTests.cs (21)
47await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
53await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
93await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
97hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
98hb.AddAzureCosmosClient(db.Resource.Name);
99hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName);
174await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token);
182[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default)
185hb.AddAzureCosmosClient(cosmos1.Resource.Name);
222await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token);
231[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default)
234hb.AddAzureCosmosClient(cosmos2.Resource.Name);
292await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token);
296hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
297hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (54)
32var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
53var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
70var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
103Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
106Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
107Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
133Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
134Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
135Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
136Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
138Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression);
139Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression);
152((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos");
159((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1");
168((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1");
203var manifest = await GetManifestWithBicep(model, cosmos.Resource);
254Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
255Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression);
256Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression);
258var manifest = await GetManifestWithBicep(cosmos.Resource);
273Assert.True(cosmos.Resource.IsContainer());
275var csExpr = cosmos.Resource.ConnectionStringExpression;
281Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync());
354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
365var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
367Assert.Equal("cosmos", cosmos.Resource.Name);
385cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
387var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
408var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
410Assert.Equal("cosmos", cosmos.Resource.Name);
448kv.Resource.SecretResolver = (secretRef, _) =>
458var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
469var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
471Assert.Equal("cosmos", cosmos.Resource.Name);
489cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
491var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
510var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
512Assert.Equal("cosmos", cosmos.Resource.Name);
523var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
535Assert.True(cosmos.Resource.IsEmulator());
536Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
549Assert.True(cosmos.Resource.IsEmulator());
550Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
580_ = cosmosdb.Resource.AddAsExistingResource(infra);
583var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
610Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput);
611Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner);
613Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput);
614Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner);
617var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList();
618Assert.Contains(cosmos.Resource, references);
619Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references);
AzureDeployerTests.cs (49)
165var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
287Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
288Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
289Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
290Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
291Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
347Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
348Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
349Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
350Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
351Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
413Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
414Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
415Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
416Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
417Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
519Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
520Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
521Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
522Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
523Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/acaenv", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
526Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
527Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
528Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
529Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.Web/serverfarms/aasplan", aasEnv.Resource.Outputs["planId"]);
530Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]);
592var setValue = await param.Resource.GetValueAsync(default);
666var setValue = await param.Resource.GetValueAsync(default);
715Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
716Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
717Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
718Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
719Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
777Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
778Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
985Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
986Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
987Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
988Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
989Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
992var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget);
994Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
995Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
1506Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default));
1507Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default));
1508Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
1561Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default));
1562Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default));
1563Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEventHubsExtensionsTests.cs (33)
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);
521serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
546Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression);
547Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression);
548Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression);
561((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh");
571((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1");
587((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1");
617Assert.True(eventHubs.Resource.IsEmulator());
618Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation);
648_ = eventHubs.Resource.AddAsExistingResource(infra);
651var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureKeyVaultTests.cs (47)
21var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(mykv.Resource);
37var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, mykv.Resource);
57kv.Resource.SecretResolver = (s, ct) =>
63var secretReference = kv.Resource.GetSecret("mySecret");
72containerBuilder.Resource,
77containerBuilder.Resource,
98var secretReference = kv.Resource.GetSecret("mySecret");
99var secretReference2 = kv.Resource.GetSecret("mySecret2");
120var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
136var secretReference = kv.Resource.GetSecret("mySecret");
137var secretReference2 = kv.Resource.GetSecret("mySecret2");
158module2.Resource.Scope = new(existingRg.Resource);
160var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
161var (manifest2, bicep2) = await AzureManifestUtils.GetManifestWithBicep(module2.Resource, skipPreparer: true);
176var secretReference = kv.Resource.GetSecret("mySecret");
177var secretReference2 = kv.Resource.GetSecret("mySecret2");
189var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
206Assert.Same(kv.Resource, secret.Resource);
220Assert.IsType<AzureKeyVaultSecretResource>(secretResource.Resource);
221Assert.Equal("mySecret", secretResource.Resource.Name);
222Assert.Equal("mySecret", secretResource.Resource.SecretName);
223Assert.Same(kv.Resource, secretResource.Resource.Parent);
224Assert.Single(kv.Resource.Secrets);
225Assert.Same(secretResource.Resource, kv.Resource.Secrets[0]);
237var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
267Assert.True(secretResource.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
381_ = keyVault.Resource.AddAsExistingResource(infra);
384var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
397Assert.False(keyVault.Resource.IsEmulator);
408keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
413Assert.True(keyVault.Resource.IsEmulator);
424keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
432var connectionString = keyVault.Resource.ConnectionStringExpression;
434Assert.True(keyVault.Resource.IsEmulator);
445var connectionString = keyVault.Resource.ConnectionStringExpression;
447Assert.False(keyVault.Resource.IsEmulator);
463keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
465var connectionString = keyVault.Resource.ConnectionStringExpression;
466var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
484keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
493keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
495var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
AzureManagedRedisExtensionsTests.cs (21)
38var (_, bicep) = await GetManifestWithBicep(model, redis.Resource);
55redisResource = c.Resource;
60Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
65Assert.Equal($"localhost:12455,password={await redisResource.PasswordParameter.GetValueAsync(CancellationToken.None)}{sslArg}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
78redisResource = c.Resource;
96Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
99Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
102Assert.NotNull(redis.Resource.HostName);
103Assert.Equal("localhost", await redis.Resource.HostName.GetValueAsync(CancellationToken.None));
105Assert.NotNull(redis.Resource.Password);
106Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None));
154Assert.NotNull(redis.Resource.HostName);
155Assert.NotNull(redis.Resource.Password);
158var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None);
161var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None);
174Assert.Null(redis.Resource.Password);
177Assert.NotNull(redis.Resource.HostName);
178Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression);
216_ = redis.Resource.AddAsExistingResource(infra);
219var (manifest, bicep) = await GetManifestWithBicep(module.Resource, skipPreparer: true);
242var (_, bicep) = await GetManifestWithBicep(redis.Resource);
AzurePostgresExtensionsTests.cs (53)
39var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource, skipPreparer: true);
96var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
131Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
132Assert.StartsWith("Host=localhost;Port=12455;Username=postgres;Password=", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
134var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
138var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
180var endpoint = Assert.Single(innerPostgres.Resource.Annotations.OfType<EndpointAnnotation>());
189Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
190Assert.Equal("Host=localhost;Port=12455;Username=user1;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
193Assert.NotNull(postgres.Resource.Host);
194Assert.Equal("localhost", await postgres.Resource.Host.GetValueAsync(CancellationToken.None));
196Assert.NotNull(postgres.Resource.Port);
197Assert.Equal("12455", await postgres.Resource.Port.GetValueAsync(CancellationToken.None));
199Assert.NotNull(postgres.Resource.HostName);
200Assert.Equal("localhost:12455", await postgres.Resource.HostName.GetValueAsync(CancellationToken.None));
202Assert.NotNull(postgres.Resource.UserName);
203Assert.Equal("user1", await postgres.Resource.UserName.GetValueAsync(CancellationToken.None));
205Assert.NotNull(postgres.Resource.Password);
206Assert.Equal("p@ssw0rd1", await postgres.Resource.Password.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));
322Assert.NotNull(postgres.Resource.UserName);
323Assert.NotNull(postgres.Resource.Password);
324Assert.NotNull(postgres.Resource.HostName);
327var hostValue = await postgres.Resource.HostName.GetValueAsync(CancellationToken.None);
330var userValue = await postgres.Resource.UserName.GetValueAsync(CancellationToken.None);
334var passwordValue = await postgres.Resource.Password.GetValueAsync(CancellationToken.None);
348Assert.Null(postgres.Resource.UserName);
349Assert.Null(postgres.Resource.Password);
352Assert.NotNull(postgres.Resource.HostName);
353Assert.Equal("{postgres-data.outputs.hostName}", postgres.Resource.HostName.ValueExpression);
379Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
383var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
388Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
422Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
426var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
431Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
466var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
472Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync());
498var manifest = await ManifestUtils.GetManifest(postgres.Resource);
518manifest = await ManifestUtils.GetManifest(postgres.Resource);
537manifest = await ManifestUtils.GetManifest(postgres.Resource);
580_ = postgres.Resource.AddAsExistingResource(infra);
583var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
611Assert.NotNull(postgres.Resource.ConnectionStringSecretOutput);
612Assert.Same(postgres.Resource, postgres.Resource.ConnectionStringSecretOutput.SecretOwner);
615var references = ((IValueWithReferences)postgres.Resource.ConnectionStringSecretOutput).References.ToList();
616Assert.Contains(postgres.Resource, references);
617Assert.Contains(postgres.Resource.ConnectionStringSecretOutput.Resource, references);
AzureRedisExtensionsTests.cs (32)
40var (manifest, bicep) = await GetManifestWithBicep(model, redis.Resource);
83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
99redisResource = c.Resource;
104Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
108Assert.Equal($"localhost:12455,password={redisResource.PasswordParameter.Value}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
122redisResource = c.Resource;
140Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
143Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
146Assert.NotNull(redis.Resource.HostName);
147Assert.Equal("localhost:12455", await redis.Resource.HostName.GetValueAsync(CancellationToken.None));
149Assert.NotNull(redis.Resource.Password);
150Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None));
198Assert.NotNull(redis.Resource.HostName);
199Assert.NotNull(redis.Resource.Password);
202var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None);
205var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None);
218Assert.Null(redis.Resource.Password);
221Assert.NotNull(redis.Resource.HostName);
222Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression);
244Assert.True(redis.Resource.IsContainer());
245Assert.NotNull(redis.Resource.PasswordParameter);
248Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync());
251var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
295_ = redis.Resource.AddAsExistingResource(infra);
298var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
325Assert.NotNull(redis.Resource.ConnectionStringSecretOutput);
326Assert.Same(redis.Resource, redis.Resource.ConnectionStringSecretOutput.SecretOwner);
329var references = ((IValueWithReferences)redis.Resource.ConnectionStringSecretOutput).References.ToList();
330Assert.Contains(redis.Resource, references);
331Assert.Contains(redis.Resource.ConnectionStringSecretOutput.Resource, references);
AzureServiceBusExtensionsTests.cs (36)
38var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
63var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
95await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
97await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
101await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
103await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
129hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
136await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
137await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
141await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
144await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
164serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(),
187var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
265var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
618serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation);
645Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression);
646Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression);
647Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression);
648Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression);
662((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb");
668((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue");
675((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic");
682((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub");
718serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint";
720var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource;
722Assert.Equal("sb", serviceBus.Resource.Name);
728var manifest = await GetManifestWithBicep(model, serviceBus.Resource);
811hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
814await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
815await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
822await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
825await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
839Assert.True(serviceBus.Resource.IsEmulator());
840Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation);
870_ = serviceBus.Resource.AddAsExistingResource(infra);
873var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureSqlExtensionsTests.cs (22)
46var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource, skipPreparer: true);
92Assert.True(sql.Resource.IsContainer(), "The resource should now be a container resource.");
93var serverConnectionString = await sql.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
97var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
101var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
105var db3ConnectionString = await db3.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
149var endpoint = Assert.Single(innerSql.Resource.Annotations.OfType<EndpointAnnotation>());
158Assert.True(sql.Resource.IsContainer(), "The resource should now be a container resource.");
159var serverConnectionString = await sql.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
162var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
165var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
168var db3ConnectionString = await db3.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
248var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource);
250Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
254Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
255Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
279var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource);
281Assert.True(sql.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
285Assert.Equal("Server=tcp:myserver,1433;Encrypt=True;Authentication=\"Active Directory Default\"", await sql.Resource.GetConnectionStringAsync(default));
286Assert.Equal("Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\"Active Directory Default\"", sql.Resource.ConnectionStringExpression.ValueExpression);
327_ = sql.Resource.AddAsExistingResource(infra);
330var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureStorageEmulatorFunctionalTests.cs (23)
49await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
51await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
55await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token);
56await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token);
57await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token);
59await 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);
137await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
139await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
143await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token);
145await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
176hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
177hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
178hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
179hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
191await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token);
224await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token);
228hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
264await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token);
268hb.Configuration["ConnectionStrings:QueueConnection"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
AzureStorageExtensionsTests.cs (92)
35var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
61var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
87var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
113var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
132storage.Resource.Annotations.OfType<EndpointAnnotation>(),
146var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource);
166var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource);
185Assert.True(storage.Resource.IsContainer());
189Assert.Equal(expected, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default));
201storage.Resource.Outputs["blobEndpoint"] = blobsConnectionString;
205Assert.Equal(blobsConnectionString, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default));
216Assert.Equal("{storage.outputs.blobEndpoint}", blobs.Resource.ConnectionStringExpression.ValueExpression);
233Assert.True(storage.Resource.IsContainer());
238string? blobConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default);
239string? blobContainerConnectionString = await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default);
255storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
260string? blobsConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default);
263Assert.Equal(expected, await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default));
274Assert.Equal("Endpoint={storage.outputs.blobEndpoint};ContainerName=myContainer", blobContainer.Resource.ConnectionStringExpression.ValueExpression);
291Assert.True(storage.Resource.IsContainer());
295Assert.Equal(expected, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync());
307storage.Resource.Outputs["queueEndpoint"] = connectionString;
311Assert.Equal(connectionString, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync());
322Assert.Equal("{storage.outputs.queueEndpoint}", queues.Resource.ConnectionStringExpression.ValueExpression);
339Assert.True(storage.Resource.IsContainer());
344string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync();
347Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
359storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
364string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync();
367Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
379Assert.Equal("Endpoint={storage.outputs.queueEndpoint};QueueName=myqueue", queue.Resource.ConnectionStringExpression.ValueExpression);
394var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
411Assert.True(storage.Resource.IsContainer());
418=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port));
424Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression);
425Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression);
426Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression);
433Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync());
434Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
435Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync());
454storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
455storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
456storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
459Assert.Equal("storage", storage.Resource.Name);
461var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
479var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
488var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
494var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
503var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
509var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
518var tableManifest = await ManifestUtils.GetManifest(table.Resource);
539storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
540storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
541storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
544Assert.Equal("storage", storage.Resource.Name);
546var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
564var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
573var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
579var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
588var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
594var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
603var tableManifest = await ManifestUtils.GetManifest(table.Resource);
627storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
628storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
629storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
632Assert.Equal("storage", storage.Resource.Name);
636var storageManifest = await GetManifestWithBicep(model, storage.Resource);
702var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
711var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
715var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
724var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
728var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
737var tableManifest = await ManifestUtils.GetManifest(table.Resource);
758storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
759storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
760storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
763Assert.Equal("storage", storage.Resource.Name);
765var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
784var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
793var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
799var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
808var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
814var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
823var tableManifest = await ManifestUtils.GetManifest(table.Resource);
850Assert.Equal("storage-blobs", blobService.Resource.Name);
851Assert.Equal(blobService.Resource, blobStorageResource);
877Assert.Equal("storage-queues", queueService.Resource.Name);
878Assert.Equal(queueService.Resource, queueStorageResource);
889Assert.True(storage.Resource.IsEmulator());
890Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation);
920_ = storage.Resource.AddAsExistingResource(infra);
923var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureWebPubSubExtensionsTests.cs (43)
35Assert.Equal(hubName, hub.Resource.Name);
36var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
57var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
63Assert.Equal("wps1", wps.Resource.Name);
76Assert.Equal("{wps1.outputs.endpoint}", wps.Resource.ConnectionStringExpression.ValueExpression);
77Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=abc", hub.Resource.ConnectionStringExpression.ValueExpression);
79Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hij", otherHub.Resource.ConnectionStringExpression.ValueExpression);
102var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
108Assert.Equal("wps1", wps.Resource.Name);
132var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
138Assert.Equal("wps1", wps.Resource.Name);
158wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
159var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
164Assert.Equal("wps1", wps.Resource.Name);
193wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
208var connectionStringResource = (IResourceWithConnectionString)wps.Resource;
211var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
218Assert.Equal("wps1", wps.Resource.Name);
234Assert.Equal("hub1", hub1.Resource.Name);
235Assert.Equal("resource2", hub2.Resource.Name);
236Assert.Equal("hub3", hub3.Resource.Name);
237Assert.Equal("hub4", hub4.Resource.Name);
239Assert.Equal("hub1", hub1.Resource.HubName);
240Assert.Equal("hub2", hub2.Resource.HubName);
241Assert.Equal("hub3", hub3.Resource.HubName);
242Assert.Equal("hub4", hub4.Resource.HubName);
244Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub1", hub1.Resource.ConnectionStringExpression.ValueExpression);
245Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub2", hub2.Resource.ConnectionStringExpression.ValueExpression);
246Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub3", hub3.Resource.ConnectionStringExpression.ValueExpression);
247Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub4", hub4.Resource.ConnectionStringExpression.ValueExpression);
261Assert.Same(hub1.Resource, hub2.Resource);
262Assert.Equal("resource1", hub1.Resource.Name);
263Assert.Equal("same-hub", hub1.Resource.HubName);
272wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
282var connectionStringResource = (IResourceWithConnectionString)wps.Resource;
288var manifest = await GetManifestWithBicep(model, wps.Resource);
292Assert.Equal("wps1", wps.Resource.Name);
332wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint";
345var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource);
348Assert.Equal("wps1", wps.Resource.Name);
380_ = webPubSub.Resource.AddAsExistingResource(infra);
383var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
BicepUtilitiesTests.cs (43)
23await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource);
55.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1"))
59await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource);
73Assert.True(bicep0.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
78Assert.Equal(connectionStringResource.Resource, r.Resource);
83Assert.Equal(param.Resource, r.Resource);
88Assert.Equal(container.Resource, r.Resource);
110await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource);
111var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null);
114await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource);
115var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null);
137await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource);
138var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null);
141await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource);
142var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null);
154bicep0.Resource.Scope = new("rg0");
158bicep1.Resource.Scope = new("rg1");
162await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource);
163await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource);
164var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0);
168await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource);
169await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource);
170var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1);
182bicep0.Resource.Scope = new("rg0");
186bicep1.Resource.Scope = new("rg0");
190await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource);
191await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource);
192var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0);
196await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource);
197await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource);
198var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1);
208var bicep1 = builder.AddBicepTemplateString("test1", "param name string").Resource;
209var bicep2 = builder.AddBicepTemplateString("test2", "param name string").Resource;
229var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
254var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
282var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
314var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
336var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
354var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
372var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
387var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
408var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
441var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
ExistingAzureResourceTests.cs (28)
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);
97var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
146var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource);
163var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
180var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource);
197var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource);
214var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
235var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource);
269var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource);
286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource);
303var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
319var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
371var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
386var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
402var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource);
445var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
466var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
482var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
499var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (10)
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);
82var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
102var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
120var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
136var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
154var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
200var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
218var 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 (50)
ContainerResourceBuilderTests.cs (17)
16Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
24Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
25Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
33container.Resource.Annotations.RemoveAt(0);
36Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image);
37Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
45container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" });
48Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image);
49Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag);
57Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag);
65Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry);
73Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256);
151var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
163var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
176var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
212var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single();
220var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
Aspire.Hosting.DevTunnels (11)
Aspire.Hosting.DevTunnels.Tests (14)
DevTunnelResourceBuilderExtensionsTests.cs (14)
26var tunnelPort = tunnel.Resource.Ports.FirstOrDefault();
31var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: builder.Services.BuildServiceProvider()).DefaultTimeout();
45Assert.True(tunnel.Resource.Options.AllowAnonymous);
55Assert.Equal("custom-id", tunnel.Resource.TunnelId);
68Assert.Single(tunnel.Resource.Ports);
69var port = tunnel.Resource.Ports.First();
83var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https");
86Assert.Equal(target.Resource, tunnelEndpoint.Resource);
103Assert.Equal(target.Resource, tunnelEndpoint.Resource);
121Assert.Equal(target.Resource, tunnelEndpoint.Resource);
135var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent");
175var endpointRef = tunnel.GetEndpoint(target.Resource, "https");
195var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http");
196var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https");
Aspire.Hosting.Docker (12)
Aspire.Hosting.Docker.Tests (13)
Aspire.Hosting.Garnet (1)
Aspire.Hosting.Garnet.Tests (21)
Aspire.Hosting.GitHub.Models (12)
Aspire.Hosting.GitHub.Models.Tests (37)
GitHubModelsExtensionTests.cs (33)
20Assert.Equal("github", github.Resource.Name);
21Assert.Equal("openai/gpt-4o-mini", github.Resource.Model);
32Assert.NotNull(github.Resource.Key);
33Assert.Equal("mymodel-gh-apikey", github.Resource.Key.Name);
34Assert.True(github.Resource.Key.Secret);
45var connectionString = github.Resource.ConnectionStringExpression.ValueExpression;
57var connectionString = github.Resource.ConnectionStringExpression.ValueExpression;
78var connectionString = await github.Resource.ConnectionStringExpression.GetValueAsync(default);
80Assert.Equal(apiKeyParameter.Resource, github.Resource.Key);
91Assert.NotNull(github.Resource.Key);
92Assert.Equal("github-gh-apikey", github.Resource.Key.Name);
93Assert.True(github.Resource.Key.Secret);
104Assert.Null(github.Resource.Organization);
118Assert.NotNull(github.Resource.Organization);
119Assert.Equal("github-org", github.Resource.Organization.Name);
120Assert.Equal(orgParameter.Resource, github.Resource.Organization);
134var connectionString = github.Resource.ConnectionStringExpression.ValueExpression;
154var connectionString = await github.Resource.ConnectionStringExpression.GetValueAsync(default);
169var connectionString = github.Resource.ConnectionStringExpression.ValueExpression;
188var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", orgParameter.Resource, apiKeyParameter.Resource);
192Assert.Equal(orgParameter.Resource, resource.Organization);
193Assert.Equal(apiKeyParameter.Resource, resource.Key);
204var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", null, apiKeyParameter.Resource);
209Assert.Equal(apiKeyParameter.Resource, resource.Key);
223var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", null, apiKeyParameter.Resource);
226resource.Organization = orgParameter.Resource;
227Assert.Equal(orgParameter.Resource, resource.Organization);
255Assert.Equal(apiKey.Resource, github.Resource.Key);
287var healthCheckAnnotations = github.Resource.Annotations.OfType<HealthCheckAnnotation>().ToList();
Aspire.Hosting.JavaScript (22)
Aspire.Hosting.JavaScript.Tests (32)
Aspire.Hosting.Kafka.Tests (17)
Aspire.Hosting.Keycloak (6)
Aspire.Hosting.Keycloak.Tests (7)
Aspire.Hosting.Kubernetes (1)
Aspire.Hosting.Kubernetes.Tests (2)
Aspire.Hosting.Maui (18)
Aspire.Hosting.Maui.Tests (39)
MauiPlatformExtensionsTests.cs (39)
72Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name);
73var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource);
74Assert.Same(maui.Resource, resourceWithParent.Parent);
75Assert.IsType(config.ExpectedResourceType, platform.Resource);
101Assert.Equal(customName, platform.Resource.Name);
152var resource = platform.Resource;
188Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource);
214Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name);
215var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource);
216var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource);
218Assert.Same(maui.Resource, parent1.Parent);
250.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None);
280androidEmulator.Resource,
312Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name);
313Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource);
314Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource);
339Assert.Equal("my-device", device.Resource.Name);
340Assert.IsType<MauiAndroidDeviceResource>(device.Resource);
365Assert.Equal("my-emulator", emulator.Resource.Name);
366Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource);
391Assert.Equal("my-device", device.Resource.Name);
392Assert.IsType<MauiiOSDeviceResource>(device.Resource);
417Assert.Equal("my-simulator", simulator.Resource.Name);
418Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource);
445Assert.NotEqual(device.Resource.Name, simulator.Resource.Name);
446Assert.IsType<MauiiOSDeviceResource>(device.Resource);
447Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource);
473resource = maui.AddiOSDevice().Resource;
477resource = maui.AddiOSSimulator().Resource;
509iosSimulator.Resource,
540resource = maui.AddAndroidDevice().Resource;
544resource = maui.AddAndroidEmulator().Resource;
578var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault();
609var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList();
643platform.Resource,
652var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
Aspire.Hosting.Milvus (5)
Aspire.Hosting.Milvus.Tests (18)
Aspire.Hosting.MongoDB (6)
Aspire.Hosting.MongoDB.Tests (31)
Aspire.Hosting.MySql (6)
Aspire.Hosting.MySql.Tests (62)
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}';";
324Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys);
325Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values);
327Assert.Equal("customers1", db1.Resource.DatabaseName);
328Assert.Equal("customers2", db2.Resource.DatabaseName);
330Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
331Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
345Assert.Equal("imports", db1.Resource.DatabaseName);
346Assert.Equal("imports", db2.Resource.DatabaseName);
348Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
349Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
MySqlFunctionalTests.cs (40)
49await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
55await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
57await 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);
134var password = mysql1.Resource.PasswordParameter.Value;
168[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
171hb.AddMySqlDataSource(db1.Resource.Name);
238[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
241hb.AddMySqlDataSource(db2.Resource.Name);
341[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
344hb.AddMySqlDataSource(db.Resource.Name);
427[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
430hb.AddMySqlDataSource(db.Resource.Name);
498[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
501hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name);
656hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
658hb.AddMySqlDataSource(newDb.Resource.Name);
664await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
732hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
734hb.AddMySqlDataSource(newDb.Resource.Name);
740await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token);
792hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
793hb.AddKeyedMySqlDataSource(db.Resource.Name);
802await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
804var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name);
835hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
836hb.AddMySqlDataSource(newDb.Resource.Name);
841await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (2)
Aspire.Hosting.Nats.Tests (34)
NatsFunctionalTests.cs (19)
35await 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);
86var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
87hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
124await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
129var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
134hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
187await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
193hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
236await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
242hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
347await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
349await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
353await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
355await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.OpenAI (13)
Aspire.Hosting.OpenAI.Tests (43)
OpenAIExtensionTests.cs (32)
21var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default);
22var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default);
41var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default);
42var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default);
61Assert.Equal("chat", model.Resource.Name);
62Assert.Equal("gpt-4o-mini", model.Resource.Model);
73Assert.NotNull(parent.Resource.Key);
74Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name);
75Assert.True(parent.Resource.Key.Secret);
77Assert.NotNull(parent.Resource.Key);
90var expression = openai.Resource.ConnectionStringExpression.ValueExpression;
95var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
108var expression = openai.Resource.ConnectionStringExpression.ValueExpression;
114var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
134var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
136Assert.Equal(apiKeyParameter.Resource, parent.Resource.Key);
148Assert.NotNull(parent.Resource.Key);
149Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name);
150Assert.True(parent.Resource.Key.Secret);
151Assert.Equal(parent.Resource.Key, parent.Resource.Key);
163var resource = new OpenAIModelResource("test", "gpt-4o-mini", parent.Resource);
168Assert.Equal(parent.Resource.Key, parent.Resource.Key);
198Assert.Equal(apiKey.Resource, parent.Resource.Key);
232var healthCheckAnnotations = openai.Resource.Annotations.OfType<HealthCheckAnnotation>().ToList();
282var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
363Assert.Equal("chat", openai.Resource.Name);
364Assert.Equal(modelName, openai.Resource.Model);
366var connectionString = openai.Resource.ConnectionStringExpression.ValueExpression;
OpenAIFunctionalTests.cs (11)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
77Assert.Single(resource.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "resource_check");
80var statusPageHealthCheck = Enumerable.Single(resource.Resource.Annotations, x => x is HealthCheckAnnotation hca && hca.Key == "resource_check");
81resource.Resource.Annotations.Remove(statusPageHealthCheck);
90await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
92await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
96await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
98await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Oracle (3)
Aspire.Hosting.Oracle.Tests (36)
AddOracleTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
199var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
200var dbManifest = await ManifestUtils.GetManifest(db.Resource);
238var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
294Assert.Equal("customers1", db1.Resource.DatabaseName);
295Assert.Equal("customers2", db2.Resource.DatabaseName);
297Assert.Equal("{oracle1.connectionString}/customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
298Assert.Equal("{oracle1.connectionString}/customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
312Assert.Equal("imports", db1.Resource.DatabaseName);
313Assert.Equal("imports", db2.Resource.DatabaseName);
315Assert.Equal("{oracle1.connectionString}/imports", db1.Resource.ConnectionStringExpression.ValueExpression);
316Assert.Equal("{oracle2.connectionString}/imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Orleans (7)
Aspire.Hosting.PostgreSQL (10)
Aspire.Hosting.PostgreSQL.Tests (77)
AddPostgresTests.cs (29)
21Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check");
31Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
41Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
157var connectionStringResource = postgres.Resource as IResourceWithConnectionString;
162Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
250var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
251var dbManifest = await ManifestUtils.GetManifest(db.Resource);
294var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
320serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
346serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
489Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString());
497Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString());
501Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString());
509Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString());
557Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents);
564Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents);
601Assert.Equal("customers1", db1.Resource.DatabaseName);
602Assert.Equal("customers2", db2.Resource.DatabaseName);
604Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
605Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
619Assert.Equal("imports", db1.Resource.DatabaseName);
620Assert.Equal("imports", db2.Resource.DatabaseName);
622Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
623Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
668var connectionString = await postgres.Resource.GetConnectionStringAsync();
682var connectionString = await postgres.Resource.GetConnectionStringAsync();
684Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
697var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource);
698var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource);
PostgresFunctionalTests.cs (45)
52await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
61await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
64await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
86await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name);
88var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http");
119[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
122hb.AddNpgsqlDataSource(db.Resource.Name);
128await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
165var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http");
167await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
233await 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);
305[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default)
308hb.AddNpgsqlDataSource(db2.Resource.Name);
400[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
403hb.AddNpgsqlDataSource(db.Resource.Name);
409await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
486[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
489hb.AddNpgsqlDataSource(db.Resource.Name);
495await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
614hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
616hb.AddNpgsqlDataSource(newDb.Resource.Name);
622await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
656hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
658hb.AddNpgsqlDataSource(newDb.Resource.Name);
664await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
726hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
728hb.AddNpgsqlDataSource(newDb.Resource.Name);
734await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
786hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
787hb.AddKeyedNpgsqlDataSource(db.Resource.Name);
796await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
798var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python (34)
Aspire.Hosting.Python.Tests (36)
AddPythonAppTests.cs (34)
38var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory);
76var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory);
136var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
733Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
737Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
757Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
864Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
868Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
895Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
899Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1175var initialCommand = pythonBuilder.Resource.Command;
1180var newCommand = pythonBuilder.Resource.Command;
1398var resource = pythonApp.Resource;
1436var resource = pythonApp.Resource;
1476var resource = pythonApp.Resource;
1513var resource = pythonApp.Resource;
1544var resource = pythonApp.Resource;
1567pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1589pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1607pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
1863Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1867Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1897Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1901Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1934Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1938Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1958Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _));
2064Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2099Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2103Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2139Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2169Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2270Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2302Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
Aspire.Hosting.Qdrant (5)
Aspire.Hosting.Qdrant.Tests (21)
Aspire.Hosting.RabbitMQ (5)
Aspire.Hosting.RabbitMQ.Tests (21)
Aspire.Hosting.Redis (5)
Aspire.Hosting.Redis.Tests (80)
AddRedisTests.cs (35)
24Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check");
140var manifest = await ManifestUtils.GetManifest(redis.Resource);
174var manifest = await ManifestUtils.GetManifest(redis.Resource);
209var manifest = await ManifestUtils.GetManifest(redis.Resource);
244var manifest = await ManifestUtils.GetManifest(redis.Resource);
314Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value);
319Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
324Assert.Equal(redis1.Resource.Name, item.Value);
330Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value);
336Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value);
341Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
346Assert.Equal(redis2.Resource.Name, item.Value);
352Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value);
358Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value);
363Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
368Assert.Equal(redis3.Resource.Name, item.Value);
509Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
531Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]);
556Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
577var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
602var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
672var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
683Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
742var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
755var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
769var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
772Assert.Equal(password.Resource, annotation.Password);
784var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
800var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
803Assert.Equal(password.Resource, annotation.Password);
821Assert.True(redis.Resource.TlsEnabled);
836Assert.False(redis.Resource.TlsEnabled);
RedisFunctionalTests.cs (45)
51await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
57await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
59await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
80await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name);
82var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http");
85if (redis.Resource.TlsEnabled)
91var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
113[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
116hb.AddRedisClient(redis.Resource.Name);
152await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
154var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
170Assert.Equal(redis1.Resource.Name, db.Name);
171Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host);
172Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port);
176Assert.Equal(redis2.Resource.Name, db.Name);
177Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host);
178Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port);
182Assert.Equal(redis3.Resource.Name, db.Name);
183Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host);
184Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port);
220[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
223hb.AddRedisClient(redis1.Resource.Name);
257[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
260hb.AddRedisClient(redis2.Resource.Name);
305[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
308hb.AddRedisClient(redis1.Resource.Name);
340[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
343hb.AddRedisClient(redis2.Resource.Name);
390[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
393hb.AddRedisClient(redis1.Resource.Name);
421[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
424hb.AddRedisClient(redis2.Resource.Name);
489await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
493var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
524await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
528var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
627await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.Seq.Tests (14)
Aspire.Hosting.SqlServer (5)
Aspire.Hosting.SqlServer.Tests (47)
AddSqlServerTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
129var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
130var dbManifest = await ManifestUtils.GetManifest(db.Resource);
170var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource);
227Assert.Equal("customers1", db1.Resource.DatabaseName);
228Assert.Equal("customers2", db2.Resource.DatabaseName);
230Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
231Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
245Assert.Equal("imports", db1.Resource.DatabaseName);
246Assert.Equal("imports", db2.Resource.DatabaseName);
248Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
249Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
SqlServerFunctionalTests.cs (34)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
51await 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);
143var password = sqlserver1.Resource.PasswordParameter.Value;
181await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
190[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default),
193hb1.AddSqlServerClient(db1.Resource.Name);
267await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
276[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default),
279hb2.AddSqlServerClient(db2.Resource.Name);
373hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
375hb.AddSqlServerClient(newDb.Resource.Name);
381await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
427hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
429hb.AddSqlServerClient(newDb.Resource.Name);
435await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
500hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
502hb.AddSqlServerClient(newDb.Resource.Name);
508await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token);
561hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
562hb.AddKeyedSqlServerClient(db.Resource.Name);
571await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
573var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (2)
Aspire.Hosting.Tests (707)
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (26)
26var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
50var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
69var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
90var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
97Resource = container.Resource,
142var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
148Resource = container.Resource,
178var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
184Resource = container.Resource,
212var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
218Resource = container.Resource,
253var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
259Resource = container.Resource,
288Assert.Equal("mycontainer", container.Resource.Name);
289var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
309Assert.Equal("mycontainer", container.Resource.Name);
310var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
332var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
339Resource = container.Resource,
368var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
375Resource = container.Resource,
400var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
434var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
440Resource = container.Resource,
470var envAnnotation = container.Resource.Annotations.OfType<EnvironmentAnnotation>().FirstOrDefault();
472var endpointAnnotation = container.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
ContainerRegistryResourceTests.cs (66)
22Assert.Equal("docker-hub", registry.Resource.Name);
24var containerRegistry = registry.Resource as IContainerRegistry;
38Assert.Equal("acr", registry.Resource.Name);
40var containerRegistry = registry.Resource as IContainerRegistry;
56Assert.Equal("my-registry", registry.Resource.Name);
58var containerRegistry = registry.Resource as IContainerRegistry;
73Assert.Equal("my-registry", registry.Resource.Name);
75var containerRegistry = registry.Resource as IContainerRegistry;
199var containerRegistry = registry.Resource as IContainerRegistry;
213var containerRegistry = registry.Resource as IContainerRegistry;
228var containerRegistry = registry.Resource as IContainerRegistry;
244var containerRegistry = registry.Resource as IContainerRegistry;
262var containerRegistry = registry.Resource as IContainerRegistry;
277Assert.IsAssignableFrom<IContainerRegistry>(registry.Resource);
308var annotation = container.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().SingleOrDefault();
310Assert.Same(registry.Resource, annotation.Registry);
343var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
344var pipelineConfigAnnotations = container.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList();
358var pipelineStepAnnotations = project.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
359var pipelineConfigAnnotations = project.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList();
373var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>());
378Resource = project.Resource
397var pipelineStepAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>());
402Resource = container.Resource
421var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
428Resource = container.Resource
445var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>());
450Resource = project.Resource
473var annotation = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().FirstOrDefault();
475Assert.Same(registry.Resource, annotation.Registry);
489var annotations = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().ToList();
491Assert.Same(registry1.Resource, annotations[0].Registry);
501var annotation = new ContainerRegistryReferenceAnnotation(registry.Resource);
503Assert.Same(registry.Resource, annotation.Registry);
518Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
525var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
526Assert.Same(registry.Resource, registryTargetAnnotation.Registry);
546var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
550Assert.Contains(registry1.Resource, registryResources);
551Assert.Contains(registry2.Resource, registryResources);
570var containerRegistry = project.Resource.GetContainerRegistry();
571Assert.Same(registry.Resource, containerRegistry);
593var containerRegistry = project.Resource.GetContainerRegistry();
594Assert.Same(registry2.Resource, containerRegistry);
615var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry);
629var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry);
651Assert.Single(project1.Resource.Annotations.OfType<RegistryTargetAnnotation>());
652Assert.Single(project2.Resource.Annotations.OfType<RegistryTargetAnnotation>());
653Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>());
675var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
678var containerRegistryRefAnnotation = Assert.Single(project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>());
679Assert.Same(specificRegistry.Resource, containerRegistryRefAnnotation.Registry);
682var containerRegistry = project.Resource.GetContainerRegistry();
683Assert.Same(specificRegistry.Resource, containerRegistry);
698Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
705var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
706Assert.Same(acr.Resource, registryTargetAnnotation.Registry);
726Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
727Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>());
746var containerRegistry = project.Resource.GetContainerRegistry();
747Assert.Same(acr.Resource, containerRegistry);
767var containerRegistry = env.Resource.GetContainerRegistry();
768Assert.Same(acr.Resource, containerRegistry);
788var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
792Assert.Contains(acr.Resource, registryResources);
793Assert.Contains(dockerHub.Resource, registryResources);
DistributedApplicationModelExtensionsTests.cs (8)
31item => Assert.Equal(container1.Resource, item),
32item => Assert.Equal(container2.Resource, item),
33item => Assert.Equal(project.Resource, item),
34item => Assert.Equal(emulator.Resource, item));
50containerWithDockerfile.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null));
54buildOnlyContainer.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null) { HasEntrypoint = false });
66item => Assert.Equal(project.Resource, item),
67item => Assert.Equal(containerWithDockerfile.Resource, item));
DistributedApplicationTests.cs (21)
636using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
637using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
644var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
962var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
1565await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration);
1568var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
1586var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1635using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1643var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1645Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value);
1650if (redis.Resource.TlsEnabled)
1661sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1663Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value);
1666if (redisNoPort.Resource.TlsEnabled)
1703using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1715var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1717Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value);
1722if (redis.Resource.TlsEnabled)
1733sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1735Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value);
1739if (redisNoPort.Resource.TlsEnabled)
ExpressionResolverTests.cs (8)
132var csRef = new ConnectionStringReference(target.Resource, false);
148var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
186var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout();
211var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout();
229var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
248var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
266var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single();
271_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (37)
21Assert.Equal("nuget", externalService.Resource.Name);
22Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString());
23Assert.Null(externalService.Resource.UrlParameter);
34Assert.Equal("nuget", externalService.Resource.Name);
35Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString());
36Assert.Null(externalService.Resource.UrlParameter);
47Assert.Equal("nuget", externalService.Resource.Name);
48Assert.Null(externalService.Resource.Uri);
49Assert.NotNull(externalService.Resource.UrlParameter);
50Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name);
102Assert.Equal("nuget", externalService.Resource.Name);
103Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
116var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
133var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
152var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
172var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout();
177Assert.Equal(urlParam.Resource.ValueExpression, urlValue);
195await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
211Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
212Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
227Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
228Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
250Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations));
264Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
321externalService.Resource.Name,
348externalService.Resource.Name,
375externalService.Resource.Name,
399Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
400var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
420Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
421var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
445Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
446var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
470var manifest = await ManifestUtils.GetManifest(project.Resource);
487Assert.Equal("service", externalService.Resource.Name);
488Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
538var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Health\ResourceHealthCheckServiceTests.cs (30)
32await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
40await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
72await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
80await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
115await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
123await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
162await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
171Assert.Equal(resource.Resource, e1.Resource);
177await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
185await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
199Assert.Equal(resource.Resource, e2.Resource);
228await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
232await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout();
269await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
312await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
316await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout();
348await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
354Assert.Equal(resource.Resource, @event.Resource);
379await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
441await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
486await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
526var child = builder.AddResource(new ChildResource("child", parent.Resource))
537await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
545await app.ResourceNotifications.PublishUpdateAsync(child.Resource, s => s with
551Assert.Equal(parentReadyEvent.Resource, parent.Resource);
554Assert.Equal(childReadyEvent.Resource, child.Resource);
581await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
589await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
627await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
635await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
Orchestrator\ApplicationOrchestratorTests.cs (43)
34var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
51if (item.Resource == parentResource.Resource)
55else if (item.Resource == childResource.Resource)
99if (item.Resource == parentResource.Resource)
103else if (item.Resource == childResource.Resource)
146applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) =>
164Assert.Equal(resource.Resource, initEvent.Resource);
199if (item.Resource == parent.Resource)
203else if (item.Resource == child.Resource)
208else if (item.Resource == nestedChild.Resource)
212else if (item.Resource == child2.Resource)
265if (item.Resource == firstParent.Resource)
269else if (item.Resource == secondParent.Resource)
273else if (item.Resource == child.Resource)
317if (item.Resource == projectA.Resource)
321else if (item.Resource == projectB.Resource)
367new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource)
370new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource)
387applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) =>
392applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) =>
397applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) =>
403await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parentResource.Resource, parentResource.Resource.Name));
434if (item.Resource == resource.Resource)
448await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None);
599var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
617parentContainer.Resource,
624var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null;
625var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
646var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
664parentContainer.Resource,
671var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null;
672var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
713if (item.Resource == parent.Resource)
717else if (item.Resource == child.Resource)
721else if (item.Resource == child2.Resource)
751parent.WithChildRelationship(child.Resource)
752.WithChildRelationship(child2.Resource);
770if (item.Resource == parent.Resource)
774else if (item.Resource == child.Resource)
778else if (item.Resource == child2.Resource)
824if (item.Resource == parentProject.Resource)
828else if (item.Resource == childProject.Resource)
Orchestrator\RelationshipEvaluatorTests.cs (29)
17var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
18var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource));
19var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource));
33Assert.Collection(parentChildLookup[parentResource.Resource],
34x => Assert.Equal(childResource.Resource, x),
35x => Assert.Equal(childWithAnnotationsResource.Resource, x));
37Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource);
38Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource);
40Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]);
42Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource);
44Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]);
65Assert.Collection(parentChildLookup[parentResource.Resource],
66x => Assert.Equal(child1Resource.Resource, x),
67x => Assert.Equal(child2Resource.Resource, x));
79parentResource.WithChildRelationship(child1Resource.Resource)
80.WithChildRelationship(child2Resource.Resource);
88Assert.Collection(parentChildLookup[parentResource.Resource],
89x => Assert.Equal(child1Resource.Resource, x),
90x => Assert.Equal(child2Resource.Resource, x));
111Assert.Collection(parentChildLookup[parentResource.Resource],
112x => Assert.Equal(child1Resource.Resource, x),
113x => Assert.Equal(child2Resource.Resource, x));
134Assert.Single(parentChildLookup[grandParentResource.Resource], parentResource.Resource);
135Assert.Single(parentChildLookup[parentResource.Resource], childResource.Resource);
Publishing\ResourceContainerImageManagerTests.cs (37)
38await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
70await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
102await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
139await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
173await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
203await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
240await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
280await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
315await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
347await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
378await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
429await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
458await imageBuilder.PushImageAsync(testResource.Resource, cts.Token);
463resource => Assert.Equal(testResource.Resource, resource));
483imageBuilder.PushImageAsync(testResource.Resource, cts.Token));
518await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token);
547await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token);
579await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token);
617imageBuilder.BuildImagesAsync([container.Resource], cts.Token));
662await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
734await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
829await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
868var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
907var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
934var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
961var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync(
966var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
1010var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync(
1041var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1074await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1080Assert.Equal(servicea.Resource, capturedResource);
1121await imageManager.BuildImagesAsync([servicea.Resource], cts.Token);
1165() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token));
1198() => imageManager.BuildImageAsync(container.Resource, cts.Token));
1241() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token));
1274() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token));
ResourceExtensionsTests.cs (46)
20Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
21Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
32Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
33Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
44Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
45Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
56Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
57Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
67Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
68Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
79Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
80Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
91var child = builder.AddResource(new ChildResource("child", parent.Resource))
94Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
95Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
106var child = builder.AddResource(new ChildResource("child", parent.Resource));
108Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
109Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
120var child = builder.AddResource(new ChildResource("child", parent.Resource))
123Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
124Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
135var child = builder.AddResource(new ChildResource("child", parent: parent.Resource))
138var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource))
141Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
142Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
152Assert.True(container.Resource.TryGetContainerImageName(out var imageName));
162Assert.True(container.Resource.TryGetContainerImageName(out var imageName));
181var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
216var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
251var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout();
285.Resource.GetArgumentValuesAsync().DefaultTimeout();
297.Resource.GetArgumentValuesAsync().DefaultTimeout();
315var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
324Resource = containerResource.Resource,
362var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList();
372Resource = containerResource.Resource,
392Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
396Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
400Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
417var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
427Resource = containerResource.Resource,
444var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
456var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
468Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(),
476var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>());
480Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(),
WaitForTests.cs (67)
33await app.ResourceNotifications.WaitForResourceAsync(throwingResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
34await app.ResourceNotifications.WaitForResourceAsync(dependingContainerResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
35await app.ResourceNotifications.WaitForResourceAsync(dependingExecutableResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token);
66var childResourceBuilder = builder.AddResource(new CustomChildResource("child", parentResourceBuilder.Resource));
108await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
110await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
139await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
141await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
181await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
217await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
219await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
224await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token);
245dependency.Resource.Name,
269dependency.Resource.Name,
299await app.ResourceNotifications.WaitForResourceHealthyAsync(dependency.Resource.Name)
328await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
330await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
335await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token);
362await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
364await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
369await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
372await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
377await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
409await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
411await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
416await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
419await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
424await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
454await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
459await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
469await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
501await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token);
506await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
516await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
556await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token);
561await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
572await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
610await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
615await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
624await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token);
661await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
664await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test0", s => s with
669await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
672await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test1", s => s with
677await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
714await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
717await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test0", s => s with
722await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
725await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, "test1", s => s with
730await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
763await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
766await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
771await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token);
783var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
787Assert.True(containerResource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations));
790a => Assert.Equal(a.Resource, parentResource.Resource),
791a => Assert.Equal(a.Resource, childResource.Resource)
794Assert.True(containerResource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationshipAnnotations));
797Assert.Equal(childResource.Resource, relationshipAnnotation.Resource);
809Assert.True(resource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations));
812Assert.Equal(dependency.Resource, waitAnnotation.Resource);
825Assert.True(resource.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations));
828Assert.Equal(dependency.Resource, waitAnnotation.Resource);
875await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token);
878await app.ResourceNotifications.PublishUpdateAsync(dependency.Resource, s => s with
885await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
WithEnvironmentTests.cs (37)
32container.Resource,
54var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
58Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
63Assert.Same(projectA.Resource, r.Resource);
75var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
91var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
107var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
124var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
128Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
133Assert.Same(parameter.Resource, r.Resource);
147var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource,
164projectA.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);
322var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
346var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout();
352var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
357Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
362Assert.Same(sourceBuilder.Resource, r.Resource);
377projectA.Resource,
385projectA.Resource,
398var testValue = new TestValueWithReferences("test-value", resourceA.Resource);
404Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
407Assert.Same(resourceA.Resource, relationship.Resource);
411projectA.Resource,
458projectA.Resource,
466projectA.Resource,
473Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
476Assert.Same(container.Resource, relationship.Resource);
WithHttpCommandTests.cs (19)
88var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
94Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name);
121var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
151var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList();
190var result = await app.ResourceCommands.ExecuteCommandAsync(resourceBuilder.Resource, "mycommand");
214var result = await app.ResourceCommands.ExecuteCommandAsync(resourceBuilder.Resource, "mycommand");
237var result = await app.ResourceCommands.ExecuteCommandAsync(resourceBuilder.Resource, "mycommand");
276var result = await app.ResourceCommands.ExecuteCommandAsync(serviceB.Resource, "mycommand");
314resolvedResourceName = resourceBuilder.Resource.GetResolvedResourceNames().Single();
316var result = await app.ResourceCommands.ExecuteCommandAsync(resourceBuilder.Resource, "mycommand");
355resolvedResourceName = resourceBuilder.Resource.GetResolvedResourceNames().Single();
357var result = await app.ResourceCommands.ExecuteCommandAsync(resourceBuilder.Resource, "mycommand");
399await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
403await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Starting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
409await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
413await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
469await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
473await app.ResourceNotifications.WaitForResourceAsync(service.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
480await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
WithReferenceTests.cs (41)
28var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
33Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
36Assert.Same(projectA.Resource, r.Resource);
51var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
71var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
101var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
150var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
178var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
204var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
212Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
215Assert.Same(projectA.Resource, r.Resource);
233var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
241Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
244Assert.Same(projectA.Resource, r.Resource);
259await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
276var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
295await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
315var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
331var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
347var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
366var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
396var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
402Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
405Assert.Same(resource.Resource, r.Resource);
406Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships));
411Assert.Same(endpoint.Resource, r.Resource);
416Assert.Same(key.Resource, r.Resource);
421Assert.Same(endpoint.Resource, r.Resource);
426Assert.Same(key.Resource, r.Resource);
448var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
470var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
502var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
525var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
550var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
575var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
602var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
627var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
654var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
683var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
706var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
728var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Aspire.Hosting.Valkey (1)
Aspire.Hosting.Valkey.Tests (22)
Aspire.Hosting.Yarp (11)
Aspire.Hosting.Yarp.Tests (30)
AddYarpTests.cs (24)
53var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
76var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
102var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
124var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider);
149var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
164var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
178var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>());
190var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
203var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
208Resource = yarp.Resource,
236Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
237Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
254var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
255Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source);
259var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
264Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
281var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
288Resource = yarp.Resource,
311var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
319Resource = yarp.Resource,
344var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
351Resource = yarp.Resource,
382var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
389Resource = yarp.Resource,
Aspire.Playground.Tests (1)
AzureAIFoundryEndToEnd.AppHost (1)
AzureKusto.AppHost (2)
BicepSample.AppHost (1)
KafkaBasic.AppHost (2)
ParameterEndToEnd.AppHost (1)
Pipelines.AppHost (1)
Stress.AppHost (2)