1 implementation of Resource
Aspire.Hosting (1)
DistributedApplicationResourceBuilder.cs (1)
10public T Resource { get; } = resource;
3542 references to Resource
Aspire.Hosting (215)
ApplicationModel\CertificateAuthorityCollectionResourceExtensions.cs (4)
49builder.Resource.Certificates.Add(certificate); 64builder.Resource.Certificates.AddRange(certificates); 79builder.Resource.Certificates.AddRange(certificates.ToArray()); 118builder.Resource.Certificates.AddRange(certificates.ToArray());
ApplicationModel\ReferenceExpression.cs (4)
237_valueProviders.Add(valueProvider.Resource); 238_manifestExpressions.Add(valueProvider.Resource.ValueExpression); 395var unwrapped = valueProvider is IResourceBuilder<IResource> rb ? rb.Resource : valueProvider; 513builder.AppendFormatted(valueProvider.Resource, format);
ApplicationModel\ResourceExtensions.cs (5)
532(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await resource.GetValue(executionContext, key, provider, logger, cancellationToken).ConfigureAwait(false), 534(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false), 1476if (dependencies.Add(resourceBuilder.Resource)) 1478newDependencies.Add(resourceBuilder.Resource); 1480value = resourceBuilder.Resource;
Ats\CoreExports.cs (1)
106return resource.Resource.Name;
Ats\LoggingExports.cs (1)
76loggerService.Complete(resource.Resource);
Ats\NotificationExports.cs (2)
57return notificationService.WaitForDependenciesAsync(resource.Resource, CancellationToken.None); 85return notificationService.PublishUpdateAsync(resource.Resource, snapshot =>
ContainerRegistryResourceBuilderExtensions.cs (3)
48var endpointExpression = ReferenceExpression.Create($"{endpoint.Resource}"); 50? ReferenceExpression.Create($"{repository.Resource}") 163return builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registry.Resource));
ContainerResourceBuilderExtensions.cs (29)
35if (builder.Resource.IsExcludedFromPublish()) 40if (builder.Resource.RequiresImageBuild()) 44Name = $"build-{builder.Resource.Name}", 49builder.Resource, 55Resource = builder.Resource 60if (builder.Resource.RequiresImageBuildAndPush()) 64Name = $"push-{builder.Resource.Name}", 65Action = ctx => PipelineStepHelpers.PushImageToRegistryAsync(builder.Resource, ctx), 68Resource = builder.Resource 78var buildSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.BuildCompute); 79var pushSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.PushContainerImage); 275builder.Resource.Entrypoint = entrypoint; 292if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 298if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation && 322if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 362if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation) 369builder.Resource.Annotations.Add(imageAnnotation); 390if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation) 411if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 523throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a container image specified. Use WithImage to specify the container image and tag."); 535return builder.WithManifestPublishingCallback(context => context.WriteContainerAsync(builder.Resource)); 612if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 756if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 1023var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1074if (value.Resource.Secret) 1079return builder.WithBuildArg(name, value.Resource); 1121var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1128annotation.BuildSecrets[name] = value.Resource; 1407var callbackAnnotation = builder.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
DistributedApplicationEventingExtensions.cs (2)
84builder.ApplicationBuilder.Eventing.Subscribe<TEvent>(builder.Resource, (evt, ct) => callback(builder.Resource, evt, ct));
DotnetToolResourceExtensions.cs (6)
127builder.Resource.ToolConfiguration?.PackageId = packageId; 141builder.Resource.ToolConfiguration?.Version = version; 154builder.Resource.ToolConfiguration?.Prerelease = true; 168builder.Resource.ToolConfiguration?.Sources.Add(source); 181builder.Resource.ToolConfiguration?.IgnoreExistingFeeds = true; 194builder.Resource.ToolConfiguration?.IgnoreFailedSources = true;
ExecutableResourceBuilderExtensions.cs (9)
127if (builder.ApplicationBuilder.TryCreateResourceBuilder<ExecutableContainerResource>(builder.Resource.Name, out var existingBuilder)) 145builder.ApplicationBuilder.Resources.Remove(builder.Resource); 147var container = new ExecutableContainerResource(builder.Resource); 150cb.WithImage(builder.Resource.Name); 151cb.WithDockerfile(contextPath: builder.Resource.WorkingDirectory); 177var executableAnnotation = builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault(); 189builder.Resource.Annotations.Add(executableAnnotation); 207if (builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault() is { } executableAnnotation) 214throw new InvalidOperationException($"The resource '{builder.Resource.Name}' is missing the ExecutableAnnotation");
ExternalServiceBuilderExtensions.cs (12)
70return AddExternalServiceImpl(builder, name, urlParameter: urlParameter.Resource); 192if (builder.Resource.UrlParameter is null) 194if (builder.Resource.Uri is null) 196throw new ArgumentException($"The URL for external service '{builder.Resource.Name}' is null.", nameof(builder)); 198else if (builder.Resource.Uri.Scheme != "http" && builder.Resource.Uri.Scheme != "https") 200throw new ArgumentException($"The URL '{builder.Resource.Uri}' for external service '{builder.Resource.Name}' cannot be used for HTTP health checks because it has a non-HTTP scheme.", nameof(builder)); 207var healthCheckKey = $"{builder.Resource.Name}_external{pathKey}_{statusCode}_check"; 213if (builder.Resource.UrlParameter is not null) 219builder.Resource.UrlParameter, 229var uri = builder.Resource.Uri!;
OtlpConfigurationExtensions.cs (2)
129AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment); 150AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment, protocol);
ParameterResourceBuilderExtensions.cs (4)
171builder.Resource.Description = description; 172builder.Resource.EnableDescriptionMarkdown = enableMarkdown; 203builder.Resource.Annotations.Add(new InputGeneratorAnnotation(createInput)); 284var parameter = new ParameterResource(builder.Resource.Name, _ => "", secret: true);
ProjectResourceBuilderExtensions.cs (20)
438var logger = resourceLogger.GetLogger(builder.Resource); 446var projectResource = builder.Resource; 540builder.Resource.KestrelEndpointAnnotationHosts[e] = e.TargetHost; 685builder.Resource.DefaultHttpsEndpoint = e; 790builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 819if (builder.ApplicationBuilder.TryCreateResourceBuilder<ProjectContainerResource>(builder.Resource.Name, out var existingBuilder)) 833builder.ApplicationBuilder.Resources.Remove(builder.Resource); 835var container = new ProjectContainerResource(builder.Resource); 838cb.WithImage(builder.Resource.Name); 840var projectFilePath = builder.Resource.GetProjectMetadata().ProjectPath; 905foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 954foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 957if (e.EndpointAnnotation.UriScheme == scheme && e.EndpointAnnotation != builder.Resource.DefaultHttpsEndpoint) 983if (builder.Resource.HasKestrelEndpoints) 985foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 988if (e.EndpointAnnotation == builder.Resource.DefaultHttpsEndpoint) 996builder.Resource.KestrelEndpointAnnotationHosts.TryGetValue(e.EndpointAnnotation, out var kestrelHost) ? kestrelHost : "*";
ResourceBuilderExtensions.cs (109)
191builder.WithReferenceRelationship(externalService.Resource); 193if (externalService.Resource.Uri is not null) 195builder.WithEnvironment(name, externalService.Resource.Uri.ToString()); 197else if (externalService.Resource.UrlParameter is not null) 204var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false); 207throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}"); 211context.EnvironmentVariables[name] = externalService.Resource.UrlParameter; 232builder.WithReferenceRelationship(parameter.Resource); 236context.EnvironmentVariables[name] = parameter.Resource; 258builder.WithReferenceRelationship(resource.Resource); 262context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false); 553var resource = source.Resource; 559builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 638ApplyEndpoints(builder, source.Resource); 658ApplyEndpoints(builder, source.Resource, endpointName: null, name); 700builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 730builder.WithReferenceRelationship(externalService.Resource); 733builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 736if (externalService.Resource.Uri is { } uri) 740var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 746var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 750else if (externalService.Resource.UrlParameter is not null) 756var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 761discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0"; 764else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message)) 766discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 772throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for the external service '{externalService.Resource.Name}' is invalid: {message}"); 777context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter; 782context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter; 816var endpointReferenceAnnotation = builder.Resource.Annotations 824if (builder.Resource.IsContainer()) 884var endpoint = builder.Resource.Annotations 902builder.Resource.Annotations.Add(endpoint); 948if (builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(sb => string.Equals(sb.Name, annotation.Name, StringComparisons.EndpointAnnotationName))) 954if (env is not null && builder.Resource is IResourceWithEndpoints resourceWithEndpoints and IResourceWithEnvironment) 1042if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints)) 1071return builder.Resource.GetEndpoint(name, contextNetworkID); 1087return builder.Resource.GetEndpoint(name); 1344context.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); 1392context.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); 1422Source = source.Resource, 1459builder.Resource.Annotations 1462.ForEach(w => builder.Resource.Annotations.Remove(w)); 1560if (builder.Resource as IResource == dependency.Resource) 1562throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 1565if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 1567throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 1570if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 1583builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 1586return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior }); 1664if (builder.Resource as IResource == dependency.Resource) 1666throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 1669if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 1671throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 1674if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 1686if (dependency.Resource is ConnectionStringResource cs) 1697builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 1700return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior }); 1762if (builder.Resource as IResource == dependency.Resource) 1764throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 1767if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 1769throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 1772builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 1774return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode)); 1819if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key)) 1821throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'."); 1904?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 1908throw 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."); 1920throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'."); 1934var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check"; 2025var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 2028builder.Resource.Annotations.Remove(existingAnnotation); 2090var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 2093builder.Resource.Annotations.Remove(existingAnnotation); 2257?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 2261throw 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."); 2365CertificateAuthorityCollections = { certificateAuthorityCollection.Resource }, 2367if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 2371if (existingCollection != certificateAuthorityCollection.Resource) 2422if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 2470if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 2542Password = password?.Resource, 2576Password = password?.Resource, 2679var resource = builder.Resource; 2726var endpoints = builder.Resource.GetEndpoints(); 2736throw 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."); 2744throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}"); 2752var endpoints = builder.Resource.GetEndpoints(); 2764throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints."); 2861AddReference(resourceBuilder.Resource); 2892return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference)); 2923return builder.WithParentRelationship(parent.Resource); 2984child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent); 3071builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource)); 3098if (resourceWithArgs.Resource.SupportsDebugging(builder.ApplicationBuilder.Configuration, out _) && argsCallback is not null) 3191var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 3220if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation) 3222builder.Resource.Annotations.Remove(existingAnnotation);
Utils\ImageNameGenerator.cs (1)
16return builder.Resource.Name.ToLowerInvariant();
VolumeNameGenerator.cs (1)
33var resourceName = builder.Resource.Name;
Aspire.Hosting.Azure (30)
AzureBicepResourceExtensions.cs (15)
55return new BicepOutputReference(name, builder.Resource); 67return new BicepSecretOutputReference(name, builder.Resource); 135builder.Resource.Parameters[name] = null; 151builder.Resource.Parameters[name] = value; 167builder.Resource.Parameters[name] = value; 183builder.Resource.Parameters[name] = value; 199builder.Resource.Parameters[name] = valueCallback; 214return builder.WithParameter(name, value.Resource); 232builder.Resource.Parameters[name] = value; 249builder.WithReferenceRelationship(value.Resource); 251builder.Resource.Parameters[name] = value.Resource; 270builder.Resource.Parameters[name] = value; 289builder.Resource.Parameters[name] = value; 308builder.Resource.Parameters[name] = value;
AzureEnvironmentResourceExtensions.cs (4)
68builder.Resource.Location = location.Resource; 91builder.Resource.ResourceGroupName = resourceGroup.Resource;
AzureProvisioningResourceExtensions.cs (2)
45builder.Resource.ConfigureInfrastructure += configure; 128return parameterResourceBuilder.Resource.AsProvisioningParameter(infrastructure, parameterName);
AzureResourceExtensions.cs (2)
65var annotations = builder.Resource.Annotations.OfType<DefaultRoleAssignmentsAnnotation>().ToList(); 68builder.Resource.Annotations.Remove(annotation);
AzureUserAssignedIdentityExtensions.cs (1)
67builder.WithAnnotation(new AppIdentityAnnotation(identityResourceBuilder.Resource));
ExistingAzureResourceExtensions.cs (6)
42builder.WithAnnotation(new ExistingAzureResourceAnnotation(nameParameter.Resource, resourceGroupParameter?.Resource)); 84builder.WithAnnotation(new ExistingAzureResourceAnnotation(nameParameter.Resource, resourceGroupParameter?.Resource)); 124builder.WithAnnotation(new ExistingAzureResourceAnnotation(nameParameter.Resource, resourceGroupParameter?.Resource));
Aspire.Hosting.Azure.AIFoundry (7)
AzureAIFoundryExtensions.cs (6)
58var deployment = new AzureAIFoundryDeploymentResource(name, modelName, modelVersion, format, builder.Resource); 62builder.Resource.AddDeployment(deployment); 67if (builder.Resource.IsEmulator) 116configure(builder.Resource); 135var resource = builder.Resource; 250var foundryResource = builder.Resource.Parent;
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.AppConfiguration (3)
AzureAppConfigurationExtensions.cs (2)
110var surrogate = new AzureAppConfigurationEmulatorResource(builder.Resource); 132return builder.WithBindMount(path ?? $".aace/{builder.Resource.Name}", "/app/.aace", isReadOnly: false);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.AppContainers (5)
AzureContainerAppExtensions.cs (5)
416builder.Resource.UseAzdNamingConvention = true; 447builder.Resource.UseCompactResourceNaming = true; 460builder.Resource.EnableDashboard = enable; 479builder.Resource.PreserveHttpEndpoints = !upgrade; 497builder.WithAnnotation(new AzureLogAnalyticsWorkspaceReferenceAnnotation(workspaceBuilder.Resource));
Aspire.Hosting.Azure.ApplicationInsights (1)
AzureApplicationInsightsExtensions.cs (1)
150return builder.WithLogAnalyticsWorkspace(logAnalyticsWorkspace.Resource.WorkspaceId);
Aspire.Hosting.Azure.AppService (12)
AzureAppServiceComputeResourceExtensions.cs (2)
87if (!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteCustomizationAnnotation>() && 88!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteSlotCustomizationAnnotation>())
AzureAppServiceEnvironmentExtensions.cs (10)
236builder.Resource.EnableDashboard = enable; 248builder.Resource.EnableApplicationInsights = true; 261builder.Resource.ApplicationInsightsLocation = applicationInsightsLocation; 274builder.Resource.ApplicationInsightsLocationParameter = applicationInsightsLocation.Resource; 287builder.Resource.ApplicationInsightsResource = applicationInsightsBuilder.Resource; 302builder.Resource.DeploymentSlotParameter = deploymentSlot.Resource; 317builder.Resource.DeploymentSlot = deploymentSlot;
Aspire.Hosting.Azure.CognitiveServices (5)
AzureOpenAIExtensions.cs (4)
161builder.Resource.AddDeployment(deployment); 182var deployment = new AzureOpenAIDeploymentResource(name, modelName, modelVersion, builder.Resource); 183builder.Resource.AddDeployment(deployment); 200configure(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ContainerRegistry (5)
AzureContainerRegistryExtensions.cs (4)
110builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registryBuilder.Resource)); 129var containerRegistry = builder.Resource.ContainerRegistry ?? throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have an associated Azure Container Registry."); 130var registry = containerRegistry as AzureContainerRegistryResource ?? throw new InvalidOperationException($"The Container Registry associated with resource '{builder.Resource.Name}' is not an Azure Container Registry.");
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.CosmosDB (23)
AzureCosmosDBExtensions.cs (23)
89builder.Resource.IsPreviewEmulator = useVNextPreview; 110throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null."); 147var emulatorSurrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 154var password = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-certificate-passphrase"); 191var healthCheckKey = $"{builder.Resource.Name}_check"; 202var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 242var dataPath = builder.Resource.InnerResource.IsPreviewEmulator ? "/data" : "/tmp/cosmos/appdata"; 279if (builder.Resource.InnerResource.IsPreviewEmulator) 327var database = new AzureCosmosDBDatabaseResource(name, databaseName, builder.Resource); 328builder.Resource.Databases.Add(database); 351var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPath, builder.Resource); 352builder.Resource.Containers.Add(container); 385var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPaths, builder.Resource); 387builder.Resource.Containers.Add(container); 400builder.Resource.UseDefaultAzureSku = true; 419if (!builder.Resource.InnerResource.IsPreviewEmulator) 481var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 482.WithParentRelationship(builder.Resource); 490if (builder.Resource.IsEmulator) 492data.Model.Resources.Remove(kv.Resource); 512var azureResource = builder.Resource; 513azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 514azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
Aspire.Hosting.Azure.EventHubs (14)
AzureEventHubsExtensions.cs (13)
162var hub = new AzureEventHubResource(name, hubName, builder.Resource); 163builder.Resource.Hubs.Add(hub); 179configure(builder.Resource); 202var consumerGroup = new AzureEventHubConsumerGroupResource(name, groupName, builder.Resource); 203builder.Resource.ConsumerGroups.Add(consumerGroup); 240if (builder.Resource.IsEmulator) 267.AddAzureStorage($"{builder.Resource.Name}-storage") 273var surrogate = new AzureEventHubsEmulatorResource(builder.Resource); 287var storage = storageResource.Resource; 305var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 318var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 326var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>(); 365return builder.WithBindMount(path ?? $".eventhubs/{builder.Resource.Name}", "/data", isReadOnly: false);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Functions (9)
AzureFunctionsProjectResourceExtensions.cs (8)
153.Resource; 259var launchProfile = builder.Resource.GetEffectiveLaunchProfile(); 303var targetEndpoint = builder.Resource.GetEndpoint(useHttps ? "https" : "http"); 321builder.Resource.HostStorage = storage.Resource; 341destination.WithReferenceRelationship(source.Resource); 345connectionName ??= source.Resource.Name; 346source.Resource.ApplyAzureFunctionsConfiguration(context.EnvironmentVariables, connectionName);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.KeyVault (12)
AzureKeyVaultResourceExtensions.cs (11)
237return builder.Resource.GetSecret(secretName); 253return builder.AddSecret(name, name, parameterResource.Resource); 271var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, parameterResource); 272builder.Resource.Secrets.Add(secret); 292var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, value); 293builder.Resource.Secrets.Add(secret); 312return builder.AddSecret(name, secretName, parameterResource.Resource); 331var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, parameterResource); 332builder.Resource.Secrets.Add(secret); 353var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value); 354builder.Resource.Secrets.Add(secret);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (13)
114var kustoDatabase = new AzureKustoReadWriteDatabaseResource(name, databaseName, builder.Resource); 115builder.Resource.Databases.Add(kustoDatabase); 125kcsb = GetConnectionStringBuilder(builder.Resource, connectionString); 168var surrogate = new AzureKustoEmulatorResource(builder.Resource); 227var resource = resourceBuilder.Resource; 350if (resourceBuilder.Resource.IsEmulator) 361.Resource 365throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 368var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 376.Resource 380throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 383var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 394message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kusto.Tests (33)
AddAzureKustoTests.cs (22)
24Assert.NotNull(resourceBuilder.Resource); 25Assert.Equal(name, resourceBuilder.Resource.Name); 26Assert.IsType<AzureKustoClusterResource>(resourceBuilder.Resource); 47var containerAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 67var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 87var emulatorAnnotation = resourceBuilder.Resource.Annotations.OfType<EmulatorResourceAnnotation>().SingleOrDefault(); 105var nameAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerNameAnnotation>().SingleOrDefault(); 109var argsAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerRuntimeArgsCallbackAnnotation>().SingleOrDefault(); 124var annotation = resourceBuilder.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().SingleOrDefault(); 178Assert.IsType<IResourceWithConnectionString>(resourceBuilder.Resource, exactMatch: false); 197Assert.Equal(runAsEmulator, resourceBuilder.Resource.IsEmulator); 215var volumeAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 238var mountAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 260var mountAnnotations = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().ToList(); 290var containerImageAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 310var lifetimeAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerLifetimeAnnotation>().SingleOrDefault(); 326Assert.Single(kustoServer.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 341Assert.Single(database.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 358var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 387var script = database.Resource.GetDatabaseCreationScript(); 404var script = database.Resource.GetDatabaseCreationScript(); 423var script = database.Resource.GetDatabaseCreationScript();
AzureKustoConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)kusto.Resource).GetConnectionProperties().ToArray(); 34var properties = ((IResourceWithConnectionString)kusto.Resource).GetConnectionProperties().ToArray();
KustoFunctionalTests.cs (9)
56await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cancellationToken: cts.Token); 60hb.Configuration["ConnectionStrings:KustoConnection"] = await kusto.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 108await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cancellationToken: cts.Token); 112hb.Configuration["ConnectionStrings:KustoTestDbConnection"] = await kustoDb.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 188await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 215await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 218await rns.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 219await rns.WaitForResourceAsync(db2.Resource.Name, KnownResourceStates.FailedToStart, cts.Token); 254await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cts.Token);
Aspire.Hosting.Azure.Network (28)
AzureNatGatewayExtensions.cs (2)
81builder.Resource.PublicIPAddresses.Add(publicIPAddress.Resource);
AzureNetworkSecurityGroupExtensions.cs (3)
94if (builder.Resource.SecurityRules.Any(existing => string.Equals(existing.Name, rule.Name, StringComparison.OrdinalIgnoreCase))) 97$"A security rule named '{rule.Name}' already exists in Network Security Group '{builder.Resource.Name}'.", 101builder.Resource.SecurityRules.Add(rule);
AzurePrivateEndpointExtensions.cs (7)
56var name = $"{subnet.Resource.Name}-{target.Resource.Name}-pe"; 57var vnet = subnet.Resource.Parent; 59var resource = new AzurePrivateEndpointResource(name, subnet.Resource, target.Resource, ConfigurePrivateEndpoint); 68var zoneName = target.Resource.GetPrivateDnsZoneName(); 76IResource rootResource = target.Resource;
AzureVirtualNetworkExtensions.cs (16)
72AzureVirtualNetworkResource resource = new(name, ConfigureVirtualNetwork, addressPrefix.Resource); 180var subnet = new AzureSubnetResource(name, subnetName, addressPrefix, builder.Resource); 213var subnet = new AzureSubnetResource(name, subnetName, addressPrefix.Resource, builder.Resource); 222builder.Resource.Subnets.Add(subnet); 263var target = builder.Resource; 267new DelegatedSubnetAnnotation(ReferenceExpression.Create($"{subnet.Resource.Id}"))); 303builder.Resource.NatGateway = natGateway.Resource; 334if (builder.Resource.NetworkSecurityGroup is { IsImplicitlyCreated: true }) 337$"The subnet '{builder.Resource.Name}' already has an NSG created via shorthand methods. " + 342builder.Resource.NetworkSecurityGroup = nsg.Resource; 471var subnet = builder.Resource; 478nsgBuilder.Resource.IsImplicitlyCreated = true; 479subnet.NetworkSecurityGroup = nsgBuilder.Resource;
Aspire.Hosting.Azure.PostgreSQL (24)
AzurePostgresExtensions.cs (24)
59var postgres = CreatePostgreSqlFlexibleServer(infrastructure, builder.ApplicationBuilder, builder.Resource.Databases); 75var resource = new AzurePostgresResource(builder.Resource, configureInfrastructure); 78.WithLoginAndPassword(builder.Resource); 87if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 89builder.Resource.Annotations.Remove(containerAnnotation); 170var azureResource = builder.Resource; 173builder.Resource.AddDatabase(name, databaseName); 184azurePostgresDatabase.SetInnerResource(innerDb.Resource); 224var azureResource = builder.Resource; 244azureResource.SetInnerResource(postgresContainer.Resource); 254existingDb.SetInnerResource(innerDb.Resource); 302var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 303.WithParentRelationship(builder.Resource); 311if (builder.Resource.IsContainer()) 313data.Model.Resources.Remove(kv.Resource); 340var azureResource = builder.Resource; 342azureResource.UserNameParameter = userName?.Resource ?? 346azureResource.PasswordParameter = password?.Resource ?? 347ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-password"); 350azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{builder.Resource.Name}"); 398if (!builder.Resource.IsContainer) 404var innerBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.InnerResource); 609builder.ApplicationBuilder, $"{builder.Resource.Name}-username", secret: false, generatedUserName);
Aspire.Hosting.Azure.Redis (20)
AzureManagedRedisExtensions.cs (9)
94var azureResource = builder.Resource; 99azureResource.SetInnerResource(redisContainer.Resource); 131var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 132.WithParentRelationship(builder.Resource); 140if (builder.Resource.IsContainer()) 142data.Model.Resources.Remove(kv.Resource); 162var azureResource = builder.Resource; 163azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 164azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
AzureRedisExtensions.cs (11)
59var resource = new AzureRedisResource(builder.Resource, configureInfrastructure); 70if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 72builder.Resource.Annotations.Remove(containerAnnotation); 164var azureResource = builder.Resource; 169azureResource.SetInnerResource(redisContainer.Resource); 202var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 203.WithParentRelationship(builder.Resource); 211if (builder.Resource.IsContainer()) 213data.Model.Resources.Remove(kv.Resource); 234var azureResource = builder.Resource; 235azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}");
Aspire.Hosting.Azure.Search (1)
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ServiceBus (19)
AzureServiceBusExtensions.cs (18)
178var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource); 179builder.Resource.Queues.Add(queue); 196configure(builder.Resource); 261var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource); 262builder.Resource.Topics.Add(topic); 279configure(builder.Resource); 301if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource) 331var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource); 332builder.Resource.Subscriptions.Add(subscription); 349configure(builder.Resource); 384if (builder.Resource.IsEmulator) 400var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1); 414.AddContainer($"{builder.Resource.Name}-mssql", 428var sqlEndpoint = sqlServerResource.Resource.GetEndpoint("tcp"); 437var surrogate = new AzureServiceBusEmulatorResource(builder.Resource); 458var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 471var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 479var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.SignalR (2)
AzureSignalRExtensions.cs (1)
159var surrogate = new AzureSignalREmulatorResource(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Sql (11)
AzureSqlExtensions.cs (11)
30CreateSqlServer(infrastructure, builder.ApplicationBuilder, builder.Resource.Databases); 33var resource = new AzureSqlServerResource(builder.Resource, configureInfrastructure); 44if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 46builder.Resource.Annotations.Remove(containerAnnotation); 116var azureResource = builder.Resource; 119builder.Resource.AddDatabase(azureSqlDatabase); 130azureSqlDatabase.SetInnerResource(innerDb.Resource); 146builder.Resource.UseDefaultAzureSku = true; 183var azureResource = builder.Resource; 193azureResource.SetInnerResource(sqlContainer.Resource); 203existingDb.SetInnerResource(innerDb.Resource);
Aspire.Hosting.Azure.Storage (34)
AzureStorageExtensions.cs (33)
182if (builder.Resource.IsHnsEnabled) 215var 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."); 218var 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."); 229foreach (var container in builder.Resource.BlobContainers) 235foreach (var queue in builder.Resource.Queues) 243var healthCheckKey = $"{builder.Resource.Name}_check"; 256var surrogate = new AzureStorageEmulatorResource(builder.Resource); 278return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly); 384if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName)) 405builder.Resource.IsHnsEnabled = true; 407if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName)) 444var name = builder.Resource.Name + "-blobs"; 446return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name); 453var name = builder.Resource.Name + "-data-lake"; 455return builder.Resource.DataLakeStorageBuilder ??= CreateDataLakeService(builder, name); 473AzureBlobStorageContainerResource resource = new(name, blobContainerName, GetBlobService(builder).Resource); 474builder.Resource.BlobContainers.Add(resource); 508builder.Resource.IsHnsEnabled = true; 512AzureDataLakeStorageFileSystemResource resource = new(name, dataLakeFileSystemName, GetDataLakeService(builder).Resource); 513builder.Resource.DataLakeFileSystems.Add(resource); 534AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource); 535builder.Resource.Parent.BlobContainers.Add(resource); 582if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName)) 601var name = builder.Resource.Name + "-queues"; 603return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name); 621AzureQueueStorageQueueResource resource = new(name, queueName, builder.GetQueueService().Resource); 622builder.Resource.Queues.Add(resource); 760var resource = new AzureBlobStorageResource(name, builder.Resource); 785var resource = new AzureDataLakeStorageResource(name, builder.Resource); 793var resource = new AzureTableStorageResource(name, builder.Resource); 799var resource = new AzureQueueStorageResource(name, builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Tests (1005)
AzureAIFoundryConnectionPropertiesTests.cs (4)
17var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray(); 35aiFoundry.Resource.EmulatorServiceUri = new Uri("http://localhost:8080"); 36aiFoundry.Resource.ApiKey = "OPENAI_KEY"; 38var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray();
AzureAIFoundryDeploymentConnectionPropertiesTests.cs (4)
20deployment.Resource.Parent.EmulatorServiceUri = new Uri("http://localhost:8080"); 21deployment.Resource.Parent.ApiKey = "OPENAI_KEY"; 23var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray(); 61var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray();
AzureAIFoundryExtensionsTests.cs (5)
131Assert.Equal("{myAIFoundry.connectionString};Model=gpt-4", deployment.Resource.ConnectionStringExpression.ValueExpression); 142deployment.Resource.ModelId = "custom-model-id"; 144Assert.Equal("{myAIFoundry.connectionString};Model=custom-model-id", deployment.Resource.ConnectionStringExpression.ValueExpression); 157Assert.Equal("{myAIFoundry.connectionString};Deployment=deployment1", deployment.Resource.ConnectionStringExpression.ValueExpression); 173var manifest = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource);
AzureAppConfigurationExtensionsTests.cs (6)
19appConfig.Resource.Outputs["appConfigEndpoint"] = "https://myendpoint"; 20Assert.Equal("https://myendpoint", await appConfig.Resource.ConnectionStringExpression.GetValueAsync(default)); 24var manifest = await GetManifestWithBicep(model, appConfig.Resource); 26var connectionStringResource = (IResourceWithConnectionString)appConfig.Resource; 123_ = appConfig.Resource.AddAsExistingResource(infra); 126var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
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 (6)
39_ = appServiceEnvironment.Resource.AddAsExistingResource(infra); 42var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 56var registry = appServiceEnvironment.Resource.ContainerRegistry; 71var registry = appServiceEnvironment.Resource.ContainerRegistry; 72Assert.Same(acr.Resource, registry); 94var exception = Assert.Throws<InvalidOperationException>(() => appServiceEnvironment.Resource.ContainerRegistry);
AzureAppServiceTests.cs (19)
46Assert.Same(env.Resource, target.ComputeEnvironment); 215project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 337Assert.NotNull(env.Resource.NameOutputReference); 338Assert.Equal("name", env.Resource.NameOutputReference.Name); 339Assert.Same(env.Resource, env.Resource.NameOutputReference.Resource); 377Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 378Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 521project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 557project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 593project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 628project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 702project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 733container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 757var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 763Assert.Equal(env.Resource, output.Resource); 871project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 902project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 934project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target);
AzureBicepProvisionerTests.cs (1)
71if (resourceEvent.Resource == entries.Resource)
AzureBicepResourceTests.cs (11)
28Assert.Equal("content", bicepResource.Resource.TemplateString); 29Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]); 30Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]); 93if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 114if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 132bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint"; 144bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43"; 190bicepResource.Resource.TempDirectory = Environment.CurrentDirectory; 192var manifest = await ManifestUtils.GetManifest(bicepResource.Resource); 225var annotation = bicepResource.Resource.Annotations.OfType<Aspire.Hosting.Pipelines.PipelineStepAnnotation>().FirstOrDefault(); 234Resource = bicepResource.Resource
AzureContainerAppEnvironmentExtensionsTests.cs (14)
42_ = containerAppEnvironment.Resource.AddAsExistingResource(infra); 45var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 72Assert.True(logAnalyticsWorkspace.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAnnotation)); 73Assert.Equal(lawName.Resource, existingAnnotation.Name); 74Assert.Equal(lawResourceGroup.Resource, existingAnnotation.ResourceGroup); 77Assert.True(containerAppEnvironment.Resource.TryGetLastAnnotation<AzureLogAnalyticsWorkspaceReferenceAnnotation>(out var workspaceRef)); 78Assert.Same(logAnalyticsWorkspace.Resource, workspaceRef.Workspace); 81var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 95var registry = containerAppEnvironment.Resource.ContainerRegistry; 110var registry = containerAppEnvironment.Resource.ContainerRegistry; 111Assert.Same(acr.Resource, registry); 133var exception = Assert.Throws<InvalidOperationException>(() => containerAppEnvironment.Resource.ContainerRegistry); 149var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 150var (_, vnetBicep) = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource);
AzureContainerAppsTests.cs (24)
112Assert.Same(env.Resource, target.ComputeEnvironment); 154Assert.Same(infra.Resource, target.ComputeEnvironment); 185Assert.Same(env.Resource, target?.ComputeEnvironment); 304.WithEnvironment("DATABASE_URL", pgContainer.Resource.UriExpression); 800var target = container.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget as AzureBicepResource; 1407var (manifest, bicep) = await GetManifestWithBicep(sql.Resource); 1524var managedEnvironment = (ContainerAppManagedEnvironment)env.Resource.AddAsExistingResource(infra); 1536var (manifest, bicep) = await GetManifestWithBicep(azResource.Resource); 1626Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 1627Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 2096var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 2160var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 2166Assert.Equal(env.Resource, output.Resource); 2249var containerRegistryInterface = env.Resource as IContainerRegistry; 2327var webappAcaTarget = webappAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 2329Assert.Same(aca.Resource, webappAcaTarget.ComputeEnvironment); 2333var webappServiceTarget = webappServiceResource.GetDeploymentTargetAnnotation(appService.Resource); 2335Assert.Same(appService.Resource, webappServiceTarget.ComputeEnvironment); 2339var containerAcaTarget = containerAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 2341Assert.Same(aca.Resource, containerAcaTarget.ComputeEnvironment); 2347var containerAppServiceAcaTarget = containerAppServiceResource.GetDeploymentTargetAnnotation(aca.Resource); 2351Assert.Null(webappAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 2352Assert.Null(webappServiceResource.GetDeploymentTargetAnnotation(aca.Resource)); 2353Assert.Null(containerAcaResource.GetDeploymentTargetAnnotation(appService.Resource));
AzureContainerRegistryTests.cs (20)
55Assert.Same(registryBuilder.Resource, annotation!.Registry); 65var (manifest, bicep) = await GetManifestWithBicep(acr.Resource); 124_ = acr.Resource.AddAsExistingResource(infra); 127var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 143var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 149Resource = acr.Resource 173var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 178Resource = acr.Resource 202var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 207Resource = acr.Resource 228var configAnnotations = acr.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 240var (_, bicep) = await GetManifestWithBicep(acr.Resource); 254var (_, bicep) = await GetManifestWithBicep(acr.Resource); 267var (_, bicep) = await GetManifestWithBicep(acr.Resource); 329await Assert.ThrowsAsync<ArgumentException>(async () => await GetManifestWithBicep(acr.Resource)); 340var (_, bicep) = await GetManifestWithBicep(acr.Resource); 356Assert.Same(acr.Resource, registryBuilder.Resource); 368Assert.NotNull(registryBuilder.Resource); 369Assert.IsType<AzureContainerRegistryResource>(registryBuilder.Resource);
AzureCosmosDBEmulatorFunctionalTests.cs (21)
47await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 53await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 93await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 97hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 98hb.AddAzureCosmosClient(db.Resource.Name); 99hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName); 174await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token); 182[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default) 185hb.AddAzureCosmosClient(cosmos1.Resource.Name); 222await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token); 231[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default) 234hb.AddAzureCosmosClient(cosmos2.Resource.Name); 292await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token); 296hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 297hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (64)
36var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(); 57var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 74var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 105Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 108Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 109Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 135Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 136Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 137Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 138Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 140Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression); 141Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression); 154((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos"); 161((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1"); 170((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1"); 205var manifest = await GetManifestWithBicep(model, cosmos.Resource); 255Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 256Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression); 257Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression); 259var manifest = await GetManifestWithBicep(cosmos.Resource); 274Assert.True(cosmos.Resource.IsContainer()); 276var csExpr = cosmos.Resource.ConnectionStringExpression; 282Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 352var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 363var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 365Assert.Equal("cosmos", cosmos.Resource.Name); 383cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 385var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 406var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 408Assert.Equal("cosmos", cosmos.Resource.Name); 446kv.Resource.SecretResolver = (secretRef, _) => 456var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 467var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 469Assert.Equal("cosmos", cosmos.Resource.Name); 487cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 489var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 508var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 510Assert.Equal("cosmos", cosmos.Resource.Name); 521var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 533Assert.True(cosmos.Resource.IsEmulator()); 534Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 545Assert.True(cosmos.Resource.IsEmulator()); 546Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 576_ = cosmosdb.Resource.AddAsExistingResource(infra); 579var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 606Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput); 607Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner); 609Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput); 610Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner); 613var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList(); 614Assert.Contains(cosmos.Resource, references); 615Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references); 626Assert.Contains(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 637Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 648cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 656Resource = cosmos.Resource, 682cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 691Resource = cosmos.Resource, 737var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 769var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 798var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 828var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer");
AzureDeployerTests.cs (49)
167var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 291Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 292Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 293Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 294Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 295Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 352Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 353Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 354Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 355Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 356Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 419Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 420Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 421Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 422Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 423Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 526Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 527Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 528Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 529Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 530Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/acaenv", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 533Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 534Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 535Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 536Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.Web/serverfarms/aasplan", aasEnv.Resource.Outputs["planId"]); 537Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]); 599var setValue = await param.Resource.GetValueAsync(default); 673var setValue = await param.Resource.GetValueAsync(default); 723Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 724Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 725Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 726Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 727Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 786Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 787Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 997Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 998Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 999Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 1000Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1001Assert.Equal("/subscriptions/test/resourceGroups/test-rg/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1004var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 1006Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1007Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1606Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1607Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1608Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default)); 1661Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1662Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1663Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEnvironmentResourceExtensionsTests.cs (4)
43Assert.Same(firstBuilder.Resource, secondBuilder.Resource); 88Assert.Equal(expectedLocation.Resource, resource.Location); 104Assert.Equal(expectedResourceGroup.Resource, resource.ResourceGroupName);
AzureEnvironmentResourceTests.cs (3)
113.WithParameter("pgdb", pgdb.Resource.ConnectionStringExpression); 161["kvUri"] = kv.Resource.VaultUri, 162["blob"] = blobs.Resource.ConnectionStringExpression,
AzureEventHubsConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray(); 39var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray();
AzureEventHubsExtensionsTests.cs (33)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 47await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 51await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 76await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 82hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 88hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 89hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 90hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 128await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 134hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 135hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 136hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 140hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None) + $";EntityPath={hubName};"; 166var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 185var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 204var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 223var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 242var endpoints = eventHubs.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 270var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 290var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, eventHubs.Resource); 323var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 521serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation); 546Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression); 547Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression); 548Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression); 561((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh"); 571((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1"); 587((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1"); 617Assert.True(eventHubs.Resource.IsEmulator()); 618Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation); 648_ = eventHubs.Resource.AddAsExistingResource(infra); 651var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureFunctionsTests.cs (9)
37Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 168Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 171Assert.Equal(storage.Resource, rel.Resource); 322var (_, bicep) = await GetManifestWithBicep(funcApp.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 631Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 651Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 735Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 738Assert.Equal(customStorage.Resource, rel.Resource); 769var annotation = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().SingleOrDefault();
AzureInfrastructureExtensionsTests.cs (3)
27var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 52var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 91var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
AzureKeyVaultConnectionPropertiesTests.cs (1)
17var properties = ((IResourceWithConnectionString)keyVault.Resource).GetConnectionProperties().ToArray();
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);
AzureKustoExtensionsTests.cs (9)
20kusto.Resource.Outputs["clusterUri"] = "https://kusto-cluster.eastus.kusto.windows.net"; 21Assert.Equal("https://kusto-cluster.eastus.kusto.windows.net", await kusto.Resource.ConnectionStringExpression.GetValueAsync(default)); 25var manifest = await GetManifestWithBicep(model, kusto.Resource); 27var connectionStringResource = (IResourceWithConnectionString)kusto.Resource; 64_ = kusto.Resource.AddAsExistingResource(infra); 67var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 91Assert.True(kusto.Resource.TryGetLastAnnotation<EmulatorResourceAnnotation>(out _)); 94var connectionStringExpr = kusto.Resource.ConnectionStringExpression; 98Assert.True(kusto.Resource.IsEmulator);
AzureLogAnalyticsWorkspaceExtensionsTests.cs (5)
17Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name); 18Assert.Equal("{logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId}", logAnalyticsWorkspace.Resource.WorkspaceId.ValueExpression); 20var appInsightsManifest = await AzureManifestUtils.GetManifestWithBicep(logAnalyticsWorkspace.Resource); 59_ = logAnalyticsWorkspace.Resource.AddAsExistingResource(infra); 62var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureManagedRedisConnectionPropertiesTests.cs (4)
17var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 44var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 78var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray(); 92var properties = ((IResourceWithConnectionString)redis.Resource).GetConnectionProperties().ToArray();
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);
AzureNatGatewayExtensionsTests.cs (7)
18Assert.Equal("mynat", natGw.Resource.Name); 19Assert.IsType<AzureNatGatewayResource>(natGw.Resource); 29Assert.DoesNotContain(natGw.Resource, builder.Resources); 68Assert.Same(natGw.Resource, subnet.Resource.NatGateway); 79Assert.Equal("mypip", pip.Resource.Name); 80Assert.IsType<AzurePublicIPAddressResource>(pip.Resource);
AzureNetworkSecurityGroupExtensionsTests.cs (12)
22Assert.Equal("web-nsg", nsg.Resource.Name); 23Assert.IsType<AzureNetworkSecurityGroupResource>(nsg.Resource); 33Assert.DoesNotContain(nsg.Resource, builder.Resources); 46var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 80var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 110var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource); 138var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 168var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 183Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 261var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 299var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource);
AzureOpenAIExtensionsTests.cs (3)
62var manifest = await GetManifestWithBicep(model, openai.Resource); 262_ = openAI.Resource.AddAsExistingResource(infra); 265var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
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);
AzurePrivateEndpointExtensionsTests.cs (18)
25Assert.Equal("pesubnet-blobs-pe", pe.Resource.Name); 26Assert.IsType<AzurePrivateEndpointResource>(pe.Resource); 27Assert.Same(subnet.Resource, pe.Resource.Subnet); 28Assert.Same(blobs.Resource, pe.Resource.Target); 42Assert.Empty(storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>()); 47var annotation = storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>().SingleOrDefault(); 63var annotation = storage.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>().SingleOrDefault(); 79var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource); 96var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource); 114Assert.DoesNotContain(pe.Resource, builder.Resources); 125Assert.IsAssignableFrom<IAzurePrivateEndpointTarget>(blobs.Resource); 127var target = (IAzurePrivateEndpointTarget)blobs.Resource; 140Assert.IsAssignableFrom<IAzurePrivateEndpointTarget>(queues.Resource); 142var target = (IAzurePrivateEndpointTarget)queues.Resource; 178var (_, pe1Bicep) = await AzureManifestUtils.GetManifestWithBicep(pe1.Resource); 179var (_, pe2Bicep) = await AzureManifestUtils.GetManifestWithBicep(pe2.Resource);
AzurePrivateEndpointLockdownTests.cs (11)
21var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 37var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource); 53var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 69var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 85var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 101var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 117var manifest = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 133var manifest = await AzureManifestUtils.GetManifestWithBicep(appConfig.Resource); 149var manifest = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 165var manifest = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 181var manifest = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource);
AzureProvisioningResourceExtensionsTests.cs (1)
48var manifest = await AzureManifestUtils.GetManifestWithBicep(resource1.Resource);
AzureProvisioningResourceTests.cs (6)
29Assert.Same(apiProject.Resource, containerAppResource.TargetResource); 45Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 63Assert.Same(apiProject.Resource, webSiteResource.TargetResource); 79Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 96Assert.Same(container.Resource, containerAppResource.TargetResource); 111Assert.Same(container.Resource, provisioningResource.TargetResource);
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 (11)
64Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 81Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 82Assert.Equal(storage.Resource, apiRoleAssignments.Target); 123Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 124Assert.Equal(storage.Resource, apiRoleAssignments.Target); 129Assert.True(api2.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var api2RoleAssignments)); 130Assert.Equal(storage.Resource, api2RoleAssignments.Target); 172context.Args.Add(blobs.Resource.ConnectionStringExpression); 178Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 180Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 181Assert.Equal(storage.Resource, apiRoleAssignments.Target);
AzureSearchExtensionsTests.cs (6)
30search.Resource.Outputs["connectionString"] = fakeConnectionString; 32var connectionStringResource = (IResourceWithConnectionString)search.Resource; 35Assert.Equal("search", search.Resource.Name); 41var manifest = await GetManifestWithBicep(model, search.Resource); 126_ = search.Resource.AddAsExistingResource(infra); 129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureServiceBusConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)serviceBus.Resource).GetConnectionProperties().ToArray(); 39var properties = ((IResourceWithConnectionString)serviceBus.Resource).GetConnectionProperties().ToArray();
AzureServiceBusExtensionsTests.cs (36)
39var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 64var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 96await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 98await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 102await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 104await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 130hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 137await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 138await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 142await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 145await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 165serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(), 188var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 266var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 618serviceBus.Resource.TryGetLastAnnotation<ContainerLifetimeAnnotation>(out var sbLifetimeAnnotation); 645Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression); 646Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression); 647Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression); 648Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression); 662((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb"); 668((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue"); 675((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic"); 682((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub"); 718serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint"; 720var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource; 722Assert.Equal("sb", serviceBus.Resource.Name); 728var manifest = await GetManifestWithBicep(model, serviceBus.Resource); 811hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 814await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 815await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 822await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 825await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 889Assert.True(serviceBus.Resource.IsEmulator()); 890Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation); 920_ = serviceBus.Resource.AddAsExistingResource(infra); 923var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureSignalRConnectionPropertiesTests.cs (1)
17var properties = ((IResourceWithConnectionString)signalr.Resource).GetConnectionProperties().ToArray();
AzureSignalREmulatorFunctionalTest.cs (8)
28Assert.True(signalR.Resource.IsEmulator); 30var connectionStringExpr = signalR.Resource.ConnectionStringExpression; 35Assert.Equal(connectionString, await ((IResourceWithConnectionString)signalR.Resource).GetConnectionStringAsync()); 60await app.ResourceNotifications.WaitForResourceAsync(signalR.Resource.Name, KnownResourceStates.Running, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 65await app.ResourceNotifications.WaitForResourceHealthyAsync(signalR.Resource.Name, cts.Token); 67await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 98var connectionString = await signalR.Resource.ConnectionStringExpression.GetValueAsync(default);
AzureSignalRExtensionsTests.cs (6)
24var (manifest, bicep) = await GetManifestWithBicep(signalr.Resource, skipPreparer: true); 46var (manifest, bicep) = await GetManifestWithBicep(signalr.Resource, skipPreparer: true); 65Assert.True(signalR.Resource.IsEmulator()); 66Assert.Contains(signalR.Resource.Annotations, a => a is EmulatorResourceAnnotation); 96_ = signalR.Resource.AddAsExistingResource(infra); 99var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureSqlDatabaseConnectionPropertiesTests.cs (2)
94var resource = sqlServer.Resource; 145var resource = database.Resource;
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);
AzureStorageConnectionPropertiesTests.cs (3)
18var properties = ((IResourceWithConnectionString)blobs.Resource).GetConnectionProperties().ToArray(); 36var properties = ((IResourceWithConnectionString)queues.Resource).GetConnectionProperties().ToArray(); 54var properties = ((IResourceWithConnectionString)tables.Resource).GetConnectionProperties().ToArray();
AzureStorageEmulatorFunctionalTests.cs (23)
49await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 51await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 55await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token); 56await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token); 57await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token); 59await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 94await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 96await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 100await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token); 102await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 137await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 139await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 143await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token); 145await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 176hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 177hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 178hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 179hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 191await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token); 223await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token); 227hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 263await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token); 267hb.Configuration["ConnectionStrings:QueueConnection"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
AzureStorageExtensionsTests.cs (92)
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); 891Assert.True(storage.Resource.IsEmulator()); 892Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation); 922_ = storage.Resource.AddAsExistingResource(infra); 925var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureStoragePrivateEndpointLockdownTests.cs (4)
29var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 50var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 67var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 89var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
AzureUserAssignedIdentityTests.cs (7)
124Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 171Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 227Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 308Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 309Assert.Same(identity.Resource, identityAnnotation2.IdentityResource); 362_ = userAssignedIdentity.Resource.AddAsExistingResource(infra); 365var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureVirtualNetworkExtensionsTests.cs (62)
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(); 172Assert.Equal("mysubnet", subnet.Resource.Name); 173Assert.Equal("mysubnet", subnet.Resource.SubnetName); 174Assert.Null(subnet.Resource.AddressPrefix); 175Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 176Assert.Same(vnet.Resource, subnet.Resource.Parent); 188Assert.Equal("mysubnet", subnet.Resource.Name); 189Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 190Assert.Null(subnet.Resource.AddressPrefix); 191Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 203var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 218var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 232Assert.NotNull(subnet.Resource.NetworkSecurityGroup); 233Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name); 234Assert.Single(subnet.Resource.NetworkSecurityGroup.SecurityRules); 248Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 249Assert.Single(nsg.Resource.SecurityRules); 263var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 280var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 297var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 313var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 327var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 342var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 357var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 373var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 386var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 404var vnetManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 405var nsgManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource.Subnets[0].NetworkSecurityGroup!); 423var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 483var 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 (43)
23await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource); 55.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1")) 59await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource); 73Assert.True(bicep0.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 78Assert.Equal(connectionStringResource.Resource, r.Resource); 83Assert.Equal(param.Resource, r.Resource); 88Assert.Equal(container.Resource, r.Resource); 110await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 111var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 114await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 115var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 137await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 138var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 141await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 142var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 154bicep0.Resource.Scope = new("rg0"); 158bicep1.Resource.Scope = new("rg1"); 162await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 163await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 164var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 168await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 169await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 170var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 182bicep0.Resource.Scope = new("rg0"); 186bicep1.Resource.Scope = new("rg0"); 190await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 191await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 192var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 196await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 197await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 198var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 208var bicep1 = builder.AddBicepTemplateString("test1", "param name string").Resource; 209var bicep2 = builder.AddBicepTemplateString("test2", "param name string").Resource; 229var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 254var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 282var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 314var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 336var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 354var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 372var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 387var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 408var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 441var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
ExistingAzureResourceExtensionsTests.cs (7)
22Assert.False(serviceBus.Resource.IsExisting()); 36Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 57Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 75Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 96Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 116Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 134Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation));
ExistingAzureResourceTests.cs (28)
23var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 40var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 57var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 77var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource); 97var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 146var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource); 163var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 180var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 197var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource); 214var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 235var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 269var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 303var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 319var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 371var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 386var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 402var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource); 445var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 466var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 482var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource); 499var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (10)
22var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 42var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 62var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 82var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 102var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 120var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 136var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 154var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 200var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource); 218var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
PublicApiTests\EventHubsPublicApiTests.cs (2)
21var parent = new AzureEventHubResource("hub", "event-hub", resource.Resource); 40var parent = new AzureEventHubResource("hub", "event-hub", resource.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)
AzureWebPubSubExtensions.cs (4)
180if (!builder.Resource.Hubs.TryGetValue(hubName, out hubResource)) 182hubResource = new AzureWebPubSubHubResource(name, hubName, builder.Resource); 183builder.Resource.Hubs[hubName] = hubResource; 236builder.Resource.EventHandlers.Add((urlExpression, userEventPattern, systemEvents, authSettings));
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Containers.Tests (50)
ContainerResourceBuilderTests.cs (17)
16Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 24Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 25Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 33container.Resource.Annotations.RemoveAt(0); 36Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 37Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 45container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" }); 48Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image); 49Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag); 57Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 65Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry); 73Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256); 151var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 163var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 176var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 212var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single(); 220var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
ContainerResourceTests.cs (3)
125var args = await ArgumentEvaluator.GetArgumentListAsync(c2.Resource); 135Assert.False(c2.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 137var manifest = await ManifestUtils.GetManifest(c2.Resource);
WithDockerfileTests.cs (30)
103Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 107Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 127Assert.True(dockerFile.Resource.TryGetLastAnnotation<ContainerImageAnnotation>(out var containerImageAnnotation)); 131Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 135Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 149Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 153Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 170Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 174Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 181Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 272var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 319var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 365var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 410var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 637var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 652var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 668var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 683var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 699var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 714var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 730var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 745var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 769var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 773var stepsAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 778Resource = container.Resource 796Resource = container.Resource, 820var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 828Resource = container.Resource, 852var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 870var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
Aspire.Hosting.DevTunnels (11)
DevTunnelResourceBuilderExtensions.cs (11)
273foreach (var endpoint in resourceBuilder.Resource.GetEndpoints()) 336tunnelBuilder.Resource.Options.AllowAnonymous = true; 356return tunnelBuilder.GetEndpoint(resourceBuilder.Resource, endpointName); 372var portResource = tunnelBuilder.Resource.Ports 377return CreateEndpointReferenceWithError(tunnelBuilder.Resource, resource, endpointName); 394var portResource = tunnelBuilder.Resource.Ports 400return CreateEndpointReferenceWithError(tunnelBuilder.Resource, targetEndpointReference.Resource, targetEndpointReference.EndpointName); 451foreach (var port in tunnelResource.Resource.Ports.Where(p => p.TargetEndpoint.Resource == targetResource.Resource)) 453var serviceName = targetResource.Resource.Name; 496var tunnel = tunnelBuilder.Resource;
Aspire.Hosting.DevTunnels.Tests (14)
DevTunnelResourceBuilderExtensionsTests.cs (14)
26var tunnelPort = tunnel.Resource.Ports.FirstOrDefault(); 31var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: builder.Services.BuildServiceProvider()).DefaultTimeout(); 45Assert.True(tunnel.Resource.Options.AllowAnonymous); 55Assert.Equal("custom-id", tunnel.Resource.TunnelId); 68Assert.Single(tunnel.Resource.Ports); 69var port = tunnel.Resource.Ports.First(); 83var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 86Assert.Equal(target.Resource, tunnelEndpoint.Resource); 103Assert.Equal(target.Resource, tunnelEndpoint.Resource); 121Assert.Equal(target.Resource, tunnelEndpoint.Resource); 135var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent"); 175var endpointRef = tunnel.GetEndpoint(target.Resource, "https"); 195var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http"); 196var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https");
Aspire.Hosting.Docker (12)
DockerComposeEnvironmentExtensions.cs (6)
70configure(builder.Resource); 86builder.Resource.ConfigureComposeFile += configure; 105builder.Resource.ConfigureEnvFile += configure; 119builder.Resource.DashboardEnabled = enabled; 136builder.Resource.DashboardEnabled = true; 138configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized"));
DockerComposeEnvironmentResource.cs (2)
74var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 140var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard
DockerComposeInfrastructure.cs (2)
41if (environment.DashboardEnabled && environment.Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard) 63if (environment.DashboardEnabled && environment.Dashboard?.Resource.OtlpGrpcEndpoint is EndpointReference otlpGrpcEndpoint)
DockerComposePublishingContext.cs (1)
77IEnumerable<IResource> resources = environment.Dashboard?.Resource is IResource r
DockerComposeServiceExtensions.cs (1)
78return builder.Resource.AsEnvironmentPlaceholder(dockerComposeService);
Aspire.Hosting.Docker.Tests (25)
DockerComposePublisherTests.cs (2)
79.WithArgs("--cs", cs.Resource) 293var parmeters = paramNames.Select(name => builder.AddParameter(name).Resource).ToArray();
DockerComposeTests.cs (23)
42Assert.Same(composeEnv.Resource, container.Resource.GetDeploymentTargetAnnotation()?.ComputeEnvironment); 224var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 465var containerImageReference = new ContainerImageReference(project.Resource); 490var containerImageReference = new ContainerImageReference(project.Resource); 513var containerImageReference = new ContainerImageReference(project.Resource); 537var containerImageReference = new ContainerImageReference(project.Resource); 565var containerImageReference = new ContainerImageReference(project.Resource); 590var containerImageReference = new ContainerImageReference(container.Resource); 605acr.Resource.Outputs["loginServer"] = "myacr.azurecr.io"; 617var containerImageReference = new ContainerImageReference(project.Resource); 829var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 831Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 835var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 837Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 841var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 843Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 847var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 849Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 852Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 853Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 854Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 855Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource));
Aspire.Hosting.DotnetTool.Tests (28)
AddDotnetToolTests.cs (22)
20Assert.Equal("mytool", tool.Resource.Name); 21Assert.IsType<DotnetToolResource>(tool.Resource); 30var annotation = Assert.Single(tool.Resource.Annotations.OfType<DotnetToolAnnotation>()); 64var annotation = Assert.Single(tool.Resource.Annotations.OfType<ResourceIconAnnotation>()); 76var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 96var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 118var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 139var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 162var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 187var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 209var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 230var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 255var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 280var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 291var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 302var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 314var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 325var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 336var annotation = tool.Resource.Annotations.OfType<DotnetToolAnnotation>().Single(); 337tool.Resource.Annotations.Remove(annotation); 341var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 357var manifest = await ManifestUtils.GetManifest(tool.Resource).DefaultTimeout();
DotnetToolFunctionalTests.cs.cs (6)
23await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 24var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 28Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState)); 46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 47var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 50Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState));
Aspire.Hosting.Garnet (1)
GarnetBuilderExtensions.cs (1)
106var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false);
Aspire.Hosting.Garnet.Tests (21)
AddGarnetTests.cs (10)
93var manifest = await ManifestUtils.GetManifest(garnet.Resource); 133var manifest = await ManifestUtils.GetManifest(garnet.Resource); 169var manifest = await ManifestUtils.GetManifest(garnet.Resource); 214var volumeAnnotation = garnet.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 239var volumeAnnotation = garnet.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 254Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 278Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 286var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 309Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 326Assert.True(garnet.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations));
GarnetFunctionalTests.cs (11)
40await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 42await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 46await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 75hb.Configuration[$"ConnectionStrings:{garnet.Resource.Name}"] = await garnet.Resource.ConnectionStringExpression.GetValueAsync(default); 77hb.AddRedisClient(garnet.Resource.Name); 155hb.Configuration[$"ConnectionStrings:{garnet1.Resource.Name}"] = $"{await garnet1.Resource.ConnectionStringExpression.GetValueAsync(default)}"; 207hb.Configuration[$"ConnectionStrings:{garnet2.Resource.Name}"] = $"{await garnet2.Resource.ConnectionStringExpression.GetValueAsync(default)}";
Aspire.Hosting.GitHub.Models (12)
GitHubModelsExtensions.cs (12)
41defaultApiKeyParameter.Resource.Description = """ 46defaultApiKeyParameter.Resource.EnableDescriptionMarkdown = true; 47var resource = new GitHubModelResource(name, model, organization?.Resource, defaultApiKeyParameter.Resource); 119if (!apiKey.Resource.Secret) 125if (builder.Resource.DefaultKeyParameter == builder.Resource.Key) 127builder.ApplicationBuilder.Resources.Remove(builder.Resource.Key); 130builder.Resource.Key = apiKey.Resource; 160var healthCheckKey = $"{builder.Resource.Name}_check"; 182var resource = builder.Resource;
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();
GitHubModelsFunctionalTests.cs (4)
41await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 43await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 47await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.JavaScript (23)
JavaScriptHostingExtensions.cs (23)
244if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 246var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 266if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 267resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 393if (c.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 423if (c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 434if (c.Resource.TryGetLastAnnotation<JavaScriptBuildScriptAnnotation>(out var buildCommand)) 468if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 667builder.Resource.ViteConfigPath = configPath; 728var workingDirectory = resource.Resource.WorkingDirectory; 754if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 776File.Exists(Path.Combine(resource.Resource.WorkingDirectory, "package-lock.json")) 791var workingDirectory = resource.Resource.WorkingDirectory; 865var workingDirectory = resource.Resource.WorkingDirectory; 940var installerName = $"{resource.Resource.Name}-installer"; 949resource.Resource.Annotations.OfType<WaitAnnotation>() 950.Where(w => w.Resource == existingResource.Resource) 952.ForEach(w => resource.Resource.Annotations.Remove(w)); 960var installer = new JavaScriptInstallerResource(installerName, resource.Resource.WorkingDirectory); 962.WithParentRelationship(resource.Resource) 970if (!resource.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager) || 971!resource.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 978.WithWorkingDirectory(resource.Resource.WorkingDirectory)
Aspire.Hosting.JavaScript.Tests (33)
AddJavaScriptAppTests.cs (5)
27await ManifestUtils.GetManifest(yarnApp.Resource, tempDir.Path); 42var dockerBuildAnnotation = yarnApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 45var containerFilesSource = yarnApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 70await ManifestUtils.GetManifest(pnpmApp.Resource, tempDir.Path); 106await ManifestUtils.GetManifest(pnpmApp.Resource, tempDir.Path);
AddNodeAppTests.cs (7)
23var manifest = await ManifestUtils.GetManifest(nodeApp.Resource); 55manifest = await ManifestUtils.GetManifest(npmApp.Resource); 103await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 148var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 151Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 172await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 217await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path);
AddViteAppTests.cs (10)
31var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 70var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 73var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 97var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 117var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 137var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 162var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 180var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 204var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path); 222var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, tempDir.Path);
NodeAppFixture.cs (1)
109using var client = App.CreateHttpClient(NodeAppBuilder!.Resource.Name, endpointName: "http");
NodeFunctionalTests.cs (2)
25using var nodeClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NodeAppBuilder!.Resource.Name, "http"); 37using var npmClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NpmAppBuilder!.Resource.Name, "http");
PackageInstallationTests.cs (8)
465Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 477Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 492Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 498Assert.True(app2.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out installCommand)); 514Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 530Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 545Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)); 560Assert.True(app.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand));
Aspire.Hosting.Kafka.Tests (17)
AddKafkaTests.cs (7)
82var manifest = await ManifestUtils.GetManifest(kafka.Resource); 122var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 124var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 140var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 142var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 191var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 192var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource);
KafkaFunctionalTests.cs (10)
42await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 44await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 48await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 75hb.Configuration[$"ConnectionStrings:{kafka.Resource.Name}"] = await kafka.Resource.ConnectionStringExpression.GetValueAsync(default); 171hb.Configuration[$"ConnectionStrings:{kafka1.Resource.Name}"] = await kafka1.Resource.ConnectionStringExpression.GetValueAsync(default); 221hb.Configuration[$"ConnectionStrings:{kafka2.Resource.Name}"] = await kafka2.Resource.ConnectionStringExpression.GetValueAsync(default);
Aspire.Hosting.Keycloak (6)
KeycloakResourceBuilderExtensions.cs (6)
61var passwordParameter = adminPassword?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 63var resource = new KeycloakResource(name, adminUsername?.Resource, passwordParameter); 254builder.Resource.EnabledFeatures.Add(feature); 255builder.Resource.DisabledFeatures.Remove(feature); 274builder.Resource.DisabledFeatures.Add(feature); 275builder.Resource.EnabledFeatures.Remove(feature);
Aspire.Hosting.Keycloak.Tests (7)
KeycloakPublicApiTests.cs (2)
165var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single(); 192var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single();
KeycloakResourceBuilderTests.cs (5)
65var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 80var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 95Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 105Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 114var manifest = await ManifestUtils.GetManifest(keycloak.Resource);
Aspire.Hosting.Kubernetes (1)
KubernetesEnvironmentExtensions.cs (1)
64configure(builder.Resource);
Aspire.Hosting.Kubernetes.Tests (14)
KubernetesEnvironmentResourceTests.cs (13)
108var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 151var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 153Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 157var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 159Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 163var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 165Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 169var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 171Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 174Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 175Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 176Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 177Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource));
KubernetesPublisherTests.cs (1)
37.WithArgs("--cs", cs.Resource);
Aspire.Hosting.Maui (18)
MauiAndroidExtensions.cs (4)
50var name = $"{builder.Resource.Name}-android-device"; 148var androidDeviceResource = new MauiAndroidDeviceResource(name, builder.Resource); 232var name = $"{builder.Resource.Name}-android-emulator"; 333var androidEmulatorResource = new MauiAndroidEmulatorResource(name, builder.Resource);
MauiiOSExtensions.cs (4)
54var name = $"{builder.Resource.Name}-ios-device"; 155var iOSDeviceResource = new MauiiOSDeviceResource(name, builder.Resource); 250var name = $"{builder.Resource.Name}-ios-simulator"; 341var iOSSimulatorResource = new MauiiOSSimulatorResource(name, builder.Resource);
MauiMacCatalystExtensions.cs (2)
43var name = $"{builder.Resource.Name}-maccatalyst"; 83var macCatalystResource = new MauiMacCatalystPlatformResource(name, builder.Resource);
MauiOtlpExtensions.cs (4)
59var platformResource = builder.Resource; 64if (!parentBuilder.Resource.TryGetLastAnnotation<OtlpDevTunnelConfigurationAnnotation>(out var tunnelConfig)) 68parentBuilder.Resource.Annotations.Add(tunnelConfig); 94var tunnelName = parentBuilder.Resource.Name;
MauiPlatformHelper.cs (2)
25var projectPath = builder.Resource.ProjectPath; 136var resource = resourceBuilder.Resource;
MauiWindowsExtensions.cs (2)
43var name = $"{builder.Resource.Name}-windows"; 83var windowsResource = new MauiWindowsPlatformResource(name, builder.Resource);
Aspire.Hosting.Maui.Tests (39)
MauiPlatformExtensionsTests.cs (39)
72Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name); 73var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource); 74Assert.Same(maui.Resource, resourceWithParent.Parent); 75Assert.IsType(config.ExpectedResourceType, platform.Resource); 101Assert.Equal(customName, platform.Resource.Name); 152var resource = platform.Resource; 188Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource); 214Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name); 215var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource); 216var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource); 218Assert.Same(maui.Resource, parent1.Parent); 250.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None); 280androidEmulator.Resource, 312Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name); 313Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource); 314Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource); 339Assert.Equal("my-device", device.Resource.Name); 340Assert.IsType<MauiAndroidDeviceResource>(device.Resource); 365Assert.Equal("my-emulator", emulator.Resource.Name); 366Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource); 391Assert.Equal("my-device", device.Resource.Name); 392Assert.IsType<MauiiOSDeviceResource>(device.Resource); 417Assert.Equal("my-simulator", simulator.Resource.Name); 418Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 445Assert.NotEqual(device.Resource.Name, simulator.Resource.Name); 446Assert.IsType<MauiiOSDeviceResource>(device.Resource); 447Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 473resource = maui.AddiOSDevice().Resource; 477resource = maui.AddiOSSimulator().Resource; 509iosSimulator.Resource, 540resource = maui.AddAndroidDevice().Resource; 544resource = maui.AddAndroidEmulator().Resource; 578var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault(); 609var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList(); 643platform.Resource, 653var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single();
Aspire.Hosting.Milvus (5)
MilvusBuilderExtensions.cs (5)
49var apiKeyParameter = apiKey?.Resource ?? 103builder.Resource.AddDatabase(name, databaseName); 104var milvusDatabaseResource = new MilvusDatabaseResource(name, databaseName, builder.Resource); 135containerName ??= $"{builder.Resource.Name}-attu"; 142.WithEnvironment(context => ConfigureAttuContainer(context, builder.Resource))
Aspire.Hosting.Milvus.Tests (18)
AddMilvusTests.cs (5)
85var connectionStringResource = milvus.Resource as IResourceWithConnectionString; 109var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 120var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 136var serverManifest = await ManifestUtils.GetManifest(milvus.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 137var dbManifest = await ManifestUtils.GetManifest(db1.Resource);
MilvusFunctionalTests.cs (13)
30await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus.Resource.Name); 35hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 37hb.AddMilvusClient(db.Resource.Name); 81var password = milvus1.Resource.ApiKeyParameter.Value; 107await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus1.Resource.Name); 114hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 116hb.AddMilvusClient(db1.Resource.Name); 155await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus2.Resource.Name); 162hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 164hb.AddMilvusClient(db2.Resource.Name);
Aspire.Hosting.MongoDB (6)
MongoDBBuilderExtensions.cs (6)
59var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 61var mongoDBContainer = new MongoDBServerResource(name, userName?.Resource, passwordParameter); 112builder.Resource.AddDatabase(name, databaseName); 113var mongoDBDatabase = new MongoDBDatabaseResource(name, databaseName, builder.Resource); 158containerName ??= $"{builder.Resource.Name}-mongoexpress"; 164.WithEnvironment(context => ConfigureMongoExpressContainer(context, builder.Resource))
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);
ConnectionPropertiesTests.cs (1)
105var manifest = await ManifestUtils.GetManifest(app.Resource);
MongoDbFunctionalTests.cs (20)
52await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 58await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 60await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 86hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 88hb.AddMongoDBClient(db.Resource.Name); 122var password = mongodb1.Resource.PasswordParameter!.Value; 151hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 153hb.AddMongoDBClient(db1.Resource.Name); 196hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 198hb.AddMongoDBClient(db2.Resource.Name); 308hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 310hb.AddMongoDBClient(db.Resource.Name); 399hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 401hb.AddMongoDBClient(db.Resource.Name);
Aspire.Hosting.MySql (6)
MySqlBuilderExtensions.cs (6)
39var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 119var mySqlDatabase = new MySqlDatabaseResource(name, databaseName, builder.Resource); 121builder.Resource.AddDatabase(mySqlDatabase); 205builder.Resource.PasswordParameter = password.Resource; 273var configStoreFilename = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-config.user.inc.php", tempConfigFile);
Aspire.Hosting.MySql.Tests (62)
AddMySqlTests.cs (21)
23Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 33Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 160var mySqlManifest = await ManifestUtils.GetManifest(mysql.Resource); 161var dbManifest = await ManifestUtils.GetManifest(db.Resource); 199var serverManifest = await ManifestUtils.GetManifest(mysql.Resource); 251Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); 283string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';"; 284string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';"; 324Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys); 325Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values); 327Assert.Equal("customers1", db1.Resource.DatabaseName); 328Assert.Equal("customers2", db2.Resource.DatabaseName); 330Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 331Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 345Assert.Equal("imports", db1.Resource.DatabaseName); 346Assert.Equal("imports", db2.Resource.DatabaseName); 348Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 349Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
ConnectionPropertiesTests.cs (1)
92var manifest = await ManifestUtils.GetManifest(app.Resource);
MySqlFunctionalTests.cs (40)
49await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 55await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 57await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 91[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 94hb.AddMySqlDataSource(db.Resource.Name); 134var password = mysql1.Resource.PasswordParameter.Value; 168[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 171hb.AddMySqlDataSource(db1.Resource.Name); 238[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 241hb.AddMySqlDataSource(db2.Resource.Name); 341[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 344hb.AddMySqlDataSource(db.Resource.Name); 427[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 430hb.AddMySqlDataSource(db.Resource.Name); 498[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 501hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name); 656hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 658hb.AddMySqlDataSource(newDb.Resource.Name); 664await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 732hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 734hb.AddMySqlDataSource(newDb.Resource.Name); 740await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token); 792hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 793hb.AddKeyedMySqlDataSource(db.Resource.Name); 802await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 804var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name); 835hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 836hb.AddMySqlDataSource(newDb.Resource.Name); 841await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
Aspire.Hosting.Nats (2)
NatsBuilderExtensions.cs (2)
54var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 56var nats = new NatsServerResource(name, userName?.Resource, passwordParameter);
Aspire.Hosting.Nats.Tests (34)
AddNatsTests.cs (12)
20Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", nats.Resource.PasswordParameter!.Default?.GetType().FullName); 30Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", nats.Resource.PasswordParameter!.Default?.GetType().FullName); 41Assert.NotNull(nats.Resource.PasswordParameter); 43Assert.False(string.IsNullOrEmpty(nats.Resource.PasswordParameter!.Value)); 71Assert.NotNull(nats.Resource.UserNameParameter); 72Assert.NotNull(nats.Resource.PasswordParameter); 75Assert.Equal("usr", nats.Resource.UserNameParameter!.Value); 76Assert.Equal("password", nats.Resource.PasswordParameter!.Value); 193var manifest = await ManifestUtils.GetManifest(nats.Resource); 230var manifest = await ManifestUtils.GetManifest(nats.Resource); 258manifest = await ManifestUtils.GetManifest(nats.Resource); 285manifest = await ManifestUtils.GetManifest(nats.Resource);
ConnectionPropertiesTests.cs (1)
66var manifest = await ManifestUtils.GetManifest(app.Resource);
NatsFunctionalTests.cs (19)
35await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 40hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 81await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 86var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 87hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString; 124await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 129var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 134hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString; 187await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name); 193hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default); 236await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name); 242hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default); 347await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 349await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 353await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 355await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
NatsPublicApiTests.cs (2)
178var action = () => new NatsServerResource(name, user?.Resource, password?.Resource);
Aspire.Hosting.OpenAI (13)
OpenAIExtensions.cs (13)
37defaultApiKeyParameter.Resource.Description = """ 41defaultApiKeyParameter.Resource.EnableDescriptionMarkdown = true; 43var resource = new OpenAIResource(name, defaultApiKeyParameter.Resource); 108var resource = new OpenAIModelResource(name, model, builder.Resource); 147builder.Resource.Endpoint = endpoint; 159if (!apiKey.Resource.Secret) 165if (builder.Resource.DefaultKeyParameter == builder.Resource.Key) 167builder.ApplicationBuilder.Resources.Remove(builder.Resource.Key); 170builder.Resource.Key = apiKey.Resource; 200var healthCheckKey = $"{builder.Resource.Name}_check"; 222var resource = builder.Resource;
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)
OracleDatabaseBuilderExtensions.cs (3)
37var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 87builder.Resource.AddDatabase(name, databaseName); 88var oracleDatabase = new OracleDatabaseResource(name, databaseName, builder.Resource);
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);
ConnectionPropertiesTests.cs (1)
88var oracleManifest = await ManifestUtils.GetManifest(app.Resource);
OracleFunctionalTests.cs (20)
51hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 53hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 99var password = oracle1.Resource.PasswordParameter.Value; 137hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 139hb.AddOracleDatabaseDbContext<TestDbContext>(db1.Resource.Name); 198hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 200hb.AddOracleDatabaseDbContext<TestDbContext>(db2.Resource.Name); 305hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 307hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 402hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 404hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 465await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 467await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 471await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 473await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
OraclePublicApiTests.cs (2)
208var parent = builder.Resource; 227var parent = builder.Resource;
Aspire.Hosting.Orleans (7)
OrleansServiceExtensions.cs (5)
55orleansServiceBuilder.ClusterId = clusterId.Resource; 83orleansServiceBuilder.ServiceId = serviceId.Resource; 131=> WithGrainStorage(orleansServiceBuilder, provider.Resource.Name, provider); 183=> WithStreaming(orleansServiceBuilder, provider.Resource.Name, provider); 299=> WithGrainDirectory(orleansServiceBuilder, provider.Resource.Name, provider);
ProviderConfiguration.cs (2)
21var serviceKey = resourceBuilder.Resource.Name; 22var resourceType = resourceBuilder.Resource.GetType().Name;
Aspire.Hosting.PostgreSQL (14)
PostgresBuilderExtensions.cs (14)
55var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 57var postgresServer = new PostgresServerResource(name, userName?.Resource, passwordParameter); 152var postgresDatabase = new PostgresDatabaseResource(name, databaseName, builder.Resource); 154builder.Resource.AddDatabase(postgresDatabase.Name, postgresDatabase.DatabaseName); 229pgAdminContainerBuilder.WithRelationship(builder.Resource, "PgAdmin"); 322pgwebContainerBuilder.WithRelationship(builder.Resource, "PgWeb"); 373containerName ??= $"{builder.Resource.Name}-mcp"; 391context.EnvironmentVariables[PostgresMcpDatabaseUriEnvVarName] = builder.Resource.UriExpression; 399mcpContainerBuilder.WithParentRelationship(builder.Resource); 556builder.Resource.PasswordParameter = password.Resource; 572builder.Resource.UserNameParameter = userName.Resource; 676if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation)
Aspire.Hosting.PostgreSQL.Tests (83)
AddPostgresTests.cs (35)
21Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check"); 31Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 41Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 157var connectionStringResource = postgres.Resource as IResourceWithConnectionString; 162Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 250var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 251var dbManifest = await ManifestUtils.GetManifest(db.Resource); 294var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 320serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 346serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 489Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString()); 497Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString()); 501Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString()); 509Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString()); 557Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents); 564Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents); 601Assert.Equal("customers1", db1.Resource.DatabaseName); 602Assert.Equal("customers2", db2.Resource.DatabaseName); 604Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 605Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 619Assert.Equal("imports", db1.Resource.DatabaseName); 620Assert.Equal("imports", db2.Resource.DatabaseName); 622Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 623Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 668var connectionString = await postgres.Resource.GetConnectionStringAsync(); 682var connectionString = await postgres.Resource.GetConnectionStringAsync(); 684Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 697var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 698var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 759var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 786var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 802var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 815var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 840var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 867var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
PostgrePublicApiTests.cs (3)
257var postgresParentResource = new PostgresServerResource("postgresServer", userName, builder.Resource); 277var postgresParentResource = new PostgresServerResource("postgresServer", userName, builder.Resource); 310var action = () => new PostgresServerResource(name, userName, builder.Resource);
PostgresFunctionalTests.cs (45)
52await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 61await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 64await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 86await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name); 88var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http"); 119[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 122hb.AddNpgsqlDataSource(db.Resource.Name); 128await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 165var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http"); 167await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 233await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 242[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 245hb.AddNpgsqlDataSource(db1.Resource.Name); 296await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 305[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default) 308hb.AddNpgsqlDataSource(db2.Resource.Name); 400[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 403hb.AddNpgsqlDataSource(db.Resource.Name); 409await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 486[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 489hb.AddNpgsqlDataSource(db.Resource.Name); 495await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 614hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 616hb.AddNpgsqlDataSource(newDb.Resource.Name); 622await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 656hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 658hb.AddNpgsqlDataSource(newDb.Resource.Name); 664await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 726hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 728hb.AddNpgsqlDataSource(newDb.Resource.Name); 734await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 786hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 787hb.AddKeyedNpgsqlDataSource(db.Resource.Name); 796await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 798var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
Aspire.Hosting.Python (33)
PythonAppResourceBuilderExtensions.cs (33)
472if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 474var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 489var resourceToSetup = resourceBuilder.Resource; 860: Path.GetFullPath(virtualEnvironmentPath, builder.Resource.WorkingDirectory); 865if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 919if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 932programPath = Path.GetFullPath(entrypoint, builder.Resource.WorkingDirectory); 937programPath = builder.Resource.WorkingDirectory; 945if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var annotation) || annotation.VirtualEnvironment is null) 953: Path.GetFullPath(annotation.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1045if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1140if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1145pythonEnv = builder.Resource.Annotations.OfType<PythonEnvironmentAnnotation>().Last(); 1152var workingDirectory = builder.Resource.WorkingDirectory; 1296var installerName = $"{builder.Resource.Name}-installer"; 1313var installer = new PythonInstallerResource(installerName, builder.Resource); 1315.WithParentRelationship(builder.Resource) 1330if (!builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager) || 1331!builder.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installCommand)) 1340.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1365if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1373: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1376var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1386var venvCreator = new PythonVenvCreatorResource(venvCreatorName, builder.Resource, venvPath); 1404.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1405.WithParentRelationship(builder.Resource) 1414var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1419builder.ApplicationBuilder.Resources.Remove(venvCreatorBuilder.Resource); 1445var shouldSkipInstallerWait = installerBuilder?.Resource.TryGetLastAnnotation<ExplicitStartupAnnotation>(out _) ?? false; 1484var isUsingUv = builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var pkgMgr) && 1494if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1508: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1524if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var existing))
Aspire.Hosting.Python.Tests (36)
AddPythonAppTests.cs (34)
38var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 76var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 136var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 733Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 737Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 757Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 864Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 868Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 895Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 899Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1175var initialCommand = pythonBuilder.Resource.Command; 1180var newCommand = pythonBuilder.Resource.Command; 1398var resource = pythonApp.Resource; 1436var resource = pythonApp.Resource; 1476var resource = pythonApp.Resource; 1513var resource = pythonApp.Resource; 1544var resource = pythonApp.Resource; 1567pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1589pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1607pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1863Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 1867Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1897Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 1901Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1934Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 1938Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1958Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _)); 2064Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2099Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2103Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2139Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2169Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2270Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2302Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
AddUvicornAppTests.cs (2)
24Assert.IsType<UvicornAppResource>(uvicornApp.Resource); 25Assert.Equal("uvicorn-app", uvicornApp.Resource.Name);
Aspire.Hosting.Qdrant (5)
QdrantBuilderExtensions.cs (5)
46var apiKeyParameter = apiKey?.Resource ?? 158var resource = (IResourceWithConnectionString)qdrantResource.Resource; 164var injectionAnnotation = builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var annotation) ? annotation : null; 172context.EnvironmentVariables[$"{connectionStringName}"] = qdrantResource.Resource.ConnectionStringExpression; 175context.EnvironmentVariables[$"{connectionStringName}_{QdrantServerResource.HttpEndpointName}"] = qdrantResource.Resource.HttpConnectionStringExpression;
Aspire.Hosting.Qdrant.Tests (21)
AddQdrantTests.cs (7)
24Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 34Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 158var connectionStringResource = qdrant.Resource as IResourceWithConnectionString; 187var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 199var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 214var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 252var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes
QdrantFunctionalTests.cs (14)
45[$"ConnectionStrings:{qdrant.Resource.Name}"] = await qdrant.Resource.ConnectionStringExpression.GetValueAsync(default) 48hb.AddQdrantClient(qdrant.Resource.Name); 131[$"ConnectionStrings:{qdrant1.Resource.Name}"] = await qdrant1.Resource.ConnectionStringExpression.GetValueAsync(default) 134hb.AddQdrantClient(qdrant1.Resource.Name); 177[$"ConnectionStrings:{qdrant2.Resource.Name}"] = await qdrant2.Resource.ConnectionStringExpression.GetValueAsync(default) 180hb.AddQdrantClient(qdrant2.Resource.Name); 245var urls = qdrant.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 276await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 278await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 282await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, (re => re.Snapshot.HealthStatus == HealthStatus.Healthy), cts.Token); 284await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.RabbitMQ (5)
RabbitMQBuilderExtensions.cs (5)
40var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 42var rabbitMq = new RabbitMQServerResource(name, userName?.Resource, passwordParameter); 160var containerAnnotations = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().ToList(); 216throw new DistributedApplicationException($"Cannot configure the RabbitMQ resource '{builder.Resource.Name}' to enable the management plugin as it uses an unrecognized container image registry, name, or tag."); 270var nodeName = $"{builder.Resource.Name}@localhost";
Aspire.Hosting.RabbitMQ.Tests (21)
AddRabbitMQTests.cs (6)
20Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); 30Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); 207var manifest = await ManifestUtils.GetManifest(rabbit.Resource); 252var manifest = await ManifestUtils.GetManifest(rabbit.Resource); 276manifest = await ManifestUtils.GetManifest(rabbit.Resource); 300manifest = await ManifestUtils.GetManifest(rabbit.Resource);
ConnectionPropertiesTests.cs (1)
66var manifest = await ManifestUtils.GetManifest(app.Resource);
RabbitMQFunctionalTests.cs (14)
41await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 43await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 47await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 70hb.Configuration[$"ConnectionStrings:{rabbitMQ.Resource.Name}"] = await rabbitMQ.Resource.ConnectionStringExpression.GetValueAsync(default); 71hb.AddRabbitMQClient(rabbitMQ.Resource.Name); 108var password = rabbitMQ1.Resource.PasswordParameter.Value; 134hb.Configuration[$"ConnectionStrings:{rabbitMQ1.Resource.Name}"] = await rabbitMQ1.Resource.ConnectionStringExpression.GetValueAsync(default); 135hb.AddRabbitMQClient(rabbitMQ1.Resource.Name); 191hb.Configuration[$"ConnectionStrings:{rabbitMQ2.Resource.Name}"] = await rabbitMQ2.Resource.ConnectionStringExpression.GetValueAsync(default); 192hb.AddRabbitMQClient(rabbitMQ2.Resource.Name);
Aspire.Hosting.Redis (5)
RedisBuilderExtensions.cs (5)
74var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 274resourceBuilder.WithRelationship(builder.Resource, "RedisCommander"); 340.WithRelationship(builder.Resource, "RedisInsight") 549builder.Resource.SetPassword(password?.Resource);
Aspire.Hosting.Redis.Tests (80)
AddRedisTests.cs (35)
24Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check"); 140var manifest = await ManifestUtils.GetManifest(redis.Resource); 174var manifest = await ManifestUtils.GetManifest(redis.Resource); 209var manifest = await ManifestUtils.GetManifest(redis.Resource); 244var manifest = await ManifestUtils.GetManifest(redis.Resource); 327Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value); 332Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 337Assert.Equal(redis1.Resource.Name, item.Value); 343Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value); 349Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value); 354Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 359Assert.Equal(redis2.Resource.Name, item.Value); 365Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value); 371Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value); 376Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 381Assert.Equal(redis3.Resource.Name, item.Value); 521Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 543Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]); 568Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 589var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 614var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 684var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 695Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 758var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 771var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 785var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 788Assert.Equal(password.Resource, annotation.Password); 800var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 816var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 819Assert.Equal(password.Resource, annotation.Password); 837Assert.True(redis.Resource.TlsEnabled); 852Assert.False(redis.Resource.TlsEnabled);
RedisFunctionalTests.cs (45)
51await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 57await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 80await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name); 82var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http"); 85if (redis.Resource.TlsEnabled) 91var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info"; 113[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync() 116hb.AddRedisClient(redis.Resource.Name); 152await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 154var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http"); 170Assert.Equal(redis1.Resource.Name, db.Name); 171Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host); 172Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port); 176Assert.Equal(redis2.Resource.Name, db.Name); 177Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host); 178Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port); 182Assert.Equal(redis3.Resource.Name, db.Name); 183Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host); 184Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port); 220[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 223hb.AddRedisClient(redis1.Resource.Name); 257[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 260hb.AddRedisClient(redis2.Resource.Name); 305[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 308hb.AddRedisClient(redis1.Resource.Name); 340[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 343hb.AddRedisClient(redis2.Resource.Name); 390[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 393hb.AddRedisClient(redis1.Resource.Name); 421[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 424hb.AddRedisClient(redis2.Resource.Name); 489await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 493var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http"); 524await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 528var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http"); 627await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.Seq.Tests (14)
AddSeqTests.cs (5)
92var manifest = await ManifestUtils.GetManifest(seq.Resource); 133var volumeAnnotation = seq.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 158var volumeAnnotation = seq.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 253var manifest = await ManifestUtils.GetManifest(seq.Resource); 283var manifest = await ManifestUtils.GetManifest(seq.Resource);
SeqFunctionalTests.cs (9)
26await app.WaitForTextAsync("Seq listening on", seq.Resource.Name); 28var seqUrl = await seq.Resource.ConnectionStringExpression.GetValueAsync(default); 35await app.ResourceNotifications.WaitForResourceHealthyAsync(seq.Resource.Name, default); 104await app.WaitForTextAsync("Seq listening on", seq1.Resource.Name); 108var seqUrl = await seq1.Resource.ConnectionStringExpression.GetValueAsync(default); 115await app.ResourceNotifications.WaitForResourceHealthyAsync(seq1.Resource.Name, default); 143await app.WaitForTextAsync("Seq listening on", seq2.Resource.Name); 147var seqUrl = await seq2.Resource.ConnectionStringExpression.GetValueAsync(default); 154await app.ResourceNotifications.WaitForResourceHealthyAsync(seq2.Resource.Name, default);
Aspire.Hosting.SqlServer (5)
SqlServerBuilderExtensions.cs (5)
43var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", minLower: 1, minUpper: 1, minNumeric: 1); 123var sqlServerDatabase = new SqlServerDatabaseResource(name, databaseName, builder.Resource); 125builder.Resource.AddDatabase(sqlServerDatabase); 231builder.Resource.SetPassword(password.Resource);
Aspire.Hosting.SqlServer.Tests (47)
AddSqlServerTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 129var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 130var dbManifest = await ManifestUtils.GetManifest(db.Resource); 170var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 227Assert.Equal("customers1", db1.Resource.DatabaseName); 228Assert.Equal("customers2", db2.Resource.DatabaseName); 230Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 231Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 245Assert.Equal("imports", db1.Resource.DatabaseName); 246Assert.Equal("imports", db2.Resource.DatabaseName); 248Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 249Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
SqlServerFunctionalTests.cs (34)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 81hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 83hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name); 84hb.AddSqlServerClient(newDb.Resource.Name); 143var password = sqlserver1.Resource.PasswordParameter.Value; 181await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 190[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default), 193hb1.AddSqlServerClient(db1.Resource.Name); 267await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 276[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default), 279hb2.AddSqlServerClient(db2.Resource.Name); 373hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 375hb.AddSqlServerClient(newDb.Resource.Name); 381await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 427hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 429hb.AddSqlServerClient(newDb.Resource.Name); 435await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 500hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 502hb.AddSqlServerClient(newDb.Resource.Name); 508await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token); 561hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 562hb.AddKeyedSqlServerClient(db.Resource.Name); 571await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 573var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (2)
TestingBuilderTests.cs (1)
533redis1.Resource.ShellExecution = false;
tests\Aspire.Hosting.Tests\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Aspire.Hosting.Tests (900)
AddConnectionStringTests.cs (3)
82cs.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations); 89Assert.Same(redis.Resource, wa.Resource); 94Assert.Same(key.Resource, wa.Resource);
AddParameterTests.cs (15)
54parameter.Resource.Default = new TestParameterDefault("DefaultValue"); 252Assert.IsType<UserSecretsParameterDefault>(parameter1.Resource.Default); 256Assert.IsType<GenerateParameterDefault>(parameter2.Resource.Default); 352Assert.Equal("This is a test parameter", parameter.Resource.Description); 353Assert.False(parameter.Resource.EnableDescriptionMarkdown); 367Assert.Equal("This is a **markdown** description", parameter.Resource.Description); 368Assert.True(parameter.Resource.EnableDescriptionMarkdown); 391Assert.Equal("Custom input parameter", parameter.Resource.Description); 392Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 404var input = parameter.Resource.CreateInput(); 423var input = parameter.Resource.CreateInput(); 451var input = parameter.Resource.CreateInput(); 470var input = parameter.Resource.CreateInput(); 495Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 497var input = parameter.Resource.CreateInput();
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();
AsHttp2ServiceTests.cs (2)
37var httpEndpoints = testProgram.ServiceABuilder.Resource.Annotations.OfType<EndpointAnnotation>().Where(sb => sb.UriScheme == "http" || sb.UriScheme == "https"); 52var endpoints = testProgram.ServiceABuilder.Resource.Annotations.OfType<EndpointAnnotation>();
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (3)
49await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 53await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-def456", s => s with 94await notificationService.PublishUpdateAsync(custom.Resource, s => s with
Codespaces\CodespacesUrlRewriterTests.cs (2)
73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 81resource.Resource.Name,
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);
ContainerTunnelTests.cs (2)
37using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 76using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http");
Dashboard\DashboardResourceTests.cs (2)
113Assert.Same(container.Resource, dashboard); 225Assert.Same(container.Resource, dashboard);
Dcp\DcpExecutorTests.cs (30)
61.WithReplicas(2).Resource; 223}).Resource; 1277HasKnownCommandAnnotations(exe.Resource); 1278HasKnownCommandAnnotations(container.Resource); 1279HasKnownCommandAnnotations(project.Resource); 2148var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 2151projectBuilder.Resource.Annotations.Remove(annotationToRemove); 2223await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 2224await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 2228await AssertTunneledPort(executable.Resource, "proxied", 5678); 2229await AssertTunneledPort(executable.Resource, "notProxied", 8765); 2243await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, port); 2245await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, hostPort); 2249.Where(c => c.AppModelResourceName == container.Resource.Name) 2257await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 2258await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 2259await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 5678); 2260await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 8765); 2263await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 15678); 2264await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 18765); 2266await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234); 2267await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765); 2269await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 25678); 2270await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 28765); 2272await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234); 2273await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765);
DistributedApplicationBuilderExtensionsTests.cs (8)
34Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 43Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 75Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 86Assert.Same(originalRedis.Resource, newRedisBuilder.Resource);
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 (21)
636using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http"); 637using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http"); 644var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http"); 962var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 1564await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration); 1567var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http"); 1585var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https"); 1635using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1643var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1645Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value); 1650if (redis.Resource.TlsEnabled) 1661sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1663Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value); 1666if (redisNoPort.Resource.TlsEnabled) 1704using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1716var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1718Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value); 1723if (redis.Resource.TlsEnabled) 1734sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1736Assert.Equal($"localhost:6379,password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value); 1740if (redisNoPort.Resource.TlsEnabled)
Eventing\DistributedApplicationBuilderEventingTests.cs (3)
302var testResourceEvent = new ResourceEvent(resource.Resource, "test-resource", testSnapshot); 303var testEvent = new ResourceStoppedEvent(resource.Resource, app.Services, testResourceEvent); 307Assert.Equal(resource.Resource, resourceStopped);
ExecutableResourceBuilderExtensionTests.cs (6)
24var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 35var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 50var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 71var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 83var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 101var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
ExecutableResourceTests.cs (3)
45var args = await ArgumentEvaluator.GetArgumentListAsync(exe2.Resource).DefaultTimeout(); 58Assert.True(exe2.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 68var manifest = await ManifestUtils.GetManifest(exe2.Resource).DefaultTimeout();
ExecutionConfigurationGathererTests.cs (21)
27.Resource; 50.Resource; 70var resource = builder.AddExecutable("test", "test.exe", ".").Resource; 94.Resource; 120.Resource; 143.Resource; 163var resource = builder.AddContainer("test", "image").Resource; 187.Resource; 216.Resource; 244.Resource; 274.Resource; 302.Resource; 324var resource = builder.AddContainer("test", "image").Resource; 350.Resource; 378.Resource; 409Password = password.Resource 411.Resource; 441.Resource; 461var resource = builder.AddContainer("test", "image").Resource; 484.Resource; 525.Resource;
ExpressionResolverTests.cs (8)
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(); 207var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 233var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 252var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 270var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 275_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (37)
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); 103Assert.Equal("nuget", externalService.Resource.Name); 104Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 117var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 134var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 153var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 173var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout(); 178Assert.Equal(urlParam.Resource.ValueExpression, urlValue); 196await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 212Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 213Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 228Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 229Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 251Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations)); 265Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 322externalService.Resource.Name, 349externalService.Resource.Name, 376externalService.Resource.Name, 400Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 401var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 421Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 422var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 446Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 447var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 471var manifest = await ManifestUtils.GetManifest(project.Resource); 488Assert.Equal("service", externalService.Resource.Name); 489Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 539var 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
HealthCheckTests.cs (4)
104await rns.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 106await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 110await rns.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 112await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
ManifestGenerationTests.cs (10)
104var redisManifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout(); 505param.Resource.Default = new GenerateParameterDefault() 543var manifest = await ManifestUtils.GetManifest(param.Resource).DefaultTimeout(); 563Source = sourceContainer.Resource, 569var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 606Source = sourceContainer.Resource, 612var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 652Source = source1.Resource, 657Source = source2.Resource, 663var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout();
Orchestrator\ApplicationOrchestratorTests.cs (43)
35var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 52if (item.Resource == parentResource.Resource) 56else if (item.Resource == childResource.Resource) 100if (item.Resource == parentResource.Resource) 104else if (item.Resource == childResource.Resource) 147applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) => 165Assert.Equal(resource.Resource, initEvent.Resource); 200if (item.Resource == parent.Resource) 204else if (item.Resource == child.Resource) 209else if (item.Resource == nestedChild.Resource) 213else if (item.Resource == child2.Resource) 266if (item.Resource == firstParent.Resource) 270else if (item.Resource == secondParent.Resource) 274else if (item.Resource == child.Resource) 318if (item.Resource == projectA.Resource) 322else if (item.Resource == projectB.Resource) 368new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource) 371new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource) 388applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) => 393applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) => 398applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) => 404await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Container, parentResource.Resource, parentResource.Resource.Name)); 435if (item.Resource == resource.Resource) 449await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 607var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 625parentContainer.Resource, 632var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null; 633var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 654var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 672parentContainer.Resource, 679var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null; 680var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 721if (item.Resource == parent.Resource) 725else if (item.Resource == child.Resource) 729else if (item.Resource == child2.Resource) 759parent.WithChildRelationship(child.Resource) 760.WithChildRelationship(child2.Resource); 778if (item.Resource == parent.Resource) 782else if (item.Resource == child.Resource) 786else if (item.Resource == child2.Resource) 832if (item.Resource == parentProject.Resource) 836else 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);
ProjectResourceTests.cs (6)
646var args = await ArgumentEvaluator.GetArgumentListAsync(project.Resource).DefaultTimeout(); 654Assert.False(project.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 836Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 908var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 919var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 930var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
PublishAsConnectionStringTests.cs (2)
19Assert.True(redis.Resource.TryGetLastAnnotation<ManifestPublishingCallbackAnnotation>(out _)); 21var manifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout();
PublishAsDockerfileTests.cs (5)
31var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 77var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 126var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 175var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 235var manifest = await ManifestUtils.GetManifest(project.Resource, manifestDirectory: path).DefaultTimeout();
Publishing\ResourceContainerImageManagerTests.cs (39)
39await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 71await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 102await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 139await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 173await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 203await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 239await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 278await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 313await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 345await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 376await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 426await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 455await imageBuilder.PushImageAsync(testResource.Resource, cts.Token); 460resource => Assert.Equal(testResource.Resource, resource)); 480imageBuilder.PushImageAsync(testResource.Resource, cts.Token)); 515await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token); 544await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 576await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 613imageBuilder.BuildImagesAsync([container.Resource], cts.Token)); 658await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 731await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 826await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 871var annotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 878await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 972var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1011var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1038var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1065var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1070var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1114var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1145var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1178await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1184Assert.Equal(servicea.Resource, capturedResource); 1225await imageManager.BuildImagesAsync([servicea.Resource], cts.Token); 1269() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 1302() => imageManager.BuildImageAsync(container.Resource, cts.Token)); 1345() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token)); 1378() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token));
RequiredCommandAnnotationTests.cs (4)
64var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 78var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 94var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 110var annotations = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().ToList();
ResourceCommandAnnotationTests.cs (4)
51resourceBuilder.Resource.AddLifeCycleCommands(); 53var startCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == commandName); 77resourceBuilder.Resource.AddLifeCycleCommands(); 80var restartCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == KnownResourceCommands.RestartCommand);
ResourceCommandServiceTests.cs (11)
67var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 104var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 136var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 142var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 175var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 180var resourceNames = custom.Resource.GetResolvedResourceNames(); 210var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 240var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 278var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 284var resourceNames = custom.Resource.GetResolvedResourceNames(); 321var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand");
ResourceDependencyTests.cs (137)
21var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 23Assert.Contains(redis.Resource, dependencies); 38var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 40Assert.Contains(api.Resource, dependencies); 55var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 57Assert.Contains(api.Resource, dependencies); 72var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 74Assert.Contains(db.Resource, dependencies); 75Assert.Contains(postgres.Resource, dependencies); // Parent of db 85.WithConnectionStringRedirection(redis.Resource); 91var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 93Assert.Contains(redirect.Resource, dependencies); 94Assert.Contains(redis.Resource, dependencies); // The redirect target 106var dependencies = await db.Resource.GetResourceDependenciesAsync(executionContext); 108Assert.Contains(postgres.Resource, dependencies); 121var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 123Assert.Contains(redis.Resource, dependencies); 136var dependencies = await mainContainer.Resource.GetResourceDependenciesAsync(executionContext); 138Assert.Contains(initContainer.Resource, dependencies); 151var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 153Assert.Contains(param.Resource, dependencies); 166var dependencies = await exe.Resource.GetResourceDependenciesAsync(executionContext); 168Assert.Contains(param.Resource, dependencies); 184var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 186Assert.Contains(host.Resource, dependencies); 187Assert.Contains(port.Resource, dependencies); 188Assert.Contains(password.Resource, dependencies); 204var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 206Assert.Contains(b.Resource, dependencies); 207Assert.Contains(c.Resource, dependencies); 223var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 225Assert.Contains(b.Resource, dependencies); 226Assert.Contains(c.Resource, dependencies); 244var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 246Assert.Contains(b.Resource, dependencies); 247Assert.Contains(c.Resource, dependencies); 264var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 266Assert.Contains(b.Resource, dependencies); 267Assert.Contains(c.Resource, dependencies); 268Assert.Contains(d.Resource, dependencies); 285var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 287Assert.Contains(b.Resource, dependencies); 288Assert.Contains(c.Resource, dependencies); 289Assert.Contains(d.Resource, dependencies); 290Assert.Contains(e.Resource, dependencies); 308var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 309Assert.Contains(b.Resource, dependencies); 310Assert.Contains(c.Resource, dependencies); 311Assert.Contains(d.Resource, dependencies); 329var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 331Assert.Contains(backend.Resource, dependencies); 347var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 349Assert.Contains(db.Resource, dependencies); 350Assert.Contains(postgres.Resource, dependencies); // Parent included due to transitive dependency 364var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 366Assert.DoesNotContain(unrelatedResource.Resource, dependencies); 377var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 379Assert.DoesNotContain(container.Resource, dependencies); 393var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 395Assert.DoesNotContain(dependentContainer.Resource, dependencies); 408var dependencies = await db1.Resource.GetResourceDependenciesAsync(executionContext); 410Assert.DoesNotContain(db2.Resource, dependencies); 411Assert.Contains(postgres.Resource, dependencies); // Parent IS included 426var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 428Assert.Contains(b.Resource, dependencies); 429Assert.DoesNotContain(c.Resource, dependencies); 430Assert.DoesNotContain(d.Resource, dependencies); 441var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 457var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 459Assert.Contains(redis.Resource, dependencies); 477var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 479Assert.Contains(b.Resource, dependencies); 480Assert.DoesNotContain(c.Resource, dependencies); 497var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.Recursive); 499Assert.Contains(b.Resource, dependencies); 500Assert.Contains(c.Resource, dependencies); 523var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 526Assert.Contains(b.Resource, dependencies); 541var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 545Assert.Contains(db.Resource, dependencies); 546Assert.Contains(postgres.Resource, dependencies); 566var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 569Assert.Contains(b.Resource, dependencies); 571Assert.DoesNotContain(c.Resource, dependencies); 590var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 592Assert.Contains(b.Resource, dependencies); 593Assert.Contains(c.Resource, dependencies); 613[a.Resource, b.Resource], executionContext); 615Assert.Contains(x.Resource, dependencies); 616Assert.Contains(y.Resource, dependencies); 633[a.Resource, b.Resource], executionContext); 635Assert.Contains(x.Resource, dependencies); 652[a.Resource, b.Resource], executionContext); 655Assert.DoesNotContain(a.Resource, dependencies); 656Assert.DoesNotContain(b.Resource, dependencies); 675[a.Resource, b.Resource], executionContext); 678Assert.Contains(c.Resource, dependencies); 680Assert.DoesNotContain(a.Resource, dependencies); 681Assert.DoesNotContain(b.Resource, dependencies); 705[a.Resource, b.Resource, c.Resource], executionContext); 731[a.Resource, c.Resource], executionContext); 733Assert.Contains(b.Resource, dependencies); 734Assert.Contains(d.Resource, dependencies); 735Assert.DoesNotContain(a.Resource, dependencies); 736Assert.DoesNotContain(c.Resource, dependencies); 762[a.Resource, d.Resource], executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 765Assert.Contains(b.Resource, dependencies); 766Assert.Contains(e.Resource, dependencies); 767Assert.DoesNotContain(c.Resource, dependencies); 768Assert.DoesNotContain(f.Resource, dependencies); 794[a.Resource, b.Resource, c.Resource], executionContext); 797Assert.Contains(d.Resource, dependencies); 798Assert.DoesNotContain(a.Resource, dependencies); 799Assert.DoesNotContain(b.Resource, dependencies); 800Assert.DoesNotContain(c.Resource, dependencies); 817[parent.Resource, child.Resource], executionContext); 820Assert.DoesNotContain(parent.Resource, dependencies); 821Assert.DoesNotContain(child.Resource, dependencies); 845[a.Resource, b.Resource, c.Resource], executionContext); 847Assert.Contains(x.Resource, dependencies); 848Assert.Contains(y.Resource, dependencies); 849Assert.Contains(z.Resource, dependencies); 869var singleDeps = await a.Resource.GetResourceDependenciesAsync(executionContext); 870var multiDeps = await ResourceExtensions.GetDependenciesAsync([a.Resource], executionContext);
ResourceExtensionsTests.cs (50)
21Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 22Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 33Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 34Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 45Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 46Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 57Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 58Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 68Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 69Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 80Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 81Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 92var child = builder.AddResource(new ChildResource("child", parent.Resource)) 95Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 96Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 107var child = builder.AddResource(new ChildResource("child", parent.Resource)); 109Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 110Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 121var child = builder.AddResource(new ChildResource("child", parent.Resource)) 124Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 125Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 136var child = builder.AddResource(new ChildResource("child", parent: parent.Resource)) 139var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource)) 142Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 143Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 153Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 163Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 182var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 217var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 252var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout(); 286.Resource.GetArgumentValuesAsync().DefaultTimeout(); 298.Resource.GetArgumentValuesAsync().DefaultTimeout(); 316var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 325Resource = containerResource.Resource, 363var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList(); 373Resource = containerResource.Resource, 393Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 397Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 401Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 418var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 428Resource = containerResource.Resource, 445var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 457var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 469Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 477var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 481Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 527var result = resource.Resource.TryGetInstances(out var instances); 543var result = resource.Resource.TryGetInstances(out var instances); 564var result = resource.Resource.GetResolvedResourceNames(); 579var result = resource.Resource.GetResolvedResourceNames();
ResourceNotificationTests.cs (1)
30var annotation = custom.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().SingleOrDefault();
ResourceWithProbeTests.cs (3)
19var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 33var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 53var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray();
SlimTestProgramTests.cs (5)
36using var clientA = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 39using var clientB = app.CreateHttpClientWithResilience(testProgram.ServiceBBuilder.Resource.Name, "http"); 42using var clientC = app.CreateHttpClientWithResilience(testProgram.ServiceCBuilder.Resource.Name, "http"); 59var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 78var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single();
TestProgramFixture.cs (3)
68using var clientA = App.CreateHttpClientWithResilience(TestProgram.ServiceABuilder.Resource.Name, "http"); 72using var clientB = App.CreateHttpClientWithResilience(TestProgram.ServiceBBuilder.Resource.Name, "http"); 76using var clientC = App.CreateHttpClientWithResilience(TestProgram.ServiceCBuilder.Resource.Name, "http");
Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Utils\VolumeNameGeneratorTests.cs (3)
25Assert.Equal($"{volumePrefix}-{resource.Resource.Name}-data", volumeName); 69Assert.Equal($"{runVolumePrefix}-{runResource.Resource.Name}-data", runVolumeName); 70Assert.Equal($"{publishVolumePrefix}-{publishResource.Resource.Name}-data", publishVolumeName);
Utils\WithAnnotationTests.cs (4)
17var dummyAnnotations = redis.Resource.Annotations.OfType<DummyAnnotation>(); 31var dummyAnnotations = redis.Resource.Annotations.OfType<DummyAnnotation>(); 43var firstAnnotation = redis.Resource.Annotations.OfType<DummyAnnotation>().Single(); 47var secondAnnotation = redis.Resource.Annotations.OfType<DummyAnnotation>().Single();
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);
WithCertificateAuthorityCollection.cs (3)
31Assert.True(container.Resource.TryGetAnnotationsOfType<CertificateAuthorityCollectionAnnotation>(out var annotations)); 34Assert.Contains(bundle1.Resource, annotation.CertificateAuthorityCollections); 35Assert.Contains(bundle2.Resource, annotation.CertificateAuthorityCollections);
WithEndpointTests.cs (23)
29var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 46var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 81var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 119Assert.False(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var annotations)); 136Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 153Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 254var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 282var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 309var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 336var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 363var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 390var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 417var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 448var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 516var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 541var manifests = await ManifestUtils.GetManifests([container0.Resource, container1.Resource]).DefaultTimeout(); 586var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 617var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 622EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 651var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 656EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 671var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout();
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 (29)
91var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 97Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name); 124var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 154var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 195await MoveResourceToRunningStateAsync(app, service.Resource); 197var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 227await MoveResourceToRunningStateAsync(app, service.Resource); 229var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 252await MoveResourceToRunningStateAsync(app, service.Resource); 254var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 298await app.ResourceNotifications.PublishUpdateAsync(serviceA.Resource, s => s with 302await app.ResourceNotifications.WaitForResourceAsync(serviceA.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 305await MoveResourceToRunningStateAsync(app, serviceB.Resource); 307var result = await app.ResourceCommands.ExecuteCommandAsync(serviceB.Resource, "mycommand").DefaultTimeout(); 335Assert.Equal(service.Resource.Name, requestContext.ResourceName); 349await MoveResourceToRunningStateAsync(app, service.Resource); 351var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 379Assert.Equal(service.Resource.Name, resultContext.ResourceName); 393await MoveResourceToRunningStateAsync(app, service.Resource); 395var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 419await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 425service.Resource.Name, 431await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 438service.Resource.Name, 474await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 481service.Resource.Name, 489await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 496service.Resource.Name, 551var endpointAnnotation = service.Resource.Annotations.OfType<EndpointAnnotation>().Single();
WithIconNameTests.cs (7)
20var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 34var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 76Assert.Single(container.Resource.Annotations.OfType<ResourceIconAnnotation>()); 77Assert.Single(parameter.Resource.Annotations.OfType<ResourceIconAnnotation>()); 78Assert.Single(project.Resource.Annotations.OfType<ResourceIconAnnotation>()); 91var iconAnnotations = container.Resource.Annotations.OfType<ResourceIconAnnotation>().ToList(); 100Assert.True(container.Resource.TryGetLastAnnotation<ResourceIconAnnotation>(out var lastAnnotation));
WithOtlpExporterTests.cs (3)
45container.Resource, 69container.Resource, 91container.Resource,
WithReferenceTests.cs (41)
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); 260await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 277var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 296await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 316var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 332var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 348var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 367var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 397var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 403Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 406Assert.Same(resource.Resource, r.Resource); 407Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships)); 412Assert.Same(endpoint.Resource, r.Resource); 417Assert.Same(key.Resource, r.Resource); 422Assert.Same(endpoint.Resource, r.Resource); 427Assert.Same(key.Resource, r.Resource); 449var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 471var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 503var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 526var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 551var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 576var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 603var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 628var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 655var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 684var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 707var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 729var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithUrlsTests.cs (30)
27var urlsCallback = projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>() 40Assert.Empty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 44Assert.NotEmpty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 152var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 176var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 191projectA.WithUrl($"{projectA.Resource.GetEndpoint("https")}/test", "Example") 202var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 230var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 263var urls = projectB.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 267Assert.StartsWith($"http://{projectB.Resource.Name.ToLowerInvariant()}{expectedHostSuffix}", u.Url); 306var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 329var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 359var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 377var httpEndpoint = servicea.Resource.GetEndpoint("http"); 387servicea.Resource.Name, 402var httpEndpoint = servicea.Resource.GetEndpoint("http"); 414servicea.Resource.Name, 447servicea.Resource.Name, 482if (notification.Resource == servicea.Resource && notification.Snapshot.Urls.Length > 0) 498await rns.WaitForResourceAsync(servicea.Resource.Name, KnownResourceStates.Running, cts.Token); 600if (notification.Resource == custom.Resource && notification.Snapshot.Urls.Length > 0) 616await rns.WaitForResourceAsync(custom.Resource.Name, KnownResourceStates.Running, cts.Token); 771var allUrls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 832var endpointUrl = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test"); 871var launchProfileUrls = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().Where(u => u.Endpoint?.EndpointName == "http"); 912var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 942var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 968Endpoint = resourceA.Resource.GetEndpoint("api") 979resourceB.Resource.Name, 981&& e.Snapshot.Urls.Length == resourceB.Resource.GetEndpoints().ToArray().Length + 1
Aspire.Hosting.Valkey (1)
ValkeyBuilderExtensions.cs (1)
119var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false);
Aspire.Hosting.Valkey.Tests (22)
AddValkeyTests.cs (9)
127var manifest = await ManifestUtils.GetManifest(valkey.Resource); 165var manifest = await ManifestUtils.GetManifest(valkey.Resource); 210var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 235var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 250Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 274Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 299Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 316Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 345var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
ValkeyFunctionalTests.cs (13)
37[$"ConnectionStrings:{valkey.Resource.Name}"] = await valkey.Resource.ConnectionStringExpression.GetValueAsync(default) 40hb.AddRedisClient(valkey.Resource.Name); 101[$"ConnectionStrings:{valkey1.Resource.Name}"] = $"{await valkey1.Resource.ConnectionStringExpression.GetValueAsync(default)},allowAdmin=true" 104hb.AddRedisClient(valkey1.Resource.Name); 153[$"ConnectionStrings:{valkey2.Resource.Name}"] = await valkey2.Resource.ConnectionStringExpression.GetValueAsync(default) 156hb.AddRedisClient(valkey2.Resource.Name); 225await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 227await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 231await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 233await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Yarp (12)
ConfigurationBuilder\YarpConfigurationBuilder.cs (8)
16var routeId = $"route{_parent.Resource.Routes.Count}"; 22_parent.Resource.Routes.Add(route); 30_parent.Resource.Clusters.Add(destination); 38var destination = new YarpCluster(resource.Resource); 39_parent.Resource.Clusters.Add(destination); 47var destination = new YarpCluster(externalService.Resource); 48_parent.Resource.Clusters.Add(destination); 76_parent.Resource.Clusters.Add(destination);
YarpResourceExtensions.cs (4)
94YarpEnvConfigGenerator.PopulateEnvVariables(ctx.EnvironmentVariables, yarpBuilder.Resource.Routes, yarpBuilder.Resource.Clusters); 138builder.Resource.HostHttpsPort = port; 213if (builder.Resource.HasAnnotationOfType<DockerfileBuilderCallbackAnnotation>())
Aspire.Hosting.Yarp.Tests (32)
AddYarpTests.cs (26)
54var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 77var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 103var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 125var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider); 150var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 165var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 179var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 191var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 204var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 209Resource = yarp.Resource, 237Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 238Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 255var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 256Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 260var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 265Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 282var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 289Resource = yarp.Resource, 312var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 320Resource = yarp.Resource, 345var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 352Resource = yarp.Resource, 383var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 390Resource = yarp.Resource, 423var httpsEndpoint = Assert.Single(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https"); 448Assert.DoesNotContain(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https");
YarpClusterTests.cs (3)
64var httpCluster = new YarpCluster(httpService.Resource); 71var httpsCluster = new YarpCluster(httpsService.Resource); 83var clusterA = new YarpCluster(serviceA.Resource);
YarpFunctionalTests.cs (3)
49await app.ResourceNotifications.WaitForResourceHealthyAsync(backend.Resource.Name, cts.Token); 50await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name, cts.Token); 52using var httpClient = app.CreateHttpClient(yarp.Resource.Name);
Aspire.Playground.Tests (1)
tests\Aspire.Hosting.Tests\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
AzureAIFoundryEndToEnd.AppHost (1)
Program.cs (1)
11var model = foundry.Resource.IsEmulator
AzureKusto.AppHost (2)
AzureKustoReadWriteDatabaseResourceBuilderExtensions.cs (2)
29if (!dbBuilder.Resource.Parent.IsEmulator) 31var logger = evt.Services.GetRequiredService<ResourceLoggerService>().GetLogger(dbBuilder.Resource);
BicepSample.AppHost (1)
Program.cs (1)
25temp00 = bicep0.Resource;
DotnetTool.AppHost (2)
AppHost.cs (2)
49foreach(var toolAnnotation in substituted.Resource.Annotations.OfType<DotnetToolAnnotation>().ToList()) 51substituted.Resource.Annotations.Remove(toolAnnotation);
KafkaBasic.AppHost (2)
Program.cs (2)
11.WithArgs(kafka.Resource.Name); 15.WithArgs(kafka.Resource.Name);
ParameterEndToEnd.AppHost (1)
AppHost.cs (1)
25var cs = builder.AddConnectionString("cs", ReferenceExpression.Create($"sql={db.Resource.Parent.PrimaryEndpoint};rows={insertionrows}"));
Pipelines.AppHost (1)
AppHost.cs (1)
243var resource = withBindMount.Resource;
Stress.AppHost (2)
Program.cs (2)
19IResource parent = rb.Resource; 25parent = nestedRb.Resource;
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);