1 implementation of Resource
Aspire.Hosting (1)
2772 references to Resource
Aspire.Hosting (190)
ResourceBuilderExtensions.cs (106)
172builder.WithReferenceRelationship(externalService.Resource);
174if (externalService.Resource.Uri is not null)
176builder.WithEnvironment(name, externalService.Resource.Uri.ToString());
178else if (externalService.Resource.UrlParameter is not null)
185var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false);
188throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}");
192context.EnvironmentVariables[name] = externalService.Resource.UrlParameter;
213builder.WithReferenceRelationship(parameter.Resource);
217context.EnvironmentVariables[name] = parameter.Resource;
239builder.WithReferenceRelationship(resource.Resource);
243context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false);
472var resource = source.Resource;
478builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
548ApplyEndpoints(builder, source.Resource);
568ApplyEndpoints(builder, source.Resource, endpointName: null, name);
600builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
630builder.WithReferenceRelationship(externalService.Resource);
633builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
636if (externalService.Resource.Uri is { } uri)
640var envVarName = $"{externalService.Resource.Name.ToUpperInvariant()}";
646var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
650else if (externalService.Resource.UrlParameter is not null)
660discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0";
661endpointEnvVarName = externalService.Resource.Name.ToUpperInvariant();
663else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message))
665discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
666endpointEnvVarName = $"{externalService.Resource.Name.ToUpperInvariant()}_{uri.Scheme.ToUpperInvariant()}";
670throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}");
675context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter;
680context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter;
714var endpointReferenceAnnotation = builder.Resource.Annotations
722if (builder.Resource.IsContainer())
782var endpoint = builder.Resource.Annotations
800builder.Resource.Annotations.Add(endpoint);
845if (builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(sb => string.Equals(sb.Name, annotation.Name, StringComparisons.EndpointAnnotationName)))
851if (env is not null && builder.Resource is IResourceWithEndpoints resourceWithEndpoints and IResourceWithEnvironment)
936if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints))
965return builder.Resource.GetEndpoint(name, contextNetworkID);
980return builder.Resource.GetEndpoint(name);
1231context.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);
1278context.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);
1308Source = source.Resource,
1345builder.Resource.Annotations
1348.ForEach(w => builder.Resource.Annotations.Remove(w));
1445if (builder.Resource as IResource == dependency.Resource)
1447throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1450if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1452throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1455if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
1468builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1471return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior });
1549if (builder.Resource as IResource == dependency.Resource)
1551throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1554if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1556throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1559if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
1571if (dependency.Resource is ConnectionStringResource cs)
1582builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1585return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior });
1645if (builder.Resource as IResource == dependency.Resource)
1647throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
1650if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
1652throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
1655builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
1657return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode));
1701if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key))
1703throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'.");
1785?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
1789throw 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.");
1801throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
1815var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check";
1905var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1908builder.Resource.Annotations.Remove(existingAnnotation);
1970var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
1973builder.Resource.Annotations.Remove(existingAnnotation);
2137?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
2141throw 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.");
2258CertificateAuthorityCollections = { certificateAuthorityCollection.Resource },
2260if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2264if (existingCollection != certificateAuthorityCollection.Resource)
2315if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2363if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
2418var endpoints = builder.Resource.GetEndpoints();
2428throw 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.");
2436throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}");
2444var endpoints = builder.Resource.GetEndpoints();
2456throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints.");
2553AddReference(resourceBuilder.Resource);
2584return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference));
2614return builder.WithParentRelationship(parent.Resource);
2675child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent);
2762builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource));
2883var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
2912if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation)
2914builder.Resource.Annotations.Remove(existingAnnotation);
Aspire.Hosting.Azure (28)
Aspire.Hosting.Azure.AIFoundry (7)
Aspire.Hosting.Azure.AppConfiguration (3)
Aspire.Hosting.Azure.AppContainers (3)
Aspire.Hosting.Azure.ApplicationInsights (1)
Aspire.Hosting.Azure.AppService (8)
Aspire.Hosting.Azure.CognitiveServices (5)
Aspire.Hosting.Azure.ContainerRegistry (2)
Aspire.Hosting.Azure.CosmosDB (19)
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 (6)
Aspire.Hosting.Azure.Kusto.Tests (31)
Aspire.Hosting.Azure.PostgreSQL (22)
Aspire.Hosting.Azure.Redis (19)
Aspire.Hosting.Azure.Search (1)
Aspire.Hosting.Azure.ServiceBus (19)
AzureServiceBusExtensions.cs (18)
146var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource);
147builder.Resource.Queues.Add(queue);
163configure(builder.Resource);
223var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource);
224builder.Resource.Topics.Add(topic);
240configure(builder.Resource);
260if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource)
289var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource);
290builder.Resource.Subscriptions.Add(subscription);
306configure(builder.Resource);
340if (builder.Resource.IsEmulator)
356var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1);
370.AddContainer($"{builder.Resource.Name}-mssql",
384var sqlEndpoint = sqlServerResource.Resource.GetEndpoint("tcp");
393var surrogate = new AzureServiceBusEmulatorResource(builder.Resource);
414var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault();
427var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource));
435var 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 (782)
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);
96hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
97hb.AddAzureCosmosClient(db.Resource.Name);
98hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName);
173await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token);
181[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default)
184hb.AddAzureCosmosClient(cosmos1.Resource.Name);
221await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token);
229[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default)
232hb.AddAzureCosmosClient(cosmos2.Resource.Name);
290await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token);
293hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
294hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (45)
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);
AzureDeployerTests.cs (43)
141var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
230Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
231Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
232Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
233Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
234Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
276Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
277Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
278Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
279Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
280Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
334Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
335Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
336Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
337Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
338Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
430Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
431Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
432Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
433Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
434Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/acaenv", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
437Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
438Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
439Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
440Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.Web/serverfarms/aasplan", aasEnv.Resource.Outputs["planId"]);
441Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]);
516var setValue = await param.Resource.GetValueAsync(default);
590var setValue = await param.Resource.GetValueAsync(default);
624Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
625Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
626Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
627Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
628Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
672Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
673Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
862Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
863Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
864Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
865Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
866Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
869var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget);
871Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
872Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
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)
20var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(mykv.Resource);
36var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, mykv.Resource);
56kv.Resource.SecretResolver = (s, ct) =>
62var secretReference = kv.Resource.GetSecret("mySecret");
68var runEnv = await containerBuilder.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Run);
69var publishEnv = await containerBuilder.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish);
88var secretReference = kv.Resource.GetSecret("mySecret");
89var secretReference2 = kv.Resource.GetSecret("mySecret2");
110var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
126var secretReference = kv.Resource.GetSecret("mySecret");
127var secretReference2 = kv.Resource.GetSecret("mySecret2");
148module2.Resource.Scope = new(existingRg.Resource);
150var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
151var (manifest2, bicep2) = await AzureManifestUtils.GetManifestWithBicep(module2.Resource, skipPreparer: true);
166var secretReference = kv.Resource.GetSecret("mySecret");
167var secretReference2 = kv.Resource.GetSecret("mySecret2");
179var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
196Assert.Same(kv.Resource, secret.Resource);
210Assert.IsType<AzureKeyVaultSecretResource>(secretResource.Resource);
211Assert.Equal("mySecret", secretResource.Resource.Name);
212Assert.Equal("mySecret", secretResource.Resource.SecretName);
213Assert.Same(kv.Resource, secretResource.Resource.Parent);
214Assert.Single(kv.Resource.Secrets);
215Assert.Same(secretResource.Resource, kv.Resource.Secrets[0]);
227var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
242var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
257Assert.True(secretResource.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
276var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
371_ = keyVault.Resource.AddAsExistingResource(infra);
374var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
387Assert.False(keyVault.Resource.IsEmulator);
398keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
403Assert.True(keyVault.Resource.IsEmulator);
414keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
422var connectionString = keyVault.Resource.ConnectionStringExpression;
424Assert.True(keyVault.Resource.IsEmulator);
435var connectionString = keyVault.Resource.ConnectionStringExpression;
437Assert.False(keyVault.Resource.IsEmulator);
453keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
455var connectionString = keyVault.Resource.ConnectionStringExpression;
456var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
474keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
483keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
485var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
AzurePostgresExtensionsTests.cs (43)
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.HostName);
194Assert.Equal("localhost:12455", await postgres.Resource.HostName.GetValueAsync(CancellationToken.None));
196Assert.NotNull(postgres.Resource.UserName);
197Assert.Equal("user1", await postgres.Resource.UserName.GetValueAsync(CancellationToken.None));
199Assert.NotNull(postgres.Resource.Password);
200Assert.Equal("p@ssw0rd1", await postgres.Resource.Password.GetValueAsync(CancellationToken.None));
202var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
205var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
239Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
240Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db1", await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
241Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db2Name", await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
316Assert.NotNull(postgres.Resource.UserName);
317Assert.NotNull(postgres.Resource.Password);
318Assert.NotNull(postgres.Resource.HostName);
321var hostValue = await postgres.Resource.HostName.GetValueAsync(CancellationToken.None);
324var userValue = await postgres.Resource.UserName.GetValueAsync(CancellationToken.None);
328var passwordValue = await postgres.Resource.Password.GetValueAsync(CancellationToken.None);
342Assert.Null(postgres.Resource.UserName);
343Assert.Null(postgres.Resource.Password);
346Assert.NotNull(postgres.Resource.HostName);
347Assert.Equal("{postgres-data.outputs.hostName}", postgres.Resource.HostName.ValueExpression);
373Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
377var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
382Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
416Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
420var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
425Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
460var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
466Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync());
492var manifest = await ManifestUtils.GetManifest(postgres.Resource);
512manifest = await ManifestUtils.GetManifest(postgres.Resource);
531manifest = await ManifestUtils.GetManifest(postgres.Resource);
574_ = postgres.Resource.AddAsExistingResource(infra);
577var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureRedisEnterpriseExtensionsTests.cs (21)
40var (_, bicep) = await GetManifestWithBicep(model, redis.Resource);
57redisResource = c.Resource;
62Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
65Assert.Equal($"localhost:12455,password={await redisResource.PasswordParameter.GetValueAsync(CancellationToken.None)}", 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:12455", 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);
AzureRedisExtensionsTests.cs (26)
39var (manifest, bicep) = await GetManifestWithBicep(model, redis.Resource);
82var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
98redisResource = c.Resource;
103Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
107Assert.Equal($"localhost:12455,password={redisResource.PasswordParameter.Value}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
121redisResource = c.Resource;
139Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
142Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
145Assert.NotNull(redis.Resource.HostName);
146Assert.Equal("localhost:12455", await redis.Resource.HostName.GetValueAsync(CancellationToken.None));
148Assert.NotNull(redis.Resource.Password);
149Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None));
197Assert.NotNull(redis.Resource.HostName);
198Assert.NotNull(redis.Resource.Password);
201var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None);
204var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None);
217Assert.Null(redis.Resource.Password);
220Assert.NotNull(redis.Resource.HostName);
221Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression);
243Assert.True(redis.Resource.IsContainer());
244Assert.NotNull(redis.Resource.PasswordParameter);
247Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync());
250var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
294_ = redis.Resource.AddAsExistingResource(infra);
297var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
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);
175hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
176hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
177hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
178hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
190await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token);
223await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token);
226hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
262await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token);
265hb.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 (42)
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;
ExistingAzureResourceTests.cs (28)
25var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
42var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
59var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
79var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource);
99var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
116var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
131var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
148var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource);
165var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
182var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource);
199var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource);
216var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
237var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
254var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource);
271var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource);
288var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource);
305var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
321var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
338var (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)
Aspire.Hosting.Docker (9)
Aspire.Hosting.Docker.Tests (5)
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 (23)
Aspire.Hosting.JavaScript.Tests (31)
Aspire.Hosting.Kafka.Tests (17)
Aspire.Hosting.Keycloak (2)
Aspire.Hosting.Keycloak.Tests (7)
Aspire.Hosting.Kubernetes (1)
Aspire.Hosting.Kubernetes.Tests (2)
Aspire.Hosting.Maui (9)
Aspire.Hosting.Maui.Tests (23)
Aspire.Hosting.Milvus (5)
Aspire.Hosting.Milvus.Tests (18)
Aspire.Hosting.MongoDB (6)
Aspire.Hosting.MongoDB.Tests (30)
Aspire.Hosting.MySql (6)
Aspire.Hosting.MySql.Tests (61)
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);
90[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
93hb.AddMySqlDataSource(db.Resource.Name);
133var password = mysql1.Resource.PasswordParameter.Value;
166[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
169hb.AddMySqlDataSource(db1.Resource.Name);
235[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
238hb.AddMySqlDataSource(db2.Resource.Name);
338[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
341hb.AddMySqlDataSource(db.Resource.Name);
424[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
427hb.AddMySqlDataSource(db.Resource.Name);
494[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
497hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name);
651hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
653hb.AddMySqlDataSource(newDb.Resource.Name);
659await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
726hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
728hb.AddMySqlDataSource(newDb.Resource.Name);
734await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token);
785hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
786hb.AddKeyedMySqlDataSource(db.Resource.Name);
795await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
797var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name);
827hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
828hb.AddMySqlDataSource(newDb.Resource.Name);
833await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (2)
Aspire.Hosting.Nats.Tests (33)
NatsFunctionalTests.cs (19)
35await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
39hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
80await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
84var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
85hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
122await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
126var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
131hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
184await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
189hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
232await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
237hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
342await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
344await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
348await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
350await 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 (35)
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 postgres.Resource.GetEnvironmentVariableValuesAsync();
698var config2 = await postgres.Resource.GetEnvironmentVariableValuesAsync();
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);
241[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
244hb.AddNpgsqlDataSource(db1.Resource.Name);
295await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
303[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default)
306hb.AddNpgsqlDataSource(db2.Resource.Name);
398[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
401hb.AddNpgsqlDataSource(db.Resource.Name);
407await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
484[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
487hb.AddNpgsqlDataSource(db.Resource.Name);
493await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
611hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
613hb.AddNpgsqlDataSource(newDb.Resource.Name);
619await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
652hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
654hb.AddNpgsqlDataSource(newDb.Resource.Name);
660await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
721hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
723hb.AddNpgsqlDataSource(newDb.Resource.Name);
729await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
780hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
781hb.AddKeyedNpgsqlDataSource(db.Resource.Name);
790await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
792var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python (35)
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));
841Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
845Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
872Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
876Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1152var initialCommand = pythonBuilder.Resource.Command;
1157var newCommand = pythonBuilder.Resource.Command;
1375var resource = pythonApp.Resource;
1413var resource = pythonApp.Resource;
1453var resource = pythonApp.Resource;
1490var resource = pythonApp.Resource;
1521var resource = pythonApp.Resource;
1544pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1566pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1584pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
1819Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1823Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1853Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1857Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1890Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
1894Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1914Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _));
2020Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2055Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2059Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2095Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2125Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2226Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2258Assert.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 (20)
Aspire.Hosting.Redis (5)
Aspire.Hosting.Redis.Tests (70)
AddRedisTests.cs (26)
19Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check");
135var manifest = await ManifestUtils.GetManifest(redis.Resource);
169var manifest = await ManifestUtils.GetManifest(redis.Resource);
204var manifest = await ManifestUtils.GetManifest(redis.Resource);
239var manifest = await ManifestUtils.GetManifest(redis.Resource);
309Assert.Equal(redis1.Resource.Name, item.Value);
314Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
319Assert.Equal(redis1.Resource.Name, item.Value);
325Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value);
331Assert.Equal(redis2.Resource.Name, item.Value);
336Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
341Assert.Equal(redis2.Resource.Name, item.Value);
347Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value);
353Assert.Equal(redis3.Resource.Name, item.Value);
358Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
363Assert.Equal(redis3.Resource.Name, item.Value);
504Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
526Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]);
551Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
572var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
597var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
667var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
678Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
RedisFunctionalTests.cs (44)
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");
85var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
106[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
109hb.AddRedisClient(redis.Resource.Name);
145await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
147var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
163Assert.Equal(redis1.Resource.Name, db.Name);
164Assert.Equal(redis1.Resource.Name, db.Host);
165Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port);
169Assert.Equal(redis2.Resource.Name, db.Name);
170Assert.Equal(redis2.Resource.Name, db.Host);
171Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port);
175Assert.Equal(redis3.Resource.Name, db.Name);
176Assert.Equal(redis3.Resource.Name, db.Host);
177Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port);
212[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
215hb.AddRedisClient(redis1.Resource.Name);
248[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
251hb.AddRedisClient(redis2.Resource.Name);
295[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
298hb.AddRedisClient(redis1.Resource.Name);
330[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
333hb.AddRedisClient(redis2.Resource.Name);
379[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
382hb.AddRedisClient(redis1.Resource.Name);
409[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
412hb.AddRedisClient(redis2.Resource.Name);
477await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
481var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
512await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
516var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
615await 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);
80hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
82hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name);
83hb.AddSqlServerClient(newDb.Resource.Name);
142var password = sqlserver1.Resource.PasswordParameter.Value;
180await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
188[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default),
191hb1.AddSqlServerClient(db1.Resource.Name);
265await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
273[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default),
276hb2.AddSqlServerClient(db2.Resource.Name);
369hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
371hb.AddSqlServerClient(newDb.Resource.Name);
377await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
422hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
424hb.AddSqlServerClient(newDb.Resource.Name);
430await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
494hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
496hb.AddSqlServerClient(newDb.Resource.Name);
502await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token);
554hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
555hb.AddKeyedSqlServerClient(db.Resource.Name);
564await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
566var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (1)
Aspire.Hosting.Tests (583)
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();
DistributedApplicationTests.cs (13)
494using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
495using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
502var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
860var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
1396await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration);
1399var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
1417var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1465using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1474Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter?.Value}", env.Value);
1483Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter?.Value}", otherRedisEnv.Value);
1519using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1532Assert.Equal($"localhost:1234,password={redis.Resource.PasswordParameter!.Value}", env.Value);
1541Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter!.Value}", otherRedisEnv.Value);
ExternalServiceTests.cs (34)
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);
97Assert.Equal("nuget", externalService.Resource.Name);
98Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
111var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
128var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
147var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
167var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout();
172Assert.Equal(urlParam.Resource.ValueExpression, urlValue);
190await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
206Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
207Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
222Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
223Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
245Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations));
259Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
299externalService.Resource.Name,
326externalService.Resource.Name,
353externalService.Resource.Name,
377Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
378var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
398Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
399var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
423Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
424var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
448var manifest = await ManifestUtils.GetManifest(project.Resource);
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)
31var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
48if (item.Resource == parentResource.Resource)
52else if (item.Resource == childResource.Resource)
95if (item.Resource == parentResource.Resource)
99else if (item.Resource == childResource.Resource)
141applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) =>
159Assert.Equal(resource.Resource, initEvent.Resource);
193if (item.Resource == parent.Resource)
197else if (item.Resource == child.Resource)
202else if (item.Resource == nestedChild.Resource)
206else if (item.Resource == child2.Resource)
258if (item.Resource == firstParent.Resource)
262else if (item.Resource == secondParent.Resource)
266else if (item.Resource == child.Resource)
309if (item.Resource == projectA.Resource)
313else if (item.Resource == projectB.Resource)
358new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource)
361new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource)
378applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) =>
383applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) =>
388applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) =>
394await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parentResource.Resource, parentResource.Resource.Name));
424if (item.Resource == resource.Resource)
438await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None);
585var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
603parentContainer.Resource,
610var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null;
611var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
631var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
649parentContainer.Resource,
656var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null;
657var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
697if (item.Resource == parent.Resource)
701else if (item.Resource == child.Resource)
705else if (item.Resource == child2.Resource)
734parent.WithChildRelationship(child.Resource)
735.WithChildRelationship(child2.Resource);
753if (item.Resource == parent.Resource)
757else if (item.Resource == child.Resource)
761else if (item.Resource == child2.Resource)
806if (item.Resource == parentProject.Resource)
810else 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\ResourceContainerImageBuilderTests.cs (19)
37await imageBuilder.BuildImageAsync(servicea.Resource, options: null, cts.Token);
69await imageBuilder.BuildImageAsync(servicea.Resource, options: null, cts.Token);
101await imageBuilder.BuildImageAsync(servicea.Resource, options: null, cts.Token);
139await imageBuilder.BuildImageAsync(servicea.Resource, options, cts.Token);
177await imageBuilder.BuildImageAsync(servicea.Resource, options, cts.Token);
211await imageBuilder.BuildImageAsync(servicea.Resource, options, cts.Token);
249await imageBuilder.BuildImageAsync(container.Resource, options, cts.Token);
290await imageBuilder.BuildImageAsync(container.Resource, options, cts.Token);
329await imageBuilder.BuildImageAsync(servicea.Resource, options, cts.Token);
365await imageBuilder.BuildImageAsync(servicea.Resource, options, cts.Token);
396await imageBuilder.BuildImageAsync(servicea.Resource, options: null, cts.Token);
447await imageBuilder.BuildImageAsync(servicea.Resource, options: null, cts.Token);
575await imageBuilder.BuildImagesAsync([servicea.Resource], options: options, cts.Token);
604await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], options: null, cts.Token);
636await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], options: null, cts.Token);
674imageBuilder.BuildImagesAsync([container.Resource], options: null, cts.Token));
718await imageBuilder.BuildImageAsync(container.Resource, options: null, cts.Token);
790await imageBuilder.BuildImageAsync(container.Resource, options: null, cts.Token);
885await imageBuilder.BuildImageAsync(container.Resource, options: null, cts.Token);
ResourceExtensionsTests.cs (53)
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));
180var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
213var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
246var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout();
278.Resource.GetArgumentValuesAsync().DefaultTimeout();
290.Resource.GetArgumentValuesAsync().DefaultTimeout();
306.WithAnnotation(new DeploymentTargetAnnotation(compute1.Resource) { ComputeEnvironment = compute1.Resource })
307.WithAnnotation(new DeploymentTargetAnnotation(compute2.Resource) { ComputeEnvironment = compute2.Resource });
309var ex = Assert.Throws<InvalidOperationException>(() => resourceBuilder.Resource.GetDeploymentTargetAnnotation());
314Assert.Equal(compute2.Resource, resourceBuilder.Resource.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
330var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
335Resource = containerResource.Resource,
371var annotations = containerResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>().ToList();
376Resource = containerResource.Resource,
393Assert.Single(containerResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
398Assert.Single(projectResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
403Assert.Single(executableResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
415var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
419Resource = containerResource.Resource,
442var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<DeploymentImageTagCallbackAnnotation>());
448Resource = containerResource.Resource,
463Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(),
471var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>());
475Assert.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,
189var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
213var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
238.WithEnvironment("HOST", $"{test.Resource};name=1");
240var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
241var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
255Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
260Assert.Same(container.Resource, r.Resource);
265Assert.Same(test.Resource, r.Resource);
286Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
291Assert.Same(container.Resource, r.Resource);
321var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
345var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout();
351var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
356Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
361Assert.Same(sourceBuilder.Resource, r.Resource);
376projectA.Resource,
384projectA.Resource,
397var testValue = new TestValueWithReferences("test-value", resourceA.Resource);
403Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
406Assert.Same(resourceA.Resource, relationship.Resource);
410projectA.Resource,
457projectA.Resource,
465projectA.Resource,
472Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
475Assert.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 (38)
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);
61var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
110var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
138var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
164var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
172Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
175Assert.Same(projectA.Resource, r.Resource);
193var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
201Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
204Assert.Same(projectA.Resource, r.Resource);
219await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
233var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
252var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
271var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
287var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
303var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
322var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
352var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
358Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
361Assert.Same(resource.Resource, r.Resource);
362Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships));
367Assert.Same(endpoint.Resource, r.Resource);
372Assert.Same(key.Resource, r.Resource);
377Assert.Same(endpoint.Resource, r.Resource);
382Assert.Same(key.Resource, r.Resource);
404var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
426var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
458var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
481var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
506var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
531var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
558var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
583var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
610var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
639var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
662var 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)
46var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
71var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
96var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
118var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider);
143var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
159var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
173var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>());
185var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
198var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
203Resource = yarp.Resource,
231Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
232Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
249var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
250Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source);
254var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
259Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
276var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
283Resource = yarp.Resource,
306var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
314Resource = yarp.Resource,
339var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
346Resource = yarp.Resource,
377var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
384Resource = yarp.Resource,
Aspire.Playground.Tests (1)
AspireWithNode.AppHost (2)
AzureAIFoundryEndToEnd.AppHost (1)
AzureKusto.AppHost (2)
BicepSample.AppHost (1)
KafkaBasic.AppHost (2)
ParameterEndToEnd.AppHost (1)
Pipelines.AppHost (1)
Stress.AppHost (2)