3 implementations of Resource
Aspire.Hosting (1)
Aspire.Hosting.Azure.Sql (1)
Aspire.Hosting.RemoteHost.Tests (1)
6494 references to Resource
Aspire.Hosting (247)
ResourceBuilderExtensions.cs (129)
124if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource)
131SourceResource = sourceBuilder.Resource
135throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration.");
192if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource)
207throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration.");
213foreach (var annotation in builder.Resource.Annotations.OfType<ContainerLifetimeAnnotation>().ToArray())
215builder.Resource.Annotations.Remove(annotation);
431builder.WithReferenceRelationship(externalService.Resource);
433if (externalService.Resource.Uri is not null)
435builder.WithEnvironment(name, externalService.Resource.Uri.ToString());
437else if (externalService.Resource.UrlParameter is not null)
444var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false);
447throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}");
451context.EnvironmentVariables[name] = externalService.Resource.UrlParameter;
473builder.WithReferenceRelationship(parameter.Resource);
477context.EnvironmentVariables[name] = parameter.Resource;
500builder.WithReferenceRelationship(resource.Resource);
504context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false);
966var hasConnectionString = source.Resource is IResourceWithConnectionString && connectionStringSource is not null;
967var hasServiceDiscovery = source.Resource is IResourceWithServiceDiscovery && serviceDiscoverySource is not null;
968var hasExternalService = source.Resource is ExternalServiceResource && externalServiceSource is not null;
1018throw new InvalidOperationException($"The resource '{source.Resource.Name}' can't be used with withReference because it doesn't provide a connection string, service discovery, or a custom withReference implementation.");
1045return TryDispatchCustomWithReference(builder, source, connectionName, optional, name, source.Resource.GetType(), out dispatchedBuilder);
1112var resource = source.Resource;
1118builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
1209ApplyEndpoints(builder, source.Resource);
1241ApplyEndpoints(builder, source.Resource, endpointName: null, name);
1265throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it must be absolute.");
1270throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a fragment.");
1275throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a query string.");
1279builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
1310builder.WithReferenceRelationship(externalService.Resource);
1313builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation);
1316if (externalService.Resource.Uri is { } uri)
1320var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name);
1326var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
1330else if (externalService.Resource.UrlParameter is not null)
1336var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name);
1341discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0";
1344else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message))
1346discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0";
1352throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}");
1357context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter;
1362context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter;
1397var endpointReferenceAnnotation = builder.Resource.Annotations
1405if (builder.Resource.IsContainer())
1467var endpoint = builder.Resource.Annotations
1484builder.Resource.Annotations.Add(endpoint);
1534!builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(endpoint => string.Equals(endpoint.Name, endpointName, StringComparisons.EndpointAnnotationName)))
1571var existing = builder.Resource.Annotations.OfType<EndpointAnnotation>()
1652if (env is null || builder.Resource is not IResourceWithEndpoints resourceWithEndpoints || builder.Resource is not IResourceWithEnvironment)
1862if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints))
1893return builder.Resource.GetEndpoint(name, contextNetworkId);
1910return builder.Resource.GetEndpoint(name);
2195context.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);
2243context.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);
2274Source = source.Resource,
2313builder.Resource.Annotations
2316.ForEach(w => builder.Resource.Annotations.Remove(w));
2434if (builder.Resource as IResource == dependency.Resource)
2436throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
2439if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
2441throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
2444if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
2457builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
2460return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior });
2557if (builder.Resource as IResource == dependency.Resource)
2559throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
2562if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
2564throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
2567if (dependency.Resource is IResourceWithParent dependencyResourceWithParent)
2579if (dependency.Resource is ConnectionStringResource cs)
2590builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
2593return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior });
2660if (builder.Resource as IResource == dependency.Resource)
2662throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself.");
2665if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource)
2667throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'.");
2670builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor);
2672return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode));
2720if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key))
2722throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'.");
2809?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
2813throw 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.");
2826throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'.");
2832var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check";
2928var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
2931builder.Resource.Annotations.Remove(existingAnnotation);
2995var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name);
2998builder.Resource.Annotations.Remove(existingAnnotation);
3684?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
3688throw 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.");
3996CertificateAuthorityCollections = { certificateAuthorityCollection.Resource },
3998if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
4002if (existingCollection != certificateAuthorityCollection.Resource)
4055if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
4106if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation))
4182Password = password?.Resource,
4218Password = password?.Resource,
4325var resource = builder.Resource;
4372var endpoints = builder.Resource.GetEndpoints();
4382throw 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.");
4390throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}");
4398var endpoints = builder.Resource.GetEndpoints();
4410throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints.");
4467return builder.WithRelationship(resourceBuilder.Resource, type);
4533AddReference(resourceBuilder.Resource);
4566return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference));
4599return builder.WithParentRelationship(parent.Resource);
4665child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent);
4759builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource));
4969builder.Resource.Name,
5074var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null.");
5103if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation)
5105builder.Resource.Annotations.Remove(existingAnnotation);
Aspire.Hosting.Azure (48)
ExistingAzureResourceExtensions.cs (24)
54return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource);
109return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource);
164return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource);
203return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource);
260return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource);
317return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource);
374return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource);
434return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource);
494return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource);
553return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
605return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
657return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
Aspire.Hosting.Azure.AppConfiguration (3)
Aspire.Hosting.Azure.AppContainers (16)
Aspire.Hosting.Azure.ApplicationInsights (1)
Aspire.Hosting.Azure.AppService (23)
Aspire.Hosting.Azure.CognitiveServices (5)
Aspire.Hosting.Azure.ContainerRegistry (5)
Aspire.Hosting.Azure.CosmosDB (23)
Aspire.Hosting.Azure.EventHubs (14)
Aspire.Hosting.Azure.FrontDoor (5)
Aspire.Hosting.Azure.Functions (19)
Aspire.Hosting.Azure.KeyVault (12)
AzureKeyVaultResourceExtensions.cs (11)
241return builder.Resource.GetSecret(secretName);
257return builder.AddSecret(name, name, parameterResource.Resource);
298var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, parameterResource);
299builder.Resource.Secrets.Add(secret);
319var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, value);
320builder.Resource.Secrets.Add(secret);
339return builder.AddSecret(name, secretName, parameterResource.Resource);
358var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, parameterResource);
359builder.Resource.Secrets.Add(secret);
380var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value);
381builder.Resource.Secrets.Add(secret);
Aspire.Hosting.Azure.Kubernetes (46)
AzureKubernetesEnvironmentExtensions.cs (33)
79resource.KubernetesEnvironment = k8sEnvBuilder.Resource;
93resource.DefaultContainerRegistry = defaultRegistry.Resource;
94resource.Annotations.Add(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource));
95k8sEnvBuilder.WithAnnotation(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource));
100resource.Parameters["acrName"] = defaultRegistry.Resource.NameOutputReference;
179builder.Resource.NodePools.Add(config);
181var nodePool = new AksNodePoolResource(name, config, builder.Resource);
232builder.Resource.NodePools.RemoveAll(p => p.Mode is AksNodePoolMode.System);
233builder.Resource.NodePools.Insert(0, new AksNodePoolConfig("system", vmSize, minCount, maxCount, AksNodePoolMode.System));
264builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id), ResourceAnnotationMutationBehavior.Replace);
300builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id));
304builder.Resource.AksParent.NodePoolSubnets[builder.Resource.Name] = subnet.Resource.Id;
331if (builder.Resource.DefaultContainerRegistry is not null)
333builder.ApplicationBuilder.Resources.Remove(builder.Resource.DefaultContainerRegistry);
334builder.Resource.DefaultContainerRegistry = null;
340new ContainerRegistryReferenceAnnotation(registry.Resource),
346var staleAnnotations = builder.Resource.KubernetesEnvironment.Annotations
350builder.Resource.KubernetesEnvironment.Annotations.Remove(old);
353builder.Resource.KubernetesEnvironment.Annotations.Add(
354new ContainerRegistryReferenceAnnotation(registry.Resource));
358builder.Resource.Parameters["acrName"] = registry.Resource.NameOutputReference;
428builder.Resource.GatewayApiEnabled = true;
429builder.Resource.ApplicationLoadBalancerEnabled = true;
445var existingDelegation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().LastOrDefault();
458builder.Resource,
459subnet.Resource.Id,
460subnet.Resource,
468builder.Resource.LoadBalancers.Add(lb);
505builder.Resource.OidcIssuerEnabled = enabled;
506builder.Resource.WorkloadIdentityEnabled = enabled;
Aspire.Hosting.Azure.Kubernetes.Tests (177)
AzureKubernetesEnvironmentExtensionsTests.cs (91)
27Assert.Equal("aks", aks.Resource.Name);
28Assert.Equal("{aks.outputs.id}", aks.Resource.Id.ValueExpression);
29Assert.Equal("{aks.outputs.clusterFqdn}", aks.Resource.ClusterFqdn.ValueExpression);
30Assert.Equal("{aks.outputs.oidcIssuerUrl}", aks.Resource.OidcIssuerUrl.ValueExpression);
32var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource);
45Assert.Equal(2, aks.Resource.NodePools.Count);
47Assert.Equal("gpu", gpuPool.Resource.Name);
48Assert.Equal("gpu", gpuPool.Resource.Config.Name);
49Assert.Equal("Standard_NC6s_v3", gpuPool.Resource.Config.VmSize);
50Assert.Equal(0, gpuPool.Resource.Config.MinCount);
51Assert.Equal(5, gpuPool.Resource.Config.MaxCount);
52Assert.Equal(AksNodePoolMode.User, gpuPool.Resource.Config.Mode);
53Assert.Same(aks.Resource, gpuPool.Resource.AksParent);
63Assert.Single(aks.Resource.NodePools);
64var defaultPool = aks.Resource.NodePools[0];
79Assert.True(aks.Resource.OidcIssuerEnabled);
80Assert.True(aks.Resource.WorkloadIdentityEnabled);
81Assert.Null(aks.Resource.KubernetesVersion);
82Assert.False(aks.Resource.IsPrivateCluster);
83Assert.False(aks.Resource.ContainerInsightsEnabled);
84Assert.Null(aks.Resource.LogAnalyticsWorkspace);
94Assert.NotNull(aks.Resource.KubernetesEnvironment);
95Assert.Equal("aks", aks.Resource.KubernetesEnvironment.Name);
96Assert.True(aks.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var annotation));
113Assert.Same(aks.Resource, computeEnvironment);
157Assert.True(aks.Resource.OidcIssuerEnabled);
158Assert.True(aks.Resource.WorkloadIdentityEnabled);
172Assert.True(project.Resource.TryGetLastAnnotation<AppIdentityAnnotation>(out var appIdentity));
173Assert.Same(identity.Resource, appIdentity.IdentityResource);
181Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(aks.Resource);
189Assert.IsAssignableFrom<IAzureNspAssociationTarget>(aks.Resource);
223Assert.True(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _));
226Assert.Single(aks.Resource.NodePoolSubnets);
227Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu"));
230Assert.True(gpuPool.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _));
249Assert.False(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _));
252Assert.Single(aks.Resource.NodePoolSubnets);
253Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu"));
267Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity));
268Assert.Same(gpuPool.Resource, affinity.NodePool);
282Assert.Equal(3, aks.Resource.NodePools.Count);
283Assert.Equal("cpu", pool1.Resource.Name);
284Assert.Equal("gpu", pool2.Resource.Name);
295Assert.NotNull(aks.Resource.DefaultContainerRegistry);
296Assert.Equal("aks-acr", aks.Resource.DefaultContainerRegistry.Name);
311Assert.Null(aks.Resource.DefaultContainerRegistry);
314Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation));
315Assert.Same(explicitAcr.Resource, annotation.Registry);
330Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var aksAnnotation));
331Assert.Same(aks.Resource.DefaultContainerRegistry, aksAnnotation.Registry);
333Assert.True(aks.Resource.KubernetesEnvironment
335Assert.Same(aks.Resource.DefaultContainerRegistry, annotation.Registry);
346Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System);
347var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System);
362var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System);
376Assert.Equal("Standard_D2s_v5", aks.Resource.NodePools[0].VmSize);
382Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System);
383Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize);
395Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System);
396var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System);
413Assert.Equal(2, aks.Resource.NodePools.Count);
414Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize);
415Assert.Equal("gpu", gpuPool.Resource.Name);
435var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource);
454var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource);
469Assert.True(aks.Resource.GatewayApiEnabled);
470Assert.True(aks.Resource.ApplicationLoadBalancerEnabled);
471Assert.True(aks.Resource.RequiresPreviewIngressApi);
474Assert.True(albSubnet.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out var delegation));
489Assert.Same(aks.Resource, lb.Resource.Parent);
490Assert.Equal("alb-lb", lb.Resource.AlbName);
491Assert.True(lb.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var stepAnnotations));
508Assert.NotSame(lb1.Resource, lb2.Resource);
509Assert.Equal("alb-lb1", lb1.Resource.AlbName);
510Assert.Equal("alb-lb2", lb2.Resource.AlbName);
513Assert.True(lb1.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb1Steps));
514Assert.True(lb2.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb2Steps));
520Assert.True(alb1.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _));
521Assert.True(alb2.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _));
540var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
544Assert.Equal("Microsoft.Netapp/volumes", lb.Resource.DisplacedDelegationServiceName);
560var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
564Assert.Null(lb1.Resource.DisplacedDelegationServiceName);
565Assert.Null(lb2.Resource.DisplacedDelegationServiceName);
580var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
582Assert.Null(lb.Resource.DisplacedDelegationServiceName);
602var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
606Assert.Equal("Microsoft.Sql/managedInstances", lb.Resource.DisplacedDelegationServiceName);
AzureKubernetesInfrastructureTests.cs (54)
34Assert.Single(aks.Resource.NodePools);
35Assert.Equal(AksNodePoolMode.System, aks.Resource.NodePools[0].Mode);
43Assert.Equal(2, aks.Resource.NodePools.Count);
44var workloadPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.User);
48Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity));
67Assert.Equal(2, aks.Resource.NodePools.Count); // system + gpu
68Assert.DoesNotContain(aks.Resource.NodePools, p => p.Name == "workload");
71Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity));
92Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity));
108Assert.True(container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target));
112Assert.Same(aks.Resource, target.ComputeEnvironment);
143Assert.Same(enva.Resource, enva.Resource.KubernetesEnvironment.OwningComputeEnvironment);
144Assert.Same(envb.Resource, envb.Resource.KubernetesEnvironment.OwningComputeEnvironment);
145Assert.True(enva.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _));
146Assert.True(envb.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _));
152Assert.True(cache.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var cacheTarget),
154Assert.Same(enva.Resource, cacheTarget.ComputeEnvironment);
156Assert.True(api.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var apiTarget),
158Assert.Same(enva.Resource, apiTarget.ComputeEnvironment);
161Assert.True(other.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var otherTarget),
163Assert.Same(envb.Resource, otherTarget.ComputeEnvironment);
396aks.Resource.Outputs["name"] = clusterName;
399aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az";
400aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) =>
424foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>())
429Resource = aks.Resource
439Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource);
440aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
469await File.ReadAllTextAsync(aks.Resource.KubernetesEnvironment.KubeConfigPath!, TestContext.Current.CancellationToken));
496aks.Resource.Outputs["name"] = clusterName;
499aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az";
500aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) =>
517foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>())
522Resource = aks.Resource
528Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource);
529aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
707aks.Resource.Scope = new AzureBicepResourceScope(scopeResourceGroup, scopeSubscriptionId);
708aks.Resource.Outputs["name"] = clusterName;
711aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az";
712aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) =>
729foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>())
734Resource = aks.Resource
740Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource);
741aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
776aks.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscriptionId);
777aks.Resource.Outputs["name"] = clusterName;
780aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az";
781aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) =>
798foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>())
803Resource = aks.Resource
809Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource);
810aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (13)
118var kustoDatabase = new AzureKustoReadWriteDatabaseResource(name, databaseName, builder.Resource);
119builder.Resource.Databases.Add(kustoDatabase);
130kcsb = GetConnectionStringBuilder(builder.Resource, connectionString);
174var surrogate = new AzureKustoEmulatorResource(builder.Resource);
236var resource = resourceBuilder.Resource;
371if (resourceBuilder.Resource.IsEmulator)
382.Resource
386throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
389var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
397.Resource
401throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set.");
404var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: "");
415message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
Aspire.Hosting.Azure.Kusto.Tests (33)
Aspire.Hosting.Azure.Network (41)
Aspire.Hosting.Azure.PostgreSQL (24)
Aspire.Hosting.Azure.Redis (20)
Aspire.Hosting.Azure.Sandboxes (19)
Aspire.Hosting.Azure.Search (1)
Aspire.Hosting.Azure.ServiceBus (19)
AzureServiceBusExtensions.cs (18)
183var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource);
184builder.Resource.Queues.Add(queue);
203configure(builder.Resource);
269var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource);
270builder.Resource.Topics.Add(topic);
289configure(builder.Resource);
311if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource)
342var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource);
343builder.Resource.Subscriptions.Add(subscription);
362configure(builder.Resource);
400if (builder.Resource.IsEmulator)
416var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1);
431.AddContainer($"{builder.Resource.Name}-mssql",
445var sqlEndpoint = sqlServerResource.Resource.GetEndpoint("tcp");
452var surrogate = new AzureServiceBusEmulatorResource(builder.Resource);
467var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault();
480var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource));
488var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
Aspire.Hosting.Azure.SignalR (2)
Aspire.Hosting.Azure.Sql (27)
Aspire.Hosting.Azure.Storage (43)
AzureStorageExtensions.cs (42)
185if (builder.Resource.IsHnsEnabled)
218var 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.");
221var 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.");
232foreach (var container in builder.Resource.BlobContainers)
238foreach (var queue in builder.Resource.Queues)
246var healthCheckKey = $"{builder.Resource.Name}_check";
259var surrogate = new AzureStorageEmulatorResource(builder.Resource);
281return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly);
391if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName))
396builder.Resource.ImplicitBlobService ??= defaultService;
401builder.Resource.ImplicitBlobService ??= service;
418builder.Resource.IsHnsEnabled = true;
420if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName))
425builder.Resource.ImplicitDataLakeService ??= defaultService;
430builder.Resource.ImplicitDataLakeService ??= service;
461var name = builder.Resource.Name + "-blobs";
463return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name);
470var name = builder.Resource.Name + "-data-lake";
472return builder.Resource.DataLakeStorageBuilder ??= CreateDataLakeService(builder, name);
492var parentBuilder = builder.Resource.ImplicitBlobService ??= GetBlobService(builder);
493AzureBlobStorageContainerResource resource = new(name, blobContainerName, parentBuilder.Resource);
494builder.Resource.BlobContainers.Add(resource);
531builder.Resource.IsHnsEnabled = true;
535var parentBuilder = builder.Resource.ImplicitDataLakeService ??= GetDataLakeService(builder);
536AzureDataLakeStorageFileSystemResource resource = new(name, dataLakeFileSystemName, parentBuilder.Resource);
537builder.Resource.DataLakeFileSystems.Add(resource);
559AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource);
560builder.Resource.Parent.BlobContainers.Add(resource);
611if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName))
616builder.Resource.ImplicitQueueService ??= defaultService;
621builder.Resource.ImplicitQueueService ??= service;
634var name = builder.Resource.Name + "-queues";
636return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name);
656var parentBuilder = builder.Resource.ImplicitQueueService ??= builder.GetQueueService();
657AzureQueueStorageQueueResource resource = new(name, queueName, parentBuilder.Resource);
658builder.Resource.Queues.Add(resource);
798var resource = new AzureBlobStorageResource(name, builder.Resource);
824var resource = new AzureDataLakeStorageResource(name, builder.Resource);
833var resource = new AzureTableStorageResource(name, builder.Resource);
840var resource = new AzureQueueStorageResource(name, builder.Resource);
Aspire.Hosting.Azure.Tests (1609)
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);
AzureAppServiceEnvironmentExtensionsTests.cs (11)
42_ = appServiceEnvironment.Resource.AddAsExistingResource(infra);
45var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
59var registry = appServiceEnvironment.Resource.ContainerRegistry;
74var registry = appServiceEnvironment.Resource.ContainerRegistry;
75Assert.Same(acr.Resource, registry);
97var exception = Assert.Throws<InvalidOperationException>(() => appServiceEnvironment.Resource.ContainerRegistry);
126Assert.Same(finalRegistry.Resource, roles.TargetAzureResource);
128var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true);
175Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"));
211Assert.Same(registry.Resource, rolesEast.TargetAzureResource);
212Assert.Same(registry.Resource, rolesWest.TargetAzureResource);
AzureAppServiceTests.cs (35)
49Assert.Same(env.Resource, target.ComputeEnvironment);
102var target = project.Resource.GetDeploymentTargetAnnotation();
106var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource);
142var target = project.Resource.GetDeploymentTargetAnnotation();
146var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource);
184var target = project.Resource.GetDeploymentTargetAnnotation();
330project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
374SetFoundryProjectOutputs(project.Resource);
376web.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
505Assert.NotNull(env.Resource.NameOutputReference);
506Assert.Equal("name", env.Resource.NameOutputReference.Name);
507Assert.Same(env.Resource, env.Resource.NameOutputReference.Resource);
597var (manifest, bicep) = await GetManifestWithBicep(env.Resource);
617var (manifest, bicep) = await GetManifestWithBicep(env.Resource);
648var (manifest, bicep) = await GetManifestWithBicep(env.Resource);
666var steps = await CreateStepsAsync(app, env.Resource);
678Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource);
679Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource);
842project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
878project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
914project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
952project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
987project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1063project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1094container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1118var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
1124Assert.Equal(env.Resource, output.Resource);
1142env.Resource.Outputs["webSiteSuffix"] = "website123";
1143env.Resource.ProvisioningTaskCompletionSource?.TrySetResult();
1150var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property));
1280project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1311project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1343project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
1372featureFlag.Resource,
AzureContainerAppEnvironmentExtensionsTests.cs (27)
45_ = containerAppEnvironment.Resource.AddAsExistingResource(infra);
48var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
75Assert.True(logAnalyticsWorkspace.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAnnotation));
76Assert.Equal(lawName.Resource, existingAnnotation.Name);
77Assert.Equal(lawResourceGroup.Resource, existingAnnotation.ResourceGroup);
80Assert.True(containerAppEnvironment.Resource.TryGetLastAnnotation<AzureLogAnalyticsWorkspaceReferenceAnnotation>(out var workspaceRef));
81Assert.Same(logAnalyticsWorkspace.Resource, workspaceRef.Workspace);
84var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource);
98var registry = containerAppEnvironment.Resource.ContainerRegistry;
113var registry = containerAppEnvironment.Resource.ContainerRegistry;
114Assert.Same(acr.Resource, registry);
136var exception = Assert.Throws<InvalidOperationException>(() => containerAppEnvironment.Resource.ContainerRegistry);
152var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource);
153var (_, vnetBicep) = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
174var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource);
199var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource);
219var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource);
250var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource);
279Assert.Same(finalRegistry.Resource, roles.TargetAzureResource);
281var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true);
421Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"));
456Assert.Same(registry.Resource, rolesEast.TargetAzureResource);
457Assert.Same(registry.Resource, rolesWest.TargetAzureResource);
475() => AzureManifestUtils.GetManifestWithBicep(env.Resource));
504() => AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true));
528() => AzureManifestUtils.GetManifestWithBicep(env.Resource));
601Assert.Same(environment.Resource, api.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
AzureContainerAppsTests.cs (35)
113Assert.Same(env.Resource, target.ComputeEnvironment);
156SetFoundryProjectOutputs(project.Resource);
158var target = web.Resource.GetDeploymentTargetAnnotation();
208Assert.Same(infra.Resource, target.ComputeEnvironment);
239Assert.Same(env.Resource, target?.ComputeEnvironment);
358.WithEnvironment("DATABASE_URL", pgContainer.Resource.UriExpression);
890var target = container.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget as AzureBicepResource;
1558var (manifest, bicep) = await GetManifestWithBicep(sql.Resource);
1675var managedEnvironment = (ContainerAppManagedEnvironment)env.Resource.AddAsExistingResource(infra);
1687var (manifest, bicep) = await GetManifestWithBicep(azResource.Resource);
1777Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource);
1778Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource);
2692var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
2756var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http"));
2762Assert.Equal(env.Resource, output.Resource);
2780env.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"] = "example.azurecontainerapps.io";
2781env.Resource.ProvisioningTaskCompletionSource?.TrySetResult();
2788var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property));
2873var containerRegistryInterface = env.Resource as IContainerRegistry;
2951var webappAcaTarget = webappAcaResource.GetDeploymentTargetAnnotation(aca.Resource);
2953Assert.Same(aca.Resource, webappAcaTarget.ComputeEnvironment);
2957var webappServiceTarget = webappServiceResource.GetDeploymentTargetAnnotation(appService.Resource);
2959Assert.Same(appService.Resource, webappServiceTarget.ComputeEnvironment);
2963var containerAcaTarget = containerAcaResource.GetDeploymentTargetAnnotation(aca.Resource);
2965Assert.Same(aca.Resource, containerAcaTarget.ComputeEnvironment);
2971var containerAppServiceAcaTarget = containerAppServiceResource.GetDeploymentTargetAnnotation(aca.Resource);
2975Assert.Null(webappAcaResource.GetDeploymentTargetAnnotation(appService.Resource));
2976Assert.Null(webappServiceResource.GetDeploymentTargetAnnotation(aca.Resource));
2977Assert.Null(containerAcaResource.GetDeploymentTargetAnnotation(appService.Resource));
3055featureFlag.Resource,
3096featureFlag.Resource,
3098ReferenceExpression.Create($"prefix-{connectionPrefix.Resource}-enabled"),
3137innerFlag.Resource,
3143outerFlag.Resource,
3181var steps = await CreateStepsAsync(app, env.Resource);
AzureCosmosDBEmulatorFunctionalTests.cs (21)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
54await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
94await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
98hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
99hb.AddAzureCosmosClient(db.Resource.Name);
100hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName);
175await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token);
183[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default)
186hb.AddAzureCosmosClient(cosmos1.Resource.Name);
223await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token);
232[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default)
235hb.AddAzureCosmosClient(cosmos2.Resource.Name);
293await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token);
297hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default);
298hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (101)
38var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
59var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
107Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
110Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
111Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
137Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
138Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression);
139Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression);
140Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression);
142Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression);
143Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression);
156((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos");
163((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1");
172((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1");
207var manifest = await GetManifestWithBicep(model, cosmos.Resource);
257Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression);
258Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression);
259Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression);
261var manifest = await GetManifestWithBicep(cosmos.Resource);
276Assert.True(cosmos.Resource.IsContainer());
278var csExpr = cosmos.Resource.ConnectionStringExpression;
284Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync());
297Assert.True(cosmos.Resource.IsContainer());
299var csExpr = cosmos.Resource.ConnectionStringExpression;
305Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync());
375var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
386var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
388Assert.Equal("cosmos", cosmos.Resource.Name);
406cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
408var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
429var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
431Assert.Equal("cosmos", cosmos.Resource.Name);
469kv.Resource.SecretResolver = (secretRef, _) =>
479var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
490var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
492Assert.Equal("cosmos", cosmos.Resource.Name);
510cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring";
512var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
531var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource;
533Assert.Equal("cosmos", cosmos.Resource.Name);
544var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
556Assert.True(cosmos.Resource.IsEmulator());
557Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
568Assert.True(cosmos.Resource.IsEmulator());
569Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
599_ = cosmosdb.Resource.AddAsExistingResource(infra);
602var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
629Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput);
630Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner);
632Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput);
633Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner);
636var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList();
637Assert.Contains(cosmos.Resource, references);
638Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references);
649Assert.Contains(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation);
660Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation);
671cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>());
679Resource = cosmos.Resource,
706cosmos.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>());
714Resource = cosmos.Resource,
738cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>());
747Resource = cosmos.Resource,
793var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator");
825var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator");
854var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer");
884var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer");
895var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>());
910var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>());
923var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>());
937var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>());
944var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
956var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>());
961var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
996var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer");
1001var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1015var csExpr = cosmos.Resource.ConnectionStringExpression;
1030var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1043var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1054var healthEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulatorhealth");
1059Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation);
1069Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation hc && hc.Key == "cosmos_check");
1080var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>());
1093var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1105var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer");
1122() => builder.Eventing.PublishAsync(new ResourceReadyEvent(cosmos.Resource, app.Services)));
1139await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(cosmos.Resource, app.Services));
1182Assert.False(cosmos.Resource.IsEmulator);
1183Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation);
1184Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
1185Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation);
1195Assert.False(cosmos.Resource.IsEmulator);
1196Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation);
1197Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation);
1198Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation);
1233cosmos.Resource,
1236foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>())
1258cosmos.Resource,
1261foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>())
AzureDeployerTests.cs (52)
174var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
297Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
298Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
299Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
300Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
301Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
357Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
358Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
359Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
360Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
361Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
423Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
424Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
425Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
426Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
427Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
491var (containerAppSubscriptionId, containerAppResourceGroupName) = GetSubscriptionAndResourceGroup((string)containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]!);
551var webSiteSuffix = Assert.IsType<string>(appServiceEnv.Resource.Outputs["webSiteSuffix"]);
553var (planSubscriptionId, planResourceGroupName) = GetSubscriptionAndResourceGroup((string)appServiceEnv.Resource.Outputs["planId"]!);
646Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
647Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
648Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity"), acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
649Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
650Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/acaenv"), acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
653Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
654Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
655Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity"), aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
656Assert.Equal(GetTestResourceId("/providers/Microsoft.Web/serverfarms/aasplan"), aasEnv.Resource.Outputs["planId"]);
657Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]);
773var setValue = await param.Resource.GetValueAsync(default);
847var setValue = await param.Resource.GetValueAsync(default);
897Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
898Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
899Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
900Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
901Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
959Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
960Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/testenv"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
1169Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]);
1170Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]);
1171Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]);
1172Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
1173Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
1176var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget);
1178Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]);
1179Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]);
1868Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default));
1869Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default));
1870Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
1923Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default));
1924Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default));
1925Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEnvironmentResourceExtensionsTests.cs (228)
61Assert.Same(firstBuilder.Resource, secondBuilder.Resource);
328storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/";
339await notifications.PublishUpdateAsync(storage.Resource, state => state with
378Assert.Empty(storage.Resource.Outputs);
384Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
496Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
498Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]);
515storage.Resource.ProvisioningTaskCompletionSource = existingTcs;
525Assert.Same(existingTcs, storage.Resource.ProvisioningTaskCompletionSource);
559Assert.Empty(storage.Resource.Outputs);
569Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
571Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]);
607Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]);
636Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]);
657Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName);
658var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
675Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
676var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
677var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
678var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
682Assert.DoesNotContain(blobs.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c =>
706await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running });
708Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
741await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running });
743Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent));
746var changeLocationCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
751ResourceName = postgres.Resource.Name,
827var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
832ResourceName = storage.Resource.Name,
911var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
916ResourceName = storage.Resource.Name,
1180var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
1185ResourceName = storage.Resource.Name,
1244var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
1249ResourceName = storage.Resource.Name,
1305var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName);
1310ResourceName = storage.Resource.Name,
1364await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Waiting for Deployment", KnownResourceStateStyles.Info) });
1366var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
1371ResourceName = storage.Resource.Name,
1385Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1419await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Creating ARM Deployment", KnownResourceStateStyles.Info) });
1421Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1496await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new(AzureProvisioningController.WaitingForDeploymentState, KnownResourceStateStyles.Info) });
1498Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1501var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
1506ResourceName = storage.Resource.Name,
1546var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None);
1559var command = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == commandName);
1564ResourceName = storage.Resource.Name,
1575Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources);
1605var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None);
1611var queuedReprovisionCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
1615ResourceName = storage2.Resource.Name,
1623var conflictingCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
1627ResourceName = storage2.Resource.Name,
1666await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
1668Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1704await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
1706var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
1711ResourceName = storage.Resource.Name,
1723Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1784storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/";
1785storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/";
1787await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) });
1788await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
1790var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
1795ResourceName = storage.Resource.Name,
1823Assert.Empty(storage.Resource.Outputs);
1824Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]);
1826Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1829Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
1882await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) });
1884var deleteCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
1889ResourceName = keyVault.Resource.Name,
1908Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
1952await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
1953await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
1955var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
1960ResourceName = storage.Resource.Name,
1974Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
1978Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2030await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2032var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName);
2033var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
2038ResourceName = storage.Resource.Name,
2052ResourceName = storage.Resource.Name,
2062Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2095storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/";
2096storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/";
2098await notifications.PublishUpdateAsync(storage.Resource, state => state with
2105await notifications.PublishUpdateAsync(storage2.Resource, state => state with
2112var forgetCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName);
2117ResourceName = storage.Resource.Name,
2132Assert.Empty(storage.Resource.Outputs);
2133Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]);
2135Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2140Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2173await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2174await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
2176var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2181ResourceName = storage.Resource.Name,
2189Assert.Contains(storage.Resource.Outputs, output => output.Key == "blobEndpoint");
2197Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2200Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2227await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2228await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
2230var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2235ResourceName = storage.Resource.Name,
2249Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2252Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2263Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2288await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2290var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2295ResourceName = storage.Resource.Name,
2309Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2321Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2366var reprovisionStorageCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2367var reprovisionStorage2Command = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2372ResourceName = storage.Resource.Name,
2386ResourceName = storage2.Resource.Name,
2443var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2444var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
2449ResourceName = storage.Resource.Name,
2460Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2466ResourceName = storage.Resource.Name,
2477Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2480Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent));
2489Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
2538await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running");
2539Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event));
2542var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
2547ResourceName = storage.Resource.Name,
2555Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2559Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2564Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event));
2588var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
2593ResourceName = storage.Resource.Name,
2640var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
2641var cancelCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
2646ResourceName = storage.Resource.Name,
2660ResourceName = storage2.Resource.Name,
2705await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2706await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
2708var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
2713ResourceName = storage.Resource.Name,
2729Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
2738Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
2778await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) });
2779await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
2781var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
2786ResourceName = storage.Resource.Name,
2832await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2834var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
2839ResourceName = storage.Resource.Name,
2947await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
2949var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
2960ResourceName = storage.Resource.Name,
3020await notifications.PublishUpdateAsync(storage.Resource, state => state with
3026var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3030ResourceName = storage.Resource.Name,
3039Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
3080await notifications.PublishUpdateAsync(storage.Resource, state => state with
3086var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3091ResourceName = storage.Resource.Name,
3153await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
3155var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3160ResourceName = storage.Resource.Name,
3206await notifications.PublishUpdateAsync(storage.Resource, state => state with
3212var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3217ResourceName = storage.Resource.Name,
3269await notifications.PublishUpdateAsync(storage.Resource, state => state with
3275var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3280ResourceName = storage.Resource.Name,
3341await notifications.PublishUpdateAsync(storage.Resource, state => state with
3347var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
3351ResourceName = storage.Resource.Name,
3398await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
3399await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
3613await notifications.PublishUpdateAsync(storage.Resource, state => state with
3843await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
3845var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
3850ResourceName = storage.Resource.Name,
3915await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) });
3917var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
3922ResourceName = keyVault.Resource.Name,
3935Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
3995await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) });
3997var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
4002ResourceName = keyVault.Resource.Name,
4039Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent));
4069await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running });
4071var reprovisionCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
4076ResourceName = postgres.Resource.Name,
4121await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4123var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
4128ResourceName = storage.Resource.Name,
4167await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running });
4169var changeLocationCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName);
4174ResourceName = keyVault.Resource.Name,
4213await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4215var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
4220ResourceName = storage.Resource.Name,
4246Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4281var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName);
4288ResourceName = storage.Resource.Name,
4328await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4341Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4381await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4388Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4439await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4440await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running });
4447Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4450Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event));
4483await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running });
4490Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent));
4547Assert.Empty(storage.Resource.Outputs);
4592Assert.Empty(storage.Resource.Outputs);
4638Assert.Empty(storage.Resource.Outputs);
4808var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName);
4812ResourceName = storage.Resource.Name,
4822Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent));
4828Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent));
4858Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value));
4931Assert.Equal(expectedLocation.Resource, resource.Location);
4947Assert.Equal(expectedResourceGroup.Resource, resource.ResourceGroupName);
AzureEventHubsExtensionsTests.cs (34)
48await 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);
78await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
84hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
90hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
91hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
92hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
130await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token);
136hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
137hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
138hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName);
142hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None) + $";EntityPath={hubName};";
168var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
187var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
206var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
225var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json"));
244var endpoints = eventHubs.Resource.Annotations.OfType<EndpointAnnotation>().ToList();
272var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
292var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, eventHubs.Resource);
325var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
529Assert.Same(eventHubs.Resource.Annotations, sourceResource.Annotations);
531var persistenceAnnotation = Assert.Single(eventHubs.Resource.Annotations.OfType<PersistenceAnnotation>());
580Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression);
581Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression);
582Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression);
595((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh");
605((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1");
621((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1");
651Assert.True(eventHubs.Resource.IsEmulator());
652Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation);
682_ = eventHubs.Resource.AddAsExistingResource(infra);
685var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureKeyVaultTests.cs (47)
21var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(mykv.Resource);
37var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, mykv.Resource);
57kv.Resource.SecretResolver = (s, ct) =>
63var secretReference = kv.Resource.GetSecret("mySecret");
72containerBuilder.Resource,
77containerBuilder.Resource,
98var secretReference = kv.Resource.GetSecret("mySecret");
99var secretReference2 = kv.Resource.GetSecret("mySecret2");
120var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
136var secretReference = kv.Resource.GetSecret("mySecret");
137var secretReference2 = kv.Resource.GetSecret("mySecret2");
158module2.Resource.Scope = new(existingRg.Resource);
160var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
161var (manifest2, bicep2) = await AzureManifestUtils.GetManifestWithBicep(module2.Resource, skipPreparer: true);
176var secretReference = kv.Resource.GetSecret("mySecret");
177var secretReference2 = kv.Resource.GetSecret("mySecret2");
189var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
206Assert.Same(kv.Resource, secret.Resource);
220Assert.IsType<AzureKeyVaultSecretResource>(secretResource.Resource);
221Assert.Equal("mySecret", secretResource.Resource.Name);
222Assert.Equal("mySecret", secretResource.Resource.SecretName);
223Assert.Same(kv.Resource, secretResource.Resource.Parent);
224Assert.Single(kv.Resource.Secrets);
225Assert.Same(secretResource.Resource, kv.Resource.Secrets[0]);
237var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
267Assert.True(secretResource.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource);
381_ = keyVault.Resource.AddAsExistingResource(infra);
384var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
397Assert.False(keyVault.Resource.IsEmulator);
408keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
413Assert.True(keyVault.Resource.IsEmulator);
424keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
432var connectionString = keyVault.Resource.ConnectionStringExpression;
434Assert.True(keyVault.Resource.IsEmulator);
445var connectionString = keyVault.Resource.ConnectionStringExpression;
447Assert.False(keyVault.Resource.IsEmulator);
463keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
465var connectionString = keyVault.Resource.ConnectionStringExpression;
466var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
484keyVault.Resource.Annotations.Add(new ContainerImageAnnotation
493keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget));
495var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
AzureManagedRedisExtensionsTests.cs (21)
38var (_, bicep) = await GetManifestWithBicep(model, redis.Resource);
55redisResource = c.Resource;
60Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
65Assert.Equal($"localhost:12455,password={await redisResource.PasswordParameter.GetValueAsync(CancellationToken.None)}{sslArg}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
78redisResource = c.Resource;
96Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
99Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
102Assert.NotNull(redis.Resource.HostName);
103Assert.Equal("localhost", await redis.Resource.HostName.GetValueAsync(CancellationToken.None));
105Assert.NotNull(redis.Resource.Password);
106Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None));
154Assert.NotNull(redis.Resource.HostName);
155Assert.NotNull(redis.Resource.Password);
158var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None);
161var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None);
174Assert.Null(redis.Resource.Password);
177Assert.NotNull(redis.Resource.HostName);
178Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression);
216_ = redis.Resource.AddAsExistingResource(infra);
219var (manifest, bicep) = await GetManifestWithBicep(module.Resource, skipPreparer: true);
242var (_, bicep) = await GetManifestWithBicep(redis.Resource);
AzurePostgresExtensionsTests.cs (53)
41var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource, skipPreparer: true);
98var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
133Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
134Assert.StartsWith("Host=localhost;Port=12455;Username=postgres;Password=", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
136var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
140var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
182var endpoint = Assert.Single(innerPostgres.Resource.Annotations.OfType<EndpointAnnotation>());
191Assert.True(postgres.Resource.IsContainer(), "The resource should now be a container resource.");
192Assert.Equal("Host=localhost;Port=12455;Username=user1;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
195Assert.NotNull(postgres.Resource.Host);
196Assert.Equal("localhost", await postgres.Resource.Host.GetValueAsync(CancellationToken.None));
198Assert.NotNull(postgres.Resource.Port);
199Assert.Equal("12455", await postgres.Resource.Port.GetValueAsync(CancellationToken.None));
201Assert.NotNull(postgres.Resource.HostName);
202Assert.Equal("localhost:12455", await postgres.Resource.HostName.GetValueAsync(CancellationToken.None));
204Assert.NotNull(postgres.Resource.UserName);
205Assert.Equal("user1", await postgres.Resource.UserName.GetValueAsync(CancellationToken.None));
207Assert.NotNull(postgres.Resource.Password);
208Assert.Equal("p@ssw0rd1", await postgres.Resource.Password.GetValueAsync(CancellationToken.None));
210var db1ConnectionString = await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
213var db2ConnectionString = await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
247Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1", await postgres.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
248Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db1", await db1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
249Assert.Equal("Host=localhost;Port=12455;Username=user;Password=p@ssw0rd1;Database=db2Name", await db2.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
324Assert.NotNull(postgres.Resource.UserName);
325Assert.NotNull(postgres.Resource.Password);
326Assert.NotNull(postgres.Resource.HostName);
329var hostValue = await postgres.Resource.HostName.GetValueAsync(CancellationToken.None);
332var userValue = await postgres.Resource.UserName.GetValueAsync(CancellationToken.None);
336var passwordValue = await postgres.Resource.Password.GetValueAsync(CancellationToken.None);
350Assert.Null(postgres.Resource.UserName);
351Assert.Null(postgres.Resource.Password);
354Assert.NotNull(postgres.Resource.HostName);
355Assert.Equal("{postgres-data.outputs.hostName}", postgres.Resource.HostName.ValueExpression);
442Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
446var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
451Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
485Assert.True(postgres.Resource.TryGetLastAnnotation<ConnectionStringRedirectAnnotation>(out var connectionStringAnnotation));
489var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
494Assert.Equal("myconnectionstring", await postgres.Resource.GetConnectionStringAsync(default));
529var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource);
535Assert.Equal(expectedConnectionString, await postgres.Resource.GetConnectionStringAsync());
561var manifest = await ManifestUtils.GetManifest(postgres.Resource);
581manifest = await ManifestUtils.GetManifest(postgres.Resource);
600manifest = await ManifestUtils.GetManifest(postgres.Resource);
643_ = postgres.Resource.AddAsExistingResource(infra);
646var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
674Assert.NotNull(postgres.Resource.ConnectionStringSecretOutput);
675Assert.Same(postgres.Resource, postgres.Resource.ConnectionStringSecretOutput.SecretOwner);
678var references = ((IValueWithReferences)postgres.Resource.ConnectionStringSecretOutput).References.ToList();
679Assert.Contains(postgres.Resource, references);
680Assert.Contains(postgres.Resource.ConnectionStringSecretOutput.Resource, references);
AzureRedisExtensionsTests.cs (32)
40var (manifest, bicep) = await GetManifestWithBicep(model, redis.Resource);
83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
99redisResource = c.Resource;
104Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
108Assert.Equal($"localhost:12455,password={redisResource.PasswordParameter.Value}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
122redisResource = c.Resource;
140Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource.");
143Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None));
146Assert.NotNull(redis.Resource.HostName);
147Assert.Equal("localhost:12455", await redis.Resource.HostName.GetValueAsync(CancellationToken.None));
149Assert.NotNull(redis.Resource.Password);
150Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None));
198Assert.NotNull(redis.Resource.HostName);
199Assert.NotNull(redis.Resource.Password);
202var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None);
205var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None);
218Assert.Null(redis.Resource.Password);
221Assert.NotNull(redis.Resource.HostName);
222Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression);
244Assert.True(redis.Resource.IsContainer());
245Assert.NotNull(redis.Resource.PasswordParameter);
248Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync());
251var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
295_ = redis.Resource.AddAsExistingResource(infra);
298var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
325Assert.NotNull(redis.Resource.ConnectionStringSecretOutput);
326Assert.Same(redis.Resource, redis.Resource.ConnectionStringSecretOutput.SecretOwner);
329var references = ((IValueWithReferences)redis.Resource.ConnectionStringSecretOutput).References.ToList();
330Assert.Contains(redis.Resource, references);
331Assert.Contains(redis.Resource.ConnectionStringSecretOutput.Resource, references);
AzureResourcePreparerTests.cs (56)
87Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments));
94Assert.Same(storage.Resource, storageRoles.TargetAzureResource);
106Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments));
107Assert.Equal(storage.Resource, apiRoleAssignments.Target);
140Assert.Same(storage.Resource, storageRoles.TargetAzureResource);
150Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments));
151Assert.Equal(storage.Resource, apiRoleAssignments.Target);
156Assert.True(api2.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var api2RoleAssignments));
157Assert.Equal(storage.Resource, api2RoleAssignments.Target);
199context.Args.Add(blobs.Resource.ConnectionStringExpression);
205Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments));
207Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments));
208Assert.Equal(storage.Resource, apiRoleAssignments.Target);
237var deploymentTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget);
239Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource);
240Assert.Same(api.Resource, roleAssignmentResource.OwnerResource);
242Assert.Contains(blobPE.Resource, deploymentTarget.References);
243Assert.Contains(queuesPE.Resource, deploymentTarget.References);
272.Where(resource => resource.TargetAzureResource == keyVault.Resource)
287Assert.Same(keyVault.Resource, resource.TargetAzureResource);
288Assert.Same(api.Resource, resource.OwnerResource);
293Assert.Same(keyVault.Resource, resource.TargetAzureResource);
294Assert.Same(worker.Resource, resource.OwnerResource);
299resource => resource.TargetAzureResource == storage.Resource);
300Assert.Same(api.Resource, storageRoleAssignment.OwnerResource);
329.Where(resource => resource.TargetAzureResource == signalR.Resource)
344Assert.Same(signalR.Resource, resource.TargetAzureResource);
345Assert.Same(serviceA.Resource, resource.OwnerResource);
350Assert.Same(signalR.Resource, resource.TargetAzureResource);
351Assert.Same(serviceB.Resource, resource.OwnerResource);
381Assert.Same(storage.Resource, storageRoles.TargetAzureResource);
383Assert.Single(storage.Resource.Annotations.OfType<RoleAssignmentResourceAnnotation>());
554agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(
555storage.Resource,
564Assert.True(consumer.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var consumerRoleAssignments));
565Assert.Equal(storage.Resource, consumerRoleAssignments.Target);
579agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(
580storage.Resource,
591Assert.Same(storage.Resource, storageRoles.TargetAzureResource);
604agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(
605storage.Resource,
615Assert.False(bystander.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out _));
633agent1.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role));
636agent2.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role));
647Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource);
648Assert.Same(consumer.Resource, roleAssignmentResource.OwnerResource);
667agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(
668storage.Resource,
683var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>()
684.Where(a => a.Target == storage.Resource)
710agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(
711storage.Resource,
724var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>()
725.Where(a => a.Target == storage.Resource)
AzureRunAsEmulatorModeTests.cs (8)
13{ "Azure App Configuration", (builder, configure) => builder.AddAzureAppConfiguration("appconfig").RunAsEmulator(_ => configure()).Resource },
14{ "Azure Cosmos DB", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsEmulator(_ => configure()).Resource },
15{ "Azure Cosmos DB classic", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsClassicEmulator(_ => configure()).Resource },
16{ "Azure Event Hubs", (builder, configure) => builder.AddAzureEventHubs("eventhubs").RunAsEmulator(_ => configure()).Resource },
17{ "Azure Kusto", (builder, configure) => builder.AddAzureKustoCluster("kusto").RunAsEmulator(_ => configure()).Resource },
18{ "Azure Service Bus", (builder, configure) => builder.AddAzureServiceBus("servicebus").RunAsEmulator(_ => configure()).Resource },
19{ "Azure SignalR", (builder, configure) => builder.AddAzureSignalR("signalr").RunAsEmulator(_ => configure()).Resource },
20{ "Azure Storage", (builder, configure) => builder.AddAzureStorage("storage").RunAsEmulator(_ => configure()).Resource },
AzureSandboxesTests.cs (99)
37Assert.Equal("{sandboxes.outputs.id}", sandboxGroup.Resource.IdOutputReference.ValueExpression);
38Assert.Equal("{sandboxes.outputs.name}", sandboxGroup.Resource.NameOutputReference.ValueExpression);
47sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group";
48sandboxGroup.Resource.Outputs["location"] = "eastus2";
50var scope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource);
71var (hostGroupManifest, hostGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, hostGroup.Resource);
72var (workerGroupManifest, workerGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, workerGroup.Resource);
108var (_, sandbox1Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox1.Resource);
109var (_, sandbox2Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox2.Resource);
134Assert.Equal(ManagedServiceIdentityType.SystemAssignedUserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType);
135Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities));
146var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true);
159var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true);
175.WithAnnotation(new AppIdentityAnnotation(computeIdentity.Resource))
181Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType);
182Assert.Equal(computeIdentity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities));
184var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true);
197.WithAnnotation(new AppIdentityAnnotation(identity.Resource))
202Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType);
203Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities));
204Assert.Empty(otherGroup.Resource.WorkloadUserAssignedIdentities);
205var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true);
222.WithAnnotation(new AppIdentityAnnotation(identity.Resource))
247var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource);
249var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>());
250Assert.Same(pullIdentity.Resource, annotation.Identity);
271() => AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource));
329var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>());
331Assert.Same(registry.Resource, roles.TargetAzureResource);
333Assert.Contains(identity, sandboxGroup.Resource.References);
335var (_, sandboxBicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true);
374var buildOptionsCallbackCount = container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count();
388Assert.Null(computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource));
390Assert.Equal(buildOptionsCallbackCount, container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count());
495sandboxGroup.Resource.ContainerRegistry!.Outputs["loginServer"] = "example.azurecr.io";
496sandboxGroup.Resource.Outputs[AzureSandboxGroupResource.ImagePullIdentityClientIdOutputName] =
500sandboxGroup.Resource,
504sandboxGroup.Resource,
1083sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group";
1084sandboxGroup.Resource.Outputs["location"] = "eastus2";
1085var existingScope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource);
1088var targetResource = builder.AddContainer("frontend", "example/image").Resource;
1092sandboxGroup.Resource);
1829var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
1905defaultResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
1907disabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
1909enabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
2004var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2030Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http"), sandboxGroup.Resource, out var urlExpression));
2035Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http").Property(EndpointProperty.TargetPort), sandboxGroup.Resource, out var targetPortExpression));
2066var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2105var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2129var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2162var frontendCallbackCount = frontend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count();
2163var backendCallbackCount = backend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count();
2173Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment());
2174Assert.Same(sandboxGroup.Resource, explicitComputeResource.GetComputeEnvironment());
2214var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2216Assert.Same(sandboxGroup.Resource.ContainerRegistry, deploymentTarget.ContainerRegistry);
2217Assert.Same(sandboxGroup.Resource, deploymentTarget.ComputeEnvironment);
2221Assert.Same(sandboxGroup.Resource, sandboxContainer.Parent);
2252Resource = sandboxGroup.Resource.ContainerRegistry,
2305foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()
2350Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment());
2352var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2375var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource);
2396container.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
2398var registry = Assert.IsType<AzureContainerRegistryResource>(sandboxGroup.Resource.ContainerRegistry);
2418Assert.Empty(context.GetSteps(container.Resource, WellKnownPipelineTags.PushContainerImage));
2440api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
2467var value = await AzureSandboxContainerDeployment.ResolveValueWithEgressHostsAsync(stepContext, web.Resource, endpointExpression);
2468var environment = await AzureSandboxContainerDeployment.ResolveEnvironmentVariablesAsync(stepContext, web.Resource);
2493var dependencies = await web.Resource.GetResourceDependenciesAsync(
2496Assert.Contains(api.Resource, dependencies);
2497var steps = await CreateStepsAsync(app, sandboxGroup.Resource);
2504foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>())
2531var steps = await CreateStepsAsync(app, consumerGroup.Resource);
2541foreach (var annotation in consumerGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>())
2571var firstDependencies = await first.Resource.GetResourceDependenciesAsync(
2574var secondDependencies = await second.Resource.GetResourceDependenciesAsync(
2577Assert.Contains(second.Resource, firstDependencies);
2578Assert.Contains(first.Resource, secondDependencies);
2579var steps = await CreateStepsAsync(app, sandboxGroup.Resource);
2588foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>())
2621project.Resource);
2625Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(project.Resource));
2629Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(container.Resource));
2650api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget);
2674var command = await AzureSandboxContainerDeployment.ResolveModeledCommandAsync(stepContext, worker.Resource);
2709worker.Resource);
AzureServiceBusExtensionsTests.cs (45)
41var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
66var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
98await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
100await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
104await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
106await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
132hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
139await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
140await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
144await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
147await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
167serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(),
190var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault();
268var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
626Assert.Same(serviceBus.Resource.Annotations, sourceResource.Annotations);
628var persistenceAnnotation = Assert.Single(serviceBus.Resource.Annotations.OfType<PersistenceAnnotation>());
679Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression);
680Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression);
681Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression);
682Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression);
696((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb");
702((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue");
709((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic");
716((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub");
752serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint";
754var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource;
756Assert.Equal("sb", serviceBus.Resource.Name);
762var manifest = await GetManifestWithBicep(model, serviceBus.Resource);
845hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
848await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token);
849await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
856await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName);
859await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName);
923Assert.True(serviceBus.Resource.IsEmulator());
924Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation);
954_ = serviceBus.Resource.AddAsExistingResource(infra);
957var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
976_ = serviceBus.Resource.AddAsExistingResource(infra);
979var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
995_ = serviceBus.Resource.AddAsExistingResource(infra);
998var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
1016_ = serviceBus.Resource.AddAsExistingResource(infra);
1019var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
1036_ = serviceBus.Resource.AddAsExistingResource(infra);
1039var (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)
51await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
53await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
57await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token);
58await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token);
59await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token);
61await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
96await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
98await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
102await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token);
104await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
139await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token);
141await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
145await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token);
147await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
178hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
179hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
180hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
181hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
193await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token);
225await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token);
229hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
265await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token);
269hb.Configuration["ConnectionStrings:QueueConnection"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
AzureStorageExtensionsTests.cs (114)
36var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
62var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
88var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
114var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
133storage.Resource.Annotations.OfType<EndpointAnnotation>(),
147var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource);
167var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource);
187Assert.True(storage.Resource.IsContainer());
191Assert.Equal(expected, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default));
203storage.Resource.Outputs["blobEndpoint"] = blobsConnectionString;
207Assert.Equal(blobsConnectionString, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default));
218Assert.Equal("{storage.outputs.blobEndpoint}", blobs.Resource.ConnectionStringExpression.ValueExpression);
235Assert.True(storage.Resource.IsContainer());
240string? blobConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default);
241string? blobContainerConnectionString = await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default);
257storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
262string? blobsConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default);
265Assert.Equal(expected, await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default));
276Assert.Equal("Endpoint={storage.outputs.blobEndpoint};ContainerName=myContainer", blobContainer.Resource.ConnectionStringExpression.ValueExpression);
293Assert.True(storage.Resource.IsContainer());
297Assert.Equal(expected, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync());
309storage.Resource.Outputs["queueEndpoint"] = connectionString;
313Assert.Equal(connectionString, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync());
324Assert.Equal("{storage.outputs.queueEndpoint}", queues.Resource.ConnectionStringExpression.ValueExpression);
341Assert.True(storage.Resource.IsContainer());
346string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync();
349Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
361storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
366string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync();
369Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
381Assert.Equal("Endpoint={storage.outputs.queueEndpoint};QueueName=myqueue", queue.Resource.ConnectionStringExpression.ValueExpression);
396var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
413Assert.True(storage.Resource.IsContainer());
420=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port));
426Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression);
427Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression);
428Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression);
435Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync());
436Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync());
437Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync());
456storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
457storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
458storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
461Assert.Equal("storage", storage.Resource.Name);
463var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
481var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
490var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
496var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
505var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
511var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
520var tableManifest = await ManifestUtils.GetManifest(table.Resource);
541storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
542storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
543storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
546Assert.Equal("storage", storage.Resource.Name);
548var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
566var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
575var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
581var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
590var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
596var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
605var tableManifest = await ManifestUtils.GetManifest(table.Resource);
629storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
630storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
631storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
634Assert.Equal("storage", storage.Resource.Name);
638var storageManifest = await GetManifestWithBicep(model, storage.Resource);
704var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
713var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
717var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
726var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
730var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
739var tableManifest = await ManifestUtils.GetManifest(table.Resource);
760storage.Resource.Outputs["blobEndpoint"] = "https://myblob";
761storage.Resource.Outputs["queueEndpoint"] = "https://myqueue";
762storage.Resource.Outputs["tableEndpoint"] = "https://mytable";
765Assert.Equal("storage", storage.Resource.Name);
767var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
786var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource;
795var blobManifest = await ManifestUtils.GetManifest(blob.Resource);
801var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource;
810var queueManifest = await ManifestUtils.GetManifest(queue.Resource);
816var connectionStringTableResource = (IResourceWithConnectionString)table.Resource;
825var tableManifest = await ManifestUtils.GetManifest(table.Resource);
852Assert.Equal("storage-blobs", blobService.Resource.Name);
853Assert.Equal(blobService.Resource, blobStorageResource);
879Assert.Equal("storage-queues", queueService.Resource.Name);
880Assert.Equal(queueService.Resource, queueStorageResource);
897Assert.Same(blobs.Resource, container1.Resource.Parent);
898Assert.Same(blobs.Resource, container2.Resource.Parent);
914Assert.Same(queues.Resource, q1.Resource.Parent);
915Assert.Same(queues.Resource, q2.Resource.Parent);
931Assert.Same(dataLake.Resource, fs1.Resource.Parent);
932Assert.Same(dataLake.Resource, fs2.Resource.Parent);
957Assert.Equal("blobs", customBlobs.Resource.Name);
958Assert.Same(customBlobService, customBlobs.Resource);
960Assert.Same(defaultBlobService, originals.Resource.Parent);
961Assert.Same(defaultBlobService, derived.Resource.Parent);
977Assert.NotSame(customBlobs.Resource, defaultBlobs.Resource);
978Assert.Equal("blobs", customBlobs.Resource.Name);
979Assert.Equal("storage-blobs", defaultBlobs.Resource.Name);
994Assert.Same(first.Resource, container.Resource.Parent);
1005Assert.True(storage.Resource.IsEmulator());
1006Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation);
1036_ = storage.Resource.AddAsExistingResource(infra);
1039var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureUserAssignedIdentityTests.cs (11)
127Assert.Same(identity.Resource, identityAnnotation.IdentityResource);
174Assert.Same(identity.Resource, identityAnnotation.IdentityResource);
179Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource);
232Assert.Same(identity.Resource, identityAnnotation.IdentityResource);
237Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource);
315Assert.Same(identity.Resource, identityAnnotation.IdentityResource);
316Assert.Same(identity.Resource, identityAnnotation2.IdentityResource);
323Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource);
325Assert.Same(storage.Resource, roleAssignmentResource2.TargetAzureResource);
373_ = userAssignedIdentity.Resource.AddAsExistingResource(infra);
376var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureVirtualNetworkExtensionsTests.cs (80)
22Assert.Equal("myvnet", vnet.Resource.Name);
23Assert.IsType<AzureVirtualNetworkResource>(vnet.Resource);
34Assert.Equal("myvnet", vnet.Resource.Name);
35Assert.Equal("10.1.0.0/16", vnet.Resource.AddressPrefix);
36Assert.Null(vnet.Resource.AddressPrefixParameter);
48Assert.Equal("myvnet", vnet.Resource.Name);
49Assert.Null(vnet.Resource.AddressPrefix);
50Assert.Same(vnetPrefixParam.Resource, vnet.Resource.AddressPrefixParameter);
61var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
76Assert.Equal("mysubnet", subnet.Resource.Name);
77Assert.Equal("mysubnet", subnet.Resource.SubnetName);
78Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix);
79Assert.Same(vnet.Resource, subnet.Resource.Parent);
90Assert.Equal("mysubnet", subnet.Resource.Name);
91Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName);
92Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix);
105Assert.Same(vnet.Resource, subnet1.Resource.Parent);
106Assert.Same(vnet.Resource, subnet2.Resource.Parent);
108Assert.NotSame(subnet1.Resource, subnet2.Resource);
121var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
135Assert.DoesNotContain(vnet.Resource, builder.Resources);
137Assert.DoesNotContain(subnet.Resource, builder.Resources);
152var subnetAnnotation = env.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault();
157var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault();
171var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault();
186var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault();
201var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault();
226var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().Single();
245var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
283var subnetAnnotation = environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault();
287var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault();
304var subnetAnnotation = Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>());
307var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
323Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>());
324var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
341Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>());
342var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
364Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>());
365Assert.Single(firstSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
366Assert.Empty(secondSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
386Assert.Empty(appServiceEnvironment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>());
388var delegation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
402Assert.Equal("mysubnet", subnet.Resource.Name);
403Assert.Equal("mysubnet", subnet.Resource.SubnetName);
404Assert.Null(subnet.Resource.AddressPrefix);
405Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter);
406Assert.Same(vnet.Resource, subnet.Resource.Parent);
418Assert.Equal("mysubnet", subnet.Resource.Name);
419Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName);
420Assert.Null(subnet.Resource.AddressPrefix);
421Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter);
433var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
448var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
462Assert.NotNull(subnet.Resource.NetworkSecurityGroup);
463Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name);
464Assert.Single(subnet.Resource.NetworkSecurityGroup.SecurityRules);
478Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup);
479Assert.Single(nsg.Resource.SecurityRules);
493var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
510var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
527var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
543var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
557var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
572var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
587var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
603var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules);
616var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules);
634var vnetManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
635var nsgManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource.Subnets[0].NetworkSecurityGroup!);
653var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
713var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
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 (48)
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;
335var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
350var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
366var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
381var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
400var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
415var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
429var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
441var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
459var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
486.Resource;
523var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
ExistingAzureResourceTests.cs (38)
23var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
40var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
57var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
77var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource);
97var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource);
114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource);
146var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource);
163var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource);
180var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource);
197var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource);
214var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
235var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource);
252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource);
269var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource);
286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource);
303var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
319var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource);
337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
371var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
386var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource);
402var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource);
445var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
466var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource);
482var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
499var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
521Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation());
522Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation));
541Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation());
542Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation));
562var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource);
588resource.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(existingSubscriptionId.Resource);
590var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true);
607resource.Resource.Scope = AzureBicepResourceScope.CreateForTenant();
609var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true);
FoundryExtensionsTests.cs (20)
157Assert.Equal("{myAIFoundry.connectionString};Model=gpt-4", deployment.Resource.ConnectionStringExpression.ValueExpression);
168deployment.Resource.ModelId = "custom-model-id";
170Assert.Equal("{myAIFoundry.connectionString};Model=custom-model-id", deployment.Resource.ConnectionStringExpression.ValueExpression);
183Assert.Equal("{myAIFoundry.connectionString};Deployment=deployment1", deployment.Resource.ConnectionStringExpression.ValueExpression);
199var manifest = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource);
217Assert.Same(foundry.Resource, project.Resource.Parent);
230Assert.Null(project.Resource.ContainerRegistry);
245var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource);
265var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource);
283var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource);
330SetFoundryProjectOutputs(project.Resource);
336advisorAgent.Resource,
359SetFoundryProjectOutputs(project.Resource);
365advisorAgent.Resource,
400SetFoundryProjectOutputs(project.Resource);
406advisorAgent.Resource,
441SetFoundryProjectOutputs(project.Resource);
447advisorAgent.Resource,
483advisorAgent.Resource,
PublicApiTests\CosmosDBPublicApiTests.cs (10)
21var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
41var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
61var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
81var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
101var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
119var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
135var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
153var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource);
199var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
217var 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.Blazor (40)
BlazorGatewayExtensions.cs (22)
233var pathPrefix = wasmApp.Resource.Name;
238var referencedServices = GetServiceDiscoveryReferences(wasmApp.Resource);
244var existingGatewayRefs = GetReferencedResourceNames(gateway.Resource);
256wasmApp.Resource.Parent = gateway.Resource;
269gateway.Resource,
271wasmApp.Resource.ProjectPath,
273browser: wasmApp.Resource.DebuggerBrowser);
293wasmApp.Resource.DebuggerBrowser = browser;
317var annotation = GetOrAddGatewayAppsAnnotation(gateway.Resource);
320GetBlazorStorePath(gateway.ApplicationBuilder), "gateways", gateway.Resource.Name);
329var registeredApps = GetRegisteredApps(gateway.Resource);
330var httpsGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "https");
331var httpGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "http");
333?? throw new InvalidOperationException($"The gateway '{gateway.Resource.Name}' must define an HTTP or HTTPS endpoint.");
410gateway.ApplicationBuilder.Eventing.Subscribe<InitializeResourceEvent>(gateway.Resource, (e, ct) =>
413_ = Task.Run(() => WatchGatewayStateAsync(gateway.Resource, notificationService, ct), ct);
442await notificationService.PublishUpdateAsync(reg.AppBuilder.Resource, snapshot => snapshot with
535var publishResourceName = $"{wasmApp.Resource.Name}publish";
536var project = GetProjectInfo(wasmApp.Resource.ProjectPath, gateway.ApplicationBuilder.AppHostDirectory);
538project.SolutionRoot, wasmApp.Resource.ProjectPath).Replace('\\', '/');
574Source = companion.Resource,
Aspire.Hosting.Blazor.Tests (37)
Aspire.Hosting.Browsers (1)
Aspire.Hosting.Browsers.Tests (5)
Aspire.Hosting.Containers.Tests (55)
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 (34)
DevTunnelResourceBuilderExtensionsTests.cs (34)
33var tunnelPort = tunnel.Resource.Ports.FirstOrDefault();
38var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: builder.Services.BuildServiceProvider()).DefaultTimeout();
52Assert.True(tunnel.Resource.Options.AllowAnonymous);
62Assert.Equal("custom-id", tunnel.Resource.TunnelId);
73var annotation = Assert.Single(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>());
84Assert.Empty(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>());
97Assert.Single(tunnel.Resource.Ports);
98var port = tunnel.Resource.Ports.First();
112var tunnelPort = Assert.Single(tunnel.Resource.Ports);
127var tunnelPort = Assert.Single(tunnel.Resource.Ports);
146var tunnelPort = Assert.Single(tunnel.Resource.Ports);
166var tunnelPort = Assert.Single(tunnel.Resource.Ports);
186var args = await tunnel.Resource.GetArgumentValuesAsync().DefaultTimeout();
216var tunnelPort = Assert.Single(tunnel.Resource.Ports);
224await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout();
263tunnel.Resource,
285var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https");
288Assert.Equal(target.Resource, tunnelEndpoint.Resource);
305Assert.Equal(target.Resource, tunnelEndpoint.Resource);
323Assert.Equal(target.Resource, tunnelEndpoint.Resource);
337var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent");
377var endpointRef = tunnel.GetEndpoint(target.Resource, "https");
397var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http");
398var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https");
420var port = Assert.Single(tunnel.Resource.Ports);
510var port = Assert.Single(tunnel.Resource.Ports);
555var contextualTargetEndpoint = new EndpointReference(target.Resource, targetEndpoint.EndpointAnnotation, containerNetwork);
558var port = Assert.Single(tunnel.Resource.Ports);
618var tunnelPort = Assert.Single(tunnel.Resource.Ports);
619foreach (var annotation in tunnel.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>().ToArray())
621tunnel.Resource.Annotations.Remove(annotation);
652var port = Assert.Single(tunnel.Resource.Ports);
655tunnel.Resource.LastKnownStatus = new("tunnel", HostConnections: 1, ClientConnections: 0, Description: "", Labels: []);
662await builder.Eventing.PublishAsync(new ResourceReadyEvent(tunnel.Resource, app.Services)).DefaultTimeout();
Aspire.Hosting.Docker (12)
Aspire.Hosting.Docker.Tests (29)
Aspire.Hosting.Dotnet.Tests (33)
DotnetProjectResourceTests.cs (33)
46var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
64var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
82Assert.Equal("dotnet", app.Resource.Command);
83Assert.Equal(Path.GetDirectoryName(projectPath), app.Resource.WorkingDirectory);
93Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource);
94Assert.IsAssignableFrom<ExecutableResource>(app.Resource);
95Assert.IsAssignableFrom<IComputeResource>(app.Resource);
106Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata));
129() => ManifestUtils.GetManifest(app.Resource, workspace.Path));
373var manifest = await ManifestUtils.GetManifestOrNull(resource.Resource, workspace.Path);
389var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path);
407var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path);
439Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata));
457Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata));
467var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
495var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>());
509var resource = builder.AddDotnetProject("testapp", projectPath, o => o.ExcludeLaunchProfile = true).Resource;
544Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out var supportsDebugging));
548app.Resource,
551await app.Resource.CreateLaunchConfigurationAsync(callbackContext));
583app.Resource,
586await app.Resource.CreateLaunchConfigurationAsync(callbackContext));
604var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
620Assert.Empty(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>());
622var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
666var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
693var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
719var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
752var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
784var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
814var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
857var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
885var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
Aspire.Hosting.DotnetTool.Tests (31)
Aspire.Hosting.EntityFrameworkCore (23)
Aspire.Hosting.EntityFrameworkCore.Tests (168)
AddEFMigrationsTests.cs (29)
23Assert.Equal("mymigrations", migrations.Resource.Name);
24Assert.Equal(project.Resource, migrations.Resource.ProjectResource);
25Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName);
37Assert.Equal("mymigrations", migrations.Resource.Name);
38Assert.Equal(project.Resource, migrations.Resource.ProjectResource);
39Assert.Null(migrations.Resource.DbContextTypeName);
51Assert.Equal("mymigrations", migrations.Resource.Name);
52Assert.Equal(project.Resource, migrations.Resource.ProjectResource);
53Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName);
66Assert.Equal("mymigrations", migrations.Resource.Name);
67Assert.Equal(project.Resource, migrations.Resource.ProjectResource);
68Assert.Equal(contextTypeName, migrations.Resource.DbContextTypeName);
95Assert.NotEqual(migrations1.Resource, migrations2.Resource);
96Assert.Equal(typeof(TestDbContext).FullName, migrations1.Resource.DbContextTypeName);
97Assert.Equal(typeof(AnotherDbContext).FullName, migrations2.Resource.DbContextTypeName);
109Assert.NotEqual(migrations1.Resource, migrations2.Resource);
110Assert.Equal("MyApp.Data.AppDbContext", migrations1.Resource.DbContextTypeName);
111Assert.Equal("MyApp.Data.LoggingDbContext", migrations2.Resource.DbContextTypeName);
191var snapshotAnnotation = migrations.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().FirstOrDefault();
204var iconAnnotation = migrations.Resource.Annotations.OfType<ResourceIconAnnotation>().FirstOrDefault();
216Assert.IsAssignableFrom<IResourceWithWaitSupport>(migrations.Resource);
226Assert.False(migrations.Resource.PublishAsMigrationScript);
227Assert.False(migrations.Resource.PublishAsMigrationBundle);
EFMigrationPipelineTests.cs (69)
25var steps = await CreateStepsAsync(builder, migrations.Resource);
42var steps = await CreateStepsAsync(builder, migrations.Resource);
58var steps = await CreateStepsAsync(builder, migrations.Resource);
76var steps = await CreateStepsAsync(builder, migrations.Resource);
94var m1Steps = await CreateStepsAsync(builder, m1.Resource);
95var m2Steps = await CreateStepsAsync(builder, m2.Resource);
120var m1Steps = await CreateStepsAsync(builder, m1.Resource);
121var m2Steps = await CreateStepsAsync(builder, m2.Resource);
150var m1Steps = await CreateStepsAsync(builder, m1.Resource);
151var m2Steps = await CreateStepsAsync(builder, m2.Resource);
172var m1Steps = await CreateStepsAsync(builder, m1.Resource);
173var m2Steps = await CreateStepsAsync(builder, m2.Resource);
198var m1Steps = await CreateStepsAsync(builder, m1.Resource);
199var m3Steps = await CreateStepsAsync(builder, m3.Resource);
221var steps = await CreateStepsAsync(builder, migrations.Resource);
224Assert.True(migrations.Resource.PublishAsMigrationBundle);
225Assert.True(migrations.Resource.PublishBundleContainer);
237var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList();
257var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList();
269var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList();
280var startCommand = migrations.Resource.ToolResource.Annotations
297Assert.True(migrations.Resource.PublishAsMigrationBundle);
298Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime);
299Assert.True(migrations.Resource.BundleSelfContained);
300Assert.True(migrations.Resource.PublishBundleContainer);
311Assert.True(migrations.Resource.PublishAsMigrationBundle);
312Assert.False(migrations.Resource.PublishBundleContainer);
323Assert.True(migrations.Resource.PublishAsMigrationScript);
324Assert.True(migrations.Resource.ScriptIdempotent);
325Assert.True(migrations.Resource.ScriptNoTransactions);
326Assert.False(migrations.Resource.PublishAsMigrationBundle);
339Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime);
352Assert.Equal("linux-arm64", migrations.Resource.BundleTargetRuntime);
365Assert.False(migrations.Resource.BundleSelfContained);
376Assert.Null(migrations.Resource.BundleTargetRuntime);
389Assert.IsAssignableFrom<ContainerResource>(migrations.Resource);
390Assert.IsAssignableFrom<IComputeResource>(migrations.Resource);
391Assert.False(migrations.Resource.IsContainer());
404var dockerfileAnnotation = Assert.Single(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
410Assert.True(migrations.Resource.IsContainer());
426Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
427Assert.False(migrations.Resource.IsContainer());
430Assert.True(migrations.Resource.PublishBundleContainer);
441Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
442Assert.False(migrations.Resource.IsContainer());
455var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
474var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
494migrations.Resource.ResolvedFramework = resolvedFramework;
496var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource);
511migrations.Resource.ResolvedFramework = "net11.0";
513var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource);
527var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource);
541var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
560EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource));
577EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource));
595var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
615var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
634EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource));
648var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource));
655var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
669var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource));
676var waitedResources = migrations.Resource.Annotations.OfType<WaitAnnotation>().Select(w => w.Resource).ToList();
677Assert.Contains(server.Resource, waitedResources);
678Assert.Contains((IResource)database.Resource, waitedResources);
681var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource);
693Assert.Equal("mymigrations.exe", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource));
704Assert.Equal("mymigrations", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource));
717var steps = await CreateStepsAsync(builder, migrations.Resource);
725Assert.Contains($"build-{migrations.Resource.Name}", generateStep.RequiredBySteps);
Aspire.Hosting.Foundry (85)
PromptAgent\PromptAgentBuilderExtensions.cs (35)
69var agent = new AzurePromptAgentResource(name, model.Resource.DeploymentName, project.Resource, instructions);
152agent.Resource.AddTool(tool.Resource);
179var resource = new CodeInterpreterToolResource(name, project.Resource);
203var resource = new FileSearchToolResource(name, project.Resource)
228var resource = new WebSearchToolResource(name, project.Resource);
250var resource = new ImageGenerationToolResource(name, project.Resource);
278var resource = new ComputerToolResource(name, project.Resource, displayWidth, displayHeight, environment);
311var resource = new AzureAISearchToolResource(name, project.Resource)
336if (tool.Resource.Connection is not null)
339$"Azure AI Search tool '{tool.Resource.Name}' already has a backing resource configured.");
343var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project);
348tool.Resource.Connection = connection.Resource;
349tool.Resource.SearchResource = search.Resource;
374var resource = new BingGroundingToolResource(name, project.Resource);
447if (tool.Resource.Connection is not null)
450$"Bing Grounding tool '{tool.Resource.Name}' already has a connection configured.");
456tool.Resource.Connection = connectionBuilder.Resource;
461var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project);
462var connection = projectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", bingResourceId);
463tool.Resource.Connection = connection.Resource;
467var paramProjectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project);
468var paramConnection = paramProjectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", parameterBuilder);
469tool.Resource.Connection = paramConnection.Resource;
505var resource = new SharePointToolResource(name, project.Resource, projectConnectionIds);
529var resource = new FabricToolResource(name, project.Resource, projectConnectionIds);
568name, project.Resource, functionName, description, parameters,
631name, project.Resource, functionName, parameters, description, strictModeEnabled);
685builder.Resource.AddCustomTool(tool);
Aspire.Hosting.Foundry.Tests (133)
ProjectResourceTests.cs (35)
21Assert.IsType<AzureCognitiveServicesProjectResource>(project.Resource);
22Assert.Equal("my-project", project.Resource.Name);
23Assert.Same(account.Resource, project.Resource.Parent);
34var registry = project.Resource.ContainerRegistry;
36Assert.Same(project.Resource.DefaultContainerRegistry, registry);
49Assert.Null(project.Resource.DefaultContainerRegistry);
50Assert.Null(project.Resource.ContainerRegistry);
63Assert.Same(registry.Resource, project.Resource.ContainerRegistry);
64Assert.True(project.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation));
65Assert.Same(registry.Resource, annotation.Registry);
78var defaultRegistry = project.Resource.DefaultContainerRegistry;
88Assert.Same(registry.Resource, registries[0]);
100var defaultRegistry = project.Resource.DefaultContainerRegistry;
110Assert.Null(project.Resource.DefaultContainerRegistry);
120var expr = project.Resource.ConnectionStringExpression;
131var expr = project.Resource.UriExpression;
142var properties = ((IResourceWithConnectionString)project.Resource)
163Assert.Same(appInsights.Resource, project.Resource.AppInsights);
176Assert.Equal("chat", deployment.Resource.Name);
177Assert.Equal("gpt-4", deployment.Resource.ModelName);
191Assert.Equal("chat", deployment.Resource.Name);
210Assert.NotNull(project.Resource.CapabilityHostConfiguration);
211Assert.Equal("cap-host", project.Resource.CapabilityHostConfiguration.Name);
212Assert.Same(cosmosDb.Resource, project.Resource.CapabilityHostConfiguration.CosmosDB);
213Assert.Same(storage.Resource, project.Resource.CapabilityHostConfiguration.Storage);
214Assert.Same(search.Resource, project.Resource.CapabilityHostConfiguration.Search);
234Assert.NotNull(project.Resource.CapabilityHostConfiguration);
235Assert.Same(foundry.Resource, project.Resource.CapabilityHostConfiguration.AzureOpenAI);
PromptAgentTests.cs (72)
32Assert.NotNull(agent.Resource);
33Assert.Equal("my-agent", agent.Resource.Name);
34Assert.IsType<AzurePromptAgentResource>(agent.Resource);
47Assert.Equal("gpt41", agent.Resource.Model);
48Assert.Equal("You tell jokes.", agent.Resource.Instructions);
61Assert.Same(project.Resource, agent.Resource.Project);
92project.Resource.Outputs["endpoint"] = "https://account.services.ai.azure.com/api/projects/my-project";
98var command = Assert.Single(agent.Resource.Annotations.OfType<ResourceCommandAnnotation>());
102ResourceName = agent.Resource.Name,
151Assert.Null(agent.Resource.Instructions);
170Assert.Equal(2, agent.Resource.Tools.Count);
171Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]);
172Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]);
185Assert.Equal("code-interp", tool.Resource.Name);
186Assert.IsType<CodeInterpreterToolResource>(tool.Resource);
187Assert.Same(project.Resource, tool.Resource.Project);
200Assert.IsType<FileSearchToolResource>(tool.Resource);
201Assert.Equal(["store-1", "store-2"], tool.Resource.VectorStoreIds);
214Assert.IsType<WebSearchToolResource>(tool.Resource);
227Assert.IsType<AzureAISearchToolResource>(tool.Resource);
228Assert.Same(project.Resource, tool.Resource.Project);
229Assert.Null(tool.Resource.SearchResource);
242Assert.NotNull(tool.Resource.SearchResource);
243Assert.Same(search.Resource, tool.Resource.SearchResource);
244Assert.NotNull(tool.Resource.Connection);
271Assert.IsType<BingGroundingToolResource>(tool.Resource);
272Assert.Null(tool.Resource.Connection);
286Assert.NotNull(tool.Resource.Connection);
287Assert.Same(connection.Resource, tool.Resource.Connection);
315Assert.NotNull(tool.Resource.Connection);
342Assert.IsType<BingGroundingConnectionResource>(connection.Resource);
355Assert.NotNull(tool.Resource.Connection);
369Assert.IsType<BingGroundingConnectionResource>(connection.Resource);
382Assert.IsType<SharePointToolResource>(tool.Resource);
383Assert.Equal(["conn-1", "conn-2"], tool.Resource.ProjectConnectionIds);
396Assert.IsType<FabricToolResource>(tool.Resource);
397Assert.Equal(["fab-conn-1"], tool.Resource.ProjectConnectionIds);
418Assert.IsType<AzureFunctionToolResource>(tool.Resource);
419Assert.Equal("myFunc", tool.Resource.FunctionName);
436Assert.IsType<FunctionToolResource>(tool.Resource);
437Assert.Equal("get_weather", tool.Resource.FunctionName);
438Assert.Equal("Gets the current weather", tool.Resource.Description);
462Assert.Equal(4, agent.Resource.Tools.Count);
463Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]);
464Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]);
465Assert.IsType<AzureAISearchToolResource>(agent.Resource.Tools[2]);
466Assert.IsType<SharePointToolResource>(agent.Resource.Tools[3]);
482Assert.Single(agent1.Resource.Tools);
483Assert.Single(agent2.Resource.Tools);
484Assert.Same(codeInterp.Resource, agent1.Resource.Tools[0]);
485Assert.Same(codeInterp.Resource, agent2.Resource.Tools[0]);
517pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
531Assert.IsAssignableFrom<IResourceWithConnectionString>(agent.Resource);
532Assert.IsAssignableFrom<IResourceWithEnvironment>(agent.Resource);
533Assert.IsNotAssignableFrom<IComputeResource>(agent.Resource);
546Assert.IsType<ImageGenerationToolResource>(tool.Resource);
559var computerTool = Assert.IsType<ComputerToolResource>(tool.Resource);
576Assert.Same(project.Resource, ci.Resource.Project);
577Assert.Same(project.Resource, fs.Resource.Project);
578Assert.Same(project.Resource, ws.Resource.Project);
593var annotations = agent.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
610Resource = agent.Resource
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.Go (22)
GoHostingExtensions.cs (22)
316if (rb.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(
319var buildSteps = context.GetSteps(rb.Resource, WellKnownPipelineTags.BuildCompute);
363if (builder.Resource.TryGetLastAnnotation<GoModTidyAnnotation>(out _))
374$"{builder.Resource.Name}-mod-tidy", "go", builder.Resource.WorkingDirectory);
387if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var existingVendor))
413if (builder.Resource.TryGetLastAnnotation<GoModVendorAnnotation>(out _))
423$"{builder.Resource.Name}-mod-vendor", "go", builder.Resource.WorkingDirectory);
431if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder))
459if (builder.Resource.TryGetLastAnnotation<GoModDownloadAnnotation>(out _))
469$"{builder.Resource.Name}-mod-download", "go", builder.Resource.WorkingDirectory);
478if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var vendorBuilder))
482else if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder))
507if (builder.Resource.TryGetLastAnnotation<GoVetToolAnnotation>(out _))
517$"{builder.Resource.Name}-vet-tool", "go", builder.Resource.WorkingDirectory);
705var debuggingAnnotation = builder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
708builder.Resource.Annotations.Remove(debuggingAnnotation);
715new ExecutableAnnotation { Command = "dlv", WorkingDirectory = builder.Resource.WorkingDirectory },
735var resource = builder.Resource;
Aspire.Hosting.Go.Tests (59)
AddGoAppTests.cs (36)
28var manifest = await ManifestUtils.GetManifest(app.Resource);
65var manifest = await ManifestUtils.GetManifest(app.Resource);
109var manifest = await ManifestUtils.GetManifest(app.Resource);
133var manifest = await ManifestUtils.GetManifest(app.Resource);
157var manifest = await ManifestUtils.GetManifest(app.Resource);
181var manifest = await ManifestUtils.GetManifest(app.Resource);
209var manifest = await ManifestUtils.GetManifest(app.Resource);
239var manifest = await ManifestUtils.GetManifest(app.Resource);
267var manifest = await ManifestUtils.GetManifest(app.Resource);
292var manifest = await ManifestUtils.GetManifest(app.Resource);
317var manifest = await ManifestUtils.GetManifest(app.Resource);
343var manifest = await ManifestUtils.GetManifest(app.Resource);
370var manifest = await ManifestUtils.GetManifest(app.Resource);
398var manifest = await ManifestUtils.GetManifest(app.Resource);
426var manifest = await ManifestUtils.GetManifest(app.Resource);
458var manifest = await ManifestUtils.GetManifest(app.Resource);
495var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
497Assert.Equal("dlv", app.Resource.Command);
517var launchConfig = await CreateLaunchConfigurationAsync(app.Resource);
535var launchConfig = await CreateLaunchConfigurationAsync(app.Resource);
569var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
582var debugAnnotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Last();
583Assert.True(app.Resource.HasLaunchToolArgsOwnedBy(debugAnnotation));
601var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
634var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
657var manifest = await ManifestUtils.GetManifest(app.Resource);
687var manifest = await ManifestUtils.GetManifest(app.Resource);
717var manifest = await ManifestUtils.GetManifest(app.Resource);
748var manifest = await ManifestUtils.GetManifest(app.Resource);
869Assert.False(app.Resource.TryGetLastAnnotation<DockerfileBuilderCallbackAnnotation>(out _),
943Assert.IsType<GoAppResource>(app.Resource, exactMatch: false);
944Assert.True(app.Resource is IContainerFilesDestinationResource);
963api.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var annotations),
967Assert.Same(source.Resource, annotation.Source);
1055app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations),
1067app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations));
Aspire.Hosting.Java (40)
JavaHostingExtensions.cs (40)
691if (builder.Resource.HasAnnotationOfType<JavaJarPathAnnotation>())
698if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var existing) && existing.Tool != tool)
705if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) && buildStep.Tool != tool)
729.WithCommand(ResolveWrapperInvocation(builder.Resource, tool).Command)
762buildResourceName: $"{builder.Resource.Name}-maven-build",
795buildResourceName: $"{builder.Resource.Name}-gradle-build",
808if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var existing) && existing.Tool != tool)
811$"Resource '{builder.Resource.Name}' is already configured to build with {existing.Tool}. " +
815if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var launchTool) && launchTool.Tool != tool)
818$"Resource '{builder.Resource.Name}' is already configured to launch with {launchTool.Tool}. " +
827|| launchTool is null && !builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>());
858var resource = builder.Resource;
918foreach (var annotation in builder.Resource.Annotations
925builder.Resource.Annotations.Remove(annotation);
956Path.Combine(builder.Resource.WorkingDirectory, wrapperPath));
962if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var buildTool))
964builder.WithCommand(ResolveWrapperInvocation(builder.Resource, buildTool.Tool).Command);
967foreach (var buildStep in builder.Resource.Annotations.OfType<JavaBuildStepAnnotation>())
982.WithCommand(ResolveWrapperInvocation(builder.Resource, buildStep.Tool).Command);
1218var isFirstCall = !builder.Resource.HasAnnotationOfType<JavaOtelAgentAnnotation>();
1233if (!builder.Resource.TryGetLastAnnotation<JavaOtelAgentAnnotation>(out var agent))
1238var authored = ResolveOtelAgentPath(builder.Resource, agent);
1244resolved = Path.GetFullPath(Path.Combine(builder.Resource.WorkingDirectory, authored));
1246else if (JavaDockerfileGenerator.TryGetBuildProducedAgentPath(builder.Resource, out _))
1252if (builder.Resource.HasAnnotationOfType<JavaAuthoredDockerfileAnnotation>())
1255$"Java application '{builder.Resource.Name}' cannot be published because it uses " +
1256$"the Dockerfile in '{builder.Resource.WorkingDirectory}' and its OpenTelemetry " +
1309if (!TryResolveConfiguredBuildTool(builder.Resource, out var tool))
1314var buildArgs = builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep)
1316: builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>()
1317? ResolveDetectedBuildTool(builder.Resource).Configuration.BuildArgs
1322buildResourceName: $"{builder.Resource.Name}-{(tool is JavaBuildTool.Gradle ? "gradle" : "maven")}-build",
1339=> HasBuildProducedOtelAgent(builder.Resource)
1359=> builder.Resource.HasAnnotationOfType<JavaQuarkusAnnotation>()
1360&& builder.Resource.SupportsDebugging(builder.ApplicationBuilder.Configuration, out _);
1561if (builder.Resource.Annotations.OfType<JavaWrapperValidationAnnotation>().Any(a => a.Tool == tool))
1758var (mainClass, classPaths) = ResolveEntryPointForIde(builder.Resource);
1763WorkingDirectory = builder.Resource.WorkingDirectory,
1782: TryResolveIdeProjectName(builder.Resource),
1783BuildTool = TryResolveConfiguredBuildTool(builder.Resource, out var buildTool)
Aspire.Hosting.Java.Tests (168)
AddJavaAppPublishTests.cs (21)
157() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _));
207() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _));
243() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
290() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _));
781() => JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path));
804var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path);
822var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path);
869() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
890() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
913() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out _));
936() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
955Assert.True(JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out var resolved));
1021() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1048() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1615() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, tempDir.Path, out _));
1632() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _));
1750() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1899() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _));
1920() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _));
1937() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path));
1952() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path));
AddJavaAppTests.cs (78)
45Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
46Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
58Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
59Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun", "--no-daemon"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
69var manifest = await ManifestUtils.GetManifest(app.Resource);
92var manifest = await ManifestUtils.GetManifest(app.Resource);
118Assert.Equal("myapi", app.Resource.Name);
128Assert.Equal("java", app.Resource.Command);
140Assert.Equal(expectedPath, app.Resource.WorkingDirectory);
150Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource);
160Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource);
173async () => await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
187var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
199var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
243var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
257var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
302var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
317var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
321Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
335var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
339Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
357var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
360Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
377var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
380Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
396var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
441var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
550var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
554Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
568var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
572Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
610app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
624app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
639app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
677app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
695app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
712app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
727app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
747new BeforeResourceStartedEvent(app.Resource, built.Services),
766new BeforeResourceStartedEvent(app.Resource, built.Services),
793new BeforeResourceStartedEvent(app.Resource, built.Services),
800Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
803await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
824var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
826using var process = Process.Start(new ProcessStartInfo(app.Resource.Command)
854new BeforeResourceStartedEvent(app.Resource, built.Services),
875Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
878await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
893Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation));
906Assert.True(javaApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation));
916Resource = javaApp.Resource,
944app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
961app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
977app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
984Path.Combine(app.Resource.WorkingDirectory, "target", "agent", "opentelemetry-javaagent.jar"));
999app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
1016app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
1139Assert.Same(app.Resource, Assert.Single(builder.Resources));
1140Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName);
1154Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource);
1168Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource);
1182var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
1184Assert.Equal("java", app.Resource.Command);
1197var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
1209var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
1225app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1261Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>());
1262Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName);
1275var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
1279app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1293var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
1297app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1311var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
1315Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
1330var manifest = await ManifestUtils.GetManifest(app.Resource);
1347var manifest = await ManifestUtils.GetManifest(app.Resource);
1356var annotation = Assert.Single(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>());
1361app.Resource,
AddQuarkusAppTests.cs (24)
35app.Resource.Annotations.OfType<WaitAnnotation>(),
51Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>());
68Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>());
97new BeforeResourceStartedEvent(app.Resource, application.Services),
100Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
101Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "quarkus:dev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
114new BeforeResourceStartedEvent(app.Resource, application.Services),
117Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
118Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "quarkusDev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
132Assert.Same(app.Resource, Assert.Single(builder.Resources));
144var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>());
161var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>());
176TestEndpointAllocator.AllocateEndpoints(app.Resource);
179app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
195app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
211TestEndpointAllocator.AllocateEndpoints(app.Resource);
214app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
230TestEndpointAllocator.AllocateEndpoints(app.Resource);
233app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
255app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
272Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>());
286new BeforeResourceStartedEvent(app.Resource, application.Services),
306TestEndpointAllocator.AllocateEndpoints(app.Resource);
309app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
AddSpringBootAppTests.cs (35)
22new BeforeResourceStartedEvent(app.Resource, application.Services),
25Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
26Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
39new BeforeResourceStartedEvent(app.Resource, application.Services),
42Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
43Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
56new BeforeResourceStartedEvent(app.Resource, application.Services),
59Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command);
76new BeforeResourceStartedEvent(runApp.Resource, application.Services),
78var runTool = Assert.Single(runApp.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Tool;
82var (publishTool, _) = JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path);
99Assert.Same(app.Resource, Assert.Single(builder.Resources));
114new BeforeResourceStartedEvent(app.Resource, application.Services),
122await ArgumentEvaluator.GetArgumentListAsync(app.Resource));
137new BeforeResourceStartedEvent(app.Resource, application.Services),
140Assert.Same(app.Resource, Assert.Single(builder.Resources));
141Assert.Equal(["verify"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).Args);
142Assert.Equal(["spring-boot:run"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Args);
156var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>());
176Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>());
190new BeforeResourceStartedEvent(app.Resource, application.Services),
211new BeforeResourceStartedEvent(runApp.Resource, application.Services),
217() => JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path));
238new BeforeResourceStartedEvent(app.Resource, application.Services),
241TestEndpointAllocator.AllocateEndpoints(app.Resource);
244app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
272TestEndpointAllocator.AllocateEndpoints(app.Resource);
275app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
301app.Resource.Annotations.OfType<WaitAnnotation>(),
324Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>());
337TestEndpointAllocator.AllocateEndpoints(app.Resource);
341app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance));
359TestEndpointAllocator.AllocateEndpoints(app.Resource);
362app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
365Assert.True(Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()).IsExternal);
Aspire.Hosting.JavaScript (44)
Aspire.Hosting.JavaScript.Tests (114)
AddJavaScriptAppTests.cs (21)
34await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path);
39var dockerBuildAnnotation = yarnApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
57await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path);
77await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path);
97await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path);
124await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
145await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
185await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
203var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path));
240var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path));
284var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path);
302var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path);
321var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path);
337var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path));
359await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
395await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
430await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
461await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
490await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
562await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
658await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
AddViteAppTests.cs (29)
37var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
76var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
79var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single();
97await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
102var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
105var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single();
130await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
150var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish);
178var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish);
201await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
206var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
209var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single();
227await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
232var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single();
249await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
254Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>());
270await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
290await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
310await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
328var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
348var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
373var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
399var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
425var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
442var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
466var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
484var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path);
1056var stepAnnotations = nodeApp.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
1073Assert.True(nodeApp.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out _));
RequiredCommandTests.cs (15)
31Assert.Equal(["node"], await GetRequiredCommandsAsync(builder, app.Resource));
44Assert.Equal(["bun", "node"], await GetRequiredCommandsAsync(builder, app.Resource));
56Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource));
70Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource));
80Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource));
91Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource));
102Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource));
113Assert.Equal(["node", "yarn"], await GetRequiredCommandsAsync(builder, vite.Resource));
124Assert.Equal(["node", "pnpm"], await GetRequiredCommandsAsync(builder, vite.Resource));
135Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource));
145Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource));
161Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource));
173Assert.Equal(["bun", "node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource));
185Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource));
197Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource));
Aspire.Hosting.Kafka.Tests (17)
Aspire.Hosting.Keycloak (6)
Aspire.Hosting.Keycloak.Tests (9)
Aspire.Hosting.Kubernetes (99)
Aspire.Hosting.Kubernetes.Tests (153)
CertManagerTests.cs (20)
23Assert.Equal("cert-manager", certManager.Resource.Name);
24Assert.Same(k8s.Resource, certManager.Resource.Parent);
28Assert.Equal("cert-manager-chart", certManager.Resource.HelmChart.Name);
29Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", certManager.Resource.HelmChart.ChartReference);
30Assert.StartsWith("v", certManager.Resource.HelmChart.ChartVersion);
34Assert.Equal("true", certManager.Resource.HelmChart.Values["crds.enabled"]);
35Assert.Equal("true", certManager.Resource.HelmChart.Values["config.enableGatewayAPI"]);
54Assert.Equal("letsencrypt-prod", issuer.Resource.Name);
55Assert.Same(certManager.Resource, issuer.Resource.Parent);
56Assert.Contains(issuer.Resource, certManager.Resource.Issuers);
58var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec);
62var solver = Assert.Single(issuer.Resource.Solvers);
75var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec);
88var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec);
108Assert.Single(gateway.Resource.TlsConfigs);
109Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue(
271Assert.NotNull(certManager.Resource);
KubernetesHelmChartTests.cs (35)
24Assert.Equal("cert-manager", chart.Resource.Name);
25Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference);
26Assert.Equal("1.17.0", chart.Resource.ChartVersion);
27Assert.Equal("env", chart.Resource.Parent.Name);
40Assert.Equal(2, chart.Resource.Values.Count);
41Assert.Equal("true", chart.Resource.Values["crds.enabled"]);
42Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]);
54Assert.Equal("ingress-nginx", chart.Resource.Namespace);
66Assert.Equal("my-nginx", chart.Resource.ReleaseName);
77Assert.Null(chart.Resource.Namespace);
78Assert.Null(chart.Resource.ReleaseName);
90chart.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var annotations),
104Assert.NotEqual(chart1.Resource.Name, chart2.Resource.Name);
105Assert.Equal("env", chart1.Resource.Parent.Name);
106Assert.Equal("env", chart2.Resource.Parent.Name);
175Assert.Equal(chartReference, chart.Resource.ChartReference);
203Assert.Equal(chartVersion, chart.Resource.ChartVersion);
291Assert.Equal("hello world!", chart.Resource.Values["config.greeting"]);
292Assert.Equal("a,b,c", chart.Resource.Values["config.list"]);
304Assert.Equal("--foo", chart.Resource.Values["args[0]"]);
315Assert.False(chart.Resource.DestroyOnUninstall);
327Assert.True(chart.Resource.DestroyOnUninstall);
357Assert.False(chart.Resource.ForceConflicts);
369Assert.True(chart.Resource.ForceConflicts);
398var steps = await CreateStepsAsync(builder, chart.Resource);
412var steps = await CreateStepsAsync(builder, chart.Resource);
437var steps = await CreateStepsAsync(builder, chart.Resource);
454Assert.Null(chart.Resource.Namespace);
456var steps = await CreateStepsAsync(builder, chart.Resource);
471var steps = await CreateStepsAsync(builder, chart.Resource);
488var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateStepsAsync(builder, chart.Resource));
504var steps = await CreateStepsAsync(builder, chart.Resource);
543Assert.Single(chart.Resource.Values);
544Assert.Equal("value2", chart.Resource.Values["key"]);
KubernetesPersistentVolumeRunModeTests.cs (20)
30var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource);
35project.Resource,
42executable.Resource,
63firstProject.Resource,
66secondProject.Resource,
88firstProject.Resource,
91secondProject.Resource,
174var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
175var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
181firstContainer.Resource,
203var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
221var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
253var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
257container.Resource,
287project.Resource,
291KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource),
312var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
313var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
333var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
347var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
Aspire.Hosting.Maui (20)
Aspire.Hosting.Maui.Tests (90)
MauiiOSValidationTests.cs (6)
35.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None);
60.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None);
84.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None);
104.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None);
122.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None);
140.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None);
MauiPlatformExtensionsTests.cs (61)
105Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name);
106var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource);
107Assert.Same(maui.Resource, resourceWithParent.Parent);
108Assert.IsType(config.ExpectedResourceType, platform.Resource);
128Assert.Equal(customName, platform.Resource.Name);
164var debugSupport = Assert.Single(platform.Resource.Annotations.OfType<SupportsDebuggingAnnotation>());
167var launchConfiguration = await DeserializeLaunchConfigurationAsync(platform.Resource);
195var resource = platform.Resource;
243Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource);
263Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name);
264var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource);
265var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource);
267Assert.Same(maui.Resource, parent1.Parent);
293.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None);
317androidEmulator.Resource,
343Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name);
344Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource);
345Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource);
364Assert.Equal("my-device", device.Resource.Name);
365Assert.IsType<MauiAndroidDeviceResource>(device.Resource);
366var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource);
387Assert.Equal("my-emulator", emulator.Resource.Name);
388Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource);
389var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(emulator.Resource);
410Assert.Equal("my-device", device.Resource.Name);
411Assert.IsType<MauiiOSDeviceResource>(device.Resource);
412var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource);
438Assert.Equal("my-simulator", simulator.Resource.Name);
439Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource);
440var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(simulator.Resource);
459var debugSupport = Assert.Single(simulator.Resource.Annotations.OfType<SupportsDebuggingAnnotation>());
463var argsContext = new CommandLineArgsCallbackContext(args, simulator.Resource);
464foreach (var argsAnnotation in simulator.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>())
494Assert.NotEqual(device.Resource.Name, simulator.Resource.Name);
495Assert.IsType<MauiiOSDeviceResource>(device.Resource);
496Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource);
516resource = maui.AddiOSDevice().Resource;
520resource = maui.AddiOSSimulator().Resource;
546iosSimulator.Resource,
571resource = maui.AddAndroidDevice().Resource;
575resource = maui.AddAndroidEmulator().Resource;
603var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault();
628var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList();
656platform.Resource,
666var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
683dashboard.Resource.Annotations.Add(new EndpointAnnotation(
694var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
703var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName);
705await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None);
716iosSimulator.Resource,
744dashboard.Resource.Annotations.Add(dashboardEndpoint);
746var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
770await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None);
781androidEmulator.Resource,
802var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
807appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None));
827var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
832appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None));
Aspire.Hosting.Milvus (5)
Aspire.Hosting.Milvus.Tests (18)
Aspire.Hosting.MongoDB (6)
Aspire.Hosting.MongoDB.Tests (33)
AddMongoDBTests.cs (12)
19Assert.Single(mongo.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mongodb_check");
27Assert.Single(db.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mydb_check");
215var mongoManifest = await ManifestUtils.GetManifest(mongo.Resource);
216var dbManifest = await ManifestUtils.GetManifest(db.Resource);
281Assert.Equal("customers1", db1.Resource.DatabaseName);
282Assert.Equal("customers2", db2.Resource.DatabaseName);
284Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers1?authSource=admin&authMechanism=SCRAM-SHA-256", db1.Resource.ConnectionStringExpression.ValueExpression);
285Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers2?authSource=admin&authMechanism=SCRAM-SHA-256", db2.Resource.ConnectionStringExpression.ValueExpression);
299Assert.Equal("imports", db1.Resource.DatabaseName);
300Assert.Equal("imports", db2.Resource.DatabaseName);
302Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", db1.Resource.ConnectionStringExpression.ValueExpression);
303Assert.Equal("mongodb://admin:{mongo2-password.value}@{mongo2.bindings.tcp.host}:{mongo2.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.MySql (6)
Aspire.Hosting.MySql.Tests (63)
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 (41)
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);
93[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
96hb.AddMySqlDataSource(db.Resource.Name);
136var password = mysql1.Resource.PasswordParameter.Value;
170[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
173hb.AddMySqlDataSource(db1.Resource.Name);
240[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
243hb.AddMySqlDataSource(db2.Resource.Name);
351[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
354hb.AddMySqlDataSource(db.Resource.Name);
435[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
438hb.AddMySqlDataSource(db.Resource.Name);
506[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)
509hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name);
664hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
666hb.AddMySqlDataSource(newDb.Resource.Name);
672await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
678resourceName: mysql.Resource.Name,
747hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
749hb.AddMySqlDataSource(newDb.Resource.Name);
755await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token);
807hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
808hb.AddKeyedMySqlDataSource(db.Resource.Name);
817await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
819var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name);
850hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
851hb.AddMySqlDataSource(newDb.Resource.Name);
856await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (2)
Aspire.Hosting.Nats.Tests (34)
NatsFunctionalTests.cs (19)
37await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
42hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
83await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
88var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
89hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString;
126await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name);
131var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default);
136hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString;
189await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name);
195hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default);
238await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name);
244hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default);
349await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
351await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
355await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
357await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.OpenAI (13)
Aspire.Hosting.OpenAI.Tests (43)
OpenAIExtensionTests.cs (32)
21var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default);
22var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default);
41var parentCs = await parent.Resource.ConnectionStringExpression.GetValueAsync(default);
42var modelCs = await model.Resource.ConnectionStringExpression.GetValueAsync(default);
61Assert.Equal("chat", model.Resource.Name);
62Assert.Equal("gpt-4o-mini", model.Resource.Model);
73Assert.NotNull(parent.Resource.Key);
74Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name);
75Assert.True(parent.Resource.Key.Secret);
77Assert.NotNull(parent.Resource.Key);
90var expression = openai.Resource.ConnectionStringExpression.ValueExpression;
95var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
108var expression = openai.Resource.ConnectionStringExpression.ValueExpression;
114var resolved = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
134var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
136Assert.Equal(apiKeyParameter.Resource, parent.Resource.Key);
148Assert.NotNull(parent.Resource.Key);
149Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name);
150Assert.True(parent.Resource.Key.Secret);
151Assert.Equal(parent.Resource.Key, parent.Resource.Key);
163var resource = new OpenAIModelResource("test", "gpt-4o-mini", parent.Resource);
168Assert.Equal(parent.Resource.Key, parent.Resource.Key);
198Assert.Equal(apiKey.Resource, parent.Resource.Key);
232var healthCheckAnnotations = openai.Resource.Annotations.OfType<HealthCheckAnnotation>().ToList();
282var connectionString = await openai.Resource.ConnectionStringExpression.GetValueAsync(default);
363Assert.Equal("chat", openai.Resource.Name);
364Assert.Equal(modelName, openai.Resource.Model);
366var connectionString = openai.Resource.ConnectionStringExpression.ValueExpression;
OpenAIFunctionalTests.cs (11)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
77Assert.Single(resource.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "resource_check");
80var statusPageHealthCheck = Enumerable.Single(resource.Resource.Annotations, x => x is HealthCheckAnnotation hca && hca.Key == "resource_check");
81resource.Resource.Annotations.Remove(statusPageHealthCheck);
90await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
92await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
96await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
98await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Oracle (3)
Aspire.Hosting.Oracle.Tests (36)
AddOracleTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", orcl.Resource.PasswordParameter.Default?.GetType().FullName);
199var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
200var dbManifest = await ManifestUtils.GetManifest(db.Resource);
238var serverManifest = await ManifestUtils.GetManifest(oracleServer.Resource);
294Assert.Equal("customers1", db1.Resource.DatabaseName);
295Assert.Equal("customers2", db2.Resource.DatabaseName);
297Assert.Equal("{oracle1.connectionString}/customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
298Assert.Equal("{oracle1.connectionString}/customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
312Assert.Equal("imports", db1.Resource.DatabaseName);
313Assert.Equal("imports", db2.Resource.DatabaseName);
315Assert.Equal("{oracle1.connectionString}/imports", db1.Resource.ConnectionStringExpression.ValueExpression);
316Assert.Equal("{oracle2.connectionString}/imports", db2.Resource.ConnectionStringExpression.ValueExpression);
Aspire.Hosting.Orleans (8)
Aspire.Hosting.Orleans.Tests (3)
Aspire.Hosting.PostgreSQL (14)
Aspire.Hosting.PostgreSQL.Tests (86)
AddPostgresTests.cs (37)
22Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check");
32Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
42Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName);
158var connectionStringResource = postgres.Resource as IResourceWithConnectionString;
163Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
208Assert.Equal($"Host=postgres.dev.internal;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value};Database=db", config["ConnectionStrings__db"]);
274var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
275var dbManifest = await ManifestUtils.GetManifest(db.Resource);
318var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
344serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
370serverManifest = await ManifestUtils.GetManifest(pgServer.Resource);
513Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString());
521Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString());
525Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString());
533Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString());
581Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents);
588Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents);
625Assert.Equal("customers1", db1.Resource.DatabaseName);
626Assert.Equal("customers2", db2.Resource.DatabaseName);
628Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression);
629Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression);
643Assert.Equal("imports", db1.Resource.DatabaseName);
644Assert.Equal("imports", db2.Resource.DatabaseName);
646Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression);
647Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
692var connectionString = await postgres.Resource.GetConnectionStringAsync();
706var connectionString = await postgres.Resource.GetConnectionStringAsync();
708Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString);
721var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource);
722var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource);
803var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
830var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
846var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
859var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
884var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
911var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
PostgresFunctionalTests.cs (46)
54await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
57await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
63await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
66await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
88await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name);
90var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http");
121[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
124hb.AddNpgsqlDataSource(db.Resource.Name);
130await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
167var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http");
169await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
235await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
244[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default)
247hb.AddNpgsqlDataSource(db1.Resource.Name);
298await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
307[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default)
310hb.AddNpgsqlDataSource(db2.Resource.Name);
410[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
413hb.AddNpgsqlDataSource(db.Resource.Name);
419await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
494[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default)
497hb.AddNpgsqlDataSource(db.Resource.Name);
503await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
622hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
624hb.AddNpgsqlDataSource(newDb.Resource.Name);
630await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
636resourceName: postgres.Resource.Name,
671hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
673hb.AddNpgsqlDataSource(newDb.Resource.Name);
679await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
741hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
743hb.AddNpgsqlDataSource(newDb.Resource.Name);
749await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token);
801hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
802hb.AddKeyedNpgsqlDataSource(db.Resource.Name);
811await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
813var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python (31)
Aspire.Hosting.Python.Tests (41)
AddPythonAppTests.cs (39)
39var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory);
77var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory);
137var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
746Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
750Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
770Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
877Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
881Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
908Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
912Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
1184var initialCommand = pythonBuilder.Resource.Command;
1189var newCommand = pythonBuilder.Resource.Command;
1409var resource = pythonApp.Resource;
1453var resource = pythonApp.Resource;
1493var resource = pythonApp.Resource;
1524var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource);
1545var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource);
1570var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource);
1597var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource);
1623var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource);
1665var resource = pythonApp.Resource;
1696var resource = pythonApp.Resource;
1719pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1741pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
1759pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
2020Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2024Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
2054Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2058Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
2091Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2095Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation));
2115Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _));
2221Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2256Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2260Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2296Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2326Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation));
2427Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
2459Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
Aspire.Hosting.Qdrant (5)
Aspire.Hosting.Qdrant.Tests (22)
Aspire.Hosting.RabbitMQ (5)
Aspire.Hosting.RabbitMQ.Tests (21)
Aspire.Hosting.Radius (25)
Aspire.Hosting.Radius.Tests (65)
Secrets\AddRadiusSecretStoreTests.cs (13)
24Assert.Equal("db-creds", store.Resource.Name);
25Assert.Equal(RadiusSecretStoreType.BasicAuthentication, store.Resource.Type);
48Assert.Same(env.Resource, store.OwningEnvironment);
112Assert.Equal(valid, store.Resource.Name);
124Assert.True(store.Resource.Population.HasInlineData);
125Assert.True(store.Resource.Population.Data.ContainsKey("password"));
188Assert.Equal(reference, store.Resource.Population.ResourceReference);
232Assert.Equal(["k1", "k2", "k3"], store.Resource.Population.Keys);
246Assert.Equal(["ok"], store.Resource.Population.Keys);
260Assert.Equal("app/s", store.Resource.Population.ResourceReference);
261Assert.Equal(["ok"], store.Resource.Population.Keys);
315Assert.Equal([key], store.Resource.Population.Keys);
363Assert.Equal(max, store.Resource.MaterializationTimeout);
Aspire.Hosting.Redis (5)
Aspire.Hosting.Redis.Tests (90)
AddRedisTests.cs (41)
27Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check");
302Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value);
307Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
312Assert.Equal(redis1.Resource.Name, item.Value);
318Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value);
324Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value);
329Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
334Assert.Equal(redis2.Resource.Name, item.Value);
340Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value);
346Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value);
351Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value);
356Assert.Equal(redis3.Resource.Name, item.Value);
498Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
520Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]);
545Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
566var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
591var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
704var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource);
712var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
723Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
788var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
801var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
815var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
818Assert.Equal(password.Resource, annotation.Password);
830var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
846var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>());
849Assert.Equal(password.Resource, annotation.Password);
867Assert.True(redis.Resource.TlsEnabled);
870var connectionStringExpression = redis.Resource.ConnectionStringExpression;
880var endpoint = Assert.Single(redis.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "tcp");
885var uriExpression = redis.Resource.UriExpression;
904var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource, app.Services).AsTask().WaitAsync(TimeSpan.FromSeconds(60));
921Assert.False(redis.Resource.TlsEnabled);
924var expressionBeforeTls = redis.Resource.ConnectionStringExpression;
941Assert.True(redis.Resource.TlsEnabled);
950var expressionAfterTls = redis.Resource.ConnectionStringExpression;
966Assert.False(redis.Resource.TlsEnabled);
969var connectionStringExpression = redis.Resource.ConnectionStringExpression;
RedisFunctionalTests.cs (49)
53await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
59await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
82await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name);
84var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http");
87if (redis.Resource.TlsEnabled)
93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info";
115[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync()
118hb.AddRedisClient(redis.Resource.Name);
148await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
155[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true"
158hb.AddRedisClient(redis.Resource.Name);
189await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
191var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http");
207Assert.Equal(redis1.Resource.Name, db.Name);
208Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host);
209Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port);
213Assert.Equal(redis2.Resource.Name, db.Name);
214Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host);
215Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port);
219Assert.Equal(redis3.Resource.Name, db.Name);
220Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host);
221Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port);
257[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
260hb.AddRedisClient(redis1.Resource.Name);
294[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
297hb.AddRedisClient(redis2.Resource.Name);
340[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
343hb.AddRedisClient(redis1.Resource.Name);
375[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
378hb.AddRedisClient(redis2.Resource.Name);
425[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true"
428hb.AddRedisClient(redis1.Resource.Name);
456[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync()
459hb.AddRedisClient(redis2.Resource.Name);
524await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
528var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http");
559await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token);
563var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http");
680await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.RemoteHost.Tests (1)
Aspire.Hosting.Rust (5)
Aspire.Hosting.Rust.Tests (44)
RustPublicApiTests.cs (38)
42var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
55var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
68var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
81var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
98var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
114var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
128var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
140var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
153var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
166await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
169Assert.All(observed, resource => Assert.Same(app.Resource, resource));
184await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
187Assert.All(observed, resource => Assert.Same(app.Resource, resource));
228Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out _));
239var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource);
257var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource);
278var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource);
293var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource);
319app.Resource,
343var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource);
346() => LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext));
366await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
369await app.Resource.CreateLaunchConfigurationAsync(
376await app.Resource.CreateLaunchConfigurationAsync(
405await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
408app.Resource,
411app.Resource,
415await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, firstContext));
417await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, secondContext));
437await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
440await app.Resource.CreateLaunchConfigurationAsync(
444await app.Resource.CreateLaunchConfigurationAsync(
476await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
479() => app.Resource.CreateLaunchConfigurationAsync(
483await app.Resource.CreateLaunchConfigurationAsync(
511await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
514var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource, cancellationToken: cts.Token);
515var launchTask = LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext);
Aspire.Hosting.Seq.Tests (14)
Aspire.Hosting.SqlServer (5)
Aspire.Hosting.SqlServer.Tests (48)
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 (35)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token);
48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token);
52await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token);
54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
84hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
86hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name);
87hb.AddSqlServerClient(newDb.Resource.Name);
146var password = sqlserver1.Resource.PasswordParameter.Value;
182await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token);
191[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default),
194hb1.AddSqlServerClient(db1.Resource.Name);
268await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token);
277[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default),
280hb2.AddSqlServerClient(db2.Resource.Name);
374hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
376hb.AddSqlServerClient(newDb.Resource.Name);
382await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
388resourceName: sqlserver.Resource.Name,
435hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
437hb.AddSqlServerClient(newDb.Resource.Name);
443await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
508hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default);
510hb.AddSqlServerClient(newDb.Resource.Name);
516await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token);
569hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default);
570hb.AddKeyedSqlServerClient(db.Resource.Name);
579await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token);
581var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (2)
Aspire.Hosting.Tests (1470)
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (26)
27var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
51var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
70var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
91var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
98Resource = container.Resource,
143var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
149Resource = container.Resource,
179var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
185Resource = container.Resource,
213var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
219Resource = container.Resource,
254var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
260Resource = container.Resource,
289Assert.Equal("mycontainer", container.Resource.Name);
290var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
310Assert.Equal("mycontainer", container.Resource.Name);
311var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
333var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
340Resource = container.Resource,
369var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
376Resource = container.Resource,
401var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
435var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault();
441Resource = container.Resource,
471var envAnnotation = container.Resource.Annotations.OfType<EnvironmentAnnotation>().FirstOrDefault();
473var endpointAnnotation = container.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (54)
134await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with
138await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-def456", s => s with
181await notificationService.PublishUpdateAsync(custom.Resource, s => s with
346await notificationService.PublishUpdateAsync(custom.Resource, s => s with
400await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
403await notificationService.PublishUpdateAsync(owner.Resource, s => s with
443topLevelParameter.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
444topLevelParameter.Resource.WaitForValueTcs.SetResult("top-level-secret");
449await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
452await notificationService.PublishUpdateAsync(owner.Resource, s => s with
511await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
514await notificationService.PublishUpdateAsync(owner.Resource, s => s with
539var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single();
541await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
543await notificationService.PublishUpdateAsync(owner.Resource, s => s with
587await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
590await notificationService.PublishUpdateAsync(owner.Resource, s => s with
613var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single();
615await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
617await notificationService.PublishUpdateAsync(owner.Resource, s => s with
657await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
660await notificationService.PublishUpdateAsync(owner.Resource, s => s with
688await notificationService.PublishUpdateAsync(owner.Resource, s => s with
728await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
731await notificationService.PublishUpdateAsync(owner.Resource, s => s with
756await notificationService.PublishUpdateAsync(owner.Resource, s => s with
817await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
820await notificationService.PublishUpdateAsync(mcpResource.Resource, s => s with
824await notificationService.PublishUpdateAsync(owner.Resource, s => s with
863.WithEnvironment(context => context.EnvironmentVariables["SECRET"] = coldSecret.Resource);
871await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
876coldSecret.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously);
877coldSecret.Resource.WaitForValueTcs.SetResult("value-b");
880await notificationService.PublishUpdateAsync(owner.Resource, s => s with
937var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single();
944.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>()))
992var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single();
1001.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>()))
1030await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
1033await notificationService.PublishUpdateAsync(owner.Resource, s => s with
1081await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout();
1096await notificationService.PublishUpdateAsync(owner.Resource, s => s with
1112await notificationService.PublishUpdateAsync(owner.Resource, s => s with
1149await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1221await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1234ResourceName = custom.Resource.Name,
1257await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1297await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1350AddSyntheticTerminalAnnotation(custom.Resource, replicaCount: 1);
1356await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1392await notificationService.PublishUpdateAsync(custom.Resource, s => s with
1438await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with
1477await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with
1945await notificationService.PublishUpdateAsync(hidden.Resource, snapshot => snapshot with
ComputeEnvironmentEndpointResolverTests.cs (35)
20var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
21agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource });
24endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression);
40var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
41agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource });
45endpoint, [currentEnv.Resource], out var expression);
59var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
60agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource });
63endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression);
79var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
82endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression);
96var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
99endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression);
117agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource });
118agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource });
119var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
122endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression);
140agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource });
141agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource });
142var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000);
146endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out _));
ContainerRegistryResourceTests.cs (66)
23Assert.Equal("docker-hub", registry.Resource.Name);
25var containerRegistry = registry.Resource as IContainerRegistry;
39Assert.Equal("acr", registry.Resource.Name);
41var containerRegistry = registry.Resource as IContainerRegistry;
57Assert.Equal("my-registry", registry.Resource.Name);
59var containerRegistry = registry.Resource as IContainerRegistry;
74Assert.Equal("my-registry", registry.Resource.Name);
76var containerRegistry = registry.Resource as IContainerRegistry;
200var containerRegistry = registry.Resource as IContainerRegistry;
214var containerRegistry = registry.Resource as IContainerRegistry;
229var containerRegistry = registry.Resource as IContainerRegistry;
245var containerRegistry = registry.Resource as IContainerRegistry;
263var containerRegistry = registry.Resource as IContainerRegistry;
278Assert.IsAssignableFrom<IContainerRegistry>(registry.Resource);
309var annotation = container.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().SingleOrDefault();
311Assert.Same(registry.Resource, annotation.Registry);
344var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
345var pipelineConfigAnnotations = container.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList();
359var pipelineStepAnnotations = project.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
360var pipelineConfigAnnotations = project.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList();
374var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>());
379Resource = project.Resource
398var pipelineStepAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>());
403Resource = container.Resource
422var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
429Resource = container.Resource
446var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>());
451Resource = project.Resource
474var annotation = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().FirstOrDefault();
476Assert.Same(registry.Resource, annotation.Registry);
490var annotations = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().ToList();
492Assert.Same(registry1.Resource, annotations[0].Registry);
502var annotation = new ContainerRegistryReferenceAnnotation(registry.Resource);
504Assert.Same(registry.Resource, annotation.Registry);
519Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
526var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
527Assert.Same(registry.Resource, registryTargetAnnotation.Registry);
547var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
551Assert.Contains(registry1.Resource, registryResources);
552Assert.Contains(registry2.Resource, registryResources);
571var containerRegistry = project.Resource.GetContainerRegistry();
572Assert.Same(registry.Resource, containerRegistry);
594var containerRegistry = project.Resource.GetContainerRegistry();
595Assert.Same(registry2.Resource, containerRegistry);
616var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry);
630var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry);
652Assert.Single(project1.Resource.Annotations.OfType<RegistryTargetAnnotation>());
653Assert.Single(project2.Resource.Annotations.OfType<RegistryTargetAnnotation>());
654Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>());
676var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
679var containerRegistryRefAnnotation = Assert.Single(project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>());
680Assert.Same(specificRegistry.Resource, containerRegistryRefAnnotation.Registry);
683var containerRegistry = project.Resource.GetContainerRegistry();
684Assert.Same(specificRegistry.Resource, containerRegistry);
699Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
706var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
707Assert.Same(acr.Resource, registryTargetAnnotation.Registry);
727Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>());
728Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>());
747var containerRegistry = project.Resource.GetContainerRegistry();
748Assert.Same(acr.Resource, containerRegistry);
768var containerRegistry = env.Resource.GetContainerRegistry();
769Assert.Same(acr.Resource, containerRegistry);
789var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList();
793Assert.Contains(acr.Resource, registryResources);
794Assert.Contains(dockerHub.Resource, registryResources);
Dcp\DcpExecutorTests.cs (137)
124.WithReplicas(2).Resource;
558}).Resource;
1129Assert.IsNotAssignableFrom<IComputeResource>(emulator.Resource);
1130Assert.True(emulator.Resource.IsContainer());
1134Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name);
3800Assert.Same(database.Resource, connectionStringAvailableResource);
3848Assert.Same(database.Resource, connectionStringAvailableResource);
3908if (ReferenceEquals(context.Resource, client.Resource))
3954if (ReferenceEquals(context.Resource, client.Resource))
4165HasKnownCommandAnnotations(exe.Resource);
4166HasKnownCommandAnnotations(container.Resource);
4167HasKnownProjectCommandAnnotations(project.Resource);
4321var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
4324projectBuilder.Resource.Annotations.Remove(annotationToRemove);
4843var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
4846projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
4882var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
4885projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
4923var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
4926projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
4967var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
4970projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
5014var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
5017projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
5053Assert.Same(projectBuilder.Resource, Assert.Single(failedResources));
5519var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
5532resource.Resource.Annotations.Add(
5553var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
5566Assert.Same(resource.Resource, failure.Resource);
6083var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6086projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6123var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6126projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6173var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6176projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6233var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6236projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6285var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6288projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6329var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6332projectBuilder.Resource.Annotations.Remove(annotationToRemove);
6411var projectResource = projectBuilder.Resource;
6412var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6415projectBuilder.Resource.Annotations.Remove(defaultDebugSupport);
6419projectBuilder.Resource.Annotations.Add(
6546var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6549projectBuilder.Resource.Annotations.Remove(defaultDebugSupport);
6553projectBuilder.Resource.Annotations.Add(
6656await foreach (var lines in resourceLoggerService.GetAllAsync(projectBuilder.Resource).DefaultTimeout())
6674var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6677projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
6761var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6764projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
6869var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6872projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
6936var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6939projectBuilder.Resource.Annotations.Remove(defaultAnnotation);
6980var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
6983projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7046var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7049projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7073var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7076projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7120var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7123customProject.Resource.Annotations.Remove(annotationToRemove);
7170var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7173customProject.Resource.Annotations.Remove(annotationToRemove);
7216var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7219projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7298var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7301projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7503projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"]));
7550projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"]));
7587projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run"));
7623projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run"));
7658projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run"));
7703projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"]));
7744var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7747projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7772var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7775projectBuilder.Resource.Annotations.Remove(annotationToRemove);
7811var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
7814projectBuilder.Resource.Annotations.Remove(annotationToRemove);
8860await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678);
8861await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765);
8865await AssertTunneledPort(executable.Resource, "proxied", 5678);
8866await AssertTunneledPort(executable.Resource, "notProxied", 8765);
8880await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, port);
8882await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, hostPort);
8886.Where(c => c.AppModelResourceName == container.Resource.Name)
8894await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678);
8895await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765);
8896await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 5678);
8897await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 8765);
8900await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 15678);
8901await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 18765);
8903await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234);
8904await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765);
8906await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 25678);
8907await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 28765);
8909await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234);
8910await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765);
8994s => s.AppModelResourceName == executable.Resource.Name
9146var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
9191var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
9248var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
9301var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name);
9417if (context.Resource == waiting.Resource || context.Resource == waitingConsumingEndpoint.Resource)
9419while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name))
9435Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name);
9436Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name);
9437var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name);
9444Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name);
9445var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name);
9478if (context.Resource == tunnelDependentContainer.Resource)
9480while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name))
9486if (context.Resource == downstreamExecutable.Resource)
9488while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name))
9504var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name);
9505var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name);
9506var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name);
9517var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name);
9693var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
9696projectBuilder.Resource.Annotations.Remove(annotationToRemove);
9735var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
9738projectBuilder.Resource.Annotations.Remove(annotationToRemove);
9773Assert.Same(projectBuilder.Resource, Assert.Single(failedResources));
9785var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault();
9788projectBuilder.Resource.Annotations.Remove(annotationToRemove);
9849.Resource;
9923.Resource;
9969.Resource;
DebugSupportExtensionsTests.cs (29)
88await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token));
91Assert.Same(executable.Resource, observedContext.Resource);
104var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug));
107Assert.Equal(GetProjectPath(project.Resource), launchConfiguration.ProjectPath);
121var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug));
133var debugSupport = Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>());
152var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.NoDebug));
166var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.NoDebug));
186var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug));
206await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug, cts.Token);
230await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token));
236Assert.Same(executable.Resource, actualContext.Resource);
249() => executable.Resource.CreateLaunchConfigurationAsync(null!, CancellationToken.None));
270executable.Resource,
276await executable.Resource.CreateLaunchConfigurationAsync(callbackContext));
291var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug));
304mode => ProjectLaunchConfigurationFactory.Create(executable.Resource, mode),
307var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug));
319var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug));
332Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out var annotation));
343Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(debugSessionPort: null), out _));
354Assert.True(project.Resource.SupportsDebugging(CreateConfiguration(), out var annotation));
367Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out _));
383Assert.Equal(expected, executable.Resource.SupportsDebugging(configuration, out _));
397Assert.False(project.Resource.SupportsDebugging(configuration, out _));
407Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _));
417Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _));
432Assert.True(project.Resource.SupportsDebugging(configuration, out _));
433Assert.False(executable.Resource.SupportsDebugging(configuration, out _));
DistributedApplicationModelExtensionsTests.cs (8)
32item => Assert.Equal(container1.Resource, item),
33item => Assert.Equal(container2.Resource, item),
34item => Assert.Equal(project.Resource, item),
35item => Assert.Equal(emulator.Resource, item));
51containerWithDockerfile.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null));
55buildOnlyContainer.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null) { HasEntrypoint = false });
67item => Assert.Equal(project.Resource, item),
68item => Assert.Equal(containerWithDockerfile.Resource, item));
DistributedApplicationTests.cs (30)
780using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http");
781using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http");
788var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http");
1106var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan);
1700var endpoint = testProgram.ServiceABuilder.Resource.GetEndpoint("http");
1772await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration);
1775var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http");
1793var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https");
1843using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1851var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1853Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value);
1858if (redis.Resource.TlsEnabled)
1868var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint)
1872sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1874Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value);
1877if (redisNoPort.Resource.TlsEnabled)
1917using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http");
1929var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1931Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value);
1936if (redis.Resource.TlsEnabled)
1946var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint)
1950sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty;
1952Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value);
1956if (redisNoPort.Resource.TlsEnabled)
2046await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token)
2048await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token)
2054var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name);
2063var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name);
ExpressionResolverTests.cs (9)
128var csRef = new ConnectionStringReference(target.Resource, false);
144var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
182var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout();
219var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout();
244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout();
270var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
289var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
307var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single();
312_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (42)
22Assert.Equal("nuget", externalService.Resource.Name);
23Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString());
24Assert.Null(externalService.Resource.UrlParameter);
35Assert.Equal("nuget", externalService.Resource.Name);
36Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString());
37Assert.Null(externalService.Resource.UrlParameter);
48Assert.Equal("nuget", externalService.Resource.Name);
49Assert.Null(externalService.Resource.Uri);
50Assert.NotNull(externalService.Resource.UrlParameter);
51Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name);
86Assert.Equal("nuget", externalService.Resource.Name);
87Assert.Equal(uriWithPath, externalService.Resource.Uri);
102Assert.Equal("nuget", externalService.Resource.Name);
103Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
116var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
133var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
152var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
172var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout();
177Assert.Equal(urlParam.Resource.ValueExpression, urlValue);
195await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
214await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
232Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
233Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
248Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
249Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")));
271Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations));
285Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations));
341externalService.Resource.Name,
368externalService.Resource.Name,
395externalService.Resource.Name,
419Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
420var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
440Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
441var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"));
465Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations));
466var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
490var manifest = await ManifestUtils.GetManifest(project.Resource);
507Assert.Equal("service", externalService.Resource.Name);
508Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
522Assert.Equal("service", externalService.Resource.Name);
523Assert.Equal(validUrl, externalService.Resource.Uri?.ToString());
560var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Health\ResourceHealthCheckServiceTests.cs (30)
33await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
41await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
81await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
116await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
124await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
163await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
172Assert.Equal(resource.Resource, e1.Resource);
178await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
186await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
200Assert.Equal(resource.Resource, e2.Resource);
229await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout();
270await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
313await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
317await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout();
349await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
355Assert.Equal(resource.Resource, @event.Resource);
380await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
442await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
487await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
527var child = builder.AddResource(new ChildResource("child", parent.Resource))
538await app.ResourceNotifications.PublishUpdateAsync(parent.Resource, s => s with
546await app.ResourceNotifications.PublishUpdateAsync(child.Resource, s => s with
552Assert.Equal(parentReadyEvent.Resource, parent.Resource);
555Assert.Equal(childReadyEvent.Resource, child.Resource);
582await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
590await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
628await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
636await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with
Orchestrator\ApplicationOrchestratorTests.cs (99)
34var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
51if (item.Resource == parentResource.Resource)
55else if (item.Resource == childResource.Resource)
99if (item.Resource == parentResource.Resource)
103else if (item.Resource == childResource.Resource)
146applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) =>
164Assert.Equal(resource.Resource, initEvent.Resource);
199if (item.Resource == parent.Resource)
203else if (item.Resource == child.Resource)
208else if (item.Resource == nestedChild.Resource)
212else if (item.Resource == child2.Resource)
265if (item.Resource == firstParent.Resource)
269else if (item.Resource == secondParent.Resource)
273else if (item.Resource == child.Resource)
317if (item.Resource == projectA.Resource)
321else if (item.Resource == projectB.Resource)
367new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource)
370new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource)
387applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) =>
392applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) =>
397applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) =>
403await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, parentResource.Resource));
426applicationEventing.Subscribe<ConnectionStringAvailableEvent>(resource.Resource, (_, _) =>
431applicationEventing.Subscribe<BeforeResourceStartedEvent>(resource.Resource, (_, _) =>
440await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, resource.Resource));
441await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, "test-resource-dcp"));
468await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None);
469await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None);
471Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState));
514container.Resource,
543container.Resource,
568await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Tool, resource.Resource, "tool-dcp"));
599await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
602Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent));
607await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
608await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
639CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name));
641await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
643Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent));
648await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
665waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([
682await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with
688CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123"));
691waiter.Resource.Name,
697await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with
725waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([
742await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted);
746CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123"));
749waiter.Resource.Name,
774waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([
786dcpExecutor.AddResource(waiter.Resource, "waiter-abc123");
787dcpExecutor.AddResource(waiter.Resource, "waiter-def456");
794await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted);
797CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123"));
800waiter.Resource.Name,
827waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([
839dcpExecutor.AddResource(waiter.Resource, "waiter-abc123");
840dcpExecutor.AddResource(waiter.Resource, "waiter-def456");
847await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted);
851CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123"));
854waiter.Resource.Name,
859CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-def456"));
862waiter.Resource.Name,
909await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
912await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }).DefaultTimeout();
914await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
916Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent));
961waiter.Resource.Name,
965while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent)
972await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting });
980await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout();
982Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent));
1000var connectionString = builder.AddConnectionString("cs", ReferenceExpression.Create($"Endpoint={referenced.Resource}"));
1013await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout();
1017await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1018await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1049waiter.Resource.Name,
1054Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor));
1060await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1061await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout();
1293var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
1311parentContainer.Resource,
1318var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null;
1319var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
1340var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource));
1358parentContainer.Resource,
1365var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null;
1366var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
1407if (item.Resource == parent.Resource)
1411else if (item.Resource == child.Resource)
1415else if (item.Resource == child2.Resource)
1445parent.WithChildRelationship(child.Resource)
1446.WithChildRelationship(child2.Resource);
1464if (item.Resource == parent.Resource)
1468else if (item.Resource == child.Resource)
1472else if (item.Resource == child2.Resource)
1518if (item.Resource == parentProject.Resource)
1522else if (item.Resource == childProject.Resource)
Orchestrator\RelationshipEvaluatorTests.cs (29)
18var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource));
19var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource));
20var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource));
34Assert.Collection(parentChildLookup[parentResource.Resource],
35x => Assert.Equal(childResource.Resource, x),
36x => Assert.Equal(childWithAnnotationsResource.Resource, x));
38Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource);
39Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource);
41Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]);
43Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource);
45Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]);
66Assert.Collection(parentChildLookup[parentResource.Resource],
67x => Assert.Equal(child1Resource.Resource, x),
68x => Assert.Equal(child2Resource.Resource, x));
80parentResource.WithChildRelationship(child1Resource.Resource)
81.WithChildRelationship(child2Resource.Resource);
89Assert.Collection(parentChildLookup[parentResource.Resource],
90x => Assert.Equal(child1Resource.Resource, x),
91x => Assert.Equal(child2Resource.Resource, x));
112Assert.Collection(parentChildLookup[parentResource.Resource],
113x => Assert.Equal(child1Resource.Resource, x),
114x => Assert.Equal(child2Resource.Resource, x));
135Assert.Single(parentChildLookup[grandParentResource.Resource], parentResource.Resource);
136Assert.Single(parentChildLookup[parentResource.Resource], childResource.Resource);
Publishing\ResourceContainerImageManagerTests.cs (45)
39await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
71await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
104await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
141await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
175await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
205await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
243await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
255AssertImageArchiveWasWritten(container.Resource, tempOutputPath);
287await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
300AssertImageArchiveWasWritten(container.Resource, tempOutputPath);
324await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
356await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
387await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
438await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token);
467await imageBuilder.PushImageAsync(testResource.Resource, cts.Token);
472resource => Assert.Equal(testResource.Resource, resource));
492imageBuilder.PushImageAsync(testResource.Resource, cts.Token));
527await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token);
558await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token);
591await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token);
630imageBuilder.BuildImagesAsync([container.Resource], cts.Token));
669imageBuilder.BuildImageAsync(project.Resource, cts.Token));
707imageBuilder.BuildImageAsync(project.Resource, cts.Token));
750await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
824await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
920await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
966var annotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
973await imageBuilder.BuildImageAsync(container.Resource, cts.Token);
1067var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1106var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1133var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1164var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync(
1170var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single();
1196var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync(
1244var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync(
1275var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1308await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync(
1314Assert.Equal(servicea.Resource, capturedResource);
1355await imageManager.BuildImagesAsync([servicea.Resource], cts.Token);
1399() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token));
1434() => imageManager.BuildImageAsync(container.Resource, cts.Token));
1477() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token));
1510() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token));
1545() => imageBuilder.BuildImageAsync(container.Resource, cts.Token));
ResourceCommandServiceTests.cs (23)
82var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound");
102var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound");
123var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound");
160var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList();
192var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
198var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList();
231var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
236var resourceNames = custom.Resource.GetResolvedResourceNames();
266var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
296var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
334var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
340var resourceNames = custom.Resource.GetResolvedResourceNames();
377var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
400var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
422var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "resource-start");
464var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, legacyCommandName);
482var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token");
503var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
598custom.Resource,
638custom.Resource,
1626var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token");
1650await resourceNotificationService.WaitForResourceAsync(project.Resource.Name, e => KnownResourceStates.BuildableStates.Contains(e.Snapshot.State?.Text), cts.Token).DefaultTimeout(TimeSpan.FromMinutes(2));
1652var result = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2));
ResourceDependencyTests.cs (172)
24var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
26Assert.Contains(redis.Resource, dependencies);
41var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext);
43Assert.Contains(api.Resource, dependencies);
58var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext);
60Assert.Contains(api.Resource, dependencies);
97var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
99Assert.Contains(host.Resource, dependencies);
100Assert.DoesNotContain(nonHost.Resource, dependencies);
115var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
117Assert.Contains(db.Resource, dependencies);
118Assert.Contains(postgres.Resource, dependencies); // Parent of db
128.WithConnectionStringRedirection(redis.Resource);
134var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
136Assert.Contains(redirect.Resource, dependencies);
137Assert.Contains(redis.Resource, dependencies); // The redirect target
149var dependencies = await db.Resource.GetResourceDependenciesAsync(executionContext);
151Assert.Contains(postgres.Resource, dependencies);
164var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
166Assert.Contains(redis.Resource, dependencies);
179var dependencies = await mainContainer.Resource.GetResourceDependenciesAsync(executionContext);
181Assert.Contains(initContainer.Resource, dependencies);
194var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
196Assert.Contains(param.Resource, dependencies);
209var dependencies = await exe.Resource.GetResourceDependenciesAsync(executionContext);
211Assert.Contains(param.Resource, dependencies);
226var dependencies = await executable.Resource.GetResourceDependenciesAsync(
234Assert.Collection(dependencies, dependency => Assert.Same(param.Resource, dependency));
248context.EnvironmentVariables["CONFIG"] = param.Resource;
260var beforePriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions);
265var annotation = executable.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single();
267new EnvironmentCallbackContext(executionContext, executable.Resource, new Dictionary<string, object>()));
271var afterPriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions);
273Assert.Contains(param.Resource, afterPriming);
288var dependencies = await executable.Resource.GetResourceDependenciesAsync(
292Assert.Collection(dependencies, dependency => Assert.Same(active.Resource, dependency));
305var dependencies = await container.Resource.GetResourceDependenciesAsync(
325var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
327Assert.Contains(host.Resource, dependencies);
328Assert.Contains(port.Resource, dependencies);
329Assert.Contains(password.Resource, dependencies);
345var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
347Assert.Contains(b.Resource, dependencies);
348Assert.Contains(c.Resource, dependencies);
364var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
366Assert.Contains(b.Resource, dependencies);
367Assert.Contains(c.Resource, dependencies);
385var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
387Assert.Contains(b.Resource, dependencies);
388Assert.Contains(c.Resource, dependencies);
405var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
407Assert.Contains(b.Resource, dependencies);
408Assert.Contains(c.Resource, dependencies);
409Assert.Contains(d.Resource, dependencies);
426var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
428Assert.Contains(b.Resource, dependencies);
429Assert.Contains(c.Resource, dependencies);
430Assert.Contains(d.Resource, dependencies);
431Assert.Contains(e.Resource, dependencies);
449var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
450Assert.Contains(b.Resource, dependencies);
451Assert.Contains(c.Resource, dependencies);
452Assert.Contains(d.Resource, dependencies);
470var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext);
472Assert.Contains(backend.Resource, dependencies);
488var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
490Assert.Contains(db.Resource, dependencies);
491Assert.Contains(postgres.Resource, dependencies); // Parent included due to transitive dependency
505var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
507Assert.DoesNotContain(unrelatedResource.Resource, dependencies);
518var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
520Assert.DoesNotContain(container.Resource, dependencies);
534var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
536Assert.DoesNotContain(dependentContainer.Resource, dependencies);
549var dependencies = await db1.Resource.GetResourceDependenciesAsync(executionContext);
551Assert.DoesNotContain(db2.Resource, dependencies);
552Assert.Contains(postgres.Resource, dependencies); // Parent IS included
567var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
569Assert.Contains(b.Resource, dependencies);
570Assert.DoesNotContain(c.Resource, dependencies);
571Assert.DoesNotContain(d.Resource, dependencies);
582var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
598var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
600Assert.Contains(redis.Resource, dependencies);
618var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly);
620Assert.Contains(b.Resource, dependencies);
621Assert.DoesNotContain(c.Resource, dependencies);
638var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.Recursive);
640Assert.Contains(b.Resource, dependencies);
641Assert.Contains(c.Resource, dependencies);
664var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly);
667Assert.Contains(b.Resource, dependencies);
682var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly);
686Assert.Contains(db.Resource, dependencies);
687Assert.Contains(postgres.Resource, dependencies);
707var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly);
710Assert.Contains(b.Resource, dependencies);
712Assert.DoesNotContain(c.Resource, dependencies);
731var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext);
733Assert.Contains(b.Resource, dependencies);
734Assert.Contains(c.Resource, dependencies);
754[a.Resource, b.Resource], executionContext);
756Assert.Contains(x.Resource, dependencies);
757Assert.Contains(y.Resource, dependencies);
774[a.Resource, b.Resource], executionContext);
776Assert.Contains(x.Resource, dependencies);
793[a.Resource, b.Resource], executionContext);
796Assert.DoesNotContain(a.Resource, dependencies);
797Assert.DoesNotContain(b.Resource, dependencies);
816[a.Resource, b.Resource], executionContext);
819Assert.Contains(c.Resource, dependencies);
821Assert.DoesNotContain(a.Resource, dependencies);
822Assert.DoesNotContain(b.Resource, dependencies);
846[a.Resource, b.Resource, c.Resource], executionContext);
872[a.Resource, c.Resource], executionContext);
874Assert.Contains(b.Resource, dependencies);
875Assert.Contains(d.Resource, dependencies);
876Assert.DoesNotContain(a.Resource, dependencies);
877Assert.DoesNotContain(c.Resource, dependencies);
903[a.Resource, d.Resource], executionContext, new ResourceDependencyDiscoveryOptions
909Assert.Contains(b.Resource, dependencies);
910Assert.Contains(e.Resource, dependencies);
911Assert.DoesNotContain(c.Resource, dependencies);
912Assert.DoesNotContain(f.Resource, dependencies);
938[a.Resource, b.Resource, c.Resource], executionContext);
941Assert.Contains(d.Resource, dependencies);
942Assert.DoesNotContain(a.Resource, dependencies);
943Assert.DoesNotContain(b.Resource, dependencies);
944Assert.DoesNotContain(c.Resource, dependencies);
961[parent.Resource, child.Resource], executionContext);
964Assert.DoesNotContain(parent.Resource, dependencies);
965Assert.DoesNotContain(child.Resource, dependencies);
989[a.Resource, b.Resource, c.Resource], executionContext);
991Assert.Contains(x.Resource, dependencies);
992Assert.Contains(y.Resource, dependencies);
993Assert.Contains(z.Resource, dependencies);
1013var singleDeps = await a.Resource.GetResourceDependenciesAsync(executionContext);
1014var multiDeps = await ResourceExtensions.GetDependenciesAsync([a.Resource], executionContext);
1034enableTls.Resource,
1043var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
1045Assert.Contains(enableTls.Resource, dependencies);
1046Assert.Contains(tlsSuffix.Resource, dependencies);
1061flag.Resource,
1070var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
1072Assert.Contains(flag.Resource, dependencies);
1073Assert.Contains(primary.Resource, dependencies);
1074Assert.Contains(secondary.Resource, dependencies);
1089innerFlag.Resource,
1095outerFlag.Resource,
1104var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
1106Assert.Contains(outerFlag.Resource, dependencies);
1107Assert.Contains(innerFlag.Resource, dependencies);
1108Assert.Contains(paramA.Resource, dependencies);
1109Assert.Contains(paramB.Resource, dependencies);
1110Assert.Contains(paramC.Resource, dependencies);
1122flag.Resource,
1132var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext);
1135Assert.Contains(flag.Resource, dependencies);
1136Assert.Contains(param.Resource, dependencies);
ResourceExtensionsTests.cs (56)
43Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
44Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
55Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
56Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
67Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>());
68Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations));
79Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
80Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
90Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
91Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
102Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
103Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
114var child = builder.AddResource(new ChildResource("child", parent.Resource))
117Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
118Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
129var child = builder.AddResource(new ChildResource("child", parent.Resource));
131Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
132Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
143var child = builder.AddResource(new ChildResource("child", parent.Resource))
146Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
147Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
158var child = builder.AddResource(new ChildResource("child", parent: parent.Resource))
161var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource))
164Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>());
165Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations));
178.WithAnnotation(new DeploymentTargetAnnotation(deploymentTarget.Resource)
180ComputeEnvironment = annotationEnvironment.Resource
183var annotation = resource.Resource.GetDeploymentTargetAnnotation(requestedEnvironment.Resource);
194Assert.True(container.Resource.TryGetContainerImageName(out var imageName));
204Assert.True(container.Resource.TryGetContainerImageName(out var imageName));
223var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
258var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout();
293var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout();
327.Resource.GetArgumentValuesAsync().DefaultTimeout();
339.Resource.GetArgumentValuesAsync().DefaultTimeout();
357var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
366Resource = containerResource.Resource,
404var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList();
414Resource = containerResource.Resource,
434Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
438Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
442Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
459var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
469Resource = containerResource.Resource,
486var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
498var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>());
510Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(),
518var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>());
522Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(),
540var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>());
616var result = resource.Resource.TryGetInstances(out var instances);
632var result = resource.Resource.TryGetInstances(out var instances);
653var result = resource.Resource.GetResolvedResourceNames();
668var result = resource.Resource.GetResolvedResourceNames();
682var endpoint = Assert.Single(resource.Resource.ResolveEndpoints());
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)
33container.Resource,
55var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
59Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
64Assert.Same(projectA.Resource, r.Resource);
76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
92var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
108var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
125var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
129Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
134Assert.Same(parameter.Resource, r.Resource);
148var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource,
165projectA.Resource,
191var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
215var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
242.WithEnvironment("HOST", $"{test.Resource};name=1");
244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
245var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
259Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
264Assert.Same(container.Resource, r.Resource);
269Assert.Same(test.Resource, r.Resource);
290Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
295Assert.Same(container.Resource, r.Resource);
323var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout();
347var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout();
353var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
358Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
363Assert.Same(sourceBuilder.Resource, r.Resource);
378projectA.Resource,
386projectA.Resource,
399var testValue = new TestValueWithReferences("test-value", resourceA.Resource);
405Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
408Assert.Same(resourceA.Resource, relationship.Resource);
412projectA.Resource,
459projectA.Resource,
467projectA.Resource,
474Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
477Assert.Same(container.Resource, relationship.Resource);
WithHttpCommandTests.cs (49)
143await MoveResourceToRunningStateAsync(app, service.Resource);
145var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
205var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
211Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name);
238var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault();
279var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single();
315var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single();
375await MoveResourceToRunningStateAsync(app, service.Resource);
387var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout();
414var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList();
455await MoveResourceToRunningStateAsync(app, service.Resource);
457var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
480await MoveResourceToRunningStateAsync(app, service.Resource);
482var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", cts.Token).DefaultTimeout();
512await MoveResourceToRunningStateAsync(app, service.Resource);
514var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
547await MoveResourceToRunningStateAsync(app, service.Resource);
549var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
627await app.ResourceNotifications.PublishUpdateAsync(serviceA.Resource, s => s with
631await app.ResourceNotifications.WaitForResourceAsync(serviceA.Resource.Name, KnownResourceStates.Running).DefaultTimeout();
634await MoveResourceToRunningStateAsync(app, serviceB.Resource);
636var result = await app.ResourceCommands.ExecuteCommandAsync(serviceB.Resource, "mycommand").DefaultTimeout();
664Assert.Equal(service.Resource.Name, requestContext.ResourceName);
678await MoveResourceToRunningStateAsync(app, service.Resource);
680var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
708Assert.Equal(service.Resource.Name, resultContext.ResourceName);
722await MoveResourceToRunningStateAsync(app, service.Resource);
724var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
776await MoveResourceToRunningStateAsync(app, service.Resource);
788var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout();
815await MoveResourceToRunningStateAsync(app, service.Resource);
817var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
841await MoveResourceToRunningStateAsync(app, service.Resource);
843var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
868await MoveResourceToRunningStateAsync(app, service.Resource);
870var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
896await MoveResourceToRunningStateAsync(app, service.Resource);
898var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
923await MoveResourceToRunningStateAsync(app, service.Resource);
925var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout();
950await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
956service.Resource.Name,
962await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
969service.Resource.Name,
1005await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
1012service.Resource.Name,
1020await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with
1027service.Resource.Name,
1082var endpointAnnotation = service.Resource.Annotations.OfType<EndpointAnnotation>().Single();
WithOtlpExporterTests.cs (19)
46container.Resource,
72container.Resource,
91dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: endpointName, uriScheme: "http", port: 18889, isProxied: true, transport: transport));
107var annotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == endpointName);
111container.Resource,
128dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2"));
129dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpHttpEndpointName, uriScheme: "http", port: 18890, isProxied: true));
137var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName);
140var httpAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpHttpEndpointName);
144container.Resource,
167container.Resource,
183dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2"));
192var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName);
196executable.Resource,
213dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2"));
227var collectorEndpoint = collector.Resource.GetEndpoint("otlp-grpc");
249var dashboardAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName);
252var collectorAnnotation = collector.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "otlp-grpc");
260container.Resource,
WithProcessCommandTests.cs (47)
71var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single();
111var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single();
124var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-command").DefaultTimeout();
190var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "options-callback-command", arguments).DefaultTimeout();
251var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single();
269var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-command", arguments).DefaultTimeout();
276Assert.Equal(resource.Resource.Name, capturedContext.ResourceName);
313var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-accepted-exit-code").DefaultTimeout();
334var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout();
384var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "echo-argument", arguments).DefaultTimeout();
390Assert.Equal(resource.Resource.Name, capturedContext.ResourceName);
444ResourceName = resource.Resource.Name,
488var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "async-factory").DefaultTimeout();
522var firstResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout();
523var secondResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout();
566var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "many-lines").DefaultTimeout();
599var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "display-immediately").DefaultTimeout();
623var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "no-output").DefaultTimeout();
645var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail-no-output").DefaultTimeout();
673var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "accepted-exit-code").DefaultTimeout();
711var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "failure-display-immediately").DefaultTimeout();
735var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "log-output").DefaultTimeout();
742var logs = await ConsoleLoggingTestHelpers.WatchForLogsAsync(loggerService, 4, resource.Resource).DefaultTimeout();
791var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "custom-result").DefaultTimeout();
800Assert.Equal(resource.Resource.Name, capturedContext.ResourceName);
833var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "ordered-output").DefaultTimeout();
862var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail").DefaultTimeout();
898var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "argument-fidelity").DefaultTimeout();
922var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "stdin").DefaultTimeout();
945var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "path-executable").DefaultTimeout();
969var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "working-directory").DefaultTimeout();
997var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment").DefaultTimeout();
1023var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "invalid-environment-name").DefaultTimeout();
1049var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-environment-value").DefaultTimeout();
1087var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-options").DefaultTimeout();
1125var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-accepted-exit-code").DefaultTimeout();
1150var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-default-options").DefaultTimeout();
1213var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, $"invalid-export-{i}").DefaultTimeout();
1260var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "default-success-exit-codes").DefaultTimeout();
1284var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment-inheritance").DefaultTimeout();
1307var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "missing").DefaultTimeout();
1331var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "process-task-failure").DefaultTimeout();
1354var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout();
1380var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-exception").DefaultTimeout();
1404var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-argument").DefaultTimeout();
1442var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "validation-failure").DefaultTimeout();
1472var commandTask = app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "wait", cts.Token);
WithReferenceTests.cs (52)
29var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
34Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
37Assert.Same(projectA.Resource, r.Resource);
52var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
72var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
102var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
151var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
179var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
213Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
216Assert.Same(projectA.Resource, r.Resource);
234var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
242Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
245Assert.Same(projectA.Resource, r.Resource);
264var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
286var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
305await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
322var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
341await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
361var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
377var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
393var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout();
412var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
442var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
448Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships));
451Assert.Same(resource.Resource, r.Resource);
452Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships));
457Assert.Same(endpoint.Resource, r.Resource);
462Assert.Same(key.Resource, r.Resource);
467Assert.Same(endpoint.Resource, r.Resource);
472Assert.Same(key.Resource, r.Resource);
494var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
516var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
540var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
557var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
580var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
605var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
630var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
657var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
682var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
709var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
738var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
761var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
783var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
831var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
861var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
891var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
908var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single();
921var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single();
954var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
974var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
994var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithVolumeTests.cs (18)
27container.Resource,
33var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
50var expectedProjectPath = VolumeMountPathResolver.GetLocalPath(store, project.Resource, "data");
51var expectedExecutablePath = VolumeMountPathResolver.GetLocalPath(store, executable.Resource, "data");
57project.Resource,
60executable.Resource,
80project.Resource,
84executable.Resource,
127var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
142executable.Resource,
186executable.Resource,
205var sessionMount = Assert.Single(sessionContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
206var persistentMount = Assert.Single(persistentContainer.Resource.Annotations.OfType<ContainerMountAnnotation>());
223var expectedPath = VolumeMountPathResolver.GetLocalPath(store, custom.Resource, "data");
226custom.Resource,
259project.Resource,
280project.Resource,
298project.Resource,
Aspire.Hosting.TestUtilities (1)
Aspire.Hosting.Valkey (1)
Aspire.Hosting.Valkey.Tests (22)
Aspire.Hosting.Yarp (12)
Aspire.Hosting.Yarp.Tests (39)
AddYarpTests.cs (28)
54var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
77var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
103YarpEnvConfigGenerator.PopulateEnvVariables(env, yarp.Resource.Routes, yarp.Resource.Clusters);
126var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
148var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider);
173var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider);
188var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
202var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>());
214var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
227var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
232Resource = yarp.Resource,
260Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
261Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
278var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>());
279Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source);
283var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
288Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
305var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
312Resource = yarp.Resource,
335var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
343Resource = yarp.Resource,
368var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
375Resource = yarp.Resource,
406var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
413Resource = yarp.Resource,
446var httpsEndpoint = Assert.Single(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https");
471Assert.DoesNotContain(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https");
Aspire.Playground.Tests (1)
AzureKusto.AppHost (2)
BicepSample.AppHost (1)
DotnetTool.AppHost (2)
FoundryEndToEnd.AppHost (1)
KafkaBasic.AppHost (2)
ParameterEndToEnd.AppHost (1)
Pipelines.AppHost (1)
Stress.AppHost (9)
Testing.Tests (17)
WaitFailures.cs (17)
34await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token);
49await app.ResourceNotifications.WaitForResourceAsync(pwsh.Resource.Name, cancellationToken: cts.Token);
68await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token);
72await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.TerminalStates, cancellationToken: cts.Token);
87await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "StateThatIsNeverUsed", cts.Token);
102await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, ["States", "That", "Are", "Never", "Used"], cts.Token);
117await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => false, cts.Token);
136await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
156await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthReports.All(x => x.Status.HasValue), cts.Token);
159await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthStatus == HealthStatus.Healthy, cts.Token);
180await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token);
206await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token);
228await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token);
232await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token);
252await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token);
256await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cancellationToken: cts.Token);