3 implementations of Resource
Aspire.Hosting (1)
DistributedApplicationResourceBuilder.cs (1)
10public T Resource { get; } = resource;
Aspire.Hosting.Azure.Sql (1)
AzureSqlServerResource.cs (1)
730public T Resource => resource;
Aspire.Hosting.RemoteHost.Tests (1)
CapabilityDispatcherTests.cs (1)
2841public T Resource { get; }
8871 references to Resource
Aspire.Hosting (268)
ApplicationModel\CertificateAuthorityCollectionResourceExtensions.cs (4)
53builder.Resource.Certificates.Add(certificate); 70builder.Resource.Certificates.AddRange(certificates); 87builder.Resource.Certificates.AddRange(certificates.ToArray()); 128builder.Resource.Certificates.AddRange(certificates.ToArray());
ApplicationModel\ReferenceExpression.cs (4)
431_valueProviders.Add(valueProvider.Resource); 432_manifestExpressions.Add(valueProvider.Resource.ValueExpression); 598var unwrapped = valueProvider is IResourceBuilder<IResource> rb ? rb.Resource : valueProvider; 718builder.AppendFormatted(valueProvider.Resource, format);
ApplicationModel\ResourceExtensions.cs (3)
598(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await resource.GetValue(executionContext, key, provider, logger, cancellationToken).ConfigureAwait(false), 600(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false), 1869VisitReferences(resourceBuilder.Resource, visitedValues, visitor);
Ats\CoreExports.cs (1)
179return resource.Resource.Name;
Ats\LoggingExports.cs (1)
107loggerService.Complete(resource.Resource);
Ats\NotificationExports.cs (2)
71return notificationService.WaitForDependenciesAsync(resource.Resource, CancellationToken.None); 99return notificationService.PublishUpdateAsync(resource.Resource, snapshot =>
ContainerRegistryResourceBuilderExtensions.cs (3)
49var endpointExpression = ReferenceExpression.Create($"{endpoint.Resource}"); 51? ReferenceExpression.Create($"{repository.Resource}") 194return builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registry.Resource));
ContainerResourceBuilderExtensions.cs (33)
55if (builder.Resource.IsExcludedFromPublish()) 60if (builder.Resource.RequiresImageBuild()) 64Name = $"build-{builder.Resource.Name}", 69builder.Resource, 75Resource = builder.Resource 80if (builder.Resource.RequiresImageBuildAndPush()) 84Name = $"push-{builder.Resource.Name}", 85Action = ctx => PipelineStepHelpers.PushImageToRegistryAsync(builder.Resource, ctx), 88Resource = builder.Resource 98var buildSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.BuildCompute); 99var pushSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.PushContainerImage); 342builder.Resource.Entrypoint = entrypoint; 360if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 366if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation && 391if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 432if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation) 439builder.Resource.Annotations.Add(imageAnnotation); 460if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation) 483if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 617throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a container image specified. Use WithImage to specify the container image and tag."); 631return builder.WithManifestPublishingCallback(context => context.WriteContainerAsync(builder.Resource)); 717if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 867if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 1154var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1158throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildArg."); 1206if (value.Resource.Secret) 1208throw new InvalidOperationException($"Cannot add secret parameter '{value.Resource.Name}' as build argument '{name}' while configuring resource '{builder.Resource.Name}'. Use WithBuildSecret instead."); 1211return builder.WithBuildArg(name, value.Resource); 1285var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1289throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildSecret."); 1292annotation.BuildSecrets[name] = value.Resource; 1718var callbackAnnotation = builder.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
DistributedApplicationEventingExtensions.cs (2)
141builder.ApplicationBuilder.Eventing.Subscribe<TEvent>(builder.Resource, (evt, ct) => callback(builder.Resource, evt, ct));
DotnetProgramResourceBuilderExtensions.cs (5)
63builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 121if (builder.Resource is not IComputeResource) 124$"Resource '{builder.Resource.Name}' must implement {nameof(IComputeResource)} to use .NET SDK publishing."); 127_ = builder.Resource.GetProjectMetadata(); 128DotnetProgramPublishing.Configure(builder.Resource);
DotnetToolResourceExtensions.cs (6)
129builder.Resource.ToolConfiguration?.PackageId = packageId; 145builder.Resource.ToolConfiguration?.Version = version; 160builder.Resource.ToolConfiguration?.Prerelease = true; 176builder.Resource.ToolConfiguration?.Sources.Add(source); 191builder.Resource.ToolConfiguration?.IgnoreExistingFeeds = true; 206builder.Resource.ToolConfiguration?.IgnoreFailedSources = true;
ExecutableResourceBuilderExtensions.cs (12)
136if (builder.ApplicationBuilder.TryCreateResourceBuilder<ExecutableContainerResource>(builder.Resource.Name, out var existingBuilder)) 154builder.ApplicationBuilder.Resources.Remove(builder.Resource); 156var container = new ExecutableContainerResource(builder.Resource); 159cb.WithImage(builder.Resource.Name); 160var dockerfileContextPath = builder.Resource.WorkingDirectory; 161if (builder.Resource is IDotnetProgramResource && 162builder.Resource.TryGetProjectMetadata(out var projectMetadata)) 172if (builder.Resource is IDotnetProgramResource) 200var executableAnnotation = builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault(); 212builder.Resource.Annotations.Add(executableAnnotation); 231if (builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault() is { } executableAnnotation) 241throw new InvalidOperationException($"The resource '{builder.Resource.Name}' is missing the ExecutableAnnotation");
ExternalServiceBuilderExtensions.cs (14)
94return AddExternalServiceImpl(builder, name, urlParameter: urlParameter.Resource); 227if (builder.Resource.UrlParameter is null) 229if (builder.Resource.Uri is null) 231throw new ArgumentException($"The URL for external service '{builder.Resource.Name}' is null.", nameof(builder)); 233else if (builder.Resource.Uri.Scheme != "http" && builder.Resource.Uri.Scheme != "https") 235throw 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)); 239Debug.Assert(builder.Resource.Uri is not null || builder.Resource.UrlParameter is not null, "Either Uri or UrlParameter must be provided."); 244var healthCheckKey = $"{builder.Resource.Name}_external{pathKey}_{statusCode}_check"; 250if (builder.Resource.UrlParameter is not null) 256builder.Resource.UrlParameter, 266var uri = builder.Resource.Uri!;
OtlpConfigurationExtensions.cs (4)
72builder.Resource.Annotations.Add(new OtlpExporterAnnotation { RequiredProtocol = protocol }); 74builder.Resource, 219AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment); 256AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment, protocol);
ParameterResourceBuilderExtensions.cs (6)
212builder.Resource.Description = description; 213builder.Resource.EnableDescriptionMarkdown = enableMarkdown; 245builder.Resource.Required = required; 277builder.Resource.Annotations.Add(new InputGeneratorAnnotation(createInput)); 294builder.Resource.Annotations.Add(new InputGeneratorAnnotation(parameter => new InteractionInput 417var parameter = new ParameterResource(builder.Resource.Name, _ => "", secret: true);
Pipelines\PipelineStepFactoryExtensions.cs (1)
123Resource = builder.Resource
ProjectResourceBuilderExtensions.cs (20)
537var projectMetadata = builder.Resource.GetProjectMetadata(); 541if (!builder.Resource.TryGetLastAnnotation<ProjectLaunchDefaultsAnnotation>(out var launchDefaults)) 552$"Project defaults have already been applied to resource '{builder.Resource.Name}'. " + 562builder.Resource, 565mode => ProjectLaunchConfigurationFactory.Create(builder.Resource, mode), 616if (!string.Equals(builder.Resource.Name, KnownResourceNames.AspireDashboard, StringComparisons.ResourceName)) 635var logger = resourceLogger.GetLogger(builder.Resource); 676var projectResource = builder.Resource; 1035builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 1067if (builder.ApplicationBuilder.TryCreateResourceBuilder<ProjectContainerResource>(builder.Resource.Name, out var existingBuilder)) 1081builder.ApplicationBuilder.Resources.Remove(builder.Resource); 1083var container = new ProjectContainerResource(builder.Resource); 1086cb.WithImage(builder.Resource.Name); 1088var projectFilePath = builder.Resource.GetProjectMetadata().ProjectPath; 1193foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1244foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1276foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment))
ResourceBuilderExtensions.cs (138)
140if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 147SourceResource = sourceBuilder.Resource 151throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 208if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 223throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 229foreach (var annotation in builder.Resource.Annotations.OfType<ContainerLifetimeAnnotation>().ToArray()) 231builder.Resource.Annotations.Remove(annotation); 447builder.WithReferenceRelationship(externalService.Resource); 449if (externalService.Resource.Uri is not null) 451builder.WithEnvironment(name, externalService.Resource.Uri.ToString()); 453else if (externalService.Resource.UrlParameter is not null) 460var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false); 463throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 467context.EnvironmentVariables[name] = externalService.Resource.UrlParameter; 489builder.WithReferenceRelationship(parameter.Resource); 493context.EnvironmentVariables[name] = parameter.Resource; 516builder.WithReferenceRelationship(resource.Resource); 520context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false); 734builder.Resource.WithSerializedAnnotation(annotationId, json); 772return GetSerializedAnnotation(builder.Resource, annotationId); 803return HasSerializedAnnotation(builder.Resource, annotationId); 855return GetAnnotation(builder.Resource, definition); 1217var hasConnectionString = source.Resource is IResourceWithConnectionString && connectionStringSource is not null; 1218var hasServiceDiscovery = source.Resource is IResourceWithServiceDiscovery && serviceDiscoverySource is not null; 1219var hasExternalService = source.Resource is ExternalServiceResource && externalServiceSource is not null; 1269throw new InvalidOperationException($"The resource '{source.Resource.Name}' can't be used with withReference because it doesn't provide a connection string, service discovery, or a custom withReference implementation."); 1296return TryDispatchCustomWithReference(builder, source, connectionName, optional, name, source.Resource.GetType(), out dispatchedBuilder); 1369var resource = source.Resource; 1375builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1521ApplyEndpoints(builder, source.Resource); 1553ApplyEndpoints(builder, source.Resource, endpointName: null, name); 1577throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it must be absolute."); 1582throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a fragment."); 1587throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a query string."); 1591builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1622builder.WithReferenceRelationship(externalService.Resource); 1625builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1628if (externalService.Resource.Uri is { } uri) 1632var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1638var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1642else if (externalService.Resource.UrlParameter is not null) 1648var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1653discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0"; 1656else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message)) 1658discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1664throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 1669context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter; 1674context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter; 1709var endpointReferenceAnnotation = builder.Resource.Annotations 1717if (builder.Resource.IsContainer()) 1779var endpoint = builder.Resource.Annotations 1796builder.Resource.Annotations.Add(endpoint); 1846!builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(endpoint => string.Equals(endpoint.Name, endpointName, StringComparisons.EndpointAnnotationName))) 1883var existing = builder.Resource.Annotations.OfType<EndpointAnnotation>() 1964if (env is null || builder.Resource is not IResourceWithEndpoints resourceWithEndpoints || builder.Resource is not IResourceWithEnvironment) 2174if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints)) 2205return builder.Resource.GetEndpoint(name, contextNetworkId); 2222return builder.Resource.GetEndpoint(name); 2502if (builder.Resource is IResourceWithEndpoints resource) 2516context.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); 2562context.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); 2602if (resourceComparer.Equals(builder.Resource, endpoint.Resource)) 2604context.Logger.LogWarning("Could not execute callback to customize endpoint URL as no URL for endpoint '{EndpointName}' could be found on resource '{ResourceName}'.", endpoint.EndpointName, builder.Resource.Name); 2645Source = source.Resource, 2684builder.Resource.Annotations 2687.ForEach(w => builder.Resource.Annotations.Remove(w)); 2805if (builder.Resource as IResource == dependency.Resource) 2807throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2810if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2812throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2815if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2828builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2831return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior }); 2928if (builder.Resource as IResource == dependency.Resource) 2930throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2933if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2935throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2938if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2950if (dependency.Resource is ConnectionStringResource cs) 2961builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2964return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior }); 3031if (builder.Resource as IResource == dependency.Resource) 3033throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 3036if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 3038throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 3041builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 3043return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode)); 3091if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key)) 3093throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'."); 3180?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 3184throw 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."); 3197throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'."); 3203var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check"; 3299var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 3302builder.Resource.Annotations.Remove(existingAnnotation); 3366var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 3369builder.Resource.Annotations.Remove(existingAnnotation); 4055?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 4059throw 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."); 4367CertificateAuthorityCollections = { certificateAuthorityCollection.Resource }, 4369if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4373if (existingCollection != certificateAuthorityCollection.Resource) 4426if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4477if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4590Password = password?.Resource, 4626Password = password?.Resource, 4733var resource = builder.Resource; 4780var endpoints = builder.Resource.GetEndpoints(); 4790throw 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."); 4798throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}"); 4806var endpoints = builder.Resource.GetEndpoints(); 4818throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints."); 4855if (!builder.Resource.Annotations.OfType<ResourceRelationshipAnnotation>().Any(r => ReferenceEquals(r.Resource, resource) && r.Type == type)) 4880return builder.WithRelationship(resourceBuilder.Resource, type); 4946AddReference(resourceBuilder.Resource); 4979return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference)); 5012return builder.WithParentRelationship(parent.Resource); 5078child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent); 5172builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource)); 5423builder.Resource.Name, 5452var workingDirectory = Path.GetFullPath(builder.Resource.WorkingDirectory); 5563var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 5591if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation) 5593builder.Resource.Annotations.Remove(existingAnnotation);
ResourceTraitBuilderExtensions.cs (2)
28foreach (var previous in builder.Resource.Annotations.OfType<TraitAnnotation>().Where(t => t.Name == name).ToArray()) 30builder.Resource.Annotations.Remove(previous);
TerminalResourceBuilderExtensions.cs (3)
79if (builder.Resource.Annotations.OfType<TerminalAnnotation>().Any()) 82$"Resource '{builder.Resource.Name}' already has a terminal configured. Call WithTerminal() only once per resource."); 101var parent = builder.Resource;
Utils\ImageNameGenerator.cs (1)
18return builder.Resource.Name.ToLowerInvariant();
VolumeNameGenerator.cs (1)
33var resourceName = builder.Resource.Name;
VolumeResourceBuilderExtensions.cs (2)
79if (builder.Resource is not IResourceWithEnvironment) 82$"Resource '{builder.Resource.Name}' does not support environment variables and cannot use the '{env}' volume path variable.");
Aspire.Hosting.Azure (48)
AzureBicepResourceExtensions.cs (15)
60return new BicepOutputReference(name, builder.Resource); 72return new BicepSecretOutputReference(name, builder.Resource); 135builder.Resource.Parameters[name] = null; 186builder.Resource.Parameters[name] = value; 203builder.Resource.Parameters[name] = value; 221builder.Resource.Parameters[name] = value; 239builder.Resource.Parameters[name] = valueCallback; 255return builder.WithParameter(name, value.Resource); 275builder.Resource.Parameters[name] = value; 293builder.WithReferenceRelationship(value.Resource); 295builder.Resource.Parameters[name] = value.Resource; 315builder.Resource.Parameters[name] = value; 335builder.Resource.Parameters[name] = value; 355builder.Resource.Parameters[name] = value;
AzureEnvironmentResourceExtensions.cs (4)
116builder.Resource.Location = location.Resource; 140builder.Resource.ResourceGroupName = resourceGroup.Resource;
AzureProvisioningResourceExtensions.cs (2)
48builder.Resource.ConfigureInfrastructure += configure; 134return parameterResourceBuilder.Resource.AsProvisioningParameter(infrastructure, parameterName);
AzureResourceExtensions.cs (2)
74var annotations = builder.Resource.Annotations.OfType<DefaultRoleAssignmentsAnnotation>().ToList(); 77builder.Resource.Annotations.Remove(annotation);
AzureUserAssignedIdentityExtensions.cs (1)
72builder.WithAnnotation(new AppIdentityAnnotation(identityResourceBuilder.Resource));
ExistingAzureResourceExtensions.cs (24)
54return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 110return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 170return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 210return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 267return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 324return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 381return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 442return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 505return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 566return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 618return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 670return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
Aspire.Hosting.Azure.AppConfiguration (3)
AzureAppConfigurationExtensions.cs (2)
120var surrogate = new AzureAppConfigurationEmulatorResource(builder.Resource); 143return 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 (17)
AzureContainerAppExtensions.cs (8)
968builder.Resource.UseAzdNamingConvention = true; 999builder.Resource.UseCompactResourceNaming = true; 1054builder.Resource.UseUniqueResourceNaming = true; 1083builder.Resource.IsExpress = true; 1097builder.Resource.EnableDashboard = enable; 1118builder.Resource.PreserveHttpEndpoints = !upgrade; 1137builder.WithAnnotation(new AzureLogAnalyticsWorkspaceReferenceAnnotation(workspaceBuilder.Resource)); 1194builder.WithAnnotation(new AzureContainerAppEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.ApplicationInsights (1)
AzureApplicationInsightsExtensions.cs (1)
156return builder.WithLogAnalyticsWorkspace(logAnalyticsWorkspace.Resource.WorkspaceId);
Aspire.Hosting.Azure.AppService (23)
AzureAppServiceComputeResourceExtensions.cs (2)
90if (!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteCustomizationAnnotation>() && 91!builder.Resource.HasAnnotationOfType<AzureAppServiceWebsiteSlotCustomizationAnnotation>())
AzureAppServiceEnvironmentExtensions.cs (12)
331builder.Resource.PreserveHttpEndpoints = !upgrade; 345builder.Resource.EnableDashboard = enable; 358builder.Resource.EnableApplicationInsights = true; 394builder.Resource.ApplicationInsightsLocation = applicationInsightsLocation; 408builder.Resource.ApplicationInsightsLocationParameter = applicationInsightsLocation.Resource; 422builder.Resource.ApplicationInsightsResource = applicationInsightsBuilder.Resource; 438builder.Resource.DeploymentSlotParameter = deploymentSlot.Resource; 473builder.Resource.DeploymentSlot = deploymentSlot; 542builder.WithAnnotation(new AzureAppServiceEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.CognitiveServices (5)
AzureOpenAIExtensions.cs (4)
175builder.Resource.AddDeployment(deployment); 198var deployment = new AzureOpenAIDeploymentResource(name, modelName, modelVersion, builder.Resource); 199builder.Resource.AddDeployment(deployment); 218configure(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ConnectorNamespace (48)
AzureConnectorNamespaceExtensions.cs (48)
280if (builder.Resource.Connections.Any(connection => 284$"Connector connection '{connectionName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 292builder.Resource); 294builder.Resource.Connections.Add(connection); 326var configurationName = connectionName ?? connection.Resource.Name; 329connection.Resource.Parent.NameOutputReference); 332connection.Resource.ConnectionName); 348if (!string.IsNullOrWhiteSpace(builder.Resource.DisplayName)) 351$"Connector connection '{builder.Resource.Name}' configures a display name and cannot be marked as existing."); 353if (builder.Resource.AccessPolicies.Count > 0) 356$"Connector connection '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 359builder.Resource.IsExisting = true; 391if (builder.Resource.IsExisting) 394$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 399var resourceName = GetValidatedAccessPolicyResourceName(builder.Resource, name, policyName); 401builder.Resource.AccessPolicies.Add(new AzureConnectorNamespaceConnectionAccessPolicyResource( 404builder.Resource, 433if (builder.Resource.IsExisting) 436$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 441var resourceName = GetValidatedAccessPolicyResourceName(builder.Resource, name, policyName); 443builder.Resource.AccessPolicies.Add( 447builder.Resource, 448identity.Resource)); 471if (builder.Resource.McpServerConfigs.Any(config => 475$"MCP server configuration '{configName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 482builder.Resource); 484builder.Resource.McpServerConfigs.Add(config); 499if (builder.Resource.Connectors.Count > 0) 502$"MCP server configuration '{builder.Resource.Name}' has connector routes and cannot be marked as existing."); 505if (!string.IsNullOrWhiteSpace(builder.Resource.Description)) 508$"MCP server configuration '{builder.Resource.Name}' configures a description and cannot be marked as existing."); 511if (builder.Resource.AccessPolicies.Count > 0) 514$"MCP server configuration '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 517builder.Resource.IsExisting = true; 544if (builder.Resource.IsExisting) 547$"Existing MCP server configuration '{builder.Resource.Name}' is read-only and cannot create an access policy."); 550var resourceName = GetValidatedMcpAccessPolicyResourceName(builder.Resource, name, options.ObjectId); 551builder.Resource.AccessPolicies.Add(new AzureConnectorNamespaceMcpAccessPolicyResource( 553builder.Resource, 588if (builder.Resource.IsExisting) 591$"Existing MCP server configuration '{builder.Resource.Name}' is read-only."); 594if (!ReferenceEquals(builder.Resource.Parent, connection.Resource.Parent)) 597$"Connector connection '{connection.Resource.Name}' belongs to a different Connector Namespace."); 600if (builder.Resource.Connectors.Count > 0) 603$"MCP server configuration '{builder.Resource.Name}' already has a connector. " + 619connection.Resource); 641builder.Resource.Connectors.Add(connectorDefinition);
Aspire.Hosting.Azure.ContainerRegistry (5)
AzureContainerRegistryExtensions.cs (4)
96builder.WithAnnotation(new ContainerRegistryReferenceAnnotation(registryBuilder.Resource)); 118var containerRegistry = builder.Resource.ContainerRegistry ?? throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have an associated Azure Container Registry."); 119var 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)
105builder.Resource.IsVNextEmulator = useVNext; 126throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null."); 164var emulatorSurrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 185var password = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-certificate-passphrase"); 222var healthCheckKey = $"{builder.Resource.Name}_check"; 233var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 277var isVNext = builder.Resource.InnerResource.IsVNextEmulator; 323if (builder.Resource.InnerResource.IsVNextEmulator) 372var database = new AzureCosmosDBDatabaseResource(name, databaseName, builder.Resource); 373builder.Resource.Databases.Add(database); 397var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPath, builder.Resource); 398builder.Resource.Containers.Add(container); 454var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPaths, builder.Resource); 456builder.Resource.Containers.Add(container); 471builder.Resource.UseDefaultAzureSku = true; 489if (!builder.Resource.InnerResource.IsVNextEmulator) 552var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 553.WithParentRelationship(builder.Resource); 561if (builder.Resource.IsEmulator) 563data.Model.Resources.Remove(kv.Resource); 598var azureResource = builder.Resource; 599azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 600azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
Aspire.Hosting.Azure.EntraId (91)
EntraIdResourceExtensions.cs (91)
383TenantIdParameter = tenantId.Resource, 384ClientIdParameter = clientId.Resource 480resource.TenantIdParameter = (tenantId as IResourceBuilder<ParameterResource>)?.Resource; 482resource.ClientIdParameter = (clientId as IResourceBuilder<ParameterResource>)?.Resource; 541builder.Resource.TenantIdParameter = tenantId.Resource; 542builder.Resource.ClientIdParameter = clientId.Resource; 585builder.Resource.TenantId = tenantId; 586builder.Resource.ClientId = clientId; 609builder.Resource.EnsureCanBeExistingApplication(); 610SetExistingApplicationIds(builder.Resource, tenantId, clientId); 640builder.Resource.SetExistingApplication(); 685if (builder.Resource.IsExistingApplication) 691builder.Resource.ClientCredentials.OfType<EntraIdLocalDeveloperCertificateCredential>().Any()) 698builder.Resource.ClientCredentials.Add(new EntraIdLocalDeveloperCertificateCredential(builder.Resource, builder.ApplicationBuilder.ExecutionContext)); 725if (!clientSecret.Resource.Secret) 730builder.Resource.ClientCredentials.Add(new EntraIdClientSecretCredential 732ClientSecret = clientSecret.Resource 792builder.Resource.ClientCredentials.Add(new EntraIdFederatedIdentityCredential(managedIdentityClientId)); 878builder.Resource.ClientCredentials.Add(new EntraIdFederatedIdentityCredential()); 880foreach (var consumer in builder.Resource.Consumers) 934builder.Resource.ClientCredentials.Add(new EntraIdFederatedIdentityCredential 936ComputeTarget = computeResource.Resource 938EnsureManagedIdentityRequired(computeResource.Resource); 986builder.Resource.ClientCredentials.Add(new EntraIdFederatedIdentityCredential 988ManagedIdentity = identity.Resource 1023if (builder.Resource.IsExistingApplication) 1026$"Entra ID application '{builder.Resource.Name}' is an existing registration, and Aspire does not modify existing registrations, " + 1059builder.Resource.ClientCredentials.Add(new EntraIdKeyVaultCertificateCredential 1085builder.Resource.ClientCredentials.Add(new EntraIdStoreCertificateCredential 1111builder.Resource.ClientCredentials.Add(new EntraIdStoreCertificateCredential 1139Password = password?.Resource 1177builder.Resource.ClientCredentials.Add(credential); 1206builder.Resource.Instance = instance; 1259builder.Resource.SignInAudience = signInAudience; 1295builder.Resource.AddRedirectUri(redirectUri); 1342builder.Resource.AddRedirectUri(redirectUri.Resource); 1409builder.Resource.AddRedirectUri(new EntraIdEndpointRedirectUri(endpoint, path, builder.ApplicationBuilder.ExecutionContext.IsPublishMode)); 1467builder.Resource.AddRedirectUri(new EntraIdHostRedirectUri(host.Resource, path)); 1541AddOwners(builder.Resource.ApplicationOwners, ownerObjectIds, nameof(ownerObjectIds)); 1562builder.Resource.ApplicationOwners.AddRange(ownerObjectIds.Select(p => (object)p.Resource)); 1607AddOwners(builder.Resource.ServicePrincipalOwners, ownerObjectIds, nameof(ownerObjectIds)); 1625builder.Resource.ServicePrincipalOwners.AddRange(ownerObjectIds.Select(p => (object)p.Resource)); 1767if (builder.Resource.IsExistingApplication) 1772var roles = builder.Resource.AppRoles; 1778var id = role.GetStableId(builder.Resource.Name); 1779if (roles.Any(r => r.GetStableId(builder.Resource.Name) == id)) 1784builder.Resource.AddAppRole(role); 1864builder.Resource.EnableIdTokenIssuance = true; 1882builder.Resource.ClientCapabilities.Add(capability); 1897builder.Resource.AllowWebApiToBeAuthorizedByACL = true; 1916builder.Resource.SendX5C = true; 1937builder.Resource.ExtraQueryParameters[key] = value; 1955builder.Resource.Audiences.Add(audience); 1982builder.Resource.UsesDefaultApplicationIdUri = true; 1985if (!builder.Resource.IsExistingApplication) 1987builder.Resource.ApplicationIdUri = null; 2026builder.Resource.ApplicationIdUri = applicationIdUri; 2027builder.Resource.UsesDefaultApplicationIdUri = false; 2102var resource = builder.Resource; 2184return builder.Resource.GetScopeUri(scopeName); 2221var scopes = FindScopes(builder.Resource, scopeNames, nameof(scopeNames)); 2222EnsureNoDependencyCycle(builder.Resource, client.Resource); 2224var existing = builder.Resource.PreAuthorizedClients.FirstOrDefault(p => ReferenceEquals(p.Client, client.Resource)); 2227builder.Resource.PreAuthorizedClients.Remove(existing); 2231builder.Resource.PreAuthorizedClients.Add(new EntraIdPreAuthorizedClient(client.Resource, scopes)); 2277var apiResource = api.Resource; 2278if (ReferenceEquals(apiResource, builder.Resource)) 2284EnsureNoDependencyCycle(builder.Resource, apiResource); 2287var access = GetOrAddApiAccess(builder.Resource, a => a.IsFor(apiResource), () => EntraIdApiAccess.ForApplication(apiResource)); 2338var access = GetOrAddApiAccess(builder.Resource, a => a.IsFor(api), () => EntraIdApiAccess.ForApi(api)); 2408var apiResource = api.Resource; 2410var access = builder.Resource.ApiAccess.FirstOrDefault(a => a.IsFor(apiResource)); 2474var access = builder.Resource.ApiAccess.FirstOrDefault(a => a.IsFor(api)); 2724var isDotnetProgram = builder.Resource is IDotnetProgramResource; 2726connectionName ??= isDotnetProgram ? "AzureAd" : EnvironmentVariableNameEncoder.Encode(source.Resource.Name); 2767var entra = source.Resource; 2773entra.Consumers.Add(builder.Resource); 2777builder.Resource.Annotations.Add(new EntraIdReferenceAnnotation(entra, downstreamApisPrefix, environmentVariablePrefix, isDotnetProgram)); 2781EnsureManagedIdentityRequired(builder.Resource); 2830if (credential.EmitEnvironmentVariables(environmentVariables, credPrefix, separator, entra, builder.Resource, context.ExecutionContext)) 2865EntraIdApplicationResource.ValidateConsumerReferences(builder.Resource);
Aspire.Hosting.Azure.EntraId.Tests (520)
EntraIdApiProvisioningTests.cs (140)
34Assert.Null(api.Resource.ApplicationIdUri); 35await Verify(api.Resource.GetBicepTemplateString(), "bicep"); 44await Verify(api.Resource.GetBicepTemplateString(), "bicep"); 62await Verify(api.Resource.GetBicepTemplateString(), "bicep"); 69var bicep = builder.AddEntraIdApplication("entra-api").Resource.GetBicepTemplateString(); 88Assert.Equal(api.Resource.GetBicepTemplateString(), api.Resource.GetBicepTemplateString()); 89Assert.Equal(web.Resource.GetBicepTemplateString(), web.Resource.GetBicepTemplateString()); 99return api.Resource.GetScopeId(Assert.Single(api.Resource.Scopes)); 120var id = first.Resource.GetScopeId(first.Resource.Scopes[0]); 122first.Resource.Scopes[0].Description = "A different description."; 124Assert.Equal(id, first.Resource.GetScopeId(first.Resource.Scopes[0])); 125Assert.NotEqual(id, second.Resource.GetScopeId(second.Resource.Scopes[0])); 135Assert.Equal(id, api.Resource.GetScopeId(Assert.Single(api.Resource.Scopes))); 136Assert.Contains("11112222-aaaa-3333-bbbb-4444cccc5555", api.Resource.GetBicepTemplateString()); 151Assert.Empty(api.Resource.Scopes); 173Assert.Single(api.Resource.Scopes); 186Assert.Equal(name, Assert.Single(api.Resource.Scopes).Name); 203Assert.Null(api.Resource.ApplicationIdUri); 215Assert.Equal(uri, api.Resource.ApplicationIdUri); 231Assert.Null(customThenDefault.Resource.ApplicationIdUri); 232var customThenDefaultBicep = customThenDefault.Resource.GetBicepTemplateString(); 236Assert.Equal("api://custom", defaultThenCustom.Resource.ApplicationIdUri); 237var defaultThenCustomBicep = defaultThenCustom.Resource.GetBicepTemplateString(); 250Assert.Equal("api://contoso-orders", existing.Resource.ApplicationIdUri); 281Assert.Empty(web.Resource.ApiAccess); 299var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 320var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 354var bicep = web.Resource.GetBicepTemplateString(); 382await Verify(web.Resource.GetBicepTemplateString(), "bicep"); 400await Verify(web.Resource.GetBicepTemplateString(), "bicep"); 411Assert.Equal("api://contoso-orders", existingApi.Resource.ApplicationIdUri); 412Assert.Throws<InvalidOperationException>(existingApi.Resource.GetBicepTemplateString); 426var exception = Assert.Throws<InvalidOperationException>(web.Resource.GetBicepTemplateString); 430existingApi.Resource.Scopes[0].Id = id; 431Assert.Contains($"id: '{id:D}'", web.Resource.GetBicepTemplateString()); 447Assert.Empty(web.Resource.ApiAccess); 460Assert.Contains("access_as_user", web.Resource.GetBicepTemplateString()); 462api.Resource.Scopes[0].IsEnabled = false; 464var template = Assert.Throws<InvalidOperationException>(web.Resource.GetBicepTemplateString); 467var validation = Assert.Throws<InvalidOperationException>(web.Resource.ValidateApiAccess); 480Assert.Contains("preAuthorizedApplications", api.Resource.GetBicepTemplateString()); 482api.Resource.Scopes[0].IsEnabled = false; 484var template = Assert.Throws<InvalidOperationException>(api.Resource.GetBicepTemplateString); 487Assert.Throws<InvalidOperationException>(api.Resource.ValidateApiAccess); 500web.Resource.ValidateApiAccess(); 502existingApi.Resource.Scopes[0].IsEnabled = false; 504var validation = Assert.Throws<InvalidOperationException>(web.Resource.ValidateApiAccess); 516var access = Assert.Single(web.Resource.ApiAccess); 531var declared = Assert.Single(web.Resource.ApiAccess).Declared; 558Assert.Empty(web.Resource.ApiAccess); 575await Verify(web.Resource.GetBicepTemplateString(), "bicep"); 613Assert.Empty(Assert.Single(web.Resource.ApiAccess).Consented); 629Assert.Equal(2, api.Resource.PreAuthorizedClients.Count); 630await Verify(api.Resource.GetBicepTemplateString(), "bicep"); 645Assert.Empty(api.Resource.PreAuthorizedClients); 657Assert.Empty(api.Resource.PreAuthorizedClients); 663Assert.Empty(otherWeb.Resource.ApiAccess); 691await Verify(api.Resource.GetBicepTemplateString(), "bicep"); 705Assert.Equal("{created-api.outputs.applicationIdUri}/access_as_user", created.Resource.GetScopeUri("access_as_user").ValueExpression); 706Assert.Equal("api://contoso-orders/orders.read", custom.Resource.GetScopeUri("orders.read").ValueExpression); 707Assert.Equal("api://existing/items.read", existing.Resource.GetScopeUri("items.read").ValueExpression); 708Assert.Throws<ArgumentException>(() => created.Resource.GetScopeUri("unknown")); 709Assert.Throws<InvalidOperationException>(() => existingWithoutUri.Resource.GetScopeUri("items.read")); 751entra.Resource.Outputs["tenantId"] = TenantId; 752entra.Resource.Outputs["clientId"] = ClientId; 753entra.Resource.Outputs["applicationIdUri"] = $"api://{prefix}-{ClientId}"; 754entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 760var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, operation, TestServiceProvider.Instance); 784var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 785var containerEnv = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 822web.Resource.Outputs["tenantId"] = TenantId; 823web.Resource.Outputs["clientId"] = ClientId; 824web.Resource.ProvisioningTaskCompletionSource!.SetResult(); 829var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 847web.Resource.ValidateApiAccess(); 851var validation = Assert.Throws<InvalidOperationException>(web.Resource.ValidateApiAccess); 855await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 860web.Resource.ValidateApiAccess(); 873Assert.Empty(existing.Resource.Annotations.OfType<PipelineStepAnnotation>()); 874Assert.Empty(existingWithoutDeclarations.Resource.Annotations.OfType<PipelineStepAnnotation>()); 880foreach (var resource in new[] { created.Resource, existing.Resource }) 908web.Resource.ValidateApiAccess(); 912var exception = Assert.Throws<InvalidOperationException>(web.Resource.ValidateApiAccess); 935web.Resource.ValidateApiAccess(); 936var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 960var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 977var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 978var containerEnv = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 992var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1010await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 1026var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1049var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(webFrontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1067var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(webFrontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1087var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(webFrontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1107var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(worker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1108var defaultEnv = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(defaultWorker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1195var bicep = web.Resource.GetBicepTemplateString(); 1198Assert.Equal("orders-api", ((BicepOutputReference)web.Resource.Parameters["orders_apiClientId"]!).Resource.Name); 1199Assert.Equal("ordersApi", ((BicepOutputReference)web.Resource.Parameters["ordersApiClientId"]!).Resource.Name); 1200Assert.Equal("orders-api", ((BicepOutputReference)web.Resource.Parameters["orders_apiServicePrincipalId"]!).Resource.Name); 1201Assert.Equal("ordersApi", ((BicepOutputReference)web.Resource.Parameters["ordersApiServicePrincipalId"]!).Resource.Name); 1203Assert.Equal(bicep, web.Resource.GetBicepTemplateString()); 1220var bicep = web.Resource.GetBicepTemplateString(); 1243var bicep = web.Resource.GetBicepTemplateString(); 1264var bicep = web.Resource.GetBicepTemplateString(); 1282var bicep = web.Resource.GetBicepTemplateString(); 1285Assert.IsType<ParameterResource>(web.Resource.Parameters["orders_apiClientId"]); 1286Assert.Equal("orders-api", ((BicepOutputReference)web.Resource.Parameters["orders_apiClientId_2"]!).Resource.Name); 1299var bicep = api.Resource.GetBicepTemplateString(); 1318var bicep = registration.Resource.GetBicepTemplateString(); 1322Assert.Single(registration.Resource.Parameters, p => p.Key.StartsWith("shared", StringComparison.Ordinal)); 1363await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(frontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 1369Assert.Equal(exception.Message, Assert.Throws<InvalidOperationException>(first.Resource.ValidateApiAccess).Message); 1385await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(worker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 1415var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(frontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1430await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(worker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 1445first.Resource.ValidateApiAccess(); 1446var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(frontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1463var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(worker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1479await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(worker.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 1490first.Resource.ValidateApiAccess(); 1491var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(frontend.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1519var derivedId = api.Resource.GetScopeId(api.Resource.Scopes[0]).ToString("D"); 1523api.Resource.Scopes[0].Id = adoptedId; 1525var apiBicep = api.Resource.GetBicepTemplateString(); 1526var webBicep = web.Resource.GetBicepTemplateString(); 1546existingApi.Resource.Scopes[0].Id = secondId; 1548var webBicep = web.Resource.GetBicepTemplateString(); 1562existingApi.Resource.Scopes[0].Id = null; 1564var exception = Assert.Throws<InvalidOperationException>(web.Resource.GetBicepTemplateString); 1579var access = Assert.Single(web.Resource.ApiAccess);
EntraIdInitializationTests.cs (65)
25var snapshot = await InitializeAsync(app, entra.Resource); 57var snapshot = await InitializeAsync(app, entra.Resource); 78var snapshot = await InitializeAsync(app, entra.Resource); 110var snapshot = await InitializeAsync(app, entra.Resource); 131var snapshot = await InitializeAsync(app, entra.Resource); 150var snapshot = await InitializeAsync(app, entra.Resource); 158}, await ReadLogsAsync(app, entra.Resource)); 170var snapshot = await InitializeAsync(app, entra.Resource); 176}, await ReadLogsAsync(app, entra.Resource)); 188var snapshot = await InitializeAsync(app, entra.Resource); 191var log = Assert.Single(await ReadLogsAsync(app, entra.Resource)); 203entra.Resource.Outputs["tenantId"] = TenantId; 204entra.Resource.Outputs["clientId"] = ClientId; 207entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 208var snapshot = await InitializeAsync(app, entra.Resource); 226entra.Resource.ProvisioningTaskCompletionSource!.SetException(new InvalidOperationException("Registration creation was denied.")); 227var snapshot = await InitializeAsync(app, entra.Resource); 231var log = Assert.Single(await ReadLogsAsync(app, entra.Resource)); 248await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with { State = new("Missing subscription configuration", KnownResourceStateStyles.Error) }); 249entra.Resource.ProvisioningTaskCompletionSource!.SetException(new MissingConfigurationException("Azure subscription is missing.")); 250var initialization = PublishInitializationAsync(app, entra.Resource, cts.Token); 256Assert.True(notifications.TryGetCurrentState(entra.Resource.Name, out var resourceEvent)); 274await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot); 275entra.Resource.ProvisioningTaskCompletionSource!.SetException(new InvalidOperationException("Azure context is missing.")); 276var initialization = PublishInitializationAsync(app, entra.Resource, cts.Token); 280await notifications.WaitForResourceAsync(entra.Resource.Name, 282entra.Resource.ProvisioningTaskCompletionSource = new(TaskCreationOptions.RunContinuationsAsynchronously); 283await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with { State = KnownResourceStates.Waiting }); 284entra.Resource.Outputs["tenantId"] = TenantId; 285entra.Resource.Outputs["clientId"] = ClientId; 287await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with { State = KnownResourceStates.Running }); 288entra.Resource.ProvisioningTaskCompletionSource.SetResult(); 290var ready = await notifications.WaitForResourceAsync(entra.Resource.Name, 310entra.Resource.Outputs["tenantId"] = TenantId; 311entra.Resource.Outputs["clientId"] = ClientId; 312entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 316await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with 321var initialization = PublishInitializationAsync(app, entra.Resource, cts.Token); 325await notifications.WaitForResourceAsync(entra.Resource.Name, 331entra.Resource.ProvisioningTaskCompletionSource = new(TaskCreationOptions.RunContinuationsAsynchronously); 332await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with { State = KnownResourceStates.Waiting }); 333entra.Resource.Outputs["tenantId"] = updatedTenant; 334entra.Resource.Outputs["clientId"] = updatedClient; 335entra.Resource.ProvisioningTaskCompletionSource.SetResult(); 336var ready = await notifications.WaitForResourceAsync(entra.Resource.Name, 369await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot); 372entra.Resource.Outputs["tenantId"] = TenantId; 373entra.Resource.Outputs["clientId"] = ClientId; 374entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 377var initialization = PublishInitializationAsync(app, entra.Resource, cts.Token); 382await notifications.WaitForResourceAsync(entra.Resource.Name, 390Assert.Equal(provisioningCompleted, entra.Resource.ProvisioningTaskCompletionSource!.Task.IsCompletedSuccessfully); 391Assert.False(entra.Resource.ProvisioningTaskCompletionSource.Task.IsCanceled); 408entra.Resource.TenantId = "my-tenant"; 409entra.Resource.ClientId = "my-client"; 410entra.Resource.Instance = "http://login.microsoftonline.com/"; 411entra.Resource.SignInAudience = (EntraIdSignInAudience)42; 414var snapshot = await InitializeAsync(app, entra.Resource); 424}, await ReadLogsAsync(app, entra.Resource)); 437await notifications.PublishUpdateAsync(entra.Resource, snapshot => snapshot with 443var snapshot = await InitializeAsync(app, entra.Resource); 465var snapshot = await InitializeAsync(app, entra.Resource); 468Assert.Same(entra.Resource, startedResource); 479var snapshot = await InitializeAsync(app, entra.Resource); 483var log = Assert.Single(await ReadLogsAsync(app, entra.Resource));
EntraIdPolyglotTests.cs (53)
36Assert.True(entra.Resource.IsExistingApplication); 38Assert.Null(entra.Resource.ProvisioningTaskCompletionSource); 39Assert.Null(await ManifestUtils.GetManifestOrNull(entra.Resource)); 46consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 63consumer = project.Resource; 69consumer = container.Resource; 72Assert.Same(consumer, Assert.Single(entra.Resource.Consumers)); 91Assert.Null(entra.Resource.TenantIdParameter); 92Assert.Null(entra.Resource.ClientIdParameter); 93Assert.Equal(TenantId, entra.Resource.TenantId); 94Assert.Equal(ClientId, entra.Resource.ClientId); 95Assert.Empty(entra.Resource.Annotations.OfType<PipelineStepAnnotation>()); 96Assert.Null(await ManifestUtils.GetManifestOrNull(entra.Resource)); 117Assert.Equal(TenantId, entra.Resource.TenantId); 118Assert.Equal(ClientId, entra.Resource.ClientId); 151consumer.Resource, operation, TestServiceProvider.Instance); 153Assert.Same(secret.Resource, Assert.IsType<EntraIdClientSecretCredential>(entra.Resource.ClientCredentials[0]).ClientSecret); 154Assert.Same(password.Resource, Assert.IsType<EntraIdFileCertificateCredential>(entra.Resource.ClientCredentials[5]).Password); 169Assert.Empty(entra.Resource.ClientCredentials); 189Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(Assert.Single(entra.Resource.ClientCredentials)); 193Assert.Empty(entra.Resource.ClientCredentials); 207Assert.Empty(existing.Resource.ClientCredentials); 226Assert.Empty(entra.Resource.ClientCredentials); 230Assert.Collection(entra.Resource.ClientCredentials, 232c => Assert.Same(consumer.Resource, Assert.IsType<EntraIdFederatedIdentityCredential>(c).ComputeTarget), 233c => Assert.Same(identity.Resource, Assert.IsType<EntraIdFederatedIdentityCredential>(c).ManagedIdentity)); 259Assert.Equal([ClientId, owner.Resource, TenantId], entra.Resource.ApplicationOwners); 260Assert.Equal(entra.Resource.ApplicationOwners, entra.Resource.ServicePrincipalOwners); 261await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 262var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 264Assert.Same(host.Resource, Assert.Single(expression.ValueProviders)); 281await Verify(entra.Resource.GetBicepTemplateString(), "bicep").UseParameters(operation); 282Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 303Assert.Equal(nativeEntra.Resource.GetBicepTemplateString(), exportedEntra.Resource.GetBicepTemplateString()); 308Assert.Equal(4, exportedEntra.Resource.AppRoles.Count); 386Assert.Equal(nativeApi.Resource.GetBicepTemplateString(), exportedApi.Resource.GetBicepTemplateString()); 387Assert.Equal(nativeWeb.Resource.GetBicepTemplateString(), exportedWeb.Resource.GetBicepTemplateString()); 420consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 453Assert.Single(api.Resource.Scopes); 461Assert.Empty(web.Resource.ApiAccess); 466Assert.Empty(web.Resource.ApiAccess); 488Assert.Empty(entra.Resource.RedirectUris); 489Assert.Empty(entra.Resource.RedirectUriParameters); 490Assert.Empty(entra.Resource.ApplicationOwners); 491Assert.Empty(entra.Resource.ServicePrincipalOwners); 504Assert.Empty(entra.Resource.Consumers);
EntraIdProvisioningTests.cs (166)
39await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 53return entra.Resource.GetBicepTemplateString(); 72Assert.Single(entra.Resource.AppRoles); 108var roles = Assert.IsAssignableFrom<IList<EntraIdAppRole>>(entra.Resource.AppRoles); 111Assert.Single(entra.Resource.AppRoles); 141Assert.Empty(entra.Resource.ApplicationOwners); 153Assert.Equal(2, entra.Resource.ApplicationOwners.Count); 154Assert.Equal(entra.Resource.ApplicationOwners, entra.Resource.ServicePrincipalOwners); 155await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 168Assert.Equal(["00001111-aaaa-2222-bbbb-3333cccc4444"], entra.Resource.ApplicationOwners); 177Assert.DoesNotContain("owners", entra.Resource.GetBicepTemplateString()); 188await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 202await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 224web.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 246var exception = Assert.Throws<InvalidOperationException>(entra.Resource.ValidateManagedIdentities); 260Assert.Contains("WithAzureUserAssignedIdentity", Assert.Throws<InvalidOperationException>(entra.Resource.ValidateManagedIdentities).Message); 263web.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 284var dependencies = await web.Resource.GetResourceDependenciesAsync(builder.ExecutionContext, ResourceDependencyDiscoveryMode.DirectOnly); 285Assert.Contains(entra.Resource, dependencies); 288web.WithAnnotation(new AppIdentityAnnotation(identity.Resource)); 290web.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 304Assert.DoesNotContain("web_identity_principalId", entra.Resource.GetBicepTemplateString()); 310Assert.Same(identity, Assert.Single(entra.Resource.GetFederatedIdentities())); 311Assert.Contains("web_identity_principalId", entra.Resource.GetBicepTemplateString()); 337Assert.Empty(entra.Resource.ClientCredentials); 338var bicep = entra.Resource.GetBicepTemplateString(); 353var bicep = entra.Resource.GetBicepTemplateString(); 356Assert.Empty(entra.Resource.GetFederatedIdentities()); 368var credential = Assert.Single(entra.Resource.ClientCredentials); 370Assert.True(credential.EmitEnvironmentVariables(envVars, "AzureAd__ClientCredentials__0", "__", entra.Resource, web.Resource, builder.ExecutionContext)); 390var bicep = entra.Resource.GetBicepTemplateString(); 416Assert.Contains("issuer: 'https://login.microsoftonline.com/${tenant().tenantId}/v2.0'", entra.Resource.GetBicepTemplateString()); 429var bicep = entra.Resource.GetBicepTemplateString(); 432Assert.Same(redirectUris.Resource, entra.Resource.Parameters["web_identity_principalId"]); 433Assert.Same(webIdentity.Resource, Assert.IsType<BicepOutputReference>(entra.Resource.Parameters["web_identity_principalId_2"]).Resource); 437Assert.Equal(bicep, entra.Resource.GetBicepTemplateString()); 451var bicep = entra.Resource.GetBicepTemplateString(); 453Assert.Same(redirectUris.Resource, entra.Resource.Parameters["WEB_identity_principalId"]); 454Assert.Same(webIdentity.Resource, Assert.IsType<BicepOutputReference>(entra.Resource.Parameters["web_identity_principalId_2"]).Resource); 469var bicep = entra.Resource.GetBicepTemplateString(); 486entra.Resource.ValidateManagedIdentities(); 487Assert.Same(identity.Resource, Assert.Single(entra.Resource.GetFederatedIdentities())); 488Assert.NotNull(published.Resource); 508entra.Resource.Instance = "https://login.contoso.example/"; 510var exception = Assert.Throws<InvalidOperationException>(entra.Resource.GetBicepTemplateString); 520Assert.IsAssignableFrom<AzureProvisioningResource>(entra.Resource); 521var tenantScoped = Assert.Single(entra.Resource.Annotations.OfType<TenantScopedResourceAnnotation>()); 527Assert.NotNull(entra.Resource.ProvisioningTaskCompletionSource); 528Assert.False(entra.Resource.ProvisioningTaskCompletionSource.Task.IsCompleted); 529Assert.Equal(new[] { "tenantResourceSuffix" }, entra.Resource.Parameters.Keys); 530Assert.Equal(EntraIdSignInAudience.AzureADMyOrg, entra.Resource.SignInAudience); 531Assert.Null(entra.Resource.Parameters[AzureBicepResource.KnownParameters.TenantResourceSuffix]); 534await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 535Assert.Equal(new[] { "tenantResourceSuffix" }, entra.Resource.Parameters.Keys); 557await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 568using var first = entra.Resource.GetBicepTemplateFile(workspace.Path); 570using var second = entra.Resource.GetBicepTemplateFile(workspace.Path); 574Assert.Equal(firstContents, entra.Resource.GetBicepTemplateString()); 584entra.Resource.Scope = tenantScoped 588var exception = Assert.Throws<InvalidOperationException>(entra.Resource.GetBicepTemplateString); 602var manifest = await ManifestUtils.GetManifest(entra.Resource, workspace.Path); 603Assert.Equal(new[] { "tenantResourceSuffix" }, entra.Resource.Parameters.Keys); 605.AppendContentAsFile(entra.Resource.GetBicepTemplateString(), "bicep"); 681Assert.Same(context.ParameterLookup[suffix.Resource], 769.WithParameter("tenantId", web.Resource.TenantIdOutputReference) 770.WithParameter("clientId", web.Resource.ClientIdOutputReference); 804Assert.Equal(audience, entra.Resource.SignInAudience); 805Assert.Equal(new[] { "tenantResourceSuffix" }, entra.Resource.Parameters.Keys); 806await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 819Assert.True(entra.Resource.EnableIdTokenIssuance); 820Assert.Equal(new[] { "tenantResourceSuffix" }, entra.Resource.Parameters.Keys); 821await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 835Assert.Equal(new[] { "https://localhost:7123/signin-oidc", "https://localhost:7123/signout-callback-oidc" }, entra.Resource.RedirectUris); 850Assert.Equal(new[] { signIn.Resource, signOut.Resource }, entra.Resource.RedirectUriParameters); 862await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 863Assert.Equal(new[] { "tenantResourceSuffix", "web_redirect_uris", "extra_redirect_uris" }, entra.Resource.Parameters.Keys); 873await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 884await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 885Assert.Equal(new[] { "tenantResourceSuffix", "redirectUri0", "redirectUri1" }, entra.Resource.Parameters.Keys); 887entra.Resource.Parameters.Where(p => p.Key.StartsWith("redirectUri", StringComparison.Ordinal)), 902await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 915_ = entra.Resource.GetBicepTemplateString(); 916var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 928var context = new ResourceUrlsCallbackContext(builder.ExecutionContext, web.Resource, urls); 929foreach (var callback in web.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 948await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 949var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 951Assert.Same(host.Resource, Assert.Single(expression.ValueProviders)); 972Assert.Single(entra.Resource.RedirectUriParameters); 985_ = entra.Resource.GetBicepTemplateString(); 986var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 990var context = new ResourceUrlsCallbackContext(builder.ExecutionContext, web.Resource, urls); 991foreach (var callback in web.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1012_ = entra.Resource.GetBicepTemplateString(); 1013var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 1021var context = new ResourceUrlsCallbackContext(builder.ExecutionContext, web.Resource, urls); 1022foreach (var callback in web.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1040_ = entra.Resource.GetBicepTemplateString(); 1041var expression = Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri0"]); 1044var context = new ResourceUrlsCallbackContext(builder.ExecutionContext, web.Resource, []); 1045foreach (var callback in web.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1072var bicep = entra.Resource.GetBicepTemplateString(); 1073Assert.Same(existing.Resource, entra.Resource.Parameters["redirectUri0"]); 1074Assert.IsType<ReferenceExpression>(entra.Resource.Parameters["redirectUri1"]); 1079Assert.Equal(bicep, entra.Resource.GetBicepTemplateString()); 1107entra.Resource.SignInAudience = EntraIdSignInAudience.AzureADMultipleOrgs; 1108entra.Resource.AddRedirectUri("https://localhost:7123/signin-oidc"); 1109entra.Resource.EnableIdTokenIssuance = true; 1111await Verify(entra.Resource.GetBicepTemplateString(), "bicep"); 1131Assert.True(entra.Resource.IsExistingApplication); 1132Assert.Equal(TenantId, entra.Resource.TenantId); 1133Assert.Equal(ClientId, entra.Resource.ClientId); 1134Assert.Null(entra.Resource.ProvisioningTaskCompletionSource); 1135Assert.Empty(entra.Resource.Annotations.OfType<PipelineStepAnnotation>()); 1136Assert.Empty(entra.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 1137Assert.Null(await ManifestUtils.GetManifestOrNull(entra.Resource)); 1146Assert.True(entra.Resource.IsExistingApplication); 1147Assert.Null(entra.Resource.ProvisioningTaskCompletionSource); 1148Assert.Empty(entra.Resource.Annotations.OfType<PipelineStepAnnotation>()); 1149Assert.Empty(entra.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 1150Assert.Null(await ManifestUtils.GetManifestOrNull(entra.Resource)); 1167Assert.True(existing.Resource.IsExistingApplication); 1168Assert.Null(existing.Resource.ProvisioningTaskCompletionSource); 1170Assert.Empty(existing.Resource.Annotations.OfType<PipelineStepAnnotation>()); 1171Assert.Same(customization, Assert.Single(existing.Resource.Annotations.OfType<PipelineConfigurationAnnotation>())); 1172Assert.Null(await ManifestUtils.GetManifestOrNull(existing.Resource)); 1194Assert.True(entra.Resource.IsExistingApplication); 1241Assert.Empty(existing.Resource.Annotations.OfType<PipelineStepAnnotation>()); 1280Assert.Same(customization, Assert.Single(entra.Resource.Annotations.OfType<PipelineConfigurationAnnotation>())); 1292var exception = Assert.Throws<InvalidOperationException>(entra.Resource.GetBicepTemplateString); 1304entra.Resource.SignInAudience = (EntraIdSignInAudience)42; 1306var exception = Assert.Throws<InvalidOperationException>(entra.Resource.GetBicepTemplateString); 1324var exception = Assert.Throws<InvalidOperationException>(entra.Resource.GetBicepTemplateString); 1348entra.Resource.Outputs["tenantId"] = TenantId; 1349entra.Resource.Outputs["clientId"] = ClientId; 1350entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 1376project.Resource, operation, TestServiceProvider.Instance)); 1378container.Resource, operation, TestServiceProvider.Instance)); 1392node.Resource, DistributedApplicationOperation.Run, app.Services).AsTask(); 1395entra.Resource.Outputs["tenantId"] = TenantId; 1396entra.Resource.Outputs["clientId"] = ClientId; 1397entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 1433var initialWaits = consumer.Resource.Annotations.OfType<WaitAnnotation>().ToArray(); 1437Assert.Equal(initialWaits, consumer.Resource.Annotations.OfType<WaitAnnotation>()); 1449var wait = Assert.Single(node.Resource.Annotations.OfType<WaitAnnotation>()); 1450Assert.Same(entra.Resource, wait.Resource); 1466node.Resource, DistributedApplicationOperation.Run, app.Services).AsTask(); 1468entra.Resource.ProvisioningTaskCompletionSource!.SetException(failure); 1482var value = entra.Resource.ClientIdOutputReference.GetValueAsync(cts.Token).AsTask(); 1485entra.Resource.Outputs["clientId"] = ClientId; 1486entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 1497var value = entra.Resource.ClientIdOutputReference.GetValueAsync(cts.Token).AsTask(); 1501Assert.False(entra.Resource.ProvisioningTaskCompletionSource!.Task.IsCompleted); 1502entra.Resource.Outputs["clientId"] = ClientId; 1503entra.Resource.ProvisioningTaskCompletionSource.SetResult(); 1505Assert.Equal(ClientId, await entra.Resource.ClientIdOutputReference.GetValueAsync());
EntraIdResourceBuilderTests.cs (46)
79Assert.Equal("contoso.onmicrosoft.com", entra.Resource.TenantId); 260Assert.Equal(EntraIdSignInAudience.AzureADMyOrg, entra.Resource.SignInAudience); 281Assert.True(entra.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var annotations)); 292var annotation = Assert.Single(entra.Resource.Annotations.OfType<ResourceSnapshotAnnotation>()); 398Assert.Empty(entra.Resource.ClientCredentials); 409Assert.Empty(entra.Resource.ClientCredentials); 434web.Resource, operation, TestServiceProvider.Instance); 506container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 533container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 558container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 560Assert.Equal(signInAudience, entra.Resource.SignInAudience); 585container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 608container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 624Password = password.Resource 631container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 657container.Resource, operation, TestServiceProvider.Instance); 683project.Resource, operation, TestServiceProvider.Instance); 694explicitNull.Resource, operation, TestServiceProvider.Instance)); 717project.Resource, operation, TestServiceProvider.Instance); 755named.Resource, operation, TestServiceProvider.Instance)); 757positional.Resource, operation, TestServiceProvider.Instance)); 774project.Resource, operation, TestServiceProvider.Instance); 802container.Resource, operation, TestServiceProvider.Instance); 813explicitNull.Resource, operation, TestServiceProvider.Instance)); 828project.Resource, operation, TestServiceProvider.Instance); 854defaultConsumer.Resource, operation, TestServiceProvider.Instance); 856customConsumer.Resource, operation, TestServiceProvider.Instance); 900Password = password.Resource 922container.Resource, operation, TestServiceProvider.Instance); 1003unprefixed.Resource, operation, TestServiceProvider.Instance)); 1018container.Resource, operation, TestServiceProvider.Instance); 1040container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1126var relationships = project.Resource.Annotations 1130Assert.Contains(relationships, r => r.Resource == entra.Resource); 1196ClientSecret = notSecret.Resource 1200Assert.Empty(entra.Resource.ClientCredentials); 1213Password = notSecret.Resource 1217Assert.Empty(entra.Resource.ClientCredentials); 1235Password = password.Resource 1238.WithCredential(new EntraIdClientSecretCredential { ClientSecret = secret.Resource }) 1241Assert.Same(password.Resource, certificate.Password); 1244certificate.Password = replacement.Resource; 1251consumer.Resource, operation, TestServiceProvider.Instance); 1297container.Resource, operation, TestServiceProvider.Instance); 1320container.Resource, operation, TestServiceProvider.Instance); 1347container.Resource, operation, TestServiceProvider.Instance);
LocalDeveloperCertificateProvisioningTests.cs (17)
23entra.Resource.Parameters[AzureBicepResource.KnownParameters.TenantResourceSuffix] = "dev"; 25var credential = Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(Assert.Single(entra.Resource.ClientCredentials)); 26var original = await credential.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 27_ = entra.Resource.GetBicepTemplateString(); 29await BicepUtilities.SetParametersAsync(parameters, entra.Resource, builder.ExecutionContext, cancellationToken: TestContext.Current.CancellationToken); 30var initialChecksum = BicepUtilities.GetChecksum(entra.Resource, parameters, scope: null); 33Assert.Equal(initialChecksum, await BicepUtilities.GetCurrentChecksumAsync(entra.Resource, section, builder.ExecutionContext, NullLogger.Instance, TestContext.Current.CancellationToken)); 34entra.Resource.ClientCredentials.Clear(); 35var reusedCredential = new EntraIdLocalDeveloperCertificateCredential(entra.Resource, builder.ExecutionContext); 36entra.Resource.ClientCredentials.Add(reusedCredential); 37Assert.Equal(initialChecksum, await BicepUtilities.GetCurrentChecksumAsync(entra.Resource, section, builder.ExecutionContext, NullLogger.Instance, TestContext.Current.CancellationToken)); 38var reused = await reusedCredential.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 43entra.Resource.ClientCredentials.Clear(); 44var nextRun = new EntraIdLocalDeveloperCertificateCredential(entra.Resource, builder.ExecutionContext); 45entra.Resource.ClientCredentials.Add(nextRun); 47var renewedChecksum = await BicepUtilities.GetCurrentChecksumAsync(entra.Resource, section, builder.ExecutionContext, NullLogger.Instance, TestContext.Current.CancellationToken); 50var renewed = await nextRun.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken);
LocalDeveloperCertificateTests.cs (26)
245var credential = Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(Assert.Single(entra.Resource.ClientCredentials)); 248var template = entra.Resource.GetBicepTemplateString(); 249var certificate = await credential.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 266Assert.Null(created.Resource.TenantId); 267Assert.Null(created.Resource.ClientId); 271Assert.Null(created.Resource.TenantIdParameter); 272Assert.Null(created.Resource.ClientIdParameter); 273Assert.False(created.Resource.IsExistingApplication); 282var template = entra.Resource.GetBicepTemplateString(); 283Assert.Empty(entra.Resource.ClientCredentials); 286var environment = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(web.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 304entra.Resource.Outputs["tenantId"] = "aaaabbbb-0000-cccc-1111-dddd2222eeee"; 305entra.Resource.Outputs["clientId"] = "00001111-aaaa-2222-bbbb-3333cccc4444"; 306entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 308var result = await ExecutionConfigurationBuilder.Create(web.Resource).WithEnvironmentVariablesConfig() 323var selected = await Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(Assert.Single(entra.Resource.ClientCredentials)) 324.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 336var secret = Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(entra.Resource.ClientCredentials[0]).Secret; 338var dependencies = await web.Resource.GetResourceDependenciesAsync(builder.ExecutionContext, cancellationToken: TestContext.Current.CancellationToken); 343var args = await ExecutionConfigurationBuilder.Create(executable.Resource).WithArgumentsConfig() 356var credential = Assert.IsType<EntraIdLocalDeveloperCertificateCredential>(entra.Resource.ClientCredentials[0]); 357var first = await credential.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 359var second = await credential.GetCertificateAsync(app.Services, entra.Resource, TestContext.Current.CancellationToken); 363credential.EmitEnvironmentVariables(env, "AzureAd__ClientCredentials__0", "__", entra.Resource, new ProjectResource("web"), builder.ExecutionContext); 365Assert.False(entra.Resource.ProvisioningTaskCompletionSource!.Task.IsCompleted); 367Assert.False(entra.Resource.ProvisioningTaskCompletionSource.Task.IsCompleted);
MicrosoftIdentityWebConfigurationTests.cs (7)
49Password = password.Resource 60var configuration = await GetConfigurationAsync(project.Resource, operation); 140entra.Resource.Outputs["tenantId"] = TenantId; 141entra.Resource.Outputs["clientId"] = ClientId; 142entra.Resource.ProvisioningTaskCompletionSource!.SetResult(); 145var configuration = await GetConfigurationAsync(project.Resource, DistributedApplicationOperation.Run); 162var configuration = await GetConfigurationAsync(project.Resource, DistributedApplicationOperation.Run);
Aspire.Hosting.Azure.EventHubs (14)
AzureEventHubsExtensions.cs (13)
169var hub = new AzureEventHubResource(name, hubName, builder.Resource); 170builder.Resource.Hubs.Add(hub); 189configure(builder.Resource); 214var consumerGroup = new AzureEventHubConsumerGroupResource(name, groupName, builder.Resource); 215builder.Resource.ConsumerGroups.Add(consumerGroup); 256if (builder.Resource.IsEmulator) 284.AddAzureStorage($"{builder.Resource.Name}-storage") 287var surrogate = new AzureEventHubsEmulatorResource(builder.Resource); 299var storage = storageResource.Resource; 317var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 330var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 338var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>(); 377return 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.FrontDoor (10)
AzureFrontDoorExtensions.cs (5)
208if (builder.Resource.Annotations 210.Any(a => a.Resource.Name == resource.Resource.Name)) 213$"Origin resource '{resource.Resource.Name}' has already been added to Azure Front Door resource '{builder.Resource.Name}'. " + 217return builder.WithAnnotation(new AzureFrontDoorOriginAnnotation(resource.Resource));
AzureFrontDoorPrivateLinkExtensions.cs (5)
123if (frontDoor.Resource.Annotations 125.Any(annotation => ReferenceEquals(annotation.Environment, environment.Resource))) 130frontDoor.WithAnnotation(new AzureFrontDoorPrivateLinkAnnotation(frontDoor.Resource, environment.Resource)); 134environment.WithAnnotation(new PrivateEndpointTargetAnnotation(frontDoor.Resource));
Aspire.Hosting.Azure.Functions (26)
AzureFunctionsProjectResourceExtensions.cs (19)
362var launchProfile = builder.Resource.GetEffectiveLaunchProfile(); 406var targetEndpoint = builder.Resource.GetEndpoint(useHttps ? "https" : "http"); 423var targetEndpoint = builder.Resource.GetEndpoint("http"); 425if (builder.Resource.Language is AzureFunctionsLanguage.TypeScript) 444var resource = builder.Resource; 492if (containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 513return WithHostStorageCore(builder, storage.Resource); 529return WithHostStorageCore(builder, storage.Resource); 535builder.Resource.HostStorage = storage; 589if (source.Resource is not IResourceWithConnectionString || source.Resource is not IResourceWithAzureFunctionsConfig azureFunctionsConfig) 614if (source.Resource is not IResourceWithConnectionString || source.Resource is not IResourceWithAzureFunctionsConfig azureFunctionsConfig) 639destination.WithReferenceRelationship(source.Resource); 643connectionName ??= source.Resource.Name; 644source.Resource.ApplyAzureFunctionsConfiguration(context.EnvironmentVariables, connectionName); 655destination.WithReferenceRelationship(source.Resource); 659connectionName ??= source.Resource.Name; 682.Resource;
DurableTask\DurableTaskResourceExtensions.cs (6)
98builder.WithAnnotation(new DurableTaskSchedulerConnectionStringAnnotation(connectionString.Resource)); 165var emulatorResource = new DurableTaskSchedulerEmulatorResource(builder.Resource); 181.Where(th => th.Parent == builder.Resource) 224var hub = new DurableTaskHubResource(name, builder.Resource); 236var url = builder.Resource.IsEmulator 293return builder.WithAnnotation(new DurableTaskHubNameAnnotation(taskHubName.Resource));
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.KeyVault (12)
AzureKeyVaultResourceExtensions.cs (11)
241return builder.Resource.GetSecret(secretName); 257return builder.AddSecret(name, name, parameterResource.Resource); 298var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, parameterResource); 299builder.Resource.Secrets.Add(secret); 319var secret = new AzureKeyVaultSecretResource(name, name, builder.Resource, value); 320builder.Resource.Secrets.Add(secret); 339return builder.AddSecret(name, secretName, parameterResource.Resource); 358var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, parameterResource); 359builder.Resource.Secrets.Add(secret); 380var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value); 381builder.Resource.Secrets.Add(secret);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kubernetes (54)
AzureCertManagerExtensions.cs (1)
42var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment);
AzureKubernetesEnvironmentExtensions.cs (41)
80resource.KubernetesEnvironment = k8sEnvBuilder.Resource; 94resource.DefaultContainerRegistry = defaultRegistry.Resource; 95resource.Annotations.Add(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 96k8sEnvBuilder.WithAnnotation(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 100resource.ControlPlaneIdentity = controlPlaneIdentity.Resource; 101resource.KubeletIdentity = kubeletIdentity.Resource; 102resource.References.Add(controlPlaneIdentity.Resource); 103resource.References.Add(kubeletIdentity.Resource); 108controlPlaneIdentity.WithAnnotation(new RoleAssignmentAnnotation(kubeletIdentity.Resource, 124foreach (var identity in new[] { controlPlaneIdentity.Resource, kubeletIdentity.Resource }) 136controlPlaneIdentity.Resource.Scope = resource.Scope; 137kubeletIdentity.Resource.Scope = resource.Scope; 162context.Model.Resources.Add(controlPlaneIdentity.Resource); 163context.Model.Resources.Add(kubeletIdentity.Resource); 291builder.Resource.NodePools.Add(config); 293var nodePool = new AksNodePoolResource(name, config, builder.Resource); 383builder.Resource.NodePools.RemoveAll(p => p.Mode is AksNodePoolMode.System); 384builder.Resource.NodePools.Insert(0, config); 428builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id), ResourceAnnotationMutationBehavior.Replace); 464builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id)); 468builder.Resource.AksParent.NodePoolSubnets[builder.Resource.Name] = subnet.Resource.Id; 495if (builder.Resource.DefaultContainerRegistry is not null) 497builder.ApplicationBuilder.Resources.Remove(builder.Resource.DefaultContainerRegistry); 498builder.Resource.DefaultContainerRegistry = null; 504new ContainerRegistryReferenceAnnotation(registry.Resource), 510var staleAnnotations = builder.Resource.KubernetesEnvironment.Annotations 514builder.Resource.KubernetesEnvironment.Annotations.Remove(old); 517builder.Resource.KubernetesEnvironment.Annotations.Add( 518new ContainerRegistryReferenceAnnotation(registry.Resource)); 588builder.Resource.GatewayApiEnabled = true; 589builder.Resource.ApplicationLoadBalancerEnabled = true; 605var existingDelegation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().LastOrDefault(); 618builder.Resource, 619subnet.Resource.Id, 620subnet.Resource, 628builder.Resource.LoadBalancers.Add(lb); 665builder.Resource.OidcIssuerEnabled = enabled; 666builder.Resource.WorkloadIdentityEnabled = enabled;
AzureKubernetesIngressExtensions.cs (11)
51var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 81var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 135var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment); 168var lb = loadBalancer.Resource; 172builder.Resource.GatewayAnnotations["alb.networking.azure.io/alb-name"] = 174builder.Resource.GatewayAnnotations["alb.networking.azure.io/alb-namespace"] = 179builder.Resource.GatewayClassName ??= ReferenceExpression.Create($"azure-alb-external"); 206var lb = loadBalancer.Resource; 207builder.Resource.IngressAnnotations["alb.networking.azure.io/alb-name"] = 209builder.Resource.IngressAnnotations["alb.networking.azure.io/alb-namespace"] = 212builder.Resource.IngressClassName ??= ReferenceExpression.Create($"azure-alb-external");
AzureKubernetesPersistentVolumeExtensions.cs (1)
60var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment);
Aspire.Hosting.Azure.Kubernetes.Tests (313)
AzureKubernetesEnvironmentExtensionsTests.cs (180)
31Assert.Equal("aks", aks.Resource.Name); 32Assert.Equal("{aks.outputs.id}", aks.Resource.Id.ValueExpression); 33Assert.Equal("{aks.outputs.clusterFqdn}", aks.Resource.ClusterFqdn.ValueExpression); 34Assert.Equal("{aks.outputs.oidcIssuerUrl}", aks.Resource.OidcIssuerUrl.ValueExpression); 36var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 59var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 76Assert.Equal(2, aks.Resource.NodePools.Count); 78Assert.Equal("gpu", gpuPool.Resource.Name); 79Assert.Equal("gpu", gpuPool.Resource.Config.Name); 80Assert.Equal("Standard_NC6s_v3", gpuPool.Resource.Config.VmSize); 81Assert.Equal(0, gpuPool.Resource.Config.MinCount); 82Assert.Equal(5, gpuPool.Resource.Config.MaxCount); 83Assert.Equal(AksNodePoolMode.User, gpuPool.Resource.Config.Mode); 84Assert.Null(gpuPool.Resource.Config.OsSku); 85Assert.Same(aks.Resource, gpuPool.Resource.AksParent); 99Assert.Single(aks.Resource.NodePools); 100var defaultPool = aks.Resource.NodePools[0]; 134Assert.Collection(aks.Resource.NodePools, 136pool => Assert.Same(workers.Resource.Config, pool), 137pool => Assert.Same(defaults.Resource.Config, pool)); 138Assert.Equal(new AksNodePoolConfig("workers", "Standard_D2s_v5", 0, 5, AksNodePoolMode.User, "Ubuntu"), workers.Resource.Config); 139Assert.Equal(new AksNodePoolConfig("defaults", "Standard_D2s_v5", 1, 3, AksNodePoolMode.User), defaults.Resource.Config); 165Assert.Same(systemConfig, aks.Resource.NodePools[0]); 166Assert.Same(workerConfig, workers.Resource.Config); 170workers.Resource.Config.OsSku = "AzureLinux"; 171workers.Resource.Config.VmSize = "Standard_D4s_v5"; 172workers.Resource.Config.MinCount = 2; 173workers.Resource.Config.MaxCount = 4; 175var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 180var regenerated = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 209Assert.Collection(aks.Resource.NodePools, 211pool => Assert.Same(workers.Resource.Config, pool)); 238Configure(aks.Resource.NodePools[0]); 239Configure(workers.Resource.Config); 241await Assert.ThrowsAnyAsync<ArgumentException>(() => AzureManifestUtils.GetManifestWithBicep(aks.Resource)); 244await Assert.ThrowsAnyAsync<ArgumentException>(() => AzureManifestUtils.GetManifestWithBicep(aks.Resource)); 253var original = Assert.Single(aks.Resource.NodePools); 261Assert.Same(original, Assert.Single(aks.Resource.NodePools)); 271await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => AzureManifestUtils.GetManifestWithBicep(aks.Resource)); 274await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => AzureManifestUtils.GetManifestWithBicep(aks.Resource)); 283var original = Assert.Single(aks.Resource.NodePools); 288Assert.Same(original, Assert.Single(aks.Resource.NodePools)); 305var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 306var regenerated = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 323Assert.True(aks.Resource.OidcIssuerEnabled); 324Assert.True(aks.Resource.WorkloadIdentityEnabled); 325Assert.Null(aks.Resource.KubernetesVersion); 326Assert.False(aks.Resource.IsPrivateCluster); 327Assert.False(aks.Resource.ContainerInsightsEnabled); 328Assert.Null(aks.Resource.LogAnalyticsWorkspace); 342Assert.NotNull(aks.Resource.KubernetesEnvironment); 343Assert.Equal("aks", aks.Resource.KubernetesEnvironment.Name); 344Assert.True(aks.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var annotation)); 361Assert.Same(aks.Resource, computeEnvironment); 413Assert.True(aks.Resource.OidcIssuerEnabled); 414Assert.True(aks.Resource.WorkloadIdentityEnabled); 432Assert.True(project.Resource.TryGetLastAnnotation<AppIdentityAnnotation>(out var appIdentity)); 433Assert.Same(identity.Resource, appIdentity.IdentityResource); 445Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(aks.Resource); 457Assert.IsAssignableFrom<IAzureNspAssociationTarget>(aks.Resource); 495Assert.True(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 498Assert.Single(aks.Resource.NodePoolSubnets); 499Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 502Assert.True(gpuPool.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 521Assert.False(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 524Assert.Single(aks.Resource.NodePoolSubnets); 525Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 543Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 544Assert.Same(gpuPool.Resource, affinity.NodePool); 562Assert.Equal(3, aks.Resource.NodePools.Count); 563Assert.Equal("cpu", pool1.Resource.Name); 564Assert.Equal("gpu", pool2.Resource.Name); 575Assert.NotNull(aks.Resource.DefaultContainerRegistry); 576Assert.Equal("aks-acr", aks.Resource.DefaultContainerRegistry.Name); 591Assert.Null(aks.Resource.DefaultContainerRegistry); 594Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation)); 595Assert.Same(explicitAcr.Resource, annotation.Registry); 610Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var aksAnnotation)); 611Assert.Same(aks.Resource.DefaultContainerRegistry, aksAnnotation.Registry); 613Assert.True(aks.Resource.KubernetesEnvironment 615Assert.Same(aks.Resource.DefaultContainerRegistry, annotation.Registry); 648Assert.Same(registry.Resource, roles.TargetAzureResource); 649Assert.Same(aks.Resource.KubeletIdentity, roles.IdentityResource); 650Assert.Equal(aks.Resource.KubeletIdentity!.PrincipalId.ValueExpression, 653Assert.False(aks.Resource.Parameters.ContainsKey("acrName")); 654Assert.Equal("{aks.outputs.kubeletIdentityObjectId}", aks.Resource.KubeletIdentityObjectId.ValueExpression); 693Assert.Same(final.Resource, provisioningRoles.TargetAzureResource); 694Assert.Same(aks.Resource.KubeletIdentity, provisioningRoles.IdentityResource); 696identity => Assert.Same(aks.Resource.ControlPlaneIdentity, identity), 697identity => Assert.Same(aks.Resource.KubeletIdentity, identity)); 712.OfType<AzureRoleAssignmentResource>().Where(resource => resource.TargetAzureResource == registry.Resource); 714role => Assert.Same(first.Resource.KubeletIdentity, role.IdentityResource), 715role => Assert.Same(second.Resource.KubeletIdentity, role.IdentityResource)); 730.OfType<AzureRoleAssignmentResource>(), resource => resource.TargetAzureResource == registry.Resource); 731Assert.Same(aks.Resource.KubeletIdentity, roles.IdentityResource); 733var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 746Assert.Null(aks.Resource.ControlPlaneIdentity); 747Assert.Null(aks.Resource.KubeletIdentity); 749var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 767Assert.Same(aks.Resource.ControlPlaneIdentity, role.IdentityResource); 768Assert.Same(aks.Resource.KubeletIdentity, role.TargetAzureResource); 769Assert.Contains(role, aks.Resource.References); 773Assert.Same(aks.Resource.KubeletIdentity, role.IdentityResource); 774Assert.Same(aks.Resource.DefaultContainerRegistry, role.TargetAzureResource); 775Assert.Contains(role, aks.Resource.References); 777Assert.Collection(aks.Resource.KubeletIdentity!.Annotations.OfType<RoleAssignmentAnnotation>(), 780Assert.Collection(aks.Resource.ControlPlaneIdentity!.Annotations.OfType<RoleAssignmentAnnotation>(), 810builder.AddParameter("cluster-group", "cluster-rg").Resource, 811builder.AddParameter("cluster-subscription", "00000000-0000-0000-0000-000000000001").Resource) 819aks.Resource.Scope = scope; 825Assert.Same(scope, aks.Resource.ControlPlaneIdentity!.Scope); 826Assert.Same(scope, aks.Resource.KubeletIdentity!.Scope); 829role => role.TargetAzureResource == aks.Resource.KubeletIdentity); 833role => role.TargetAzureResource == aks.Resource.DefaultContainerRegistry); 874registry.Resource.Scope = new AzureBicepResourceScope("explicit-rg", "00000000-0000-0000-0000-000000000001"); 881.OfType<AzureRoleAssignmentResource>(), resource => resource.TargetAzureResource == registry.Resource); 882Assert.Same(registry.Resource.Scope, roles.Scope); 897builder.AddParameter("registry-group", "registry-rg").Resource, 898builder.AddParameter("registry-subscription", "00000000-0000-0000-0000-000000000001").Resource) 902builder.AddParameter("network-group", "network-rg").Resource, 903builder.AddParameter("network-subscription", "00000000-0000-0000-0000-000000000002").Resource) 915var registryRole = Assert.Single(roles, role => role.TargetAzureResource == registry.Resource); 916var networkRole = Assert.Single(roles, role => role.TargetAzureResource == network.Resource); 917Assert.Same(registryScope, registry.Resource.Scope); 919Assert.Same(aks.Resource.KubeletIdentity, registryRole.IdentityResource); 920Assert.Same(networkScope, network.Resource.Scope); 922Assert.Same(aks.Resource.ControlPlaneIdentity, networkRole.IdentityResource); 923Assert.Contains(registryRole, aks.Resource.References); 924Assert.Contains(networkRole, aks.Resource.References); 973Assert.Same(aks.Resource.ControlPlaneIdentity, role.IdentityResource); 974Assert.Same(poolNetwork.Resource, role.TargetAzureResource); 976Assert.Contains(role, aks.Resource.References); 980Assert.Same(aks.Resource.ControlPlaneIdentity, role.IdentityResource); 981Assert.Same(finalNetwork.Resource, role.TargetAzureResource); 983Assert.Contains(role, aks.Resource.References); 985foreach (var annotation in aks.Resource.ControlPlaneIdentity!.Annotations.OfType<RoleAssignmentAnnotation>() 1005Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 1006var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 1025var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 1043Assert.Equal("Standard_D2s_v5", aks.Resource.NodePools[0].VmSize); 1049Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 1050Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 1066Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 1067var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 1088Assert.Equal(2, aks.Resource.NodePools.Count); 1089Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 1090Assert.Equal("gpu", gpuPool.Resource.Name); 1118var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 1136aks.Resource.GatewayApiEnabled = gatewayApiEnabled; 1137aks.Resource.ApplicationLoadBalancerEnabled = applicationLoadBalancerEnabled; 1139Assert.Equal(applicationLoadBalancerEnabled, aks.Resource.RequiresPreviewIngressApi); 1149aks.Resource.GatewayApiEnabled = true; 1151var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 1169var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 1185Assert.True(aks.Resource.GatewayApiEnabled); 1186Assert.True(aks.Resource.ApplicationLoadBalancerEnabled); 1187Assert.True(aks.Resource.RequiresPreviewIngressApi); 1190Assert.True(albSubnet.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out var delegation)); 1206Assert.Same(aks.Resource, lb.Resource.Parent); 1207Assert.Equal("alb-lb", lb.Resource.AlbName); 1208Assert.True(lb.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var stepAnnotations)); 1226Assert.NotSame(lb1.Resource, lb2.Resource); 1227Assert.Equal("alb-lb1", lb1.Resource.AlbName); 1228Assert.Equal("alb-lb2", lb2.Resource.AlbName); 1231Assert.True(lb1.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb1Steps)); 1232Assert.True(lb2.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb2Steps)); 1238Assert.True(alb1.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 1239Assert.True(alb2.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 1259var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 1263Assert.Equal("Microsoft.Netapp/volumes", lb.Resource.DisplacedDelegationServiceName); 1280var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 1284Assert.Null(lb1.Resource.DisplacedDelegationServiceName); 1285Assert.Null(lb2.Resource.DisplacedDelegationServiceName); 1301var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 1303Assert.Null(lb.Resource.DisplacedDelegationServiceName); 1324var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 1328Assert.Equal("Microsoft.Sql/managedInstances", lb.Resource.DisplacedDelegationServiceName);
AzureKubernetesHelmChartTests.cs (12)
24Assert.IsType<KubernetesHelmChartResource>(chart.Resource); 25Assert.IsType<KubernetesEnvironmentResource>(chart.Resource.Parent); 37Assert.Equal("cert-manager", chart.Resource.Name); 38Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 39Assert.Equal("1.17.0", chart.Resource.ChartVersion); 53Assert.Equal(2, chart.Resource.Values.Count); 54Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 55Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 68Assert.Equal("ingress-nginx", chart.Resource.Namespace); 81Assert.Equal("my-nginx", chart.Resource.ReleaseName); 94Assert.True(chart.Resource.DestroyOnUninstall); 106Assert.False(chart.Resource.DestroyOnUninstall);
AzureKubernetesInfrastructureTests.cs (101)
32Assert.Single(aks.Resource.NodePools); 33Assert.Equal(AksNodePoolMode.System, aks.Resource.NodePools[0].Mode); 41Assert.Equal(2, aks.Resource.NodePools.Count); 42var workloadPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.User); 47Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 66Assert.Equal(2, aks.Resource.NodePools.Count); // system + gpu 67Assert.DoesNotContain(aks.Resource.NodePools, p => p.Name == "workload"); 70Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 91Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 107Assert.True(container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target)); 111Assert.Same(aks.Resource, target.ComputeEnvironment); 142Assert.Same(enva.Resource, enva.Resource.KubernetesEnvironment.OwningComputeEnvironment); 143Assert.Same(envb.Resource, envb.Resource.KubernetesEnvironment.OwningComputeEnvironment); 144Assert.True(enva.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 145Assert.True(envb.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 151Assert.True(cache.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var cacheTarget), 153Assert.Same(enva.Resource, cacheTarget.ComputeEnvironment); 155Assert.True(api.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var apiTarget), 157Assert.Same(enva.Resource, apiTarget.ComputeEnvironment); 160Assert.True(other.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var otherTarget), 162Assert.Same(envb.Resource, otherTarget.ComputeEnvironment); 347aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 348aks.Resource.AzCommandRunnerForTesting = (_, _, _) => Task.FromResult( 483aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 484aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 515Assert.Empty(aks.Resource.Outputs); 516Assert.NotNull(aks.Resource.KubernetesEnvironment.KubeConfigPath); 518["version --short", $"uninstall aks --namespace default --ignore-not-found --kubeconfig \"{aks.Resource.KubernetesEnvironment.KubeConfigPath}\""], 565aks.Resource.Scope = new AzureBicepResourceScope( 566aks.Resource.NameOutputReference, 567aks.Resource.Id); 568aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 569aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 598Assert.Empty(aks.Resource.Outputs); 599Assert.NotNull(aks.Resource.KubernetesEnvironment.KubeConfigPath); 601["version --short", $"uninstall aks --namespace default --ignore-not-found --kubeconfig \"{aks.Resource.KubernetesEnvironment.KubeConfigPath}\""], 629aks.Resource.AzCliPathResolverForTesting = () => 643Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 677aks.Resource.AzCliPathResolverForTesting = () => 694Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 729Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 766Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 800aks.Resource.AzCliPathResolverForTesting = () => 817Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 863aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 864aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 889Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 890Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 927aks.Resource.KubernetesEnvironment.Annotations.Add( 928new HelmReleaseNameAnnotation(ReferenceExpression.Create($"{releaseParameter.Resource}"))); 929aks.Resource.KubernetesEnvironment.Annotations.Add( 930new KubernetesNamespaceAnnotation(ReferenceExpression.Create($"{namespaceParameter.Resource}"))); 931aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 932aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 961Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 962Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 999aks.Resource.KubernetesEnvironment.Annotations.Add( 1000new HelmReleaseNameAnnotation(ReferenceExpression.Create($"{aks.Resource.NameOutputReference}"))); 1001aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 1002aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 1031Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1032Assert.True(aks.Resource.KubernetesEnvironment.SkipDestroyCleanup); 1064aks.Resource.KubernetesEnvironment.Annotations.Add( 1066aks.Resource.KubernetesEnvironment.Annotations.Add( 1068aks.Resource.AzCliPathResolverForTesting = () => "/fake/az"; 1069aks.Resource.AzCommandRunnerForTesting = (_, arguments, _) => 1091var kubeConfigPath = Assert.IsType<string>(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1131Assert.Null(aks.Resource.KubernetesEnvironment.KubeConfigPath); 1374aks.Resource.Outputs["name"] = clusterName; 1377aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1378aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1402foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1407Resource = aks.Resource 1417Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1418aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1447await File.ReadAllTextAsync(aks.Resource.KubernetesEnvironment.KubeConfigPath!, TestContext.Current.CancellationToken)); 1475aks.Resource.Outputs["name"] = clusterName; 1478aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1479aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1496foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1501Resource = aks.Resource 1507Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1508aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1687aks.Resource.Scope = new AzureBicepResourceScope(scopeResourceGroup, scopeSubscriptionId); 1688aks.Resource.Outputs["name"] = clusterName; 1691aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1692aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1709foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1714Resource = aks.Resource 1720Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1721aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 1757aks.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscriptionId); 1758aks.Resource.Outputs["name"] = clusterName; 1761aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 1762aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 1779foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 1784Resource = aks.Resource 1790Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 1791aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
AzureKubernetesIngressTests.cs (16)
49Assert.IsType<KubernetesIngressResource>(ingress.Resource); 50Assert.IsType<KubernetesEnvironmentResource>(ingress.Resource.Parent); 61Assert.IsType<KubernetesGatewayResource>(gateway.Resource); 62Assert.IsType<KubernetesEnvironmentResource>(gateway.Resource.Parent); 78Assert.NotNull(gateway.Resource.GatewayClassName); 79var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 82Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 85Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 102Assert.NotNull(ingress.Resource.IngressClassName); 103var resolvedClass = await ingress.Resource.IngressClassName!.GetValueAsync(default); 106Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 109Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 130Assert.NotNull(gateway.Resource.GatewayClassName); 131var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 134Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-name")); 135Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-namespace"));
AzureKubernetesPersistentVolumeTests.cs (4)
24Assert.Same(aks.Resource.KubernetesEnvironment, volume.Resource.Parent); 62var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 64executable.Resource,
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (13)
118var kustoDatabase = new AzureKustoReadWriteDatabaseResource(name, databaseName, builder.Resource); 119builder.Resource.Databases.Add(kustoDatabase); 130kcsb = GetConnectionStringBuilder(builder.Resource, connectionString); 174var surrogate = new AzureKustoEmulatorResource(builder.Resource); 236var resource = resourceBuilder.Resource; 371if (resourceBuilder.Resource.IsEmulator) 382.Resource 386throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 389var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 397.Resource 401throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 404var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 415message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Kusto.Tests (33)
AddAzureKustoTests.cs (22)
26Assert.NotNull(resourceBuilder.Resource); 27Assert.Equal(name, resourceBuilder.Resource.Name); 28Assert.IsType<AzureKustoClusterResource>(resourceBuilder.Resource); 49var containerAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 69var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 89var emulatorAnnotation = resourceBuilder.Resource.Annotations.OfType<EmulatorResourceAnnotation>().SingleOrDefault(); 107var nameAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerNameAnnotation>().SingleOrDefault(); 111var argsAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerRuntimeArgsCallbackAnnotation>().SingleOrDefault(); 126var annotation = resourceBuilder.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().SingleOrDefault(); 180Assert.IsType<IResourceWithConnectionString>(resourceBuilder.Resource, exactMatch: false); 199Assert.Equal(runAsEmulator, resourceBuilder.Resource.IsEmulator); 217var volumeAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 240var mountAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().SingleOrDefault(); 262var mountAnnotations = resourceBuilder.Resource.Annotations.OfType<ContainerMountAnnotation>().ToList(); 292var containerImageAnnotation = resourceBuilder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 312var persistenceAnnotation = Assert.Single(resourceBuilder.Resource.Annotations.OfType<PersistenceAnnotation>()); 327Assert.Single(kustoServer.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 342Assert.Single(database.Resource.Annotations, annotation => annotation is HealthCheckAnnotation hca && hca.Key == $"{name}_check"); 359var endpointAnnotations = resourceBuilder.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 388var script = database.Resource.GetDatabaseCreationScript(); 405var script = database.Resource.GetDatabaseCreationScript(); 424var 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); 109await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cancellationToken: cts.Token); 113hb.Configuration["ConnectionStrings:KustoTestDbConnection"] = await kustoDb.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 189await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 217await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 220await rns.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 221await rns.WaitForResourceAsync(db2.Resource.Name, KnownResourceStates.FailedToStart, cts.Token); 258await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cts.Token);
Aspire.Hosting.Azure.Network (41)
AzureNatGatewayExtensions.cs (2)
85builder.Resource.PublicIPAddresses.Add(publicIPAddress.Resource);
AzureNetworkSecurityGroupExtensions.cs (3)
99if (builder.Resource.SecurityRules.Any(existing => string.Equals(existing.Name, rule.Name, StringComparison.OrdinalIgnoreCase))) 102$"A security rule named '{rule.Name}' already exists in Network Security Group '{builder.Resource.Name}'.", 106builder.Resource.SecurityRules.Add(rule);
AzureNetworkSecurityPerimeterExtensions.cs (8)
87if (builder.Resource.AccessRules.Any(existing => string.Equals(existing.Name, rule.Name, StringComparison.OrdinalIgnoreCase))) 90$"An access rule named '{rule.Name}' already exists in Network Security Perimeter '{builder.Resource.Name}'.", 94builder.Resource.AccessRules.Add(rule); 144associationName ??= $"{target.Resource.Name}-assoc"; 146if (nsp.Resource.Associations.Any(a => string.Equals(a.Name, associationName, StringComparison.OrdinalIgnoreCase))) 149$"An association named '{associationName}' already exists in Network Security Perimeter '{nsp.Resource.Name}'.", 153nsp.Resource.Associations.Add(new AzureNetworkSecurityPerimeterResource.NspAssociationConfig( 155target.Resource.Id,
AzurePrivateEndpointExtensions.cs (8)
58var name = $"{subnet.Resource.Name}-{target.Resource.Name}-pe"; 59var vnet = subnet.Resource.Parent; 61var resource = new AzurePrivateEndpointResource(name, subnet.Resource, target.Resource, ConfigurePrivateEndpoint); 70var zoneNames = target.Resource.GetPrivateDnsZoneNames(); 82IResource rootResource = target.Resource; 91if (target.Resource is IAzurePrivateEndpointTargetNotification notificationTarget)
AzureVirtualNetworkExtensions.cs (20)
74AzureVirtualNetworkResource resource = new(name, ConfigureVirtualNetwork, addressPrefix.Resource); 204var subnet = new AzureSubnetResource(name, subnetName, addressPrefix, builder.Resource); 238var subnet = new AzureSubnetResource(name, subnetName, addressPrefix.Resource, builder.Resource); 269builder.Resource.Subnets.Add(subnet); 316var target = builder.Resource; 318var subnetId = ReferenceExpression.Create($"{subnet.Resource.Id}"); 329var existingDelegation = subnet.Resource.Annotations 339$"The subnet '{subnet.Resource.Name}' is already delegated to '{existingDelegation.ServiceName}' and cannot also be delegated to '{target.DelegatedSubnetServiceName}'."); 400foreach (var existing in builder.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().ToArray()) 402builder.Resource.Annotations.Remove(existing); 436builder.Resource.NatGateway = natGateway.Resource; 469if (builder.Resource.NetworkSecurityGroup is { IsImplicitlyCreated: true }) 472$"The subnet '{builder.Resource.Name}' already has an NSG created via shorthand methods. " + 477builder.Resource.NetworkSecurityGroup = nsg.Resource; 614var subnet = builder.Resource; 621nsgBuilder.Resource.IsImplicitlyCreated = true; 622subnet.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); 173var azureResource = builder.Resource; 176builder.Resource.AddDatabase(name, databaseName); 187azurePostgresDatabase.SetInnerResource(innerDb.Resource); 229var azureResource = builder.Resource; 249azureResource.SetInnerResource(postgresContainer.Resource); 259existingDb.SetInnerResource(innerDb.Resource); 307var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 308.WithParentRelationship(builder.Resource); 316if (builder.Resource.IsContainer()) 318data.Model.Resources.Remove(kv.Resource); 362var azureResource = builder.Resource; 364azureResource.UserNameParameter = userName?.Resource ?? 368azureResource.PasswordParameter = password?.Resource ?? 369ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-password"); 372azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{builder.Resource.Name}"); 421if (!builder.Resource.IsContainer) 427var innerBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.InnerResource); 632builder.ApplicationBuilder, $"{builder.Resource.Name}-username", secret: false, generatedUserName);
Aspire.Hosting.Azure.Redis (20)
AzureManagedRedisExtensions.cs (9)
101var azureResource = builder.Resource; 106azureResource.SetInnerResource(redisContainer.Resource); 139var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 140.WithParentRelationship(builder.Resource); 148if (builder.Resource.IsContainer()) 150data.Model.Resources.Remove(kv.Resource); 186var azureResource = builder.Resource; 187azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 188azureResource.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); 165var azureResource = builder.Resource; 170azureResource.SetInnerResource(redisContainer.Resource); 203var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 204.WithParentRelationship(builder.Resource); 212if (builder.Resource.IsContainer()) 214data.Model.Resources.Remove(kv.Resource); 235var azureResource = builder.Resource; 236azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}");
Aspire.Hosting.Azure.Sandboxes (19)
AzureSandboxesExtensions.cs (9)
222builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.None; 223builder.Resource.WorkloadUserAssignedIdentities.Clear(); 243builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.SystemAssigned; 244builder.Resource.WorkloadUserAssignedIdentities.Clear(); 267builder.Resource.AddWorkloadUserAssignedIdentity(identity.Resource); 292builder.Resource.References.Add(identity.Resource); 294new AzureSandboxGroupAcrPullIdentityAnnotation(identity.Resource),
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
45if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 54Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 55Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 106if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 107builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 115var identityName = $"{builder.Resource.Name}-mi"; 119$"Cannot create the cross-scope ACR pull identity '{identityName}' for environment '{builder.Resource.Name}' because a resource with that name already exists. Call 'WithAcrPullIdentity' on the environment to select an existing identity, or use a different resource name."); 143builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 144if (builder.Resource is AzureBicepResource environment)
Aspire.Hosting.Azure.Search (1)
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.ServiceBus (30)
AzureServiceBusExtensions.cs (29)
185var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource); 186builder.Resource.Queues.Add(queue); 205configure(builder.Resource); 271var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource); 272builder.Resource.Topics.Add(topic); 291configure(builder.Resource); 313if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource) 344var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource); 345builder.Resource.Subscriptions.Add(subscription); 364configure(builder.Resource); 402if (builder.Resource.IsEmulator) 429var surrogate = new AzureServiceBusEmulatorResource(builder.Resource); 440if (!builder.Resource.HasAnnotationOfType<SqlServerConnectionAnnotation>()) 446$"{builder.Resource.Name}-sql-pwd", 453.AddSqlServer($"{builder.Resource.Name}-mssql", passwordBuilder) 462foreach (var sqlServerConfiguration in builder.Resource.Annotations.OfType<SqlServerConfigurationAnnotation>()) 467if (!sqlServerBuilder.Resource.Annotations.OfType<EndpointAnnotation>().Any(e => e.Name == SqlServerEndpointName)) 475builder.WithAnnotation(new SqlServerConnectionAnnotation(sqlServerBuilder.Resource, [])); 484if (!builder.Resource.TryGetLastAnnotation<SqlServerConnectionAnnotation>(out var sqlConnection)) 503var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 516var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 524var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>(); 672if (builder.Resource.HasAnnotationOfType<SqlServerConnectionAnnotation>()) 713if (builder.Resource.HasAnnotationOfType<SqlServerConfigurationAnnotation>()) 720if (builder.Resource.TryGetLastAnnotation<SqlServerConnectionAnnotation>(out var previousConnection)) 722RemoveWaitFor(builder.Resource, previousConnection.WaitAnnotations); 726var existingAnnotations = builder.Resource.Annotations.ToHashSet(); 728var waitAnnotations = builder.Resource.Annotations 732return builder.WithAnnotation(new SqlServerConnectionAnnotation(sqlServer.Resource, waitAnnotations), ResourceAnnotationMutationBehavior.Replace);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.SignalR (2)
AzureSignalRExtensions.cs (1)
172var surrogate = new AzureSignalREmulatorResource(builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Sql (27)
AzureSqlExtensions.cs (16)
32CreateSqlServer(infrastructure, builder.ApplicationBuilder, builder.Resource.Databases); 35var resource = new AzureSqlServerResource(builder.Resource, configureInfrastructure); 46if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault() is { } containerAnnotation) 48builder.Resource.Annotations.Remove(containerAnnotation); 120var azureResource = builder.Resource; 123builder.Resource.AddDatabase(azureSqlDatabase); 134azureSqlDatabase.SetInnerResource(innerDb.Resource); 151builder.Resource.UseDefaultAzureSku = true; 190var azureResource = builder.Resource; 200azureResource.SetInnerResource(sqlContainer.Resource); 210existingDb.SetInnerResource(innerDb.Resource); 409builder.Resource.Annotations.Add(new AdminDeploymentScriptSubnetAnnotation(subnet.Resource)); 461builder.Resource.DeploymentScriptStorage = storage.Resource; 464if (!storage.Resource.IsExisting())
AzureSqlServerResource.cs (11)
536DeploymentScriptDependsOn.Add(privateEndpoint.Resource); 552DeploymentScriptStorage = CreateDeploymentScriptStorage(builder, builder.CreateResourceBuilder(this)).Resource; 558AdminIdentity = admin.Resource; 584}).Resource; 621var sqlName = azureSqlServer.Resource.Name; 689sql.DeploymentScriptDependsOn.Add(storagePe.Resource); 706var vnet = builder.CreateResourceBuilder(peSubnet.Resource.Parent); 709.Where(s => ReferenceEquals(s.Parent, vnet.Resource)); 711var aciSubnetCidr = SubnetAddressAllocator.AllocateDeploymentScriptSubnet(vnet.Resource, existingSubnets); 714aciSubnetResource = aciSubnet.Resource; 716sql.Annotations.Add(new AdminDeploymentScriptSubnetAnnotation(aciSubnet.Resource));
Aspire.Hosting.Azure.Storage (43)
AzureStorageExtensions.cs (42)
188if (builder.Resource.IsHnsEnabled) 221var 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."); 224var 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."); 235foreach (var container in builder.Resource.BlobContainers) 241foreach (var queue in builder.Resource.Queues) 249var healthCheckKey = $"{builder.Resource.Name}_check"; 262var surrogate = new AzureStorageEmulatorResource(builder.Resource); 284return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly); 394if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName)) 399builder.Resource.ImplicitBlobService ??= defaultService; 404builder.Resource.ImplicitBlobService ??= service; 421builder.Resource.IsHnsEnabled = true; 423if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName)) 428builder.Resource.ImplicitDataLakeService ??= defaultService; 433builder.Resource.ImplicitDataLakeService ??= service; 464var name = builder.Resource.Name + "-blobs"; 466return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name); 473var name = builder.Resource.Name + "-data-lake"; 475return builder.Resource.DataLakeStorageBuilder ??= CreateDataLakeService(builder, name); 495var parentBuilder = builder.Resource.ImplicitBlobService ??= GetBlobService(builder); 496AzureBlobStorageContainerResource resource = new(name, blobContainerName, parentBuilder.Resource); 497builder.Resource.BlobContainers.Add(resource); 534builder.Resource.IsHnsEnabled = true; 538var parentBuilder = builder.Resource.ImplicitDataLakeService ??= GetDataLakeService(builder); 539AzureDataLakeStorageFileSystemResource resource = new(name, dataLakeFileSystemName, parentBuilder.Resource); 540builder.Resource.DataLakeFileSystems.Add(resource); 562AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource); 563builder.Resource.Parent.BlobContainers.Add(resource); 614if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName)) 619builder.Resource.ImplicitQueueService ??= defaultService; 624builder.Resource.ImplicitQueueService ??= service; 637var name = builder.Resource.Name + "-queues"; 639return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name); 659var parentBuilder = builder.Resource.ImplicitQueueService ??= builder.GetQueueService(); 660AzureQueueStorageQueueResource resource = new(name, queueName, parentBuilder.Resource); 661builder.Resource.Queues.Add(resource); 812var resource = new AzureBlobStorageResource(name, builder.Resource); 838var resource = new AzureDataLakeStorageResource(name, builder.Resource); 847var resource = new AzureTableStorageResource(name, builder.Resource); 854var 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 (1897)
AzureAppConfigurationExtensionsTests.cs (7)
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); 140appConfiguration.Resource.Annotations,
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"; 97var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 128var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
AzureAppServiceEnvironmentExtensionsTests.cs (11)
41_ = appServiceEnvironment.Resource.AddAsExistingResource(infra); 44var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 58var registry = appServiceEnvironment.Resource.ContainerRegistry; 73var registry = appServiceEnvironment.Resource.ContainerRegistry; 74Assert.Same(acr.Resource, registry); 96var exception = Assert.Throws<InvalidOperationException>(() => appServiceEnvironment.Resource.ContainerRegistry); 125Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 127var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 174Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 210Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 211Assert.Same(registry.Resource, rolesWest.TargetAzureResource);
AzureAppServiceTests.cs (40)
34.WithEnvironment(context => context.EnvironmentVariables["CLIENT_ID"] = new TestBicepOutputReferenceProvider(identity.Resource.ClientId)); 40var website = Assert.IsAssignableFrom<AzureProvisioningResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 72Assert.Same(env.Resource, target.ComputeEnvironment); 95var target = project.Resource.GetDeploymentTargetAnnotation(); 97Assert.Same(environment.Resource, target.ComputeEnvironment); 143var target = project.Resource.GetDeploymentTargetAnnotation(); 147var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 183var target = project.Resource.GetDeploymentTargetAnnotation(); 187var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 225var target = project.Resource.GetDeploymentTargetAnnotation(); 267var target = project.Resource.GetDeploymentTargetAnnotation(); 401project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 445SetFoundryProjectOutputs(project.Resource); 447web.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 576Assert.NotNull(env.Resource.NameOutputReference); 577Assert.Equal("name", env.Resource.NameOutputReference.Name); 578Assert.Same(env.Resource, env.Resource.NameOutputReference.Resource); 668var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 688var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 719var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 737var steps = await CreateStepsAsync(app, env.Resource); 749Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 750Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 911project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 947project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 983project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1021project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1056project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1132project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1163container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1187var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 1193Assert.Equal(env.Resource, output.Resource); 1211env.Resource.Outputs["webSiteSuffix"] = "website123"; 1212env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 1219var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 1349project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1380project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1412project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1441featureFlag.Resource,
AzureBicepProvisionerTests.cs (10)
39await BicepUtilities.SetParametersAsync(parameters, registration.Resource, builder.ExecutionContext); 42cached.Data[BicepUtilities.DeploymentStateChecksumKey] = BicepUtilities.GetChecksum(registration.Resource, parameters, null); 47Assert.True(await provisioner.ConfigureResourceAsync(registration.Resource, CancellationToken.None)); 48Assert.Equal("original-client", registration.Resource.Outputs["clientId"]); 49registration.Resource.Outputs.Clear(); 55Assert.False(await provisioner.ConfigureResourceAsync(registration.Resource, CancellationToken.None)); 56Assert.Empty(registration.Resource.Outputs); 108if (resourceEvent.Resource == entries.Resource) 500await CreateProvisioner(services).GetOrCreateResourceAsync(resource.Resource, context, CancellationToken.None); 502Assert.Equal(hasLocation || explicitlyBound, resource.Resource.HasLocationParameter);
AzureBicepResourceTests.cs (11)
24Assert.Equal("content", bicepResource.Resource.TemplateString); 25Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]); 26Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]); 89if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 110if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 128bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint"; 140bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43"; 186bicepResource.Resource.TempDirectory = Environment.CurrentDirectory; 188var manifest = await ManifestUtils.GetManifest(bicepResource.Resource); 221var annotation = bicepResource.Resource.Annotations.OfType<Aspire.Hosting.Pipelines.PipelineStepAnnotation>().FirstOrDefault(); 230Resource = bicepResource.Resource
AzureConnectorNamespaceTests.cs (45)
52worker.Resource, 77worker.Resource, 183Assert.Same(gateway.Resource, connection.Resource.Parent); 184Assert.Same(gateway.Resource, mcp.Resource.Parent); 187Assert.Single(connection.Resource.Annotations.OfType<ManifestPublishingCallbackAnnotation>())); 190Assert.Single(mcp.Resource.Annotations.OfType<ManifestPublishingCallbackAnnotation>())); 191var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 223var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 257() => AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource)); 284() => AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource)); 311Assert.Single(gateway.Resource.Connections); 331Assert.Single(gateway.Resource.McpServerConfigs); 360Assert.NotEqual(firstConnection.Resource.BicepIdentifier, secondConnection.Resource.BicepIdentifier); 361Assert.NotEqual(secondConnection.Resource.BicepIdentifier, mcp.Resource.BicepIdentifier); 369Assert.StartsWith("connectorConnection_location_abcdefghijklmnop_", firstConnection.Resource.BicepIdentifier, StringComparison.Ordinal); 370Assert.StartsWith("connectorMcpServer_location_abcdefghijklmnop_", mcp.Resource.BicepIdentifier, StringComparison.Ordinal); 374var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, gateway.Resource); 389var (_, firstBicep) = await AzureManifestUtils.GetManifestWithBicep(model, firstGateway.Resource); 390var (_, secondBicep) = await AzureManifestUtils.GetManifestWithBicep(model, secondGateway.Resource); 425Assert.Single(mcp.Resource.Connectors); 449Assert.Empty(mcp.Resource.AccessPolicies); 473Assert.False(mcp.Resource.IsExisting); 513Assert.Empty(mcp.Resource.AccessPolicies); 555Assert.Single(mcp.Resource.AccessPolicies); 578Assert.False(connection.Resource.IsExisting); 609Assert.Empty(connection.Resource.AccessPolicies); 639Assert.Empty(connection.Resource.AccessPolicies); 640Assert.Empty(mcp.Resource.AccessPolicies); 663Assert.Empty(connection.Resource.AccessPolicies); 707Assert.Single(office365.Resource.AccessPolicies).Name, 711Assert.Single(sharepoint.Resource.AccessPolicies).Name, 714Assert.Single(compoundParentName.Resource.AccessPolicies).Name, 715Assert.Single(compoundPolicyName.Resource.AccessPolicies).Name); 759Assert.Single(connection.Resource.AccessPolicies); 800connection.Resource.AccessPolicies, 804connection.Resource.AccessPolicies[0].BicepIdentifier, 805connection.Resource.AccessPolicies[1].BicepIdentifier); 835connection.Resource.BicepIdentifier, 836Assert.Single(connection.Resource.AccessPolicies).BicepIdentifier, 837mcp.Resource.BicepIdentifier, 838Assert.Single(mcp.Resource.AccessPolicies).BicepIdentifier
AzureContainerAppEnvironmentExtensionsTests.cs (27)
44_ = containerAppEnvironment.Resource.AddAsExistingResource(infra); 47var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 74Assert.True(logAnalyticsWorkspace.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAnnotation)); 75Assert.Equal(lawName.Resource, existingAnnotation.Name); 76Assert.Equal(lawResourceGroup.Resource, existingAnnotation.ResourceGroup); 79Assert.True(containerAppEnvironment.Resource.TryGetLastAnnotation<AzureLogAnalyticsWorkspaceReferenceAnnotation>(out var workspaceRef)); 80Assert.Same(logAnalyticsWorkspace.Resource, workspaceRef.Workspace); 83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 97var registry = containerAppEnvironment.Resource.ContainerRegistry; 112var registry = containerAppEnvironment.Resource.ContainerRegistry; 113Assert.Same(acr.Resource, registry); 135var exception = Assert.Throws<InvalidOperationException>(() => containerAppEnvironment.Resource.ContainerRegistry); 151var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 152var (_, vnetBicep) = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 173var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 198var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 218var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 249var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 278Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 280var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 420Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 455Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 456Assert.Same(registry.Resource, rolesWest.TargetAzureResource); 474() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 503() => AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true)); 527() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 600Assert.Same(environment.Resource, api.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
AzureContainerAppExpressEndpointTests.cs (37)
53enabled.Resource, bool.TrueString, nested, ReferenceExpression.Create($"disabled")); 61var apiTarget = GetTarget(api.Resource); 62var webTarget = GetTarget(web.Resource); 68Assert.Same(environment.Resource, domain.Resource); 85var host = environment.Resource.GetHostAddressExpression(endpoint); 88Assert.Same(environment.Resource, output.Resource); 89Assert.Null(api.Resource.GetDeploymentTargetAnnotation()); 93var target = GetTarget(api.Resource); 95Assert.Same(target, GetTarget(api.Resource)); 96Assert.Single(api.Resource.Annotations.OfType<DeploymentTargetAnnotation>()); 98environment.Resource.Outputs[DomainOutputName] = "salmonisland-e9e6a567.westus3.azurecontainerapps.io"; 99environment.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 113var expression = environment.Resource.GetEndpointPropertyExpression(endpoint.Property(property)); 134var expression = environment.Resource.GetEndpointPropertyExpression(api.GetEndpoint("http").Property(property)); 137Assert.Null(api.Resource.GetDeploymentTargetAnnotation()); 156environment.Resource.GetEndpointPropertyExpression(api.GetEndpoint("http").Property(property))); 178enabled.Resource, bool.TrueString, 189var exception = Assert.Throws<InvalidOperationException>(GetTarget(web.Resource).GetBicepTemplateString); 222web.WithEnvironment("EARLY_HOST", producerEnvironment.Resource.GetHostAddressExpression(api.GetEndpoint("http"))); 227var webTarget = GetTarget(web.Resource); 233output => output.Name == DomainOutputName && output.Resource == producerEnvironment.Resource); 234Assert.Same(producerEnvironment.Resource, domain.Resource); 263var target = GetTarget(web.Resource); 266output => output.Name == DomainOutputName && output.Resource == standard.Resource); 267Assert.Same(standard.Resource, domain.Resource); 295var target = GetTarget(web.Resource); 317? environment.Resource.GetEndpointPropertyExpression(endpoint.Property(EndpointProperty.Url)) 323var target = GetTarget(api.Resource); 328Assert.Same(environment.Resource, domain.Resource); 345var firstTarget = GetTarget(first.Resource); 346var secondTarget = GetTarget(second.Resource); 368var target = GetTarget(api.Resource); 369environment.Resource.Outputs[DomainOutputName] = "salmonisland-e9e6a567.westus3.azurecontainerapps.io"; 370environment.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"] = 376foreach (var annotation in environment.Resource.Annotations.OfType<PipelineStepAnnotation>()) 381Resource = environment.Resource 385environment.Resource.ProvisioningTaskCompletionSource?.TrySetResult();
AzureContainerAppExpressTests.cs (12)
72var exception = Assert.Throws<InvalidOperationException>(environment.Resource.GetBicepTemplateString); 93var (_, expressBicep) = await GetManifestWithBicep(express.Resource); 94var (_, standardBicep) = await GetManifestWithBicep(standard.Resource); 110var (manifest, bicep) = await GetManifestWithBicep(environment.Resource); 126var expressFirstBicep = expressFirst.Resource.GetBicepTemplateString(); 130Assert.Equal(expressFirstBicep, dashboardFirst.Resource.GetBicepTemplateString()); 144var target = Assert.IsType<AzureContainerAppResource>(worker.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 164await Verify(environment.Resource.GetBicepTemplateString(), "bicep"); 191var target = Assert.IsType<AzureContainerAppResource>(project.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 233var target = Assert.IsType<AzureContainerAppResource>(project.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 270var target = Assert.IsType<AzureContainerAppResource>(container.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 290var target = Assert.IsType<AzureContainerAppResource>(container.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget);
AzureContainerAppsTests.cs (39)
36.WithEnvironment(context => context.EnvironmentVariables["CLIENT_ID"] = new TestBicepOutputReferenceProvider(identity.Resource.ClientId)); 42var resource = Assert.IsAssignableFrom<AzureProvisioningResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 134Assert.Same(env.Resource, target.ComputeEnvironment); 156var target = project.Resource.GetDeploymentTargetAnnotation(); 158Assert.Same(environment.Resource, target.ComputeEnvironment); 208SetFoundryProjectOutputs(project.Resource); 210var target = web.Resource.GetDeploymentTargetAnnotation(); 260Assert.Same(infra.Resource, target.ComputeEnvironment); 291Assert.Same(env.Resource, target?.ComputeEnvironment); 412.WithEnvironment("DATABASE_URL", pgContainer.Resource.UriExpression); 975var target = container.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget as AzureBicepResource; 1662var (manifest, bicep) = await GetManifestWithBicep(sql.Resource); 1783var managedEnvironment = (ContainerAppManagedEnvironment)env.Resource.AddAsExistingResource(infra); 1795var (manifest, bicep) = await GetManifestWithBicep(azResource.Resource); 1885Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 1886Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 2808var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 2874var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 2880Assert.Equal(env.Resource, output.Resource); 2898env.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"] = "example.azurecontainerapps.io"; 2899env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 2908var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 2999var containerRegistryInterface = env.Resource as IContainerRegistry; 3083var webappAcaTarget = webappAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 3085Assert.Same(aca.Resource, webappAcaTarget.ComputeEnvironment); 3089var webappServiceTarget = webappServiceResource.GetDeploymentTargetAnnotation(appService.Resource); 3091Assert.Same(appService.Resource, webappServiceTarget.ComputeEnvironment); 3095var containerAcaTarget = containerAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 3097Assert.Same(aca.Resource, containerAcaTarget.ComputeEnvironment); 3103var containerAppServiceAcaTarget = containerAppServiceResource.GetDeploymentTargetAnnotation(aca.Resource); 3107Assert.Null(webappAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 3108Assert.Null(webappServiceResource.GetDeploymentTargetAnnotation(aca.Resource)); 3109Assert.Null(containerAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 3193featureFlag.Resource, 3236featureFlag.Resource, 3238ReferenceExpression.Create($"prefix-{connectionPrefix.Resource}-enabled"), 3279innerFlag.Resource, 3285outerFlag.Resource, 3323var steps = await CreateStepsAsync(app, env.Resource);
AzureContainerRegistryTests.cs (20)
53Assert.Same(registryBuilder.Resource, annotation!.Registry); 63var (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)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 54await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 94await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 98hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 99hb.AddAzureCosmosClient(db.Resource.Name); 100hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName); 175await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token); 183[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default) 186hb.AddAzureCosmosClient(cosmos1.Resource.Name); 223await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token); 232[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default) 235hb.AddAzureCosmosClient(cosmos2.Resource.Name); 293await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token); 297hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 298hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (103)
38var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(); 59var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 107Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 110Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 111Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 137Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 138Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 139Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 140Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 142Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression); 143Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression); 156((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos"); 163((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1"); 172((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1"); 207var manifest = await GetManifestWithBicep(model, cosmos.Resource); 257Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 258Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression); 259Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression); 261var manifest = await GetManifestWithBicep(cosmos.Resource); 276Assert.True(cosmos.Resource.IsContainer()); 278var csExpr = cosmos.Resource.ConnectionStringExpression; 284Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 297Assert.True(cosmos.Resource.IsContainer()); 299var csExpr = cosmos.Resource.ConnectionStringExpression; 305Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 375var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 386var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 388Assert.Equal("cosmos", cosmos.Resource.Name); 406cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 408var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 429var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 431Assert.Equal("cosmos", cosmos.Resource.Name); 469kv.Resource.SecretResolver = (secretRef, _) => 479var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 490var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 492Assert.Equal("cosmos", cosmos.Resource.Name); 510cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 512var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 531var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 533Assert.Equal("cosmos", cosmos.Resource.Name); 544var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 556Assert.True(cosmos.Resource.IsEmulator()); 557Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 568Assert.True(cosmos.Resource.IsEmulator()); 569Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 579Assert.NotEmpty(cosmos.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 583var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 615_ = cosmosdb.Resource.AddAsExistingResource(infra); 618var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 645Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput); 646Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner); 648Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput); 649Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner); 652var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList(); 653Assert.Contains(cosmos.Resource, references); 654Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references); 665Assert.Contains(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 676Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 687cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 695Resource = cosmos.Resource, 722cosmos.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>()); 730Resource = cosmos.Resource, 754cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 763Resource = cosmos.Resource, 809var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 841var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 870var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 900var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 911var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 926var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 939var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 953var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 961var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 973var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 978var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1013var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1019var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 1033var csExpr = cosmos.Resource.ConnectionStringExpression; 1049var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, serviceProvider); 1062var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1073var healthEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulatorhealth"); 1078Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation); 1088Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation hc && hc.Key == "cosmos_check"); 1099var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 1112var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1124var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1141() => builder.Eventing.PublishAsync(new ResourceReadyEvent(cosmos.Resource, app.Services))); 1158await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(cosmos.Resource, app.Services)); 1201Assert.False(cosmos.Resource.IsEmulator); 1202Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1203Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1204Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1214Assert.False(cosmos.Resource.IsEmulator); 1215Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1216Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1217Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1252cosmos.Resource, 1255foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1277cosmos.Resource, 1280foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>())
AzureDeployerTests.cs (55)
360var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 483Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 484Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 485Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 486Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 487Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 543Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 544Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 545Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 546Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 547Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 609Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 610Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 611Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 612Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 613Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 677var (containerAppSubscriptionId, containerAppResourceGroupName) = GetSubscriptionAndResourceGroup((string)containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]!); 713var envResource = Assert.IsAssignableFrom<AzureBicepResource>(environment.Resource); 714var apiTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 715var webTarget = Assert.IsAssignableFrom<AzureBicepResource>(web.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 799var webSiteSuffix = Assert.IsType<string>(appServiceEnv.Resource.Outputs["webSiteSuffix"]); 801var (planSubscriptionId, planResourceGroupName) = GetSubscriptionAndResourceGroup((string)appServiceEnv.Resource.Outputs["planId"]!); 894Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 895Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 896Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity"), acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 897Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 898Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/acaenv"), acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 901Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 902Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 903Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity"), aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 904Assert.Equal(GetTestResourceId("/providers/Microsoft.Web/serverfarms/aasplan"), aasEnv.Resource.Outputs["planId"]); 905Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]); 1021var setValue = await param.Resource.GetValueAsync(default); 1095var setValue = await param.Resource.GetValueAsync(default); 1145Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 1146Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 1147Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 1148Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1149Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1207Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1208Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/testenv"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1417Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 1418Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 1419Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 1420Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1421Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1424var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 1426Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1427Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 2119Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 2120Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 2121Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default)); 2175Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 2176Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 2177Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEnvironmentResourceExtensionsTests.cs (244)
89directory.Resource.Outputs["objectId"] = "aaaabbbb-0000-cccc-1111-dddd2222eeee"; 90directory.Resource.Outputs["servicePrincipalId"] = "00001111-aaaa-2222-bbbb-3333cccc4444"; 91directory.Resource.Outputs["tenantId"] = "87654321-4321-4321-4321-210987654321"; 93var originalOutputs = new Dictionary<string, object?>(directory.Resource.Outputs); 97storage.Resource.Outputs["id"] = "storage-resource"; 99await notifications.PublishUpdateAsync(directory.Resource, snapshot => snapshot with 119Assert.Equal(originalOutputs, directory.Resource.Outputs); 120Assert.True(notifications.TryGetCurrentState(directory.Resource.Name, out var directorySnapshot)); 126Assert.Empty(storage.Resource.Outputs); 140Assert.Equal("storage-resource", storage.Resource.Outputs["id"]); 166}.Order(), directory.Resource.Annotations.OfType<ResourceCommandAnnotation>().Select(command => command.Name).Order()); 205arm.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); 215arm.Resource.Annotations.OfType<ResourceCommandAnnotation>().Select(command => command.Name).Order()); 233? controller.DeleteAzureResourceAsync(model, directory.Resource.Name) 234: controller.ChangeResourceLocationAsync(model, directory.Resource.Name, CancellationToken.None)); 357Assert.Same(firstBuilder.Resource, secondBuilder.Resource); 624storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 635await notifications.PublishUpdateAsync(storage.Resource, state => state with 674Assert.Empty(storage.Resource.Outputs); 680Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 792Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 794Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 811storage.Resource.ProvisioningTaskCompletionSource = existingTcs; 821Assert.Same(existingTcs, storage.Resource.ProvisioningTaskCompletionSource); 855Assert.Empty(storage.Resource.Outputs); 865Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 867Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 903Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 932Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 975Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 976var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 993Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 994var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 995var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 996var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 1000Assert.DoesNotContain(blobs.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => 1024await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 1026Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 1059await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 1061Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent)); 1064var changeLocationCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 1069ResourceName = postgres.Resource.Name, 1145var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1150ResourceName = storage.Resource.Name, 1229var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1234ResourceName = storage.Resource.Name, 1498var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1503ResourceName = storage.Resource.Name, 1562var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1567ResourceName = storage.Resource.Name, 1623var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1628ResourceName = storage.Resource.Name, 1682await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Waiting for Deployment", KnownResourceStateStyles.Info) }); 1684var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1689ResourceName = storage.Resource.Name, 1703Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1737await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Creating ARM Deployment", KnownResourceStateStyles.Info) }); 1739Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1814await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new(AzureProvisioningController.WaitingForDeploymentState, KnownResourceStateStyles.Info) }); 1816Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1819var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1824ResourceName = storage.Resource.Name, 1864var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None); 1877var command = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == commandName); 1882ResourceName = storage.Resource.Name, 1893Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources); 1923var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None); 1929var queuedReprovisionCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 1933ResourceName = storage2.Resource.Name, 1941var conflictingCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1945ResourceName = storage2.Resource.Name, 1984await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1986Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2022await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2024var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2029ResourceName = storage.Resource.Name, 2041Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2102storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2103storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 2105await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 2106await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2108var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2113ResourceName = storage.Resource.Name, 2141Assert.Empty(storage.Resource.Outputs); 2142Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 2144Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2147Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2200await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 2202var deleteCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2207ResourceName = keyVault.Resource.Name, 2226Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 2270await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2271await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2273var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2278ResourceName = storage.Resource.Name, 2292Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2296Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2348await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2350var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2351var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2356ResourceName = storage.Resource.Name, 2370ResourceName = storage.Resource.Name, 2380Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2413storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2414storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 2416await notifications.PublishUpdateAsync(storage.Resource, state => state with 2423await notifications.PublishUpdateAsync(storage2.Resource, state => state with 2430var forgetCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 2435ResourceName = storage.Resource.Name, 2450Assert.Empty(storage.Resource.Outputs); 2451Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 2453Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2458Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2491await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2492await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2494var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2499ResourceName = storage.Resource.Name, 2507Assert.Contains(storage.Resource.Outputs, output => output.Key == "blobEndpoint"); 2515Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2518Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2545await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2546await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2548var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2553ResourceName = storage.Resource.Name, 2567Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2570Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2581Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2606await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2608var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2613ResourceName = storage.Resource.Name, 2627Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2639Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2684var reprovisionStorageCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2685var reprovisionStorage2Command = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2690ResourceName = storage.Resource.Name, 2704ResourceName = storage2.Resource.Name, 2761var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2762var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2767ResourceName = storage.Resource.Name, 2778Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2784ResourceName = storage.Resource.Name, 2795Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2798Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent)); 2807Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2856await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running"); 2857Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event)); 2860var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2865ResourceName = storage.Resource.Name, 2873Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2877Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2882Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event)); 2906var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2911ResourceName = storage.Resource.Name, 2958var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2959var cancelCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2964ResourceName = storage.Resource.Name, 2978ResourceName = storage2.Resource.Name, 3023await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3024await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 3026var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3031ResourceName = storage.Resource.Name, 3047Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3056Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 3096await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 3097await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 3099var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3104ResourceName = storage.Resource.Name, 3150await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3152var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3157ResourceName = storage.Resource.Name, 3265await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3267var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3278ResourceName = storage.Resource.Name, 3338await notifications.PublishUpdateAsync(storage.Resource, state => state with 3344var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3348ResourceName = storage.Resource.Name, 3357Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3398await notifications.PublishUpdateAsync(storage.Resource, state => state with 3404var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3409ResourceName = storage.Resource.Name, 3471await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3473var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3478ResourceName = storage.Resource.Name, 3524await notifications.PublishUpdateAsync(storage.Resource, state => state with 3530var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3535ResourceName = storage.Resource.Name, 3587await notifications.PublishUpdateAsync(storage.Resource, state => state with 3593var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3598ResourceName = storage.Resource.Name, 3659await notifications.PublishUpdateAsync(storage.Resource, state => state with 3665var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3669ResourceName = storage.Resource.Name, 3716await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3717await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 3931await notifications.PublishUpdateAsync(storage.Resource, state => state with 4161await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4163var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4168ResourceName = storage.Resource.Name, 4233await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 4235var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4240ResourceName = keyVault.Resource.Name, 4253Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4313await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 4315var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4320ResourceName = keyVault.Resource.Name, 4357Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4387await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 4389var reprovisionCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4394ResourceName = postgres.Resource.Name, 4439await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4441var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4446ResourceName = storage.Resource.Name, 4485await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 4487var changeLocationCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4492ResourceName = keyVault.Resource.Name, 4531await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4533var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4538ResourceName = storage.Resource.Name, 4564Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4599var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4606ResourceName = storage.Resource.Name, 4646await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4659Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4699await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4706Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4757await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4758await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 4765Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4768Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 4801await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4808Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4865Assert.Empty(storage.Resource.Outputs); 4910Assert.Empty(storage.Resource.Outputs); 4956Assert.Empty(storage.Resource.Outputs); 5126var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 5130ResourceName = storage.Resource.Name, 5140Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 5146Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 5176Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value)); 5215var icon = Assert.Single(resourceBuilder.Resource.Annotations.OfType<ResourceIconAnnotation>()); 5261Assert.Equal(expectedLocation.Resource, resource.Location); 5277Assert.Equal(expectedResourceGroup.Resource, resource.ResourceGroupName);
AzureEnvironmentResourceTests.cs (14)
115.WithParameter("pgdb", pgdb.Resource.ConnectionStringExpression); 167["kvUri"] = kv.Resource.VaultUri, 168["blob"] = blobs.Resource.ConnectionStringExpression, 199roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalId] = null; 200roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalType] = null; 225resourceGroupScoped.Resource.Scope = new(resourceGroup.Resource, subscription.Resource); 235subscriptionScoped.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscription.Resource); 245tenantScoped.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); 355module.Resource.Parameters["clientId"] = new TestBicepOutputReferenceProvider(identity.Resource.ClientId); 383module.Resource.Scope = AzureBicepResourceScope.CreateForTenant();
AzureEventHubsConnectionPropertiesTests.cs (2)
17var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray(); 39var properties = ((IResourceWithConnectionString)eventHubs.Resource).GetConnectionProperties().ToArray();
AzureEventHubsExtensionsTests.cs (34)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 53await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 78await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 84hb.Configuration["ConnectionStrings:hub"] = await eventHub.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 90hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 91hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 92hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 130await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 136hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 137hb.AddAzureEventHubProducerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 138hb.AddAzureEventHubConsumerClient("eventhubns", settings => settings.EventHubName = eventHub.Resource.HubName); 142hb.Configuration["ConnectionStrings:eventhubns"] = await eventHubns.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None) + $";EntityPath={hubName};"; 168var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 187var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 206var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 225var volumeAnnotation = eventHubs.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(a => !a.Target.Contains("Config.json")); 244var endpoints = eventHubs.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 272var containerImageAnnotation = eventHubs.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 292var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, eventHubs.Resource); 325var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 517Assert.Same(eventHubs.Resource.Annotations, sourceResource.Annotations); 519var persistenceAnnotation = Assert.Single(eventHubs.Resource.Annotations.OfType<PersistenceAnnotation>()); 568Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression); 569Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression); 570Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression); 583((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh"); 593((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1"); 609((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1"); 639Assert.True(eventHubs.Resource.IsEmulator()); 640Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation); 670_ = eventHubs.Resource.AddAsExistingResource(infra); 673var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureFrontDoorPrivateLinkTests.cs (19)
38var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 61var (_, bicep) = await GetManifestWithBicep(environment.Resource); 83var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 126var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 156var (_, bicep) = await GetManifestWithBicep(GetContainerApp(web.Resource)); 185var (_, frontDoorBicep) = await GetManifestWithBicep(frontDoor.Resource); 186var (_, publicEnvironmentBicep) = await GetManifestWithBicep(publicEnvironment.Resource); 215var (_, firstBicep) = await GetManifestWithBicep(first.Resource); 216var (_, secondBicep) = await GetManifestWithBicep(second.Resource); 251var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 362Assert.Single(frontDoor.Resource.Annotations.OfType<AzureFrontDoorPrivateLinkAnnotation>()); 363Assert.Single(environment.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>()); 377Assert.Empty(environment.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>()); 378Assert.Empty(frontDoor.Resource.Annotations.OfType<AzureFrontDoorPrivateLinkAnnotation>()); 402var connection = Assert.Single(frontDoor.Resource.Annotations.OfType<AzureFrontDoorPrivateLinkAnnotation>()); 453var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 479var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 486Assert.Single(target.Resource.Annotations.OfType<PrivateEndpointTargetAnnotation>()); 496var target = Assert.IsAssignableFrom<IAzureCdnPrivateLinkTarget>(environment.Resource);
AzureFrontDoorTests.cs (12)
23Assert.Equal("frontdoor", frontDoor.Resource.Name); 24Assert.IsType<AzureFrontDoorResource>(frontDoor.Resource); 38var annotations = frontDoor.Resource.Annotations.OfType<AzureFrontDoorOriginAnnotation>().ToList(); 56var annotations = frontDoor.Resource.Annotations.OfType<AzureFrontDoorOriginAnnotation>().ToList(); 78var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 83var endpointUrl = frontDoor.Resource.GetEndpointUrl("my-api"); 109var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 140var endpointUrl = frontDoor.Resource.GetEndpointUrl("api"); 155var endpointId = frontDoor.Resource.GetEndpointId(originResourceName); 196var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 219var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 244var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource);
AzureFunctionsTests.cs (28)
46Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 177Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 180Assert.Equal(storage.Resource, rel.Resource); 294Assert.True(funcApp.Resource.TryGetAnnotationsOfType<EnvironmentCallbackAnnotation>(out var envAnnotations)); 319Assert.True(funcApp.Resource.TryGetAnnotationsOfType<EnvironmentCallbackAnnotation>(out var envAnnotations)); 350Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 375Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 378Assert.Equal(storage.Resource, rel.Resource); 421Assert.Equal("npm", funcApp.Resource.Command); 423var args = await ArgumentEvaluator.GetArgumentListAsync(funcApp.Resource); 448Assert.Equal("func", funcApp.Resource.Command); 450var args = await ArgumentEvaluator.GetArgumentListAsync(funcApp.Resource); 483var manifest = await ManifestUtils.GetManifest(funcApp.Resource, tempDir.Path); 496var endpoint = Assert.Single(funcApp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "http"); 515var dockerBuildAnnotation = funcApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 537await ManifestUtils.GetManifest(funcApp.Resource, tempDir.Path); 555var dockerBuildAnnotation = funcApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 570var manifest = await ManifestUtils.GetManifest(funcApp.Resource, tempDir.Path); 576var dockerBuildAnnotation = funcApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 596var (_, bicep) = await GetManifestWithBicep(funcApp.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 610var commands = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().Select(a => a.Command).ToArray(); 624var commands = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().Select(a => a.Command).ToArray(); 677var (_, bicep) = await GetManifestWithBicep(funcApp.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 986Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 1006Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 1090Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 1093Assert.Equal(customStorage.Resource, rel.Resource); 1124var annotation = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().SingleOrDefault();
AzureInfrastructureExtensionsTests.cs (7)
28await Verify(graph.Resource.GetBicepTemplateString(), "bicep"); 40await Verify(graph.Resource.GetBicepTemplateString(), "bicep"); 55var exception = Assert.Throws<ArgumentException>(graph.Resource.GetBicepTemplateString); 70var exception = Assert.Throws<ArgumentException>(graph.Resource.GetBicepTemplateString); 89var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 114var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 153var 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.Id.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 (8)
20Assert.Equal("mynat", natGw.Resource.Name); 21Assert.IsType<AzureNatGatewayResource>(natGw.Resource); 31Assert.DoesNotContain(natGw.Resource, builder.Resources); 70Assert.Same(natGw.Resource, subnet.Resource.NatGateway); 81Assert.Equal("mypip", pip.Resource.Name); 82Assert.IsType<AzurePublicIPAddressResource>(pip.Resource); 104Assert.Equal("ipAddress", pip.Resource.IpAddress.Name);
AzureNetworkSecurityGroupExtensionsTests.cs (10)
23Assert.Equal("web-nsg", nsg.Resource.Name); 24Assert.IsType<AzureNetworkSecurityGroupResource>(nsg.Resource); 34Assert.DoesNotContain(nsg.Resource, builder.Resources); 47var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 110var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource); 179Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 293var manifest = await AzureManifestUtils.GetManifestWithBicep(nsg.Resource); 314SourceAddressPrefixReference = ReferenceExpression.Create($"{pip.Resource.IpAddress}") 336DestinationAddressPrefixReference = ReferenceExpression.Create($"{pip.Resource.IpAddress}")
AzureNetworkSecurityPerimeterExtensionsTests.cs (9)
23Assert.Equal("my-nsp", nsp.Resource.Name); 24Assert.IsType<AzureNetworkSecurityPerimeterResource>(nsp.Resource); 34Assert.DoesNotContain(nsp.Resource, builder.Resources); 44var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 68var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 86var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 123var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 138var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.Resource); 162var manifest = await AzureManifestUtils.GetManifestWithBicep(nsp.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 (20)
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); 234Assert.Equal(3, pe.Resource.DnsZones.Count); 237var manifest = await AzureManifestUtils.GetManifestWithBicep(pe.Resource);
AzurePrivateEndpointLockdownTests.cs (14)
23var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 39var manifest = await AzureManifestUtils.GetManifestWithBicep(sql.Resource); 55var manifest = await AzureManifestUtils.GetManifestWithBicep(postgres.Resource); 71var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 87var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 103var manifest = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 119var manifest = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 135var manifest = await AzureManifestUtils.GetManifestWithBicep(appConfig.Resource); 151var manifest = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 167var manifest = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 183var manifest = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 199var manifest = await AzureManifestUtils.GetManifestWithBicep(openai.Resource); 215var manifest = await AzureManifestUtils.GetManifestWithBicep(foundry.Resource); 231var manifest = await AzureManifestUtils.GetManifestWithBicep(acr.Resource);
AzureProvisioningResourceExtensionsTests.cs (1)
50var manifest = await AzureManifestUtils.GetManifestWithBicep(resource1.Resource);
AzureProvisioningResourceTests.cs (6)
31Assert.Same(apiProject.Resource, containerAppResource.TargetResource); 47Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 67Assert.Same(apiProject.Resource, webSiteResource.TargetResource); 83Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 100Assert.Same(container.Resource, containerAppResource.TargetResource); 115Assert.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 (72)
34storage.Resource.Scope = scope; 42resource => resource.TargetAzureResource == storage.Resource); 45var storageManifest = await GetManifestWithBicep(storage.Resource, skipPreparer: true); 47Assert.Same(scope, storage.Resource.Scope); 68builder.AddParameter("callback-group", "callback-rg").Resource, 69builder.AddParameter("callback-subscription", "00000000-0000-0000-0000-000000000001").Resource) 71storage.Resource.Scope = new AzureBicepResourceScope("initial-rg"); 82.Where(resource => resource.TargetAzureResource == storage.Resource).ToArray(); 84Assert.All(roles, role => Assert.Contains(storage.Resource, role.GetExplicitAzureReferences())); 86var storageManifest = await GetManifestWithBicep(storage.Resource, skipPreparer: true); 87Assert.Same(scope, storage.Resource.Scope); 92.Where(resource => resource.TargetAzureResource == storage.Resource)); 109first.WithAnnotation(new RoleAssignmentAnnotation(second.Resource, operatorRoles)); 110second.WithAnnotation(new RoleAssignmentAnnotation(first.Resource, operatorRoles)); 125Assert.Same(roles[0], Assert.Single(first.Resource.Annotations.OfType<DeploymentPrerequisitesAnnotation>()).Resources.Single()); 126Assert.Same(roles[1], Assert.Single(second.Resource.Annotations.OfType<DeploymentPrerequisitesAnnotation>()).Resources.Single()); 194Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 201Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 213Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 214Assert.Equal(storage.Resource, apiRoleAssignments.Target); 247Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 257Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 258Assert.Equal(storage.Resource, apiRoleAssignments.Target); 263Assert.True(api2.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var api2RoleAssignments)); 264Assert.Equal(storage.Resource, api2RoleAssignments.Target); 306context.Args.Add(blobs.Resource.ConnectionStringExpression); 312Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 314Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 315Assert.Equal(storage.Resource, apiRoleAssignments.Target); 344var deploymentTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 346Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 347Assert.Same(api.Resource, roleAssignmentResource.OwnerResource); 349Assert.Contains(blobPE.Resource, deploymentTarget.References); 350Assert.Contains(queuesPE.Resource, deploymentTarget.References); 379.Where(resource => resource.TargetAzureResource == keyVault.Resource) 394Assert.Same(keyVault.Resource, resource.TargetAzureResource); 395Assert.Same(api.Resource, resource.OwnerResource); 400Assert.Same(keyVault.Resource, resource.TargetAzureResource); 401Assert.Same(worker.Resource, resource.OwnerResource); 406resource => resource.TargetAzureResource == storage.Resource); 407Assert.Same(api.Resource, storageRoleAssignment.OwnerResource); 444.Where(resource => resource.TargetAzureResource == signalR.Resource) 459Assert.Same(signalR.Resource, resource.TargetAzureResource); 460Assert.Same(serviceA.Resource, resource.OwnerResource); 465Assert.Same(signalR.Resource, resource.TargetAzureResource); 466Assert.Same(serviceB.Resource, resource.OwnerResource); 496Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 498Assert.Single(storage.Resource.Annotations.OfType<RoleAssignmentResourceAnnotation>()); 669agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 670storage.Resource, 679Assert.True(consumer.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var consumerRoleAssignments)); 680Assert.Equal(storage.Resource, consumerRoleAssignments.Target); 694agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 695storage.Resource, 706Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 719agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 720storage.Resource, 730Assert.False(bystander.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out _)); 748agent1.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 751agent2.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 762Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 763Assert.Same(consumer.Resource, roleAssignmentResource.OwnerResource); 782agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 783storage.Resource, 798var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 799.Where(a => a.Target == storage.Resource) 825agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 826storage.Resource, 839var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 840.Where(a => a.Target == storage.Resource)
AzureRunAsEmulatorModeTests.cs (9)
14{ "Azure App Configuration", (builder, configure) => builder.AddAzureAppConfiguration("appconfig").RunAsEmulator(_ => configure()).Resource }, 15{ "Azure Cosmos DB", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsEmulator(_ => configure()).Resource }, 16{ "Azure Cosmos DB classic", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsClassicEmulator(_ => configure()).Resource }, 17{ "Azure Event Hubs", (builder, configure) => builder.AddAzureEventHubs("eventhubs").RunAsEmulator(_ => configure()).Resource }, 18{ "Azure Kusto", (builder, configure) => builder.AddAzureKustoCluster("kusto").RunAsEmulator(_ => configure()).Resource }, 19{ "Azure Service Bus", (builder, configure) => builder.AddAzureServiceBus("servicebus").RunAsEmulator(_ => configure()).Resource }, 20{ "Azure SignalR", (builder, configure) => builder.AddAzureSignalR("signalr").RunAsEmulator(_ => configure()).Resource }, 21{ "Azure Storage", (builder, configure) => builder.AddAzureStorage("storage").RunAsEmulator(_ => configure()).Resource }, 22{ "Azure Web PubSub", (builder, configure) => builder.AddAzureWebPubSub("webpubsub").RunAsEmulator(_ => configure()).Resource },
AzureSandboxesTests.cs (127)
36Assert.Equal("{sandboxes.outputs.id}", sandboxGroup.Resource.IdOutputReference.ValueExpression); 37Assert.Equal("{sandboxes.outputs.name}", sandboxGroup.Resource.NameOutputReference.ValueExpression); 45firstGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/example-rg/providers/Microsoft.App/sandboxGroups/first-group"; 46firstGroup.Resource.Outputs["location"] = "westus3"; 48secondGroup.Resource.Outputs["id"] = "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/other-rg/providers/Microsoft.App/sandboxGroups/second-group"; 49secondGroup.Resource.Outputs["location"] = "eastus2"; 52var firstSteps = await CreateStepsAsync(app, firstGroup.Resource); 58var secondSteps = await CreateStepsAsync(app, secondGroup.Resource); 106var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 139sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 140sandboxGroup.Resource.Outputs["location"] = "eastus2"; 142var scope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 163var (hostGroupManifest, hostGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, hostGroup.Resource); 164var (workerGroupManifest, workerGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, workerGroup.Resource); 201var (_, sandbox1Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox1.Resource); 202var (_, sandbox2Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox2.Resource); 227Assert.Equal(ManagedServiceIdentityType.SystemAssignedUserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 228Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 239var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 252var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 268.WithAnnotation(new AppIdentityAnnotation(computeIdentity.Resource)) 274Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 275Assert.Equal(computeIdentity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 277var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 290.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 296Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 297Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 298Assert.Empty(otherGroup.Resource.WorkloadUserAssignedIdentities); 299var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 316.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 341var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource); 343var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 344Assert.Same(pullIdentity.Resource, annotation.Identity); 365() => AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource)); 423var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 425Assert.Same(registry.Resource, roles.TargetAzureResource); 427Assert.Contains(identity, sandboxGroup.Resource.References); 429var (_, sandboxBicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 468var buildOptionsCallbackCount = container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 482Assert.Null(computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)); 484Assert.Equal(buildOptionsCallbackCount, container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count()); 589sandboxGroup.Resource.ContainerRegistry!.Outputs["loginServer"] = "example.azurecr.io"; 590sandboxGroup.Resource.Outputs[AzureSandboxGroupResource.ImagePullIdentityClientIdOutputName] = 594sandboxGroup.Resource, 598sandboxGroup.Resource, 1170sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 1171sandboxGroup.Resource.Outputs["location"] = "eastus2"; 1172var existingScope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 1175var targetResource = builder.AddContainer("frontend", "example/image").Resource; 1179sandboxGroup.Resource); 2020var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2095defaultResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2097disabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2099enabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2186var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2212Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http"), sandboxGroup.Resource, out var urlExpression)); 2217Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http").Property(EndpointProperty.TargetPort), sandboxGroup.Resource, out var targetPortExpression)); 2248var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2287var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2311var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2344var frontendCallbackCount = frontend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2345var backendCallbackCount = backend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2355Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2356Assert.Same(sandboxGroup.Resource, explicitComputeResource.GetComputeEnvironment()); 2396var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2398Assert.Same(sandboxGroup.Resource.ContainerRegistry, deploymentTarget.ContainerRegistry); 2399Assert.Same(sandboxGroup.Resource, deploymentTarget.ComputeEnvironment); 2403Assert.Same(sandboxGroup.Resource, sandboxContainer.Parent); 2434Resource = sandboxGroup.Resource.ContainerRegistry, 2487foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>() 2536Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2538var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2599var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2656Assert.Same(sandboxGroup.Resource, project.GetComputeEnvironment()); 2662project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2700project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2726project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2747project.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2782project.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2814sandboxGroup.Resource, 2818sandboxGroup.Resource, 2843frontend.Resource.GetDeploymentTargetAnnotation(frontendGroup.Resource)?.DeploymentTarget); 2845backend.Resource.GetDeploymentTargetAnnotation(backendGroup.Resource)?.DeploymentTarget); 2846Assert.Null(frontend.Resource.GetDeploymentTargetAnnotation(backendGroup.Resource)); 2847Assert.Null(backend.Resource.GetDeploymentTargetAnnotation(frontendGroup.Resource)); 2867var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2888container.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2890var registry = Assert.IsType<AzureContainerRegistryResource>(sandboxGroup.Resource.ContainerRegistry); 2910Assert.Empty(context.GetSteps(container.Resource, WellKnownPipelineTags.PushContainerImage)); 2932api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2959var value = await AzureSandboxContainerDeployment.ResolveValueWithEgressHostsAsync(stepContext, web.Resource, endpointExpression); 2960var environment = await AzureSandboxContainerDeployment.ResolveEnvironmentVariablesAsync(stepContext, web.Resource); 2981storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2997worker.Resource); 3034worker.Resource); 3059var dependencies = await web.Resource.GetResourceDependenciesAsync( 3062Assert.Contains(api.Resource, dependencies); 3063var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 3070foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3099var steps = await CreateStepsAsync(app, consumerGroup.Resource); 3109foreach (var annotation in consumerGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3139var firstDependencies = await first.Resource.GetResourceDependenciesAsync( 3142var secondDependencies = await second.Resource.GetResourceDependenciesAsync( 3145Assert.Contains(second.Resource, firstDependencies); 3146Assert.Contains(first.Resource, secondDependencies); 3147var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 3156foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 3189project.Resource); 3193Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(project.Resource)); 3197Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(container.Resource)); 3218api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 3242var command = await AzureSandboxContainerDeployment.ResolveModeledCommandAsync(stepContext, worker.Resource); 3277worker.Resource);
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 (71)
42var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 67var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 99await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 101await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 105await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 107await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 133hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 140await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 141await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 145await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 148await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 168serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(), 191var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 269var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 612Assert.Same(serviceBus.Resource.Annotations, sourceResource.Annotations); 614var persistenceAnnotation = Assert.Single(serviceBus.Resource.Annotations.OfType<PersistenceAnnotation>()); 655var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 671AssertWaitsForHealthy(serviceBus.Resource, sql); 730var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747resource => Assert.Same(sql.Resource, resource)); 748AssertWaitsForHealthy(serviceBus.Resource, sql.Resource); 750AllocateContainerNetworkEndpoint(sql.Resource, "sql.dev.internal", 1433); 752var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 756Assert.Equal(await sql.Resource.PasswordParameter.GetValueAsync(CancellationToken.None), env["MSSQL_SA_PASSWORD"]); 771AllocateContainerNetworkEndpoint(sql.Resource, "sql.dev.internal", 1433); 773var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 792AllocateContainerNetworkEndpoint(sql.Resource, "host.docker.internal", 52133); 794var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 808var endpoint = sql.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "tcp"); 809sql.Resource.Annotations.Remove(endpoint); 844AllocateContainerNetworkEndpoint(sql2.Resource, "sql2.dev.internal", 1433); 846var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 849Assert.Equal(await sql2.Resource.PasswordParameter.GetValueAsync(CancellationToken.None), env["MSSQL_SA_PASSWORD"]); 852AssertWaitsForHealthy(serviceBus.Resource, sql2.Resource); 854serviceBus.Resource.Annotations.OfType<ResourceRelationshipAnnotation>(), 855relationship => Assert.Same(sql2.Resource, relationship.Resource)); 871var waits = serviceBus.Resource.Annotations.OfType<WaitAnnotation>().ToArray(); 874wait => Assert.Same(sql1.Resource, wait.Resource), 875wait => Assert.Same(sql2.Resource, wait.Resource)); 945var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceBus.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1010Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression); 1011Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression); 1012Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression); 1013Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression); 1027((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb"); 1033((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue"); 1040((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic"); 1047((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub"); 1083serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint"; 1085var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource; 1087Assert.Equal("sb", serviceBus.Resource.Name); 1093var manifest = await GetManifestWithBicep(model, serviceBus.Resource); 1176hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 1179await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 1180await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 1187await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 1190await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 1254Assert.True(serviceBus.Resource.IsEmulator()); 1255Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1285_ = serviceBus.Resource.AddAsExistingResource(infra); 1288var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1307_ = serviceBus.Resource.AddAsExistingResource(infra); 1310var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1326_ = serviceBus.Resource.AddAsExistingResource(infra); 1329var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1347_ = serviceBus.Resource.AddAsExistingResource(infra); 1350var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1367_ = serviceBus.Resource.AddAsExistingResource(infra); 1370var (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;
AzureSqlDeploymentScriptTests.cs (1)
202var delegation = Assert.Single(aciSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>());
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)
51await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 53await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 57await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token); 58await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token); 59await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token); 61await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 96await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 98await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 102await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token); 104await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 139await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 141await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 145await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token); 147await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 178hb.Configuration[$"ConnectionStrings:{blobsResourceName}"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 179hb.Configuration[$"ConnectionStrings:{blobContainerName}"] = await container.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 180hb.Configuration[$"ConnectionStrings:{queuesResourceName}"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 181hb.Configuration[$"ConnectionStrings:{queueName}"] = await queue.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 193await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token); 225await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token); 229hb.Configuration["ConnectionStrings:BlobConnection"] = await blobs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 265await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token); 269hb.Configuration["ConnectionStrings:QueueConnection"] = await queues.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
AzureStorageExtensionsTests.cs (115)
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); 410var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 427Assert.True(storage.Resource.IsContainer()); 434=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port)); 440Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression); 441Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression); 442Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression); 449Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync()); 450Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 451Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync()); 470storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 471storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 472storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 475Assert.Equal("storage", storage.Resource.Name); 477var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 495var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 504var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 510var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 519var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 525var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 534var tableManifest = await ManifestUtils.GetManifest(table.Resource); 555storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 556storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 557storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 560Assert.Equal("storage", storage.Resource.Name); 562var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 580var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 589var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 595var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 604var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 610var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 619var tableManifest = await ManifestUtils.GetManifest(table.Resource); 643storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 644storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 645storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 648Assert.Equal("storage", storage.Resource.Name); 652var storageManifest = await GetManifestWithBicep(model, storage.Resource); 718var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 727var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 731var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 740var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 744var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 753var tableManifest = await ManifestUtils.GetManifest(table.Resource); 774storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 775storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 776storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 779Assert.Equal("storage", storage.Resource.Name); 781var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 800var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 809var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 815var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 824var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 830var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 839var tableManifest = await ManifestUtils.GetManifest(table.Resource); 866Assert.Equal("storage-blobs", blobService.Resource.Name); 867Assert.Equal(blobService.Resource, blobStorageResource); 893Assert.Equal("storage-queues", queueService.Resource.Name); 894Assert.Equal(queueService.Resource, queueStorageResource); 911Assert.Same(blobs.Resource, container1.Resource.Parent); 912Assert.Same(blobs.Resource, container2.Resource.Parent); 928Assert.Same(queues.Resource, q1.Resource.Parent); 929Assert.Same(queues.Resource, q2.Resource.Parent); 945Assert.Same(dataLake.Resource, fs1.Resource.Parent); 946Assert.Same(dataLake.Resource, fs2.Resource.Parent); 971Assert.Equal("blobs", customBlobs.Resource.Name); 972Assert.Same(customBlobService, customBlobs.Resource); 974Assert.Same(defaultBlobService, originals.Resource.Parent); 975Assert.Same(defaultBlobService, derived.Resource.Parent); 991Assert.NotSame(customBlobs.Resource, defaultBlobs.Resource); 992Assert.Equal("blobs", customBlobs.Resource.Name); 993Assert.Equal("storage-blobs", defaultBlobs.Resource.Name); 1008Assert.Same(first.Resource, container.Resource.Parent); 1019Assert.True(storage.Resource.IsEmulator()); 1020Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1050_ = storage.Resource.AddAsExistingResource(infra); 1053var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureStoragePrivateEndpointLockdownTests.cs (4)
31var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 52var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 69var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 91var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource);
AzureUserAssignedIdentityTests.cs (15)
114var annotation = Assert.Single(project.Resource.Annotations.OfType<AppIdentityAnnotation>()); 132Assert.Same(identity.Resource, resource); 133var annotation = Assert.Single(project.Resource.Annotations.OfType<AppIdentityAnnotation>()); 134Assert.Same(identity.Resource, annotation.IdentityResource); 176Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 223Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 228Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 281Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 286Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 364Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 365Assert.Same(identity.Resource, identityAnnotation2.IdentityResource); 372Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 374Assert.Same(storage.Resource, roleAssignmentResource2.TargetAzureResource); 422_ = userAssignedIdentity.Resource.AddAsExistingResource(infra); 425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureVirtualNetworkExtensionsTests.cs (80)
22Assert.Equal("myvnet", vnet.Resource.Name); 23Assert.IsType<AzureVirtualNetworkResource>(vnet.Resource); 34Assert.Equal("myvnet", vnet.Resource.Name); 35Assert.Equal("10.1.0.0/16", vnet.Resource.AddressPrefix); 36Assert.Null(vnet.Resource.AddressPrefixParameter); 48Assert.Equal("myvnet", vnet.Resource.Name); 49Assert.Null(vnet.Resource.AddressPrefix); 50Assert.Same(vnetPrefixParam.Resource, vnet.Resource.AddressPrefixParameter); 61var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 76Assert.Equal("mysubnet", subnet.Resource.Name); 77Assert.Equal("mysubnet", subnet.Resource.SubnetName); 78Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 79Assert.Same(vnet.Resource, subnet.Resource.Parent); 90Assert.Equal("mysubnet", subnet.Resource.Name); 91Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 92Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 105Assert.Same(vnet.Resource, subnet1.Resource.Parent); 106Assert.Same(vnet.Resource, subnet2.Resource.Parent); 108Assert.NotSame(subnet1.Resource, subnet2.Resource); 121var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 135Assert.DoesNotContain(vnet.Resource, builder.Resources); 137Assert.DoesNotContain(subnet.Resource, builder.Resources); 152var subnetAnnotation = env.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 157var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 171var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 186var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 201var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 226var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().Single(); 245var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 283var subnetAnnotation = environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 287var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 304var subnetAnnotation = Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 307var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 323Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 324var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 341Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 342var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 364Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 365Assert.Single(firstSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 366Assert.Empty(secondSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 386Assert.Empty(appServiceEnvironment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 388var delegation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 402Assert.Equal("mysubnet", subnet.Resource.Name); 403Assert.Equal("mysubnet", subnet.Resource.SubnetName); 404Assert.Null(subnet.Resource.AddressPrefix); 405Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 406Assert.Same(vnet.Resource, subnet.Resource.Parent); 418Assert.Equal("mysubnet", subnet.Resource.Name); 419Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 420Assert.Null(subnet.Resource.AddressPrefix); 421Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 433var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 448var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 462Assert.NotNull(subnet.Resource.NetworkSecurityGroup); 463Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name); 464Assert.Single(subnet.Resource.NetworkSecurityGroup.SecurityRules); 478Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 479Assert.Single(nsg.Resource.SecurityRules); 493var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 510var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 527var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 543var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 557var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 572var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 587var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 603var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 616var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 634var vnetManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 635var nsgManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource.Subnets[0].NetworkSecurityGroup!); 653var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 713var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
AzureWebPubSubConnectionPropertiesTests.cs (2)
36var properties = ((IResourceWithConnectionString)hub.Resource).GetConnectionProperties().ToDictionary(x => x.Key, x => x.Value); 59var properties = ((IResourceWithConnectionString)hub.Resource).GetConnectionProperties().ToDictionary(x => x.Key, x => x.Value);
AzureWebPubSubEmulatorFunctionalTests.cs (2)
30await app.ResourceNotifications.WaitForResourceHealthyAsync(webPubSub.Resource.Name, readyCts.Token); 34clientBuilder.Configuration["ConnectionStrings:chat-resource"] = await hub.Resource.ConnectionStringExpression.GetValueAsync(messagingCts.Token);
AzureWebPubSubEmulatorTests.cs (15)
30var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: TestServiceProvider.Instance); 34Assert.Equal($"http://localhost:{port}", await webPubSub.Resource.UriExpression.GetValueAsync(CancellationToken.None)); 36var properties = ((IResourceWithConnectionString)webPubSub.Resource).GetConnectionProperties().ToDictionary(p => p.Key, p => p.Value); 39var image = Assert.Single(webPubSub.Resource.Annotations.OfType<ContainerImageAnnotation>()); 81var dependencies = await webPubSub.Resource.GetResourceDependenciesAsync( 83Assert.Contains(api.Resource, dependencies); 85var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(webPubSub.Resource, serviceProvider: TestServiceProvider.Instance); 87return await GetEmulatorConfigurationAsync(webPubSub.Resource); 98await GetEmulatorConfigurationAsync(webPubSub.Resource)); 109var original = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 113var manifest = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 116Assert.Equal("Endpoint={webpubsub.outputs.endpoint};Hub=chat", hub.Resource.ConnectionStringExpression.ValueExpression); 117Assert.Empty(webPubSub.Resource.Annotations.OfType<HealthCheckAnnotation>()); 128var healthCheckKey = Assert.Single(webPubSub.Resource.Annotations.OfType<HealthCheckAnnotation>()).Key; 142var healthCheckKey = Assert.Single(webPubSub.Resource.Annotations.OfType<HealthCheckAnnotation>()).Key;
AzureWebPubSubExtensionsTests.cs (48)
36Assert.Equal(hubName, hub.Resource.Name); 37var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 58var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 64Assert.Equal("wps1", wps.Resource.Name); 77Assert.Equal("{wps1.outputs.endpoint}", wps.Resource.ConnectionStringExpression.ValueExpression); 78Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=abc", hub.Resource.ConnectionStringExpression.ValueExpression); 80Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hij", otherHub.Resource.ConnectionStringExpression.ValueExpression); 103var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 109Assert.Equal("wps1", wps.Resource.Name); 133var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 139Assert.Equal("wps1", wps.Resource.Name); 159wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 160var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 165Assert.Equal("wps1", wps.Resource.Name); 186wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 187var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 202useProduction.Resource, 210wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 211var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 241wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 256var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 259var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 266Assert.Equal("wps1", wps.Resource.Name); 282Assert.Equal("hub1", hub1.Resource.Name); 283Assert.Equal("resource2", hub2.Resource.Name); 284Assert.Equal("hub3", hub3.Resource.Name); 285Assert.Equal("hub4", hub4.Resource.Name); 287Assert.Equal("hub1", hub1.Resource.HubName); 288Assert.Equal("hub2", hub2.Resource.HubName); 289Assert.Equal("hub3", hub3.Resource.HubName); 290Assert.Equal("hub4", hub4.Resource.HubName); 292Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub1", hub1.Resource.ConnectionStringExpression.ValueExpression); 293Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub2", hub2.Resource.ConnectionStringExpression.ValueExpression); 294Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub3", hub3.Resource.ConnectionStringExpression.ValueExpression); 295Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub4", hub4.Resource.ConnectionStringExpression.ValueExpression); 309Assert.Same(hub1.Resource, hub2.Resource); 310Assert.Equal("resource1", hub1.Resource.Name); 311Assert.Equal("same-hub", hub1.Resource.HubName); 320wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 330var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 336var manifest = await GetManifestWithBicep(model, wps.Resource); 340Assert.Equal("wps1", wps.Resource.Name); 380wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 393var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 396Assert.Equal("wps1", wps.Resource.Name); 428_ = webPubSub.Resource.AddAsExistingResource(infra); 431var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
BicepUtilitiesTests.cs (55)
39await BicepUtilities.SetParametersAsync(parameters, resource.Resource, builder.ExecutionContext, skipKnownValues: true); 55await BicepUtilities.SetParametersAsync(parameters, resource.Resource, builder.ExecutionContext); 56var originalChecksum = BicepUtilities.GetChecksum(resource.Resource, parameters, null); 61resource.Resource, cached, builder.ExecutionContext, NullLogger.Instance)); 68resource.Resource, cached, builder.ExecutionContext, NullLogger.Instance); 75await BicepUtilities.SetParametersAsync(parameters, resource.Resource, builder.ExecutionContext); 88await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource, builder.ExecutionContext); 120.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1")) 124await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource, builder.ExecutionContext); 138Assert.True(bicep0.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 143Assert.Equal(connectionStringResource.Resource, r.Resource); 148Assert.Equal(param.Resource, r.Resource); 153Assert.Equal(container.Resource, r.Resource); 163var bicep = builder.AddBicepTemplateString("test", "param value string").Resource; 207await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 208var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 211await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 212var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 234await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 235var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 238await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 239var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 251bicep0.Resource.Scope = new("rg0"); 255bicep1.Resource.Scope = new("rg1"); 259await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 260await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 261var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 265await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 266await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 267var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 279bicep0.Resource.Scope = new("rg0"); 283bicep1.Resource.Scope = new("rg0"); 287await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource, builder.ExecutionContext); 288await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 289var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 293await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource, builder.ExecutionContext); 294await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 295var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 305var bicep1 = builder.AddBicepTemplateString("test1", "param name string").Resource; 306var bicep2 = builder.AddBicepTemplateString("test2", "param name string").Resource; 326var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 351var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 379var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 411var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 432var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 447var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 463var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 478var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 497var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 512var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 526var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 538var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 554var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 579.Resource; 614var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
DurableTaskResourceExtensionsTests.cs (20)
30var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 46var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 64var connectionString = await dts.Resource.ConnectionStringExpression.GetValueAsync(default); 89var connectionString = await taskHub.Resource.ConnectionStringExpression.GetValueAsync(default); 101Assert.True(dts.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 114Assert.True(taskHub.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 130var ex = Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression); 142Assert.False(dts.Resource.IsEmulator); 143Assert.DoesNotContain(dts.Resource.Annotations, a => a is EmulatorResourceAnnotation); 145Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression); 156Assert.True(dts.Resource.IsEmulator); 158var emulatorAnnotation = dts.Resource.Annotations.OfType<EmulatorResourceAnnotation>().SingleOrDefault(); 161var containerImageAnnotation = dts.Resource.Annotations.OfType<ContainerImageAnnotation>().SingleOrDefault(); 167var endpointAnnotations = dts.Resource.Annotations.OfType<EndpointAnnotation>().ToList(); 193var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 208var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 224var env1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 225var env2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dts2.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 244var connectionString = await hub.Resource.ConnectionStringExpression.GetValueAsync(default); 255var ex = Assert.Throws<InvalidOperationException>(() => _ = dts.Resource.ConnectionStringExpression);
ExistingAzureResourceExtensionsTests.cs (11)
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)); 155Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 173Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 193Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 214Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation));
ExistingAzureResourceTests.cs (38)
23var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 40var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 57var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 77var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource); 97var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 114var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 129var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(storageAccount.Resource); 146var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appConfiguration.Resource); 163var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(eventHubs.Resource); 180var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(keyVault.Resource); 197var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(logAnalytics.Resource); 214var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 235var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(postgresSql.Resource); 252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(search.Resource); 269var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(signalR.Resource); 286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(webPubSub.Resource); 303var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 319var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(sqlServer.Resource); 337var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 354var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 371var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 386var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 402var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 425var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(openAI.Resource); 445var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 466var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 482var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource); 499var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(acr.Resource); 521Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation()); 522Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 541Assert.Null(serviceBus.Resource.GetDeploymentTargetAnnotation()); 542Assert.True(serviceBus.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAzureResourceAnnotation)); 562var (manifest, bicep) = await GetManifestWithBicep(model, serviceBus.Resource); 588resource.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(existingSubscriptionId.Resource); 590var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true); 607resource.Resource.Scope = AzureBicepResourceScope.CreateForTenant(); 609var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(resource.Resource, skipPreparer: true);
FoundryConnectionPropertiesTests.cs (4)
17var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray(); 40aiFoundry.Resource.EmulatorServiceUri = new Uri("http://localhost:8080"); 41aiFoundry.Resource.ApiKey = "OPENAI_KEY"; 43var properties = ((IResourceWithConnectionString)aiFoundry.Resource).GetConnectionProperties().ToArray();
FoundryDeploymentConnectionPropertiesTests.cs (5)
21deployment.Resource.Parent.EmulatorServiceUri = new Uri("http://localhost:8080"); 22deployment.Resource.Parent.ApiKey = "OPENAI_KEY"; 23deployment.Resource.LocalModelId = "Phi-4-mini-instruct-generic-gpu:5"; 25var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray(); 68var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray();
FoundryExtensionsTests.cs (22)
356.PublishAsync(new ResourceReadyEvent(foundry.Resource, app.Services), cancellation.Token) 360.WaitForResourceAsync(deployment.Resource.Name, KnownResourceStates.Running, cancellation.Token) 364Assert.Equal("Phi-4-mini-instruct-generic-gpu:5", deployment.Resource.LocalModelId); 561Assert.True(foundry.Resource.IsEmulator); 562Assert.False(foundry.Resource.ManageLocalService); 563Assert.Equal(new Uri("http://windows-host:5273/"), foundry.Resource.EmulatorServiceUri); 564Assert.Equal("Endpoint=http://windows-host:5273/;Key=unused", foundry.Resource.ConnectionStringExpression.ValueExpression); 629Assert.Equal("{myAIFoundry.connectionString};Model=gpt-4", deployment.Resource.ConnectionStringExpression.ValueExpression); 640deployment.Resource.LocalModelId = "custom-model-id"; 642Assert.Equal("{myAIFoundry.connectionString};Model=custom-model-id", deployment.Resource.ConnectionStringExpression.ValueExpression); 655Assert.Equal("{myAIFoundry.connectionString};Deployment=deployment1", deployment.Resource.ConnectionStringExpression.ValueExpression); 671var manifest = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 689Assert.Same(foundry.Resource, project.Resource.Parent); 702Assert.Null(project.Resource.ContainerRegistry); 717var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 737var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 755var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 802SetFoundryProjectOutputs(project.Resource); 830SetFoundryProjectOutputs(project.Resource); 870SetFoundryProjectOutputs(project.Resource); 910SetFoundryProjectOutputs(project.Resource);
PublicApiTests\CosmosDBPublicApiTests.cs (10)
21var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 41var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 61var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 81var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 101var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 119var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 135var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 153var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 199var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource); 217var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
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 (9)
AzureWebPubSubExtensions.cs (8)
200var surrogate = new AzureWebPubSubEmulatorResource(builder.Resource); 208foreach (var hub in builder.Resource.Hubs.Values) 223Caller = builder.Resource, 226foreach (var hub in builder.Resource.Hubs.Values) 291if (!builder.Resource.Hubs.TryGetValue(hubName, out hubResource)) 293hubResource = new AzureWebPubSubHubResource(name, hubName, builder.Resource); 294builder.Resource.Hubs[hubName] = hubResource; 351builder.Resource.EventHandlers.Add((urlExpression, userEventPattern, systemEvents, authSettings));
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Blazor (44)
BlazorGatewayExtensions.cs (26)
160if (gateway.Resource is ProjectResource) 170else if (gateway.Resource is ExecutableResource executableResource) 295var pathPrefix = wasmApp.Resource.Name; 300var referencedServices = GetServiceDiscoveryReferences(wasmApp.Resource); 306var existingGatewayRefs = GetReferencedResourceNames(gateway.Resource); 318wasmApp.Resource.Parent = gateway.Resource; 331gateway.Resource, 333wasmApp.Resource.ProjectPath, 335browser: wasmApp.Resource.DebuggerBrowser); 355wasmApp.Resource.DebuggerBrowser = browser; 379var annotation = GetOrAddGatewayAppsAnnotation(gateway.Resource); 382GetBlazorStorePath(gateway.ApplicationBuilder), "gateways", gateway.Resource.Name); 391var registeredApps = GetRegisteredApps(gateway.Resource); 392var httpsGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "https"); 393var httpGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "http"); 395?? throw new InvalidOperationException($"The gateway '{gateway.Resource.Name}' must define an HTTP or HTTPS endpoint."); 498gateway.ApplicationBuilder.Eventing.Subscribe<InitializeResourceEvent>(gateway.Resource, (e, ct) => 501_ = Task.Run(() => WatchGatewayStateAsync(gateway.Resource, notificationService, ct), ct); 530await notificationService.PublishUpdateAsync(reg.AppBuilder.Resource, snapshot => snapshot with 623var publishResourceName = $"{wasmApp.Resource.Name}publish"; 624var project = GetProjectInfo(wasmApp.Resource.ProjectPath, gateway.ApplicationBuilder.AppHostDirectory); 626project.SolutionRoot, wasmApp.Resource.ProjectPath).Replace('\\', '/'); 648wasmApp.Resource.ProjectPath, 651?? throw new InvalidOperationException($"Unable to determine publish properties for '{wasmApp.Resource.ProjectPath}'."); 657Source = companion.Resource,
BlazorHostedExtensions.cs (13)
62var annotation = GetOrAddHostedClientAnnotation(host.Resource); 63annotation.Services.Add(new HostedClientService(service.Resource.Name, apiPrefix)); 66var existingRefs = GetReferencedResourceNames(host.Resource); 67if (!existingRefs.Contains(service.Resource.Name)) 110var annotation = GetOrAddHostedClientAnnotation(host.Resource); 151var annotation = GetOrAddHostedClientAnnotation(host.Resource); 172var debuggerName = $"{host.Resource.Name}-wasm-debugger"; 175var projectMetadata = host.Resource.GetProjectMetadata(); 226var httpsHostEndpoint = GetEndpointIfDefined(host.Resource, "https"); 227var httpHostEndpoint = GetEndpointIfDefined(host.Resource, "http"); 229?? throw new InvalidOperationException($"The host '{host.Resource.Name}' must define an HTTP or HTTPS endpoint."); 246$"{host.Resource.Name} (client)", 382host.Resource,
BrowserDebuggerHelper.cs (4)
70? $"{parentResource.Name}-{commandTarget.Resource.Name}-debugger" 183commandTarget.Resource, 197await notificationService.PublishUpdateAsync(commandTarget.Resource, s => s).ConfigureAwait(false); 256await notificationService.PublishUpdateAsync(commandTarget.Resource, s => s).ConfigureAwait(false);
Resources\GatewayAppsAnnotation.cs (1)
26public BlazorWasmAppResource Resource => AppBuilder.Resource;
Aspire.Hosting.Blazor.Tests (60)
AddBlazorGatewayTests.cs (17)
37gateway.Resource.GetProjectMetadata().ProjectPath); 39var executable = Assert.Single(gateway.Resource.Annotations.OfType<ExecutableAnnotation>()); 42Assert.Single(gateway.Resource.Annotations.OfType<ProjectLaunchArgsOverrideAnnotation>()); 44var initialSnapshot = Assert.Single(gateway.Resource.Annotations.OfType<ResourceSnapshotAnnotation>()).InitialSnapshot; 51gateway.Resource.Annotations.OfType<EndpointAnnotation>().OrderBy(endpoint => endpoint.Name), 63var args = await ArgumentEvaluator.GetArgumentListAsync(gateway.Resource); 88await AssertGatewayProcessLaunchPlanAsync(gateway.Resource, builder, app.Services); 114Assert.Empty(gateway.Resource.Annotations.OfType<ProjectLaunchArgsOverrideAnnotation>()); 115Assert.Empty(gateway.Resource.Annotations.OfType<ExecutableAnnotation>()); 218var backendEndpoint = backend.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 224gateway.Resource.Annotations.Remove(gateway.Resource.Annotations.OfType<EndpointAnnotation>().Single(endpoint => endpoint.Name == "https")); 227var companion = Assert.Single(gateway.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()).Source; 272var endpoint = gateway.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 501gateway.Resource.Annotations.OfType<EndpointReferenceAnnotation>(), 505Assert.Same(gateway.Resource, wasmApp.Resource.Parent);
AddDotnetProjectBlazorGatewayTests.cs (7)
23Assert.True(gateway.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 29gateway.Resource.Annotations.OfType<EndpointAnnotation>().Select(e => e.Name)); 31var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 54var gatewayRefs = gateway.Resource.Annotations 69await AddBlazorGatewayTests.AssertGatewayProcessLaunchPlanAsync(gateway.Resource, builder, app.Services); 79Assert.True(gateway.Resource.SupportsDotnetProgramPublishing()); 80Assert.IsAssignableFrom<IContainerFilesDestinationResource>(gateway.Resource);
BlazorHostedExtensionsTests.cs (13)
49.ProxyBlazorService(weatherApi).Resource 53.ProxyBlazorService(weatherApi).Resource; 188Assert.Same(host.Resource, parentRelationship.Resource); 190var commands = host.Resource.Annotations 226host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 263host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 296host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 306ResourceName = host.Resource.Name, 394var endpointRef = host.Resource.Annotations 445var weatherRefs = host.Resource.Annotations 467var referencedNames = host.Resource.Annotations 525var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder); 546var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder);
WithBlazorAppTests.cs (23)
29var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 51var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 75var annotations = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().ToList(); 98var gatewayRefs = gateway.Resource.Annotations 125var weatherRefs = gateway.Resource.Annotations 153var refs = gateway.Resource.Annotations 174var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 203Assert.Same(gateway.Resource, parentRelationship.Resource); 209var commandNames = wasmApp.Resource.Annotations 215Assert.DoesNotContain(gateway.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 232Assert.DoesNotContain(wasmApp.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 233Assert.Single(gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>()); 250var commands = wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToDictionary(annotation => annotation.Name); 290wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 317wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 324ResourceName = wasmApp.Resource.Name, 356Assert.Equal(wasmApp.Resource.ProjectPath, launchConfiguration.WebRoot); 373var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 398var endpointRef = gateway.Resource.Annotations 427var endpointRef = gateway.Resource.Annotations 438var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().Single(); 468var endpointRef = gateway.Resource.Annotations 479var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().Single();
Aspire.Hosting.Browsers (1)
BrowserLogsBuilderExtensions.cs (1)
130var parentResource = builder.Resource;
Aspire.Hosting.Browsers.Tests (5)
BrowserLogsBuilderExtensionsTests.cs (4)
48Assert.Equal(web.Resource.Name, browserLogsResource.ParentResource.Name); 55Assert.Equal(web.Resource.Name, parentRelationship.Resource.Name); 1352await app.ResourceNotifications.PublishUpdateAsync(web.Resource, snapshot => snapshot with 1358await eventing.PublishAsync(new ResourceReadyEvent(web.Resource, app.Services)).DefaultTimeout();
src\Aspire.Hosting.Browsers\BrowserLogsBuilderExtensions.cs (1)
130var parentResource = builder.Resource;
Aspire.Hosting.Containers.Tests (55)
ContainerResourceBuilderTests.cs (17)
16Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 24Assert.Equal("redis-stack", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 25Assert.Equal("1.0.0", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 33container.Resource.Annotations.RemoveAt(0); 36Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Image); 37Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 45container.Resource.Annotations.Add(new ContainerImageAnnotation { Image = "another-image" }); 48Assert.Equal("new-image", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Image); 49Assert.Equal("latest", container.Resource.Annotations.OfType<ContainerImageAnnotation>().Last().Tag); 57Assert.Equal("7.1", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Tag); 65Assert.Equal("myregistry.azurecr.io", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().Registry); 73Assert.Equal("42b5c726e719639fcc1e9dbc13dd843f567dcd37911d0e1abb9f47f2cc1c95cd", redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single().SHA256); 151var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 163var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 176var annotation = redis.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 212var annotation = redis.Resource.Annotations.OfType<ContainerImagePullPolicyAnnotation>().Single(); 220var containerImage = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
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);
ResourceFailureLoggingTests.cs (5)
34await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 58await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 82await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 105await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, [KnownResourceStates.Exited, KnownResourceStates.FailedToStart], cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 118var category = $"{builder.ApplicationBuilder.Environment.ApplicationName}.Resources.{builder.Resource.Name}";
WithDockerfileTests.cs (30)
104Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 108Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 129Assert.True(dockerFile.Resource.TryGetLastAnnotation<ContainerImageAnnotation>(out var containerImageAnnotation)); 133Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 137Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 152Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 156Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 174Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 178Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 185Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 280var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 329var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 377var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 424var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 654var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 670var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 687var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 703var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 720var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 736var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 753var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 769var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 794var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 798var stepsAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 803Resource = container.Resource 821Resource = container.Resource, 846var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 854Resource = container.Resource, 880var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 899var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
Aspire.Hosting.DevTunnels (12)
DevTunnelResourceBuilderExtensions.cs (12)
296foreach (var endpoint in resourceBuilder.Resource.GetEndpoints()) 366tunnelBuilder.Resource.Options.AllowAnonymous = true; 395tunnelBuilder.Resource.Options.ExpirationHours = expirationHours; 420return tunnelBuilder.GetEndpoint(resourceBuilder.Resource, endpointName); 440var portResource = tunnelBuilder.Resource.Ports 445return CreateEndpointReferenceWithError(tunnelBuilder.Resource, resource, endpointName); 463var portResource = tunnelBuilder.Resource.Ports 469return CreateEndpointReferenceWithError(tunnelBuilder.Resource, targetEndpointReference.Resource, targetEndpointReference.EndpointName); 522foreach (var port in tunnelResource.Resource.Ports.Where(p => p.TargetEndpoint.Resource == targetResource.Resource)) 524var serviceName = targetResource.Resource.Name; 568var tunnel = tunnelBuilder.Resource;
Aspire.Hosting.DevTunnels.Tests (49)
DevTunnelExpirationTests.cs (2)
66Assert.Equal(hours, tunnel.Resource.Options.ExpirationHours); 92Assert.Null(tunnel.Resource.Options.ExpirationHours);
DevTunnelResourceBuilderExtensionsTests.cs (46)
34var tunnelPort = tunnel.Resource.Ports.FirstOrDefault(); 40var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: serviceProvider).DefaultTimeout(); 54Assert.True(tunnel.Resource.Options.AllowAnonymous); 64Assert.Equal("custom-id", tunnel.Resource.TunnelId); 75var annotation = Assert.Single(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 86Assert.Empty(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 101Assert.Single(tunnel.Resource.Ports); 102var port = tunnel.Resource.Ports.First(); 118var tunnelPort = Assert.Single(tunnel.Resource.Ports); 133var tunnelPort = Assert.Single(tunnel.Resource.Ports); 154var tunnelPort = Assert.Single(tunnel.Resource.Ports); 176var tunnelPort = Assert.Single(tunnel.Resource.Ports); 196var args = await tunnel.Resource.GetArgumentValuesAsync().DefaultTimeout(); 229var tunnelPort = Assert.Single(tunnel.Resource.Ports); 237await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout(); 271var tunnelPort = Assert.Single(tunnel.Resource.Ports); 279await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout(); 314var port = Assert.Single(tunnel.Resource.Ports); 317var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 378var port = Assert.Single(tunnel.Resource.Ports); 381var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 410var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 413Assert.Equal(target.Resource, tunnelEndpoint.Resource); 432Assert.Equal(target.Resource, tunnelEndpoint.Resource); 452Assert.Equal(target.Resource, tunnelEndpoint.Resource); 468var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent"); 514var endpointRef = tunnel.GetEndpoint(target.Resource, "https"); 536var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http"); 537var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 561var port = Assert.Single(tunnel.Resource.Ports); 653var port = Assert.Single(tunnel.Resource.Ports); 700var contextualTargetEndpoint = new EndpointReference(target.Resource, targetEndpoint.EndpointAnnotation, containerNetwork); 703var port = Assert.Single(tunnel.Resource.Ports); 772var tunnelPort = Assert.Single(tunnel.Resource.Ports); 784foreach (var annotation in tunnel.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>().ToArray()) 786tunnel.Resource.Annotations.Remove(annotation); 809var stopped = await app.ResourceCommands.ExecuteCommandAsync(tunnel.Resource, "stop", cts.Token).DefaultTimeout(); 814var restarted = await app.ResourceCommands.ExecuteCommandAsync(tunnel.Resource, "start", cts.Token).DefaultTimeout(); 828await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 849await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 857var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 859var waitForDependency = app.ResourceNotifications.WaitForDependenciesAsync(dependent.Resource, cts.Token); 879var port = Assert.Single(tunnel.Resource.Ports); 883var monitor = app.Services.GetRequiredKeyedService<DevTunnelMonitor>(tunnel.Resource); 884await monitor.StartAsync(tunnel.Resource.TunnelId, CancellationToken.None); 886await monitor.ProcessLogAsync($"Ready to accept connections for tunnel: {tunnel.Resource.TunnelId}", CancellationToken.None);
TestDevTunnelMonitor.cs (1)
35Tunnel = _builder.AddDevTunnel("tunnel", "mytunnel").WithReference(target).Resource;
Aspire.Hosting.Docker (12)
DockerComposeEnvironmentExtensions.cs (6)
115configure(builder.Resource); 137builder.Resource.ConfigureComposeFile += configure; 160builder.Resource.ConfigureEnvFile += configure; 176builder.Resource.DashboardEnabled = enabled; 195builder.Resource.DashboardEnabled = true; 197configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized"));
DockerComposeEnvironmentResource.cs (4)
85var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 210var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 307if (DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard && !IsAlreadyTargeted(dashboard)) 340if (DashboardEnabled && Dashboard?.Resource is { } dashboardResource)
DockerComposePublishingContext.cs (1)
76IEnumerable<IResource> resources = environment.Dashboard?.Resource is IResource r
DockerComposeServiceExtensions.cs (1)
87return builder.Resource.AsEnvironmentPlaceholder(dockerComposeService);
Aspire.Hosting.Docker.Tests (29)
DockerComposePublisherTests.cs (3)
83.WithArgs("--cs", cs.Resource) 343var parmeters = paramNames.Select(name => builder.AddParameter(name).Resource).ToArray(); 1285enableTls.Resource,
DockerComposeTests.cs (26)
43Assert.Same(composeEnv.Resource, container.Resource.GetDeploymentTargetAnnotation()?.ComputeEnvironment); 281var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 523var containerImageReference = new ContainerImageReference(project.Resource); 548var containerImageReference = new ContainerImageReference(project.Resource); 571var containerImageReference = new ContainerImageReference(project.Resource); 595var containerImageReference = new ContainerImageReference(project.Resource); 623var containerImageReference = new ContainerImageReference(project.Resource); 648var containerImageReference = new ContainerImageReference(container.Resource); 673acr.Resource.Outputs["loginServer"] = "myacr.azurecr.io"; 674Assert.NotNull(acr.Resource.ProvisioningTaskCompletionSource); 675acr.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 678var containerImageReference = new ContainerImageReference(project.Resource); 892var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 894Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 898var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 900Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 904var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 906Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 910var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 912Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 915Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 916Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 917Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 918Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 948Assert.Same(dockerCompose.Resource, target.ComputeEnvironment);
Aspire.Hosting.Dotnet (7)
DotnetProjectBuildCoordinator.cs (2)
66state.AddResource(resourceBuilder.Resource); 69state.WaitForBuildCompletionAsync(resourceBuilder.Resource, services, cancellationToken)));
DotnetProjectHostingExtensions.cs (5)
159if (builder.Resource.Annotations.OfType<DotnetProjectMetadata>().SingleOrDefault() is { } metadata) 161ValidateBuildEnvironmentSupport(builder.Resource, metadata); 380var projectLaunchConfigurationType = resource.Resource.Annotations 387var defaultRunWorkingDirectory = resource.Resource.WorkingDirectory; 411resource.Resource,
Aspire.Hosting.Dotnet.Tests (252)
DotnetProjectBuildCoordinatorTests.cs (112)
54AssertBuildDependency(api.Resource, buildResource); 55AssertBuildDependency(worker.Resource, buildResource); 58Assert.Single(api.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 61Assert.Single(worker.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 279Assert.Empty(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 280Assert.False(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 283Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 284Assert.True(project.Resource.SupportsDebugging(builder.Configuration, out _)); 305Assert.True(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 308Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 330Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 351Assert.False(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 354Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()).LaunchConfigurationType); 355Assert.True(project.Resource.SupportsDebugging(builder.Configuration, out _)); 394AssertBuildDependency(project.Resource, buildResource); 415AssertBuildDependency(file.Resource, buildResource); 462var fileArgs = await ArgumentEvaluator.GetArgumentListAsync(file.Resource, app.Services); 529AssertBuildDependency(project.Resource, finalBuild); 530AssertBuildDependency(file.Resource, finalBuild); 552var fileArgs = await ArgumentEvaluator.GetArgumentListAsync(file.Resource, app.Services); 610AssertBuildDependency(first.Resource, buildResources[1]); 611AssertBuildDependency(second.Resource, buildResources[1]); 613foreach (var (resource, path) in new[] { (first.Resource, firstPath), (second.Resource, secondPath) }) 619expected.Add(resource == first.Resource ? firstSentinel : secondSentinel); 662resource.Resource, 696AssertBuildDependency(first.Resource, buildResource); 697AssertBuildDependency(second.Resource, buildResource); 708var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 710Assert.Empty(project.Resource.Annotations.OfType<WaitAnnotation>()); 917Assert.Null(Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()).BuildWorkingDirectory); 1137AssertBuildDependency(api.Resource, buildResources[1]); 1138AssertBuildDependency(worker.Resource, buildResources[1]); 1357project.Resource, 1393project.Resource, 1397Assert.Same(project.Resource, callbackResource); 1433await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, serviceProvider: app.Services); 1452ForgetCachedCallbackResults(project.Resource); 1454project.Resource, 1457project.Resource, 1462await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 1561resource.Resource.Annotations.Add( 1639var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 1660project.Resource, 1663project.Resource, 1672await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 1703ForgetCachedCallbackResults(project.Resource); 1714project.Resource, 1723var projectArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 1725project.Resource, 1730await project.Resource.CreateLaunchConfigurationAsync(refreshedCallbackContext)); 2000api.Resource, 2003worker.Resource, 2027var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 2045project.Resource, 2050await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 2059var arguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2062Assert.Equal("resolved-command", project.Resource.Command); 2063Assert.Equal(runtimeWorkingDirectory, project.Resource.WorkingDirectory); 2081var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 2101var launchTool = Assert.Single(project.Resource.Annotations.OfType<LaunchToolArgsCallbackAnnotation>()); 2103var firstArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2106Assert.Equal(firstSdkWorkingDirectory, project.Resource.WorkingDirectory); 2112var secondArguments = await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services); 2115Assert.Equal(projectDirectory, project.Resource.WorkingDirectory); 2140Assert.Equal(runtimeWorkingDirectory, worker.Resource.WorkingDirectory); 2166project.Resource, 2171await project.Resource.CreateLaunchConfigurationAsync(callbackContext)); 2175Assert.Equal(runtimeWorkingDirectory, project.Resource.WorkingDirectory); 2191Assert.True(@event.Model.Resources.Remove(removed.Resource)); 2215var index = @event.Model.Resources.IndexOf(replaced.Resource); 2217@event.Model.Resources[index] = new ExecutableResource(replaced.Resource.Name, "dotnet", workspace.Path); 2243Assert.True(@event.Model.Resources.Remove(project.Resource)); 2258AssertBuildDependency(file.Resource, buildResource); 2261project.Resource.Annotations 2267project.Resource.Annotations 2321AssertBuildDependency(first.Resource, buildResources[1]); 2322AssertBuildDependency(second.Resource, buildResources[1]); 2566Assert.True(builder.Resources.Remove(removed.Resource)); 2572Assert.True(Assert.Single(missing.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 2573AssertBuildDependency(missing.Resource, primaryBuildResource); 2574AssertBuildDependency(removed.Resource, primaryBuildResource); 2667Assert.Single(first.Resource.Annotations.OfType<DotnetProjectMetadata>()).ProjectPath); 2670Assert.Single(second.Resource.Annotations.OfType<DotnetProjectMetadata>()).ProjectPath); 2671Assert.Equal(Path.GetDirectoryName(coordinatedProjectPath), first.Resource.WorkingDirectory); 2672Assert.Equal(Path.GetDirectoryName(coordinatedProjectPath), second.Resource.WorkingDirectory); 2673Assert.Equal(coordinatedProjectPath, (await ArgumentEvaluator.GetArgumentListAsync(first.Resource))[2]); 2674Assert.Equal(coordinatedProjectPath, (await ArgumentEvaluator.GetArgumentListAsync(second.Resource))[2]); 2817var instances = resource.Resource.GetResolvedResourceNames(); 2823resource.Resource.Name, 2831resource.Resource.GetProjectMetadata().ProjectPath, 2873var instances = resource.Resource.GetResolvedResourceNames(); 2879resource.Resource.Name, 3040Assert.False(missing.Resource.Annotations.OfType<DotnetProjectMetadata>().Single().SuppressBuild); 3042missing.Resource.Annotations.OfType<SupportsDebuggingAnnotation>(), 3079Assert.False(Assert.Single(missing.Resource.Annotations.OfType<DotnetProjectMetadata>()).SuppressBuild); 3081missing.Resource.Annotations.OfType<SupportsDebuggingAnnotation>(), 3083Assert.False(missing.Resource.SupportsDebugging(builder.Configuration, out _)); 3084var args = await ArgumentEvaluator.GetArgumentListAsync(missing.Resource, app.Services); 3148Assert.Equal(["exec", expectedTargetPath], await ArgumentEvaluator.GetArgumentListAsync(project.Resource, app.Services)); 3149var metadata = project.Resource.GetProjectMetadata(); 3162project.Resource, 3229var metadata = Assert.Single(project.Resource.Annotations.OfType<DotnetProjectMetadata>()); 3251var callbackContext = new CommandLineArgsCallbackContext([], project.Resource, startCts.Token) 3256var launchTool = Assert.Single(project.Resource.Annotations.OfType<LaunchToolArgsCallbackAnnotation>()); 3288var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3392var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3438var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3472var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3524var completion = Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildCompletionAnnotation>()); 3585project.Resource, 3752worker.Resource,
DotnetProjectBuildEnvironmentTests.cs (2)
79Assert.Single(project.Resource.Annotations.OfType<DotnetProjectBuildEnvironmentCallbackAnnotation>()); 80Assert.Single(project.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>());
DotnetProjectFacadeTests.cs (15)
24Assert.Equal(3, Assert.Single(resource.Resource.Annotations.OfType<ReplicaAnnotation>()).Replicas); 25Assert.Single(resource.Resource.Annotations.OfType<DisableForwardedHeadersAnnotation>()); 26var filter = Assert.Single(resource.Resource.Annotations.OfType<EndpointEnvironmentInjectionFilterAnnotation>()).Filter; 30Assert.Single(resource.Resource.Annotations.OfType<IProjectMetadata>()), 31resource.Resource.GetProjectMetadata()); 123foreach (var endpoint in resource.Resource.Annotations.OfType<EndpointAnnotation>()) 128resource.Resource, serviceProvider: TestServiceProvider.Instance); 143var original = resource.Resource.GetProjectMetadata(); 145resource.Resource.Annotations.Add(replacement); 148Assert.Throws<InvalidOperationException>(resource.Resource.GetProjectMetadata).Message); 150resource.Resource.Annotations.Remove(original); 153Assert.Throws<InvalidOperationException>(resource.Resource.GetProjectMetadata).Message); 177modern.Resource, DistributedApplicationOperation.Publish); 179enabled.Resource, DistributedApplicationOperation.Publish); 182Assert.Equal(2, Assert.Single(legacy.Resource.Annotations.OfType<ReplicaAnnotation>()).Replicas);
DotnetProjectLaunchProfileTests.cs (24)
38var metadata = resource.Resource.GetProjectMetadata(); 41await resource.Resource.CreateLaunchConfigurationAsync( 42LaunchConfigurationTestHelpers.CreateCallbackContext(resource.Resource, ExecutableLaunchMode.Debug))); 45Assert.Same(metadata, resource.Resource.GetProjectMetadata()); 46Assert.Single(resource.Resource.Annotations.OfType<IProjectMetadata>()); 49var endpoint = Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 53resource.Resource, serviceProvider: TestServiceProvider.Instance); 56var arguments = await ArgumentEvaluator.GetArgumentListAsync(resource.Resource); 61Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 89await resource.Resource.CreateLaunchConfigurationAsync( 90LaunchConfigurationTestHelpers.CreateCallbackContext(resource.Resource, ExecutableLaunchMode.Debug))); 96Assert.Equal(port, Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 100Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 138Assert.Equal(port, Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 142Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 180Assert.Equal(5111, Assert.Single(modern.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 183Assert.Equal(5222, Assert.Single(legacy.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 187Assert.Empty(legacy.Resource.Annotations.OfType<EndpointAnnotation>()); 211Assert.Equal(5222, Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 215Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 233Assert.Equal(5222, Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()).Port); 237Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 255Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 273Assert.Empty(resource.Resource.Annotations.OfType<EndpointAnnotation>());
DotnetProjectOptionsTests.cs (5)
34var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(resource.Resource, ExecutableLaunchMode.Debug); 36await resource.Resource.CreateLaunchConfigurationAsync(callbackContext)); 40AssertEndpointPort(resource.Resource, expectedPort); 60var endpoint = Assert.Single(resource.Resource.Annotations.OfType<EndpointAnnotation>()); 84AssertEndpointPort(resource.Resource, expectedPort);
DotnetProjectPathTests.cs (28)
32var metadata = resource.Resource.GetProjectMetadata(); 34Assert.Equal(projectPath, relativeResource.Resource.GetProjectMetadata().ProjectPath); 37var arguments = await ArgumentEvaluator.GetArgumentListAsync(resource.Resource); 39Assert.Equal(workspace.Path, resource.Resource.WorkingDirectory); 41Assert.Equal(iconName, Assert.Single(resource.Resource.Annotations.OfType<ResourceIconAnnotation>()).IconName); 42Assert.Equal(iconName, Assert.Single(relativeResource.Resource.Annotations.OfType<ResourceIconAnnotation>()).IconName); 69Assert.Equal(projectPath, absolute.Resource.GetProjectMetadata().ProjectPath); 70Assert.Equal(projectPath, relative.Resource.GetProjectMetadata().ProjectPath); 71Assert.Equal(directory.FullName, absolute.Resource.WorkingDirectory); 72Assert.Equal(directory.FullName, relative.Resource.WorkingDirectory); 73Assert.False(absolute.Resource.GetProjectMetadata().IsFileBasedApp); 75Assert.Equal(iconName, Assert.Single(absolute.Resource.Annotations.OfType<ResourceIconAnnotation>()).IconName); 76Assert.Equal(iconName, Assert.Single(relative.Resource.Annotations.OfType<ResourceIconAnnotation>()).IconName); 79Assert.Equal(projectPath, absolute.Resource.GetProjectMetadata().ProjectPath); 80Assert.Equal(projectPath, relative.Resource.GetProjectMetadata().ProjectPath); 102Path.TrimEndingDirectorySeparator(resource.Resource.GetProjectMetadata().ProjectPath)); 132Assert.Equal(directory.FullName, resource.Resource.GetProjectMetadata().ProjectPath); 133Assert.False(resource.Resource.GetProjectMetadata().SuppressBuild); 140new BeforeResourceStartedEvent(resource.Resource, app.Services), 172new BeforeResourceStartedEvent(resource.Resource, app.Services), 205Assert.Equal(includeCSharpProject ? csharpPath : directory.FullName, legacy.Resource.GetProjectMetadata().ProjectPath); 206Assert.Equal(includeCSharpProject ? csharpPath : directory.FullName, legacyFileApp.Resource.GetProjectMetadata().ProjectPath); 207Assert.Equal(directory.FullName, modern.Resource.GetProjectMetadata().ProjectPath); 225Assert.Equal(workspace.Path, legacy.Resource.GetProjectMetadata().ProjectPath); 226Assert.Equal(path, modern.Resource.GetProjectMetadata().ProjectPath); 244var icon = Assert.Single(resource.Resource.Annotations.OfType<ResourceIconAnnotation>()); 296new BeforeResourceStartedEvent(resource.Resource, app.Services), 335Assert.Equal(path, excluded.Resource.GetProjectMetadata().ProjectPath);
DotnetProjectPublicApiTests.cs (1)
116project.Resource.Annotations.Add(new DotnetProjectMetadata("app.cs", buildConfiguration: null, "app"));
DotnetProjectResourceTests.cs (57)
40var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 56var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 72Assert.Equal("dotnet", app.Resource.Command); 73Assert.Equal(Path.GetDirectoryName(projectPath), app.Resource.WorkingDirectory); 83Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 84Assert.IsAssignableFrom<ExecutableResource>(app.Resource); 85Assert.IsAssignableFrom<IComputeResource>(app.Resource); 103.Where(item => ReferenceEquals(item.ModelResource, resource.Resource)) 109Assert.True(resource.Resource.TryGetInstances(out var instances)); 118Assert.Equal(resource.Resource.Command, executable.Spec.ExecutablePath); 119Assert.Equal(resource.Resource.WorkingDirectory, executable.Spec.WorkingDirectory); 147Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 173var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 174var metadata = app.Resource.GetProjectMetadata(); 180Assert.True(app.Resource.SupportsDotnetProgramPublishing()); 181Assert.IsAssignableFrom<IDotnetProgramResource>(app.Resource); 182Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource); 192var metadata = resource.Resource.GetProjectMetadata(); 194Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 197Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 198Assert.Single(resource.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 199Assert.Single(resource.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>()); 228var manifest = await ManifestUtils.GetManifestOrNull(resource.Resource, workspace.Path); 244var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 262var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 311Source = assets.Resource, 356await imageBuilder.BuildImageAsync(resource.Resource, cancellation.Token); 411() => imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 457Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 475Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 485var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 501var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 556var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 570var resource = builder.AddDotnetProject("testapp", projectPath, o => o.ExcludeLaunchProfile = true).Resource; 584var resource = builder.AddDotnetProject("testapp", appPath, o => o.ExcludeLaunchProfile = true).Resource; 620Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out var supportsDebugging)); 624app.Resource, 627await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 663app.Resource, 666await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 684var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 700Assert.Empty(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 702var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 746var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 772var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 798var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 817var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 852var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 876var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 908var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 940var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 970var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 1013var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 1041var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 1143await imageBuilder.BuildImageAsync(resource.Resource, cancellation.Token); 1147Assert.Empty(resource.Resource.GetProjectMetadata().BuildEnvironment); 1148Assert.Null(resource.Resource.GetProjectMetadata().BuildWorkingDirectory);
ProjectCustomizationCompatibilityTests.cs (4)
22var icon = Assert.Single(project.Resource.Annotations.OfType<ResourceIconAnnotation>()); 40var annotation = Assert.Single(project.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 48Resource = project.Resource, 71Assert.Single(project.Resource.Annotations.OfType<ForceProcessExecutionAnnotation>());
ProjectReferenceCompatibilityTests.cs (4)
59var originalRelationships = consumer.Resource.Annotations.OfType<ResourceRelationshipAnnotation>().ToArray(); 71consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 87var relationships = consumer.Resource.Annotations.OfType<ResourceRelationshipAnnotation>().ToArray(); 91Assert.Same(source.Resource, relationship.Resource);
Aspire.Hosting.DotnetTool.Tests (31)
AddDotnetToolTests.cs (25)
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(); 398var args = await ArgumentEvaluator.GetArgumentListAsync(tool.Resource).DefaultTimeout(); 401var manifest = await ManifestUtils.GetManifest(tool.Resource).DefaultTimeout(); 427var annotation = Assert.Single(tool.Resource.Annotations.OfType<RequiredCommandAnnotation>());
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.EntityFrameworkCore (28)
EFMigrationResourceBuilderExtensions.cs (18)
39var migrationResource = builder.Resource; 104builder.Resource.PublishAsMigrationScript = true; 105builder.Resource.ScriptIdempotent = idempotent; 106builder.Resource.ScriptNoTransactions = noTransactions; 164builder.Resource.PublishAsMigrationBundle = true; 165builder.Resource.BundleSelfContained = selfContained; 166builder.Resource.PublishBundleContainer = publishContainer; 167builder.Resource.BundleBaseImage = baseImage; 171builder.Resource.BundleTargetRuntime = targetRuntime ?? (publishContainer ? "linux-x64" : null); 202builder.Resource.MigrationOutputDirectory = outputDirectory; 220builder.Resource.MigrationNamespace = @namespace; 244builder.Resource.MigrationsProjectPath = projectPath; 267builder.Resource.MigrationsProjectPath = metadata.ProjectPath; 268builder.Resource.MigrationsProjectMetadata = metadata; 286IResourceBuilder<IDotnetProgramResource> projectBuilder => WithMigrationsProjectResource(builder, projectBuilder.Resource), 304builder.Resource.MigrationsProjectResource = projectResource; 305builder.Resource.MigrationsProjectMetadata = metadata; 328var migrationResource = builder.Resource;
EFResourceBuilderExtensions.cs (10)
228.Where(r => ReferenceEquals(r.StartupProjectResource, builder.Resource)) 236$"The DbContext type '{GetShortTypeName(dbContextTypeName)}' has already been registered for EF migrations on resource '{builder.Resource.Name}'."); 242$"Cannot register a specific DbContext type for migrations when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 250$"Cannot register migrations without a context type when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 254$"Cannot register migrations without a context type when they have already been registered for specific DbContext types on resource '{builder.Resource.Name}'."); 257var projectMetadata = builder.Resource.GetProjectMetadata(); 261$"EF Core migrations require a project file. Resource '{builder.Resource.Name}' is a file-based app."); 264var migrationResource = new EFMigrationResource(name, builder.Resource, dbContextTypeName) 736var toolResource = toolBuilder.Resource; 770migrationResource.ToolResource = toolBuilder.Resource;
Aspire.Hosting.EntityFrameworkCore.Tests (224)
AddEFMigrationsTests.cs (34)
25Assert.Equal("mymigrations", migrations.Resource.Name); 26Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 27Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 39Assert.Equal("mymigrations", migrations.Resource.Name); 40Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 41Assert.Null(migrations.Resource.DbContextTypeName); 53Assert.Equal("mymigrations", migrations.Resource.Name); 54Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 55Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 68Assert.Equal("mymigrations", migrations.Resource.Name); 69Assert.Equal(project.Resource, migrations.Resource.StartupProjectResource); 70Assert.Equal(contextTypeName, migrations.Resource.DbContextTypeName); 96Assert.Same(project.Resource, migrations.Resource.StartupProjectResource); 99_ = migrations.Resource.ProjectResource; 127Assert.Same(project.Resource, migrations.Resource.ProjectResource); 139Assert.NotEqual(migrations1.Resource, migrations2.Resource); 140Assert.Equal(typeof(TestDbContext).FullName, migrations1.Resource.DbContextTypeName); 141Assert.Equal(typeof(AnotherDbContext).FullName, migrations2.Resource.DbContextTypeName); 153Assert.NotEqual(migrations1.Resource, migrations2.Resource); 154Assert.Equal("MyApp.Data.AppDbContext", migrations1.Resource.DbContextTypeName); 155Assert.Equal("MyApp.Data.LoggingDbContext", migrations2.Resource.DbContextTypeName); 235var snapshotAnnotation = migrations.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().FirstOrDefault(); 248var iconAnnotation = migrations.Resource.Annotations.OfType<ResourceIconAnnotation>().FirstOrDefault(); 260Assert.IsAssignableFrom<IResourceWithWaitSupport>(migrations.Resource); 270Assert.False(migrations.Resource.PublishAsMigrationScript); 271Assert.False(migrations.Resource.PublishAsMigrationBundle);
EFBuildCustomizationWarningTests.cs (7)
75migrations.Resource, logger, TestContext.Current.CancellationToken, app.Services, tool.Resource); 97ExpectedArguments(executor, migrations.Resource, "database", "update", noBuild: true), 117migrations.Resource, new TestLogger("EF", sink, level => level >= LogLevel.Information), 138Assert.Empty(startup.Resource.GetProjectMetadata().BuildEnvironment); 150migrations.Resource, new TestLogger("EF", sink, level => level >= LogLevel.Information), 161var expected = ExpectedArguments(executor, migrations.Resource, "migrations", bundle ? "bundle" : "script", noBuild: false); 181migrations.Resource, logger, TestContext.Current.CancellationToken, app.Services, tool.Resource);
EFBuildReadinessTests.cs (18)
36migrations.Resource.ToolResource = tool.Resource; 40migrations.Resource, command, TestContext.Current.CancellationToken); 50Assert.True(app.ResourceNotifications.TryGetCurrentState(migrations.Resource.Name, out var state)); 69migrations.Resource.ToolResource = tool.Resource; 80migrations.Resource.Name, KnownResourceStates.FailedToStart, token); 83() => app.ResourceNotifications.WaitForDependenciesAsync(project.Resource, token)); 101migrations.Resource.ToolResource = tool.Resource; 108migrations.Resource.Name, succeed ? KnownResourceStates.Finished : KnownResourceStates.FailedToStart, token); 111Assert.False(migrations.Resource.IsExecutingCommand); 115() => app.ResourceNotifications.WaitForDependenciesAsync(project.Resource, token)); 141migrations.Resource.ToolResource = tool.Resource; 146migrations.Resource, "ef-database-update", TestContext.Current.CancellationToken); 150Assert.False(migrations.Resource.IsExecutingCommand); 153migrations.Resource, "ef-database-update", TestContext.Current.CancellationToken); 172Assert.Same(target.Resource, migrations.Resource.MigrationsProjectResource); 181migrations.Resource, NullLogger.Instance, TestContext.Current.CancellationToken, app.Services, tool.Resource); 205migrations.Resource, NullLogger.Instance, TestContext.Current.CancellationToken, app.Services, tool.Resource);
EFCoreOperationExecutorTests.cs (7)
146new EFMigrationResource("migrations", project.Resource, dbContextTypeName: null), 167new EFMigrationResource("migrations", project.Resource, dbContextTypeName: null), 189tool.Resource.Annotations.Add(firstCommand); 192tool.Resource, 197tool.Resource.Annotations.Remove(firstCommand); 198tool.Resource.Annotations.Add(new CommandLineArgsCallbackAnnotation(args => args.Add("second"))); 201tool.Resource,
EFMigrationCommandsTests.cs (18)
22var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 36var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 51var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 66var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 84var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 98var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 112var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 126var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 141Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 151var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 166var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 182var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 198var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 226migrations.Resource.IsExecutingCommand = true; 228var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 256migrations.Resource.IsExecutingCommand = true; 258var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 279migrations.Resource.IsExecutingCommand = false;
EFMigrationConfigurationTests.cs (46)
36Assert.True(migrations.Resource.PublishAsMigrationScript); 47Assert.True(migrations.Resource.PublishAsMigrationBundle); 58Assert.Equal("Data/Migrations", migrations.Resource.MigrationOutputDirectory); 69Assert.Equal("MyApp.Data.Migrations", migrations.Resource.MigrationNamespace); 101Assert.True(migrations.Resource.PublishAsMigrationScript); 123Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 124Assert.True(migrations.Resource.PublishAsMigrationScript); 125Assert.True(migrations.Resource.PublishAsMigrationBundle); 126Assert.Equal("CustomDir", migrations.Resource.MigrationOutputDirectory); 127Assert.Equal("MyApp.Migrations", migrations.Resource.MigrationNamespace); 141Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 173Assert.False(migrations.Resource.PublishAsMigrationScript); 174Assert.False(migrations.Resource.PublishAsMigrationBundle); 175Assert.Null(migrations.Resource.MigrationOutputDirectory); 176Assert.Null(migrations.Resource.MigrationNamespace); 177Assert.Null(migrations.Resource.MigrationsProjectPath); 188Assert.NotNull(migrations.Resource.MigrationsProjectPath); 190Assert.EndsWith("Target.csproj", migrations.Resource.MigrationsProjectPath); 225Assert.Null(migrations.Resource.MigrationsProjectPath); 248Assert.Equal(target.Resource.GetProjectMetadata().ProjectPath, migrations.Resource.MigrationsProjectPath); 249Assert.Same(target.Resource, migrations.Resource.MigrationsProjectResource); 252Assert.Null(migrations.Resource.MigrationsProjectResource); 255migrations.Resource.MigrationsProjectPath = new Projects.ServiceA().ProjectPath; 256Assert.Null(migrations.Resource.MigrationsProjectResource); 257Assert.Null(migrations.Resource.MigrationsProjectMetadata); 268Assert.Null(migrations.Resource.MigrationsProjectPath); 273Assert.Equal(Path.GetFullPath(Path.Combine(builder.AppHostDirectory, "Target.csproj")), migrations.Resource.MigrationsProjectPath); 275Assert.Equal(Path.GetFullPath(Path.Combine(builder.AppHostDirectory, "Target.csproj")), migrations.Resource.MigrationsProjectPath); 286Assert.True(migrations.Resource.PublishAsMigrationScript); 287Assert.True(migrations.Resource.ScriptIdempotent); 298Assert.True(migrations.Resource.PublishAsMigrationScript); 299Assert.False(migrations.Resource.ScriptIdempotent); 310Assert.True(migrations.Resource.PublishAsMigrationScript); 311Assert.True(migrations.Resource.ScriptNoTransactions); 322Assert.True(migrations.Resource.PublishAsMigrationBundle); 323Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 334Assert.True(migrations.Resource.PublishAsMigrationBundle); 335Assert.True(migrations.Resource.BundleSelfContained); 347Assert.True(migrations.Resource.PublishAsMigrationScript); 348Assert.True(migrations.Resource.ScriptIdempotent); 349Assert.True(migrations.Resource.ScriptNoTransactions); 350Assert.True(migrations.Resource.PublishAsMigrationBundle); 351Assert.Equal("win-x64", migrations.Resource.BundleTargetRuntime); 352Assert.True(migrations.Resource.BundleSelfContained);
EFMigrationPipelineTests.cs (73)
49migrations.Resource.ToolResource = tool.Resource; 56foreach (var annotation in migrations.Resource.Annotations.OfType<PipelineStepAnnotation>()) 61Resource = migrations.Resource 91var steps = await CreateStepsAsync(builder, migrations.Resource); 108var steps = await CreateStepsAsync(builder, migrations.Resource); 124var steps = await CreateStepsAsync(builder, migrations.Resource); 142var steps = await CreateStepsAsync(builder, migrations.Resource); 160var m1Steps = await CreateStepsAsync(builder, m1.Resource); 161var m2Steps = await CreateStepsAsync(builder, m2.Resource); 186var m1Steps = await CreateStepsAsync(builder, m1.Resource); 187var m2Steps = await CreateStepsAsync(builder, m2.Resource); 216var m1Steps = await CreateStepsAsync(builder, m1.Resource); 217var m2Steps = await CreateStepsAsync(builder, m2.Resource); 238var m1Steps = await CreateStepsAsync(builder, m1.Resource); 239var m2Steps = await CreateStepsAsync(builder, m2.Resource); 264var m1Steps = await CreateStepsAsync(builder, m1.Resource); 265var m3Steps = await CreateStepsAsync(builder, m3.Resource); 287var steps = await CreateStepsAsync(builder, migrations.Resource); 290Assert.True(migrations.Resource.PublishAsMigrationBundle); 291Assert.True(migrations.Resource.PublishBundleContainer); 303var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 323var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 335var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 346var startCommand = migrations.Resource.ToolResource.Annotations 363Assert.True(migrations.Resource.PublishAsMigrationBundle); 364Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 365Assert.True(migrations.Resource.BundleSelfContained); 366Assert.True(migrations.Resource.PublishBundleContainer); 377Assert.True(migrations.Resource.PublishAsMigrationBundle); 378Assert.False(migrations.Resource.PublishBundleContainer); 389Assert.True(migrations.Resource.PublishAsMigrationScript); 390Assert.True(migrations.Resource.ScriptIdempotent); 391Assert.True(migrations.Resource.ScriptNoTransactions); 392Assert.False(migrations.Resource.PublishAsMigrationBundle); 405Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 418Assert.Equal("linux-arm64", migrations.Resource.BundleTargetRuntime); 431Assert.False(migrations.Resource.BundleSelfContained); 442Assert.Null(migrations.Resource.BundleTargetRuntime); 455Assert.IsAssignableFrom<ContainerResource>(migrations.Resource); 456Assert.IsAssignableFrom<IComputeResource>(migrations.Resource); 457Assert.False(migrations.Resource.IsContainer()); 470var dockerfileAnnotation = Assert.Single(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 476Assert.True(migrations.Resource.IsContainer()); 492Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 493Assert.False(migrations.Resource.IsContainer()); 496Assert.True(migrations.Resource.PublishBundleContainer); 507Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 508Assert.False(migrations.Resource.IsContainer()); 521var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 540var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 564var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 584migrations.Resource.ResolvedFramework = resolvedFramework; 586var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 601migrations.Resource.ResolvedFramework = "net11.0"; 603var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 617var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 631var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 650EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 667EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 685var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 705var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 724EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 738var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 745var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 759var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 766var waitedResources = migrations.Resource.Annotations.OfType<WaitAnnotation>().Select(w => w.Resource).ToList(); 767Assert.Contains(server.Resource, waitedResources); 768Assert.Contains((IResource)database.Resource, waitedResources); 771var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 783Assert.Equal("mymigrations.exe", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 794Assert.Equal("mymigrations", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 807var steps = await CreateStepsAsync(builder, migrations.Resource); 815Assert.Contains($"build-{migrations.Resource.Name}", generateStep.RequiredBySteps);
EFMigrationResourceTests.cs (9)
40var resource = new EFMigrationResource("migrations", (IDotnetProgramResource)project.Resource, "App.Context"); 42Assert.Same(project.Resource, resource.StartupProjectResource); 77Assert.Same(project.Resource, migrations.Resource.StartupProjectResource); 78Assert.Equal(overload is 1 or 3 ? "App.Context" : null, migrations.Resource.DbContextTypeName); 79Assert.Same(migrations.Resource, Assert.Single(builder.Resources.OfType<EFMigrationResource>())); 81migrations.Resource.Annotations.OfType<ResourceRelationshipAnnotation>(), 83Assert.Same(project.Resource, parentRelationship.Resource); 84Assert.Single(migrations.Resource.Annotations.OfType<PipelineStepAnnotation>());
EFMigrationWaitForTests.cs (12)
26var waitAnnotation = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 28Assert.Equal(migrations.Resource, waitAnnotation.Resource); 43var wait1 = project1.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 44var wait2 = project2.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 62var waitAnnotations = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 64Assert.Contains(waitAnnotations, w => w.Resource == migrations1.Resource); 65Assert.Contains(waitAnnotations, w => w.Resource == migrations2.Resource); 79Assert.NotNull(anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault()); 92var waitAnnotation = container.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 94Assert.Equal(migrations.Resource, waitAnnotation.Resource);
Aspire.Hosting.Foundry (102)
FoundryExtensions.cs (6)
70var deployment = new FoundryDeploymentResource(name, modelName, modelVersion, format, builder.Resource); 74builder.Resource.AddDeployment(deployment); 79if (builder.Resource.IsEmulator) 156configure(builder.Resource); 221var resource = builder.Resource; 394var foundryResource = builder.Resource.Parent;
HostedAgent\HostedAgentBuilderExtension.cs (10)
268if (project.Resource.DefaultContainerRegistry is { } defaultRegistry) 271project.Resource.DefaultContainerRegistry = null; 284.AddFoundry($"{builder.Resource.Name}-proj-foundry") 285.AddProject($"{builder.Resource.Name}-proj"); 295var existingHttpEndpoint = builder.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(e => e.Name == "http"); 448var resource = builder.Resource; 449var projectResource = project.Resource; 464existingHostedAgent.Resource.Configure = configureHostedAgent; 476target = containerResourceBuilder.Resource; 493target = containerResourceBuilder.Resource;
Project\AzureCognitiveServicesBase.cs (2)
114var r = AzureProvisionableAspireResource<P>.GetProvisionableResource(infra, builder.Resource.GetBicepIdentifier()) ?? throw new InvalidOperationException($"Provisionable resource for Aspire resource '{builder.Resource.Name}' not found in infrastructure.");
Project\ConnectionBuilderExtensions.cs (10)
83var connectionResource = new AzureCognitiveServicesProjectConnectionResource(name, configureInfrastructure, builder.Resource); 121return builder.AddConnection(db.Resource); 161return builder.AddConnection(storage.Resource); 205return builder.AddConnection(registry.Resource); 246var projectPrincipalId = builder.Resource.PrincipalId.AsProvisioningParameter(infra); 270return builder.AddConnection(search.Resource); 309if (keyVault.Resource.IsEmulator()) 317return builder.AddConnection($"{keyVault.Resource.Name}-{Guid.NewGuid():N}", (infra) => 319var vault = (KeyVaultService)keyVault.Resource.AddAsExistingResource(infra); 513var connectionResource = new BingGroundingConnectionResource(name, configureInfrastructure, builder.Resource);
Project\ProjectBuilderExtension.cs (18)
45if (builder.Resource.IsEmulator) 52var project = builder.ApplicationBuilder.AddResource(new AzureCognitiveServicesProjectResource(name, ConfigureInfrastructure, builder.Resource)); 55project.Resource.DefaultContainerRegistry = CreateDefaultRegistry(builder.ApplicationBuilder, $"{name}-acr"); 97if (builder.Resource.KeyVaultConn is not null) 99throw new InvalidOperationException($"Azure Cognitive Services project resource '{builder.Resource.Name}' already has a Key Vault connection configured."); 104builder.Resource.KeyVaultConn = conn.Resource; 121builder.Resource.AppInsights = appInsights.Resource; 186GetCapabilityHostConfiguration(builder).CosmosDB = cosmosDb.Resource; 204GetCapabilityHostConfiguration(builder).Storage = storage.Resource; 222GetCapabilityHostConfiguration(builder).Search = search.Resource; 240GetCapabilityHostConfiguration(builder).AzureOpenAI = openAI.Resource; 287return builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent).AddDeployment(name, model); 328return builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent).AddDeployment(name, modelName, modelVersion, format); 719builder.Resource.CapabilityHostConfiguration = config; 724=> builder.Resource.CapabilityHostConfiguration 725?? throw new InvalidOperationException($"Microsoft Foundry project resource '{builder.Resource.Name}' does not have a capability host configured. Call addCapabilityHost first.");
Project\ProjectResource.cs (4)
369configuration.CosmosDB = cosmosDb.Resource; 381configuration.Storage = storage.Resource; 393configuration.Search = search.Resource; 405configuration.AzureOpenAI = openAI.Resource;
PromptAgent\PromptAgentBuilderExtensions.cs (35)
69var agent = new AzurePromptAgentResource(name, model.Resource.DeploymentName, project.Resource, instructions); 152agent.Resource.AddTool(tool.Resource); 179var resource = new CodeInterpreterToolResource(name, project.Resource); 203var resource = new FileSearchToolResource(name, project.Resource) 228var resource = new WebSearchToolResource(name, project.Resource); 250var resource = new ImageGenerationToolResource(name, project.Resource); 278var resource = new ComputerToolResource(name, project.Resource, displayWidth, displayHeight, environment); 311var resource = new AzureAISearchToolResource(name, project.Resource) 336if (tool.Resource.Connection is not null) 339$"Azure AI Search tool '{tool.Resource.Name}' already has a backing resource configured."); 343var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 348tool.Resource.Connection = connection.Resource; 349tool.Resource.SearchResource = search.Resource; 374var resource = new BingGroundingToolResource(name, project.Resource); 447if (tool.Resource.Connection is not null) 450$"Bing Grounding tool '{tool.Resource.Name}' already has a connection configured."); 456tool.Resource.Connection = connectionBuilder.Resource; 461var projectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 462var connection = projectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", bingResourceId); 463tool.Resource.Connection = connection.Resource; 467var paramProjectBuilder = tool.ApplicationBuilder.CreateResourceBuilder(tool.Resource.Project); 468var paramConnection = paramProjectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", parameterBuilder); 469tool.Resource.Connection = paramConnection.Resource; 505var resource = new SharePointToolResource(name, project.Resource, projectConnectionIds); 529var resource = new FabricToolResource(name, project.Resource, projectConnectionIds); 568name, project.Resource, functionName, description, parameters, 631name, project.Resource, functionName, parameters, description, strictModeEnabled); 685builder.Resource.AddCustomTool(tool);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Toolbox\FoundryToolboxBuilderExtensions.cs (16)
55var toolbox = new FoundryToolboxResource(name, builder.Resource); 64toolbox.Annotations.Add(new ReferenceRoleAssignmentAnnotation(builder.Resource, roles)); 185builder.Resource.AddTool(new FoundryToolboxWebSearchToolDefinition(name, description)); 205builder.Resource.Description = description; 325if (builder.Resource.IsExisting) 330var projectBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.Parent); 332builder.Resource.Parent.Name, 333builder.Resource.Name, 335search.Resource.Name); 336var connection = projectBuilder.AddSearchConnection(connectionName, search.Resource); 337builder.Resource.AddTool(new FoundryToolboxAzureAISearchToolDefinition( 339search.Resource, 340connection.Resource, 360foreach (var connection in builder.Resource.Tools 367builder.Resource.ClearTools(); 381builder.Resource.AddTool(new FoundryToolboxMcpToolDefinition(name, endpointExpression, options));
Aspire.Hosting.Foundry.Tests (208)
AddFoundryTests.cs (3)
19Assert.NotNull(resourceBuilder.Resource); 20Assert.Equal(name, resourceBuilder.Resource.Name); 21Assert.IsType<FoundryResource>(resourceBuilder.Resource);
AddProjectTests.cs (4)
21Assert.NotNull(resourceBuilder.Resource); 22Assert.Equal(name, resourceBuilder.Resource.Name); 23Assert.IsType<AzureCognitiveServicesProjectResource>(resourceBuilder.Resource); 37var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
AzureFoundryToolboxAdministrationTests.cs (1)
28Assert.Single(toolbox.Resource.Tools));
HostedAgentExtensionTests.cs (29)
37Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 52Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 69Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 173var endpoint = Assert.Single(agent.Resource.Annotations.OfType<EndpointAnnotation>()); 187var result = await app.ResourceCommands.ExecuteCommandAsync(agent.Resource, "send-message", arguments); 375ReferenceEquals(r.Resource, project.Resource)); 388ReferenceEquals(r.Resource, project.Resource)); 425SetFoundryProjectOutputs(project.Resource); 453Assert.Same(agent.Resource, hostedAgent.Target); 454Assert.True(agent.Resource.SupportsDotnetProgramPublishing()); 455Assert.DoesNotContain(builder.Resources.OfType<ContainerResource>(), resource => resource.Name == agent.Resource.Name); 456Assert.DoesNotContain(agent.Resource.Annotations, annotation => annotation is DockerfileBuildAnnotation); 457Assert.Contains(agent.Resource.Annotations, annotation => annotation is EndpointEnvironmentInjectionFilterAnnotation); 592var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 619var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 628Assert.Equal(agent.Resource.Name, envVars["RESOURCE_NAME"]); 642var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 668() => configuration.ToProjectsAgentVersionCreationOptions(agent.Resource.Name)); 680var reference = new ConnectionStringReference(connection.Resource, optional: false); 686var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 708var names = ConnectionStringEnvironmentVariableNames.Create(connection.Resource, "my-db-http"); 710connection.Resource, optional: false, names, "HttpConnectionStringExpression", 718var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 741var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 882Assert.Contains(app.Resource.Annotations.OfType<WaitAnnotation>(), w => ReferenceEquals(w.Resource, project.Resource)); 897Assert.Null(project.Resource.DefaultContainerRegistry); 931var registryTargets = container.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 933Assert.Same(registry.Resource, registryTarget.Registry);
ProjectResourceTests.cs (35)
21Assert.IsType<AzureCognitiveServicesProjectResource>(project.Resource); 22Assert.Equal("my-project", project.Resource.Name); 23Assert.Same(account.Resource, project.Resource.Parent); 34var registry = project.Resource.ContainerRegistry; 36Assert.Same(project.Resource.DefaultContainerRegistry, registry); 49Assert.Null(project.Resource.DefaultContainerRegistry); 50Assert.Null(project.Resource.ContainerRegistry); 63Assert.Same(registry.Resource, project.Resource.ContainerRegistry); 64Assert.True(project.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation)); 65Assert.Same(registry.Resource, annotation.Registry); 78var defaultRegistry = project.Resource.DefaultContainerRegistry; 88Assert.Same(registry.Resource, registries[0]); 100var defaultRegistry = project.Resource.DefaultContainerRegistry; 110Assert.Null(project.Resource.DefaultContainerRegistry); 120var expr = project.Resource.ConnectionStringExpression; 131var expr = project.Resource.UriExpression; 142var properties = ((IResourceWithConnectionString)project.Resource) 163Assert.Same(appInsights.Resource, project.Resource.AppInsights); 176Assert.Equal("chat", deployment.Resource.Name); 177Assert.Equal("gpt-4", deployment.Resource.ModelName); 191Assert.Equal("chat", deployment.Resource.Name); 210Assert.NotNull(project.Resource.CapabilityHostConfiguration); 211Assert.Equal("cap-host", project.Resource.CapabilityHostConfiguration.Name); 212Assert.Same(cosmosDb.Resource, project.Resource.CapabilityHostConfiguration.CosmosDB); 213Assert.Same(storage.Resource, project.Resource.CapabilityHostConfiguration.Storage); 214Assert.Same(search.Resource, project.Resource.CapabilityHostConfiguration.Search); 234Assert.NotNull(project.Resource.CapabilityHostConfiguration); 235Assert.Same(foundry.Resource, project.Resource.CapabilityHostConfiguration.AzureOpenAI);
ProjectWithReferenceTests.cs (4)
23pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 42pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 61pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 80pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance);
PromptAgentTests.cs (80)
33searchTool.Resource.IndexName = "docs"; 34searchTool.Resource.Connection!.Outputs["id"] = "/connections/search"; 36bingConnection.Resource.Outputs["id"] = "/connections/bing"; 49await searchTool.Resource.ToAgentToolAsync(), 50await bingTool.Resource.ToAgentToolAsync(), 51await sharePoint.Resource.ToAgentToolAsync(), 52await fabric.Resource.ToAgentToolAsync(), 53await function.Resource.ToAgentToolAsync() 73Assert.NotNull(agent.Resource); 74Assert.Equal("my-agent", agent.Resource.Name); 75Assert.IsType<AzurePromptAgentResource>(agent.Resource); 88Assert.Equal("gpt41", agent.Resource.Model); 89Assert.Equal("You tell jokes.", agent.Resource.Instructions); 102Assert.Same(project.Resource, agent.Resource.Project); 180project.Resource.Outputs["endpoint"] = "https://account.services.ai.azure.com/api/projects/my-project"; 186var command = Assert.Single(agent.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 190ResourceName = agent.Resource.Name, 239Assert.Null(agent.Resource.Instructions); 258Assert.Equal(2, agent.Resource.Tools.Count); 259Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 260Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 273Assert.Equal("code-interp", tool.Resource.Name); 274Assert.IsType<CodeInterpreterToolResource>(tool.Resource); 275Assert.Same(project.Resource, tool.Resource.Project); 288Assert.IsType<FileSearchToolResource>(tool.Resource); 289Assert.Equal(["store-1", "store-2"], tool.Resource.VectorStoreIds); 302Assert.IsType<WebSearchToolResource>(tool.Resource); 315Assert.IsType<AzureAISearchToolResource>(tool.Resource); 316Assert.Same(project.Resource, tool.Resource.Project); 317Assert.Null(tool.Resource.SearchResource); 330Assert.NotNull(tool.Resource.SearchResource); 331Assert.Same(search.Resource, tool.Resource.SearchResource); 332Assert.NotNull(tool.Resource.Connection); 359Assert.IsType<BingGroundingToolResource>(tool.Resource); 360Assert.Null(tool.Resource.Connection); 374Assert.NotNull(tool.Resource.Connection); 375Assert.Same(connection.Resource, tool.Resource.Connection); 403Assert.NotNull(tool.Resource.Connection); 430Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 443Assert.NotNull(tool.Resource.Connection); 457Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 470Assert.IsType<SharePointToolResource>(tool.Resource); 471Assert.Equal(["conn-1", "conn-2"], tool.Resource.ProjectConnectionIds); 484Assert.IsType<FabricToolResource>(tool.Resource); 485Assert.Equal(["fab-conn-1"], tool.Resource.ProjectConnectionIds); 506Assert.IsType<AzureFunctionToolResource>(tool.Resource); 507Assert.Equal("myFunc", tool.Resource.FunctionName); 524Assert.IsType<FunctionToolResource>(tool.Resource); 525Assert.Equal("get_weather", tool.Resource.FunctionName); 526Assert.Equal("Gets the current weather", tool.Resource.Description); 550Assert.Equal(4, agent.Resource.Tools.Count); 551Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 552Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 553Assert.IsType<AzureAISearchToolResource>(agent.Resource.Tools[2]); 554Assert.IsType<SharePointToolResource>(agent.Resource.Tools[3]); 570Assert.Single(agent1.Resource.Tools); 571Assert.Single(agent2.Resource.Tools); 572Assert.Same(codeInterp.Resource, agent1.Resource.Tools[0]); 573Assert.Same(codeInterp.Resource, agent2.Resource.Tools[0]); 605pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 619Assert.IsAssignableFrom<IResourceWithConnectionString>(agent.Resource); 620Assert.IsAssignableFrom<IResourceWithEnvironment>(agent.Resource); 621Assert.IsNotAssignableFrom<IComputeResource>(agent.Resource); 634Assert.IsType<ImageGenerationToolResource>(tool.Resource); 647var computerTool = Assert.IsType<ComputerToolResource>(tool.Resource); 664Assert.Same(project.Resource, ci.Resource.Project); 665Assert.Same(project.Resource, fs.Resource.Project); 666Assert.Same(project.Resource, ws.Resource.Project); 681var annotations = agent.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 698Resource = agent.Resource
ToolboxTests.cs (52)
31Assert.Equal("field-tools", toolbox.Resource.Name); 32Assert.Equal("7", toolbox.Resource.Version); 33Assert.Same(project.Resource, toolbox.Resource.Parent); 34Assert.IsNotAssignableFrom<IResourceWithParent>(toolbox.Resource); 36toolbox.Resource.Annotations.OfType<ResourceRelationshipAnnotation>()); 38Assert.Same(project.Resource, parentRelationship.Resource); 42toolbox.Resource.Annotations.OfType<ReferenceRoleAssignmentAnnotation>()); 43Assert.Same(project.Resource, consumerRole.Target); 64Assert.True(runToolbox.Resource.IsExisting); 65Assert.False(publishToolbox.Resource.IsExisting); 83Assert.False(runToolbox.Resource.IsExisting); 84Assert.True(publishToolbox.Resource.IsExisting); 98Assert.True(toolbox.Resource.IsExisting); 99Assert.Empty(toolbox.Resource.Tools); 116Assert.Empty(toolbox.Resource.Tools); 133Assert.Empty(toolbox.Resource.Tools); 156toolbox.Resource.Tools, 172Assert.Same(search.Resource, aiSearch.SearchResource); 192pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 222var expression = toolbox.Resource.GetVersionUriExpression("9"); 229toolbox.Resource.UriExpression.ValueExpression, 252project.Resource.Outputs["endpoint"] = "https://project.example.com"; 253project.Resource.Outputs["APPLICATION_INSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=test;IngestionEndpoint=https://test.example.com/"; 275var annotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 280Resource = toolbox.Resource 292Assert.Same(toolbox.Resource, step.Resource); 305var annotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 310Resource = toolbox.Resource 320Assert.Same(toolbox.Resource, beforeStart.Resource); 376var def = Assert.IsType<FoundryToolboxAzureAISearchToolDefinition>(toolbox.Resource.Tools[0]); 484var def = Assert.IsType<FoundryToolboxMcpToolDefinition>(toolbox.Resource.Tools[0]); 517Assert.Single(toolbox.Resource.Tools)); 557Assert.Single(toolbox.Resource.Tools)); 637ReferenceExpression.Create($"{empty.Resource}")); 747Assert.Single(firstToolbox.Resource.Tools)); 749Assert.Single(secondToolbox.Resource.Tools)); 764Assert.Single(toolbox.Resource.Tools)); 802var replacement = new ContainerResource(mcp.Resource.Name); 803model.Resources.Remove(mcp.Resource); 811var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 815Resource = toolbox.Resource 834var configAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 853var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 857Resource = toolbox.Resource 870var configAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 892var toolboxStepAnnotation = Assert.Single(toolbox.Resource.Annotations.OfType<PipelineStepAnnotation>()); 896Resource = toolbox.Resource 903Resource = mcp.Resource, 909toolbox.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 927await notifications.PublishUpdateAsync(mcp.Resource, snapshot => snapshot with 935mcp.Resource,
Aspire.Hosting.Garnet (1)
GarnetBuilderExtensions.cs (1)
110var 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)
42await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 44await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 48await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 77hb.Configuration[$"ConnectionStrings:{garnet.Resource.Name}"] = await garnet.Resource.ConnectionStringExpression.GetValueAsync(default); 79hb.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.Go (28)
GoHostingExtensions.cs (27)
345Resource = containerBuilder.Resource, 349if (!containerBuilder.Resource.IsExcludedFromPublish()) 351WarnIfExistingDockerfileIgnoresPackagePath(resource, containerBuilder.Resource, context.Logger); 363var validationStep = context.GetSteps(containerBuilder.Resource).FirstOrDefault(step => step.Name == validationStepName); 365context.GetSteps(containerBuilder.Resource, WellKnownPipelineTags.BuildCompute).DependsOn(validationStep); 372if (rb.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>( 375var buildSteps = context.GetSteps(rb.Resource, WellKnownPipelineTags.BuildCompute); 419if (builder.Resource.TryGetLastAnnotation<GoModTidyAnnotation>(out _)) 430$"{builder.Resource.Name}-mod-tidy", "go", builder.Resource.WorkingDirectory); 443if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var existingVendor)) 469if (builder.Resource.TryGetLastAnnotation<GoModVendorAnnotation>(out _)) 479$"{builder.Resource.Name}-mod-vendor", "go", builder.Resource.WorkingDirectory); 487if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 515if (builder.Resource.TryGetLastAnnotation<GoModDownloadAnnotation>(out _)) 525$"{builder.Resource.Name}-mod-download", "go", builder.Resource.WorkingDirectory); 534if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var vendorBuilder)) 538else if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 563if (builder.Resource.TryGetLastAnnotation<GoVetToolAnnotation>(out _)) 573$"{builder.Resource.Name}-vet-tool", "go", builder.Resource.WorkingDirectory); 761var debuggingAnnotation = builder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 764builder.Resource.Annotations.Remove(debuggingAnnotation); 771new ExecutableAnnotation { Command = "dlv", WorkingDirectory = builder.Resource.WorkingDirectory }, 791var resource = builder.Resource;
GoRunDebugging.cs (1)
29original = resourceBuilder.Resource;
Aspire.Hosting.Go.Tests (83)
AddGoAppTests.cs (47)
32var manifest = await ManifestUtils.GetManifest(app.Resource); 69var manifest = await ManifestUtils.GetManifest(app.Resource); 113var manifest = await ManifestUtils.GetManifest(app.Resource); 137var manifest = await ManifestUtils.GetManifest(app.Resource); 161var manifest = await ManifestUtils.GetManifest(app.Resource); 185var manifest = await ManifestUtils.GetManifest(app.Resource); 213var manifest = await ManifestUtils.GetManifest(app.Resource); 243var manifest = await ManifestUtils.GetManifest(app.Resource); 271var manifest = await ManifestUtils.GetManifest(app.Resource); 296var manifest = await ManifestUtils.GetManifest(app.Resource); 321var manifest = await ManifestUtils.GetManifest(app.Resource); 347var manifest = await ManifestUtils.GetManifest(app.Resource); 374var manifest = await ManifestUtils.GetManifest(app.Resource); 402var manifest = await ManifestUtils.GetManifest(app.Resource); 430var manifest = await ManifestUtils.GetManifest(app.Resource); 462var manifest = await ManifestUtils.GetManifest(app.Resource); 499var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 501Assert.Equal("dlv", app.Resource.Command); 539var executionConfiguration = await ExecutionConfigurationBuilder.Create(app.Resource) 544app.Resource, 583var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 601var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 635var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 648var debugAnnotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Last(); 649Assert.True(app.Resource.HasLaunchToolArgsOwnedBy(debugAnnotation)); 667var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 700var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 723var manifest = await ManifestUtils.GetManifest(app.Resource); 753var manifest = await ManifestUtils.GetManifest(app.Resource); 783var manifest = await ManifestUtils.GetManifest(app.Resource); 814var manifest = await ManifestUtils.GetManifest(app.Resource); 935Assert.False(app.Resource.TryGetLastAnnotation<DockerfileBuilderCallbackAnnotation>(out _), 948var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1007var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1021var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1035var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1228Assert.IsType<GoAppResource>(app.Resource, exactMatch: false); 1229Assert.True(app.Resource is IContainerFilesDestinationResource); 1248api.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var annotations), 1252Assert.Same(source.Resource, annotation.Source); 1340app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations), 1352app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations)); 1485Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation)); 1497Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation)); 1513Assert.True(goApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 1522Resource = goApp.Resource, 1533await using var logs = resourceLoggerService.WatchAsync(goApp.Resource).GetAsyncEnumerator();
GoPublicApiTests.cs (22)
97Assert.Equal("go", app.Resource.Command); 108var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 119var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 131var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 145var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 156var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 167var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 178var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 189var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 204var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 230var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 243.WithAppArgs("--db", param.Resource); 247Assert.True(app.Resource.TryGetLastAnnotation<GoAppArgsAnnotation>(out var annotation)); 250Assert.Same(param.Resource, annotation.Args[1]); 261var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 424var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 446Assert.Equal("dlv", app.Resource.Command); 456var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 470var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 490var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 517var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 531var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
GoRunDebuggingTests.cs (14)
36var context = new EnvironmentCallbackContext(builder.ExecutionContext, go.Resource); 37context.EnvironmentVariables["UNRELATED"] = unrelated.Resource; 63var environment = await GetEnvironmentAsync(builder, go.Resource); 115var configuration = await ExecutionConfigurationBuilder.Create(go.Resource) 160var environment = await GetEnvironmentAsync(builder, go.Resource); 204builder.ExecutionContext, go.Resource, cancellationToken: cancellation.Token) 250var configuration = await ExecutionConfigurationBuilder.Create(go.Resource) 265await app.Services.GetRequiredService<ResourceNotificationService>().PublishUpdateAsync(go.Resource, snapshot => snapshot with 295var environment = await GetEnvironmentAsync(builder, go.Resource); 310await Assert.ThrowsAsync<FormatException>(() => GetEnvironmentAsync(builder, go.Resource)); 444var environment = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(go.Resource, serviceProvider: app.Services); 445var arguments = await ArgumentEvaluator.GetArgumentListAsync(go.Resource, app.Services); 447using var document = await RunGoAsync(processRunner, go.Resource, arguments, environment); 454using var nativeDocument = await RunGoAsync(processRunner, go.Resource, ["run", "."], nativeEnvironment);
Aspire.Hosting.Java (41)
JavaHostingExtensions.cs (41)
688if (builder.Resource.HasAnnotationOfType<JavaJarPathAnnotation>()) 695if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var existing) && existing.Tool != tool) 702if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) && buildStep.Tool != tool) 726.WithCommand(ResolveWrapperInvocation(builder.Resource, tool).Command) 759buildResourceName: $"{builder.Resource.Name}-maven-build", 792buildResourceName: $"{builder.Resource.Name}-gradle-build", 805if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var existing) && existing.Tool != tool) 808$"Resource '{builder.Resource.Name}' is already configured to build with {existing.Tool}. " + 812if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var launchTool) && launchTool.Tool != tool) 815$"Resource '{builder.Resource.Name}' is already configured to launch with {launchTool.Tool}. " + 824|| launchTool is null && !builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>()); 855var resource = builder.Resource; 915foreach (var annotation in builder.Resource.Annotations 922builder.Resource.Annotations.Remove(annotation); 953Path.Combine(builder.Resource.WorkingDirectory, wrapperPath)); 959if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var buildTool)) 961builder.WithCommand(ResolveWrapperInvocation(builder.Resource, buildTool.Tool).Command); 964foreach (var buildStep in builder.Resource.Annotations.OfType<JavaBuildStepAnnotation>()) 979.WithCommand(ResolveWrapperInvocation(builder.Resource, buildStep.Tool).Command); 1215var isFirstCall = !builder.Resource.HasAnnotationOfType<JavaOtelAgentAnnotation>(); 1230if (!builder.Resource.TryGetLastAnnotation<JavaOtelAgentAnnotation>(out var agent)) 1235var authored = ResolveOtelAgentPath(builder.Resource, agent); 1241resolved = Path.GetFullPath(Path.Combine(builder.Resource.WorkingDirectory, authored)); 1243else if (JavaDockerfileGenerator.TryGetBuildProducedAgentPath(builder.Resource, out _)) 1249if (builder.Resource.HasAnnotationOfType<JavaAuthoredDockerfileAnnotation>()) 1252$"Java application '{builder.Resource.Name}' cannot be published because it uses " + 1253$"the Dockerfile in '{builder.Resource.WorkingDirectory}' and its OpenTelemetry " + 1306if (!TryResolveConfiguredBuildTool(builder.Resource, out var tool)) 1311var buildArgs = builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) 1313: builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>() 1314? ResolveDetectedBuildTool(builder.Resource).Configuration.BuildArgs 1319buildResourceName: $"{builder.Resource.Name}-{(tool is JavaBuildTool.Gradle ? "gradle" : "maven")}-build", 1336=> HasBuildProducedOtelAgent(builder.Resource) 1356=> builder.Resource.HasAnnotationOfType<JavaQuarkusAnnotation>() 1357&& builder.Resource.SupportsDebugging(builder.ApplicationBuilder.Configuration, out _); 1558if (builder.Resource.Annotations.OfType<JavaWrapperValidationAnnotation>().Any(a => a.Tool == tool)) 1755var (mainClass, classPaths) = ResolveEntryPointForIde(builder.Resource); 1760JavaExec = TryResolveJavaExecutableForIde(builder.Resource), 1761WorkingDirectory = builder.Resource.WorkingDirectory, 1780: TryResolveIdeProjectName(builder.Resource), 1781BuildTool = TryResolveConfiguredBuildTool(builder.Resource, out var buildTool)
Aspire.Hosting.Java.Tests (168)
AddJavaAppPublishTests.cs (21)
155() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 205() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 241() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 299() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 1172() => JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path)); 1195var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 1213var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 1260() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1281() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1304() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out _)); 1327() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1346Assert.True(JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out var resolved)); 1412() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1439() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 2006() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, tempDir.Path, out _)); 2023() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 2141() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 2290() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 2311() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 2328() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path)); 2343() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path));
AddJavaAppTests.cs (78)
45Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 46Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 58Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 59Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun", "--no-daemon"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 69var manifest = await ManifestUtils.GetManifest(app.Resource); 92var manifest = await ManifestUtils.GetManifest(app.Resource); 118Assert.Equal("myapi", app.Resource.Name); 128Assert.Equal("java", app.Resource.Command); 140Assert.Equal(expectedPath, app.Resource.WorkingDirectory); 150Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 160Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource); 173async () => await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 187var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 199var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 243var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 257var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 302var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 317var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 321Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 335var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 339Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 357var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 360Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 377var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 380Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 396var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 441var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 550var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 554Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 568var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 572Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 610app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 624app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 639app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 677app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 695app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 712app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 727app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747new BeforeResourceStartedEvent(app.Resource, built.Services), 766new BeforeResourceStartedEvent(app.Resource, built.Services), 793new BeforeResourceStartedEvent(app.Resource, built.Services), 800Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 803await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 824var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 826using var process = Process.Start(new ProcessStartInfo(app.Resource.Command) 854new BeforeResourceStartedEvent(app.Resource, built.Services), 875Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 878await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 893Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation)); 906Assert.True(javaApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 916Resource = javaApp.Resource, 944app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 961app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 977app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 984Path.Combine(app.Resource.WorkingDirectory, "target", "agent", "opentelemetry-javaagent.jar")); 999app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1016app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1139Assert.Same(app.Resource, Assert.Single(builder.Resources)); 1140Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1154Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1168Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1182var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1184Assert.Equal("java", app.Resource.Command); 1197var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1209var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1225app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1261Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 1262Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1275var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1279app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1293var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1297app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1311var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1315Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 1330var manifest = await ManifestUtils.GetManifest(app.Resource); 1347var manifest = await ManifestUtils.GetManifest(app.Resource); 1356var annotation = Assert.Single(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 1361app.Resource,
AddJavaContainerTests.cs (9)
64var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 76var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 88Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 89Assert.IsAssignableFrom<IJavaAppResource>(app.Resource); 90var icon = Assert.Single(app.Resource.Annotations.OfType<ResourceIconAnnotation>()); 103Assert.Empty(app.Resource.Annotations.OfType<EndpointAnnotation>()); 119app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 139app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 153var scope = Assert.Single(app.Resource.Annotations.OfType<CertificateAuthorityCollectionAnnotation>());
AddQuarkusAppTests.cs (24)
35app.Resource.Annotations.OfType<WaitAnnotation>(), 51Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 68Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 97new BeforeResourceStartedEvent(app.Resource, application.Services), 100Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 101Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "quarkus:dev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 114new BeforeResourceStartedEvent(app.Resource, application.Services), 117Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 118Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "quarkusDev"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 132Assert.Same(app.Resource, Assert.Single(builder.Resources)); 144var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 161var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 176TestEndpointAllocator.AllocateEndpoints(app.Resource); 179app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 195app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 211TestEndpointAllocator.AllocateEndpoints(app.Resource); 214app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 230TestEndpointAllocator.AllocateEndpoints(app.Resource); 233app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 255app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 272Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>()); 286new BeforeResourceStartedEvent(app.Resource, application.Services), 306TestEndpointAllocator.AllocateEndpoints(app.Resource); 309app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance);
AddSpringBootAppTests.cs (35)
22new BeforeResourceStartedEvent(app.Resource, application.Services), 25Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 26Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 39new BeforeResourceStartedEvent(app.Resource, application.Services), 42Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 43Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 56new BeforeResourceStartedEvent(app.Resource, application.Services), 59Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 76new BeforeResourceStartedEvent(runApp.Resource, application.Services), 78var runTool = Assert.Single(runApp.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Tool; 82var (publishTool, _) = JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path); 99Assert.Same(app.Resource, Assert.Single(builder.Resources)); 114new BeforeResourceStartedEvent(app.Resource, application.Services), 122await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 137new BeforeResourceStartedEvent(app.Resource, application.Services), 140Assert.Same(app.Resource, Assert.Single(builder.Resources)); 141Assert.Equal(["verify"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).Args); 142Assert.Equal(["spring-boot:run"], Assert.Single(app.Resource.Annotations.OfType<JavaBuildToolAnnotation>()).Args); 156var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 176Assert.Empty(app.Resource.Annotations.OfType<HealthCheckAnnotation>()); 190new BeforeResourceStartedEvent(app.Resource, application.Services), 211new BeforeResourceStartedEvent(runApp.Resource, application.Services), 217() => JavaDockerfileGenerator.ResolveBuildTool(publishApp.Resource, tempDir.Path)); 238new BeforeResourceStartedEvent(app.Resource, application.Services), 241TestEndpointAllocator.AllocateEndpoints(app.Resource); 244app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 272TestEndpointAllocator.AllocateEndpoints(app.Resource); 275app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 301app.Resource.Annotations.OfType<WaitAnnotation>(), 324Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 337TestEndpointAllocator.AllocateEndpoints(app.Resource); 341app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance)); 359TestEndpointAllocator.AllocateEndpoints(app.Resource); 362app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 365Assert.True(Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()).IsExternal);
JavaBuildToolResolverTests.cs (1)
38var wrapperPath = JavaBuildToolResolver.ResolveWrapperPath(app.Resource, JavaBuildTool.Maven, isWindows);
Aspire.Hosting.JavaScript (66)
DenoHostingExtensions.cs (6)
30if (!builder.Resource.TryGetLastAnnotation<DenoCommandLineAnnotation>(out var annotation)) 384builder.Resource.Annotations.Remove(environmentCallback); 389builder.Resource.Annotations.Remove(endpoint); 422var existingEndpoint = builder.Resource.Annotations 431var serveEndpoint = builder.Resource.Annotations 435builder.Resource,
JavaScriptHostingExtensions.cs (60)
261if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 263var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 285if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 286resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 344var resource = builder.Resource; 666if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 668var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 692if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 693resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1026if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 1028var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 1053ThrowIfDenoOptionsConflictWithPackageManager(resourceBuilder.Resource); 1058if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 1059resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1129var exporter = builder.Resource.Annotations.OfType<OtlpExporterAnnotation>().Last(); 1130builder.Resource.Annotations.Remove(exporter); 1131builder.Resource.Annotations.Add(new DenoOtlpExporterAnnotation 1337? apiTarget.Resource.GetEndpoint(options.TargetEndpointName) 1338: (object)BuildServiceDiscoveryUrl(apiTarget.Resource); 1356if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1420if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1500if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1536if (!builder.Resource.Annotations.OfType<OtlpExporterAnnotation>().Any()) 1693if (c.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1713if (c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 1724if (c.Resource.TryGetLastAnnotation<JavaScriptBuildScriptAnnotation>(out var buildCommand)) 1833var installAnnotation = c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCmd) ? installCmd : null; 1908ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1909return context.WriteContainerAsync(containerBuilder.Resource); 1919Resource = containerBuilder.Resource, 1922ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1935if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 2250if (resourceBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 2267Resource = resourceBuilder.Resource, 2270if (!resourceBuilder.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out var suppress)) 2324builder.Resource.ViteConfigPath = configPath; 2392var workingDirectory = resource.Resource.WorkingDirectory; 2422if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 2476var workingDirectory = resource.Resource.WorkingDirectory; 2514if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 2547File.Exists(Path.Combine(resource.Resource.WorkingDirectory, "package-lock.json")) 2564var workingDirectory = resource.Resource.WorkingDirectory; 2643var workingDirectory = resource.Resource.WorkingDirectory; 2810var resource = builder.Resource; 2864var resource = builder.Resource; 2939var parentResource = builder.Resource; 3013var installerName = $"{resource.Resource.Name}-installer"; 3033var installer = new JavaScriptInstallerResource(installerName, resource.Resource.WorkingDirectory); 3036.WithParentRelationship(resource.Resource) 3044if (!resource.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager) || 3045!resource.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 3052.WithWorkingDirectory(resource.Resource.WorkingDirectory) 3081var installerName = $"{resource.Resource.Name}-installer"; 3091resource.Resource.Annotations.OfType<WaitAnnotation>() 3092.Where(w => w.Resource == installer.Resource) 3094.ForEach(w => resource.Resource.Annotations.Remove(w)); 3102installer.Resource.Annotations.OfType<ExplicitStartupAnnotation>() 3104.ForEach(a => installer.Resource.Annotations.Remove(a)); 3108if (!resource.Resource.Annotations.OfType<WaitAnnotation>().Any(w => w.Resource == installer.Resource))
Aspire.Hosting.JavaScript.Tests (214)
AddBunAppTests.cs (20)
21var manifest = await ManifestUtils.GetManifest(bunApp.Resource); 44await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 50var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 53Assert.Empty(bunApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 71await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 88await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 102var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 119await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 131await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 219Assert.Equal("bun", bunApp.Resource.Command); 249Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 257Resource = bunApp.Resource, 279Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 285Resource = bunApp.Resource, 311var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 324var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 337var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 354Assert.True(bunApp.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var pmAnnotation)); 366var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource); 387var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource);
AddDenoAppTests.cs (93)
26var manifest = await ManifestUtils.GetManifest(denoApp.Resource); 45var exporter = Assert.Single(denoApp.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 49var manifest = await ManifestUtils.GetManifest(denoApp.Resource); 72await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 78var dockerBuildAnnotation = denoApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 81Assert.Empty(denoApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 99await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 119await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 135var dockerBuildAnnotation = denoApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 150await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 187await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 210await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 236await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 254await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 279await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 303await ManifestUtils.GetManifest(app.Resource, workspace.Path); 331var exporter = Assert.Single(app.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 334await ManifestUtils.GetManifest(app.Resource, workspace.Path); 358() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 378() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 399await ManifestUtils.GetManifest(app.Resource, workspace.Path); 424await ManifestUtils.GetManifest(app.Resource, workspace.Path); 444await ManifestUtils.GetManifest(app.Resource, workspace.Path); 463await ManifestUtils.GetManifest(app.Resource, workspace.Path); 484await ManifestUtils.GetManifest(app.Resource, workspace.Path); 511() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 530await ManifestUtils.GetManifest(app.Resource, workspace.Path); 551await ManifestUtils.GetManifest(app.Resource, workspace.Path); 582await ManifestUtils.GetManifest(app.Resource, workspace.Path); 618await ManifestUtils.GetManifest(app.Resource, workspace.Path); 639await ManifestUtils.GetManifest(app.Resource, workspace.Path); 662await ManifestUtils.GetManifest(app.Resource, workspace.Path); 684await ManifestUtils.GetManifest(app.Resource, workspace.Path); 706await ManifestUtils.GetManifest(app.Resource, workspace.Path); 744await ManifestUtils.GetManifest(app.Resource, workspace.Path); 765await ManifestUtils.GetManifest(app.Resource, workspace.Path); 871await ManifestUtils.GetManifest(app.Resource, workspace.Path); 892await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 911await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 926var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 941var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 959await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 982await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1003await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1028await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1047await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1068await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1088var httpEndpoint = denoApp.Resource.GetEndpoint("http"); 1091var manifest = await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1112Assert.Null(denoApp.Resource.GetEndpoint("http").EndpointAnnotation.TargetPort); 1128var initialEnvironmentCallbackCount = denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count(); 1135Assert.Empty(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1136Assert.Equal(initialEnvironmentCallbackCount, denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count()); 1139.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run) 1159var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1163.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Publish) 1188var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1204var callerEndpoint = denoApp.Resource.GetEndpoint("http").EndpointAnnotation; 1205var initialEnvironmentCallbackCount = denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count(); 1209var endpoint = Assert.Single(denoApp.Resource.Annotations.OfType<EndpointAnnotation>()); 1212Assert.Equal(initialEnvironmentCallbackCount, denoApp.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Count()); 1215.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run) 1238var httpEndpoint = denoApp2.Resource.GetEndpoint("http"); 1241await ManifestUtils.GetManifest(denoApp2.Resource, workspace.Path); 1515Assert.Contains(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1532Assert.DoesNotContain(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1550Assert.Single(app.Resource.Annotations.OfType<WaitAnnotation>(), wait => wait.Resource == installer); 1585await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1610await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1636await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1655await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 1691() => ManifestUtils.GetManifest(denoApp.Resource, workspace.Path)); 2297Assert.Equal("deno", denoApp.Resource.Command); 2357await ManifestUtils.GetManifest(denoApp.Resource, workspace.Path); 2396Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2404Resource = denoApp.Resource, 2427Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2433Resource = denoApp.Resource, 2455Assert.True(denoApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 2461Resource = denoApp.Resource, 2484var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run); 2501.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Run); 2515.GetEnvironmentVariablesAsync(denoApp.Resource, DistributedApplicationOperation.Publish); 2531var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2544var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2557var annotation = denoApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 2570var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2591var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2610var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2629var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2645var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2662var launchConfig = await CreateLaunchConfigurationAsync(denoApp.Resource); 2680() => CreateLaunchConfigurationAsync(denoApp.Resource, cancellationTokenSource.Token));
AddJavaScriptAppTests.cs (21)
33await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 38var dockerBuildAnnotation = yarnApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 56await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 76await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 96await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 123await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 144await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 184await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 202var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 239var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 283var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 301var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 320var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 336var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 358await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 394await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 429await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 460await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 489await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 561await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 657await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
AddNodeAppTests.cs (14)
30var manifest = await ManifestUtils.GetManifest(nodeApp.Resource); 62manifest = await ManifestUtils.GetManifest(npmApp.Resource); 110await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 155var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 158Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 179await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 224await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 442var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 455var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 467var annotation = viteApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 491Assert.Same(viteApp.Resource, parentRelationship.Resource); 573var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 600var launchConfig = await CreateLaunchConfigurationAsync(nodeApp.Resource); 616var launchConfig = await CreateLaunchConfigurationAsync(viteApp.Resource);
AddViteAppTests.cs (29)
35var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 74var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 77var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 95await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 100var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 103var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 128await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 148var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 176var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 199await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 204var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 207var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 225await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 230var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 247await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 252Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 268await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 288await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 308await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 326var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 346var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 371var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 397var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 423var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 440var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 464var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 482var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 1054var stepAnnotations = nodeApp.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 1071Assert.True(nodeApp.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out _));
BunAppFixture.cs (2)
122App.ResourceNotifications.WaitForResourceHealthyAsync(BunAppBuilder!.Resource.Name, cancellationToken), 123App.ResourceNotifications.WaitForResourceHealthyAsync(BunScriptBuilder!.Resource.Name, cancellationToken));
BunFunctionalTests.cs (2)
24using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunAppBuilder!.Resource.Name, "http"); 34using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunScriptBuilder!.Resource.Name, "http");
DenoAppFixture.cs (2)
156App.ResourceNotifications.WaitForResourceHealthyAsync(DenoAppBuilder!.Resource.Name, cancellationToken) 168DenoScriptBuilder.Resource.Name,
DenoFunctionalTests.cs (3)
28using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoAppBuilder!.Resource.Name, "http"); 38using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoScriptBuilder!.Resource.Name, "http"); 54var resourceName = denoFixture.DenoAppBuilder!.Resource.Name;
NodeAppFixture.cs (1)
109using var client = App.CreateHttpClient(NodeAppBuilder!.Resource.Name, endpointName: "http");
NodeFunctionalTests.cs (2)
24using var nodeClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NodeAppBuilder!.Resource.Name, "http"); 34using 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));
RequiredCommandTests.cs (17)
32Assert.Equal(["node"], await GetRequiredCommandsAsync(builder, app.Resource)); 45Assert.Equal(["bun", "node"], await GetRequiredCommandsAsync(builder, app.Resource)); 57Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 71Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 81Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 92Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource)); 103Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 114Assert.Equal(["node", "yarn"], await GetRequiredCommandsAsync(builder, vite.Resource)); 125Assert.Equal(["node", "pnpm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 136Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 146Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 162Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 175Assert.Equal(["deno"], await GetRequiredCommandsAsync(builder, app.Resource)); 188Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 200Assert.Equal(["bun", "node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 212Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 224Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource));
Aspire.Hosting.Kafka (2)
KafkaBuilderExtensions.cs (2)
104builderForExistingResource.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 154kafkaUiBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages);
Aspire.Hosting.Kafka.Tests (22)
AddKafkaTests.cs (12)
31await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka.Resource, app.Services)); 47await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka1.Resource, app.Services)); 48await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(kafka2.Resource, app.Services)); 143var manifest = await ManifestUtils.GetManifest(kafka.Resource); 183var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 185var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 201var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 203var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 244Assert.Single(kafkaUiResource.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == kafka1.Resource); 245Assert.Single(kafkaUiResource.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == kafka2.Resource); 268var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 269var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource);
KafkaFunctionalTests.cs (10)
44await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 46await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 50await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 77hb.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)
64var passwordParameter = adminPassword?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 66var resource = new KeycloakResource(name, adminUsername?.Resource, passwordParameter); 274builder.Resource.EnabledFeatures.Add(feature); 275builder.Resource.DisabledFeatures.Remove(feature); 296builder.Resource.DisabledFeatures.Add(feature); 297builder.Resource.EnabledFeatures.Remove(feature);
Aspire.Hosting.Keycloak.Tests (9)
KeycloakPublicApiTests.cs (2)
163var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single(); 188var containerAnnotation = keycloak.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>().Single();
KeycloakResourceBuilderTests.cs (7)
83var endpoints = keycloak.Resource.Annotations.OfType<EndpointAnnotation>().ToArray(); 92var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(keycloak.Resource, serviceProvider: app.Services); 105var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 120var volumeAnnotation = keycloak.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 135Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 145Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.AdminPasswordParameter.Default?.GetType().FullName); 154var manifest = await ManifestUtils.GetManifest(keycloak.Resource);
Aspire.Hosting.Kubernetes (109)
CertManagerExtensions.cs (19)
115var resource = new CertManagerResource(name, builder.Resource, chartBuilder.Resource); 156var issuer = new CertManagerIssuerResource(name, builder.Resource); 157builder.Resource.Issuers.Add(issuer); 186builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 223if (!hmacKey.Resource.Secret) 228builder.Resource.ExternalAccountBinding = new CertManagerExternalAccountBinding(ReferenceExpression.Create($"{keyId.Resource}"), hmacKey.Resource); 251builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 252ReferenceExpression.Create($"{serverUrl.Resource}"), 253ReferenceExpression.Create($"{email.Resource}")); 297builder.Resource.Solvers.Add(new CertManagerHttp01SolverConfig()); 327var gatewayEnvironment = builder.Resource.Parent; 328var issuerEnvironment = issuer.Resource.Parent.Parent; 333$"Gateway '{builder.Resource.Name}' is in Kubernetes environment '{gatewayEnvironment.Name}' but issuer " + 334$"'{issuer.Resource.Name}' belongs to cert-manager installation '{issuer.Resource.Parent.Name}' in environment " + 341.WithGatewayAnnotation(ClusterIssuerAnnotationKey, issuer.Resource.Name);
Deployment\HelmDeploymentEngine.cs (3)
552if (environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource) 554var dashboardServiceName = environment.Dashboard.Resource.Name.ToKubernetesResourceName() + "-service"; 559var dashboardDeploymentName = environment.Dashboard.Resource.Name.ToKubernetesResourceName();
HelmChartOptions.cs (5)
61var expression = ReferenceExpression.Create($"{@namespace.Resource}"); 108var expression = ReferenceExpression.Create($"{releaseName.Resource}"); 160var expression = ReferenceExpression.Create($"{version.Resource}"); 207var expression = ReferenceExpression.Create($"{name.Resource}"); 254var expression = ReferenceExpression.Create($"{description.Resource}");
KubernetesEnvironmentExtensions.cs (8)
378builder.Resource.DeploymentEngineStepsFactory = HelmDeploymentEngine.CreateStepsAsync; 402configure(builder.Resource); 424builder.Resource.DashboardEnabled = enabled; 446builder.Resource.DashboardEnabled = true; 448configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized")); 484var nodePool = new KubernetesNodePoolResource(name, builder.Resource); 525builder.WithAnnotation(new KubernetesNodePoolAnnotation(nodePool.Resource)); 531builder.Resource.DeploymentEngineStepsFactory ??= HelmDeploymentEngine.CreateStepsAsync;
KubernetesEnvironmentResource.cs (4)
332var resources = environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource dashboard 369var resources = DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboardRes 445if (DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboard && 500if (DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboardResource)
KubernetesGatewayExtensions.cs (17)
41var gateway = new KubernetesGatewayResource(name, builder.Resource); 68builder.Resource.GatewayClassName = ReferenceExpression.Create($"{className}"); 87builder.Resource.GatewayClassName = ReferenceExpression.Create($"{className.Resource}"); 119builder.Resource.Routes.Add(new GatewayRouteConfig( 158builder.Resource.Routes.Add(new GatewayRouteConfig( 185builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname}")); 204builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname.Resource}")); 227builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 248builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 249SecretName: ReferenceExpression.Create($"{secretName.Resource}"))); 266var secretName = $"{builder.Resource.Name}-tls"; 268builder.Resource.TlsConfigs.Add(new GatewayTlsConfig( 303builder.Resource.GatewayAnnotations[key] = ReferenceExpression.Create($"{value}"); 325builder.Resource.GatewayAnnotations[key] = ReferenceExpression.Create($"{value.Resource}");
KubernetesHelmChartExtensions.cs (6)
70var environment = builder.Resource; 146builder.Resource.Values[key] = value; 167builder.Resource.Namespace = @namespace; 188builder.Resource.ReleaseName = releaseName; 218builder.Resource.DestroyOnUninstall = true; 274builder.Resource.ForceConflicts = true;
KubernetesIngressExtensions.cs (18)
49var ingress = new KubernetesIngressResource(name, builder.Resource); 78builder.Resource.IngressClassName = ReferenceExpression.Create($"{className}"); 97builder.Resource.IngressClassName = ReferenceExpression.Create($"{className.Resource}"); 134builder.Resource.Paths.Add(new IngressPathConfig( 178builder.Resource.Paths.Add(new IngressPathConfig( 210builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname}")); 229builder.Resource.Hostnames.Add(ReferenceExpression.Create($"{hostname.Resource}")); 250builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 271builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 272SecretName: ReferenceExpression.Create($"{secretName.Resource}"))); 289var secretName = $"{builder.Resource.Name}-tls"; 291builder.Resource.TlsConfigs.Add(new IngressTlsConfig( 317builder.Resource.DefaultBackend = new IngressDefaultBackendConfig(endpoint); 352builder.Resource.IngressAnnotations[key] = ReferenceExpression.Create($"{value}"); 374builder.Resource.IngressAnnotations[key] = ReferenceExpression.Create($"{value.Resource}");
KubernetesPersistentVolumeExtensions.cs (28)
54var volume = new KubernetesPersistentVolumeResource(name, builder.Resource); 88builder.Resource.ShouldRequestStorageClassName = true; 89builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName}"); 110builder.Resource.ShouldRequestStorageClassName = true; 111builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName.Resource}"); 128builder.Resource.ShouldRequestStorageClassName = false; 129builder.Resource.StorageClassName = null; 150builder.Resource.Capacity = ReferenceExpression.Create($"{capacity}"); 170builder.Resource.Capacity = ReferenceExpression.Create($"{capacity.Resource}"); 195builder.Resource.PersistentVolumeName = ReferenceExpression.Create($"{persistentVolumeName}"); 216if (!builder.Resource.AccessModes.Contains(accessMode)) 218builder.Resource.AccessModes.Add(accessMode); 247builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value}"); 270builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value.Resource}"); 357builder.WithAnnotation(new VolumeMountBindingAnnotation(volume.Resource.Name) 362return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 373volume.Resource, 506if (builder.Resource is not IResourceWithEnvironment) 509$"Resource '{builder.Resource.Name}' does not support environment variables and cannot use the '{env}' volume path variable."); 519var binding = new VolumeMountBindingAnnotation(volume.Resource.Name) 526return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 531volume.Resource.Name, 547volume.Resource, 564if (!builder.ApplicationBuilder.ExecutionContext.IsRunMode || builder.Resource is not ContainerResource) 571var environmentName = volume.Resource.Parent.Name.ToKubernetesResourceName();
KubernetesPublishingContext.cs (1)
73IEnumerable<IResource> resources = environment.DashboardEnabled && environment.Dashboard?.Resource is IResource dashboardResource
Aspire.Hosting.Kubernetes.Tests (193)
CertManagerTests.cs (47)
37var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 54var binding = Assert.IsType<CertManagerExternalAccountBinding>(issuer.Resource.ExternalAccountBinding); 55Assert.Same(hmacKey.Resource, binding.HmacKey); 84certManager.Resource.HelmChart.Values["extraArgs[0]"] = "--cluster-resource-namespace=accounts"; 88certManager.Resource.HelmChart.Values["clusterResourceNamespace"] = "INVALID_NAMESPACE"; 102await CertManagerExtensions.DeleteExternalAccountBindingSecretAsync(context, issuer.Resource); 121var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 122Assert.Same(serverUrl.Resource, Assert.Single(spec.ServerUrl.ValueProviders)); 128app.Services.GetRequiredService<DistributedApplicationModel>(), certManager.Resource, issuer.Resource, 159var binding = Assert.IsType<CertManagerExternalAccountBinding>(issuer.Resource.ExternalAccountBinding); 160Assert.Same(hmacKey.Resource, binding.HmacKey); 162Assert.Same(keyId.Resource, Assert.Single(binding.KeyId.ValueProviders)); 175Assert.Null(issuer.Resource.ExternalAccountBinding); 203certManager.Resource.HelmChart.Namespace = installNamespace; 206certManager.Resource.HelmChart.Values["clusterResourceNamespace"] = clusterNamespace; 210certManager.Resource.HelmChart.Values["namespace"] = chartNamespace; 213Assert.Equal(expected, CertManagerExtensions.GetClusterResourceNamespace(certManager.Resource, validateEabConfiguration: true)); 221certManager.Resource.HelmChart.Values["extraArgs[0]"] = "--cluster-resource-namespace=accounts"; 224CertManagerExtensions.GetClusterResourceNamespace(certManager.Resource, validateEabConfiguration: true)); 241var steps = await PipelineStepTestHelpers.CreateStepsAsync(app.Services, certManager.Resource); 281issuer.Resource, resourceVersion: null, TestContext.Current.CancellationToken); 307issuer.Resource, resourceVersion, TestContext.Current.CancellationToken); 332certManager.Resource.HelmChart.Values["extraArgs[0]"] = "--cluster-resource-namespace=accounts"; 334CertManagerExtensions.GetClusterResourceNamespace(certManager.Resource, validateEabConfiguration: false)); 353app.Services.GetRequiredService<DistributedApplicationModel>(), certManager.Resource, issuer.Resource, 367Assert.Equal("cert-manager", certManager.Resource.Name); 368Assert.Same(k8s.Resource, certManager.Resource.Parent); 372Assert.Equal("cert-manager-chart", certManager.Resource.HelmChart.Name); 373Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", certManager.Resource.HelmChart.ChartReference); 374Assert.StartsWith("v", certManager.Resource.HelmChart.ChartVersion); 378Assert.Equal("true", certManager.Resource.HelmChart.Values["crds.enabled"]); 379Assert.Equal("true", certManager.Resource.HelmChart.Values["config.enableGatewayAPI"]); 398Assert.Equal("letsencrypt-prod", issuer.Resource.Name); 399Assert.Same(certManager.Resource, issuer.Resource.Parent); 400Assert.Contains(issuer.Resource, certManager.Resource.Issuers); 402var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 406var solver = Assert.Single(issuer.Resource.Solvers); 419var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 432var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 452Assert.Single(gateway.Resource.TlsConfigs); 453Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue( 615Assert.NotNull(certManager.Resource);
KubernetesDeployTests.cs (29)
927var container = containerBuilder.Resource; 1146var env = envBuilder.Resource; 1177var env = envBuilder.Resource; 1197var envResource = env.Resource; 1200var k8sResource = new KubernetesResource("api-k8s", project.Resource, envResource); 1201var imageName = k8sResource.GetContainerImageName(project.Resource); 1209Assert.Same(project.Resource, imageParam.ImageResource); 1220var envResource = env.Resource; 1223var k8sResource = new KubernetesResource("cache-k8s", container.Resource, envResource); 1224var imageName = k8sResource.GetContainerImageName(container.Resource); 1266"parameters", "api", "api_image", project.Resource)); 1331var env = envBuilder.Resource; 1403context.EnvironmentVariables["CACHE_PASSWORD"] = ReferenceExpression.Create($"{cachePassword.Resource}"); 1407var env = envBuilder.Resource; 1521var env = envBuilder.Resource; 1572var env = envBuilder.Resource; 1579captured.Parameter == host.Resource); 1584captured.Parameter == token.Resource); 1615enableTls.Resource, 1622var env = envBuilder.Resource; 1629captured.Parameter == enableTls.Resource); 1662var env = envBuilder.Resource; 1688var env = envBuilder.Resource; 1692Assert.IsType<KubernetesAspireDashboardResource>(env.Dashboard.Resource); 1702var env = envBuilder.Resource; 1714var env = envBuilder.Resource; 1720var httpEndpoint = env.Dashboard.Resource.PrimaryEndpoint; 1877var dashboard = envBuilder.Resource.Dashboard!.Resource;
KubernetesEnvironmentResourceTests.cs (15)
128var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 171var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 173Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 177var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 179Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 183var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 185Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 189var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 191Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 194Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 195Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 196Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 197Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 255Assert.Same(kubernetes.Resource, containerK8sResource.GetDeploymentTargetAnnotation()!.ComputeEnvironment); 256Assert.Same(dockerCompose.Resource, containerDockerResource.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
KubernetesGatewayTests.cs (11)
167var route = Assert.Single(gateway.Resource.GeneratedHttpRoutes); 231Assert.Equal(hostnames.Length, gateway.Resource.GeneratedHttpRoutes.Count); 232Assert.All(gateway.Resource.GeneratedHttpRoutes, route => Assert.Single(route.Spec.Hostnames)); 266var steps = await CreateStepsAsync(app.Services, k8s.Resource); 361var steps = await CreateStepsAsync(app.Services, k8s.Resource); 415Assert.Equal(k8s.Resource, gateway.Resource.Parent); 416Assert.IsType<KubernetesGatewayResource>(gateway.Resource); 484var steps = await CreateStepsAsync(app.Services, k8s.Resource); 626var steps = await CreateStepsAsync(app.Services, k8s.Resource); 632var gatewayResource = Assert.IsType<KubernetesGatewayResource>(gateway.Resource);
KubernetesHelmChartTests.cs (35)
22Assert.Equal("cert-manager", chart.Resource.Name); 23Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 24Assert.Equal("1.17.0", chart.Resource.ChartVersion); 25Assert.Equal("env", chart.Resource.Parent.Name); 38Assert.Equal(2, chart.Resource.Values.Count); 39Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 40Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 52Assert.Equal("ingress-nginx", chart.Resource.Namespace); 64Assert.Equal("my-nginx", chart.Resource.ReleaseName); 75Assert.Null(chart.Resource.Namespace); 76Assert.Null(chart.Resource.ReleaseName); 88chart.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var annotations), 102Assert.NotEqual(chart1.Resource.Name, chart2.Resource.Name); 103Assert.Equal("env", chart1.Resource.Parent.Name); 104Assert.Equal("env", chart2.Resource.Parent.Name); 173Assert.Equal(chartReference, chart.Resource.ChartReference); 201Assert.Equal(chartVersion, chart.Resource.ChartVersion); 289Assert.Equal("hello world!", chart.Resource.Values["config.greeting"]); 290Assert.Equal("a,b,c", chart.Resource.Values["config.list"]); 302Assert.Equal("--foo", chart.Resource.Values["args[0]"]); 313Assert.False(chart.Resource.DestroyOnUninstall); 325Assert.True(chart.Resource.DestroyOnUninstall); 355Assert.False(chart.Resource.ForceConflicts); 367Assert.True(chart.Resource.ForceConflicts); 396var steps = await CreateStepsAsync(builder, chart.Resource); 410var steps = await CreateStepsAsync(builder, chart.Resource); 435var steps = await CreateStepsAsync(builder, chart.Resource); 452Assert.Null(chart.Resource.Namespace); 454var steps = await CreateStepsAsync(builder, chart.Resource); 469var steps = await CreateStepsAsync(builder, chart.Resource); 486var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateStepsAsync(builder, chart.Resource)); 502var steps = await CreateStepsAsync(builder, chart.Resource); 541Assert.Single(chart.Resource.Values); 542Assert.Equal("value2", chart.Resource.Values["key"]);
KubernetesIngressTests.cs (15)
396var steps = await PipelineStepTestHelpers.CreateStepsAsync(app.Services, k8s.Resource); 466var collected = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 468Assert.Same(ingress.Resource, request.Owner); 499var collected = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 501Assert.Same(ingress.Resource, request.Owner); 530Assert.Null(ingress.Resource.GeneratedIngress); 531var collectedBeforePublish = KubernetesEnvironmentResource.CollectTlsSecrets(model, k8s.Resource); 532Assert.Same(ingress.Resource, Assert.Single(collectedBeforePublish).Owner); 536Assert.NotNull(ingress.Resource.GeneratedIngress); 537Assert.True(KubernetesEnvironmentResource.OwnerWasMaterialized(ingress.Resource)); 714Assert.Single(ingress.Resource.TlsConfigs); 715Assert.Equal("public-tls", ingress.Resource.TlsConfigs[0].SecretName.Format); 725Assert.Equal(k8s.Resource, ingress.Resource.Parent); 726Assert.IsType<KubernetesIngressResource>(ingress.Resource);
KubernetesPersistentVolumeRunModeTests.cs (20)
36var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 41project.Resource, 48executable.Resource, 69firstProject.Resource, 72secondProject.Resource, 94firstProject.Resource, 97secondProject.Resource, 180var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 181var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 187firstContainer.Resource, 209var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 227var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 259var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 263container.Resource, 293project.Resource, 297KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource), 318var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 319var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 339var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 353var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
KubernetesPublisherTests.cs (21)
91.WithArgs("--cs", cs.Resource); 830Assert.Same(project.Resource, Assert.Single(environment.Resource.CapturedHelmImageReferences).Resource); 878Assert.Same(project.Resource, Assert.Single(environment.Resource.CapturedHelmImageReferences).Resource); 880await HelmDeploymentEngine.ResolveAndWriteDeployValuesAsync(workspace.Path, environment.Resource, CancellationToken.None); 947Assert.Same(project.Resource, Assert.Single(environment.Resource.CapturedHelmImageReferences).Resource); 1562mode.Resource, 1612enableTls.Resource, 1623Assert.Contains(environment.Resource.CapturedHelmValues, captured => 1627captured.Parameter == enableTls.Resource); 1677enableTls.Resource, 1679ReferenceExpression.Create($"{tlsSuffix.Resource}"), 1997Assert.NotNull(data.Resource.GeneratedClaim); 1998var claim = data.Resource.GeneratedClaim!; 2060builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 2070var name = volume.Resource.Name; 2098builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 2108var name = volume.Resource.Name; 2231var localPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource);
Aspire.Hosting.Maui (20)
MauiAndroidExtensions.cs (4)
54var name = $"{builder.Resource.Name}-android-device"; 158var androidDeviceResource = new MauiAndroidDeviceResource(name, builder.Resource); 256var name = $"{builder.Resource.Name}-android-emulator"; 363var androidEmulatorResource = new MauiAndroidEmulatorResource(name, builder.Resource);
MauiiOSExtensions.cs (4)
58var name = $"{builder.Resource.Name}-ios-device"; 165var iOSDeviceResource = new MauiiOSDeviceResource(name, builder.Resource); 279var name = $"{builder.Resource.Name}-ios-simulator"; 376var iOSSimulatorResource = new MauiiOSSimulatorResource(name, builder.Resource);
MauiMacCatalystExtensions.cs (2)
47var name = $"{builder.Resource.Name}-maccatalyst"; 89var macCatalystResource = new MauiMacCatalystPlatformResource(name, builder.Resource);
MauiOtlpExtensions.cs (6)
70var platformResource = builder.Resource; 75if (!parentBuilder.Resource.TryGetLastAnnotation<OtlpDevTunnelConfigurationAnnotation>(out var tunnelConfig)) 79parentBuilder.Resource.Annotations.Add(tunnelConfig); 107var tunnelName = parentBuilder.Resource.Name; 142var exception = new DistributedApplicationException($"The MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' requires the Aspire dashboard to be enabled or an explicit OTLP endpoint URL to be configured."); 179var exception = new DistributedApplicationException($"The Aspire dashboard resource '{KnownResourceNames.AspireDashboard}' terminated or does not have a concrete OTLP endpoint named '{KnownEndpointNames.OtlpHttpEndpointName}' or '{KnownEndpointNames.OtlpGrpcEndpointName}', so the MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' cannot start. Ensure dashboard OTLP ingestion is enabled, or configure an explicit OTLP endpoint URL.");
MauiPlatformHelper.cs (2)
53var projectPath = builder.Resource.ProjectPath; 197var resource = resourceBuilder.Resource;
MauiWindowsExtensions.cs (2)
47var name = $"{builder.Resource.Name}-windows"; 89var windowsResource = new MauiWindowsPlatformResource(name, builder.Resource);
Aspire.Hosting.Maui.Tests (133)
MauiiOSValidationTests.cs (6)
36.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 62.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None) 87.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 108.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None) 127.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None) 146.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None)
MauiOtlpTemplateTests.cs (3)
34platformResource.Resource, 61platformResource.Resource, 84androidDevice.Resource,
MauiPlatformExtensionsTests.cs (104)
108Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name); 109var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource); 110Assert.Same(maui.Resource, resourceWithParent.Parent); 111Assert.IsType(config.ExpectedResourceType, platform.Resource); 131Assert.Equal(customName, platform.Resource.Name); 167var debugSupport = Assert.Single(platform.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 170var launchConfiguration = await DeserializeLaunchConfigurationAsync(platform.Resource); 198var resource = platform.Resource; 246Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource); 266Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name); 267var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource); 268var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource); 270Assert.Same(maui.Resource, parent1.Parent); 296.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None) 321androidEmulator.Resource, 347Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name); 348Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource); 349Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource); 368Assert.Equal("my-device", device.Resource.Name); 369Assert.IsType<MauiAndroidDeviceResource>(device.Resource); 370var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 391Assert.Equal("my-emulator", emulator.Resource.Name); 392Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource); 393var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(emulator.Resource); 414Assert.Equal("my-device", device.Resource.Name); 415Assert.IsType<MauiiOSDeviceResource>(device.Resource); 416var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 442Assert.Equal("my-simulator", simulator.Resource.Name); 443Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 444var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(simulator.Resource); 463var debugSupport = Assert.Single(simulator.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 467var argsContext = new CommandLineArgsCallbackContext(args, simulator.Resource); 468foreach (var argsAnnotation in simulator.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>()) 498Assert.NotEqual(device.Resource.Name, simulator.Resource.Name); 499Assert.IsType<MauiiOSDeviceResource>(device.Resource); 500Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 520resource = maui.AddiOSDevice().Resource; 524resource = maui.AddiOSSimulator().Resource; 550iosSimulator.Resource, 570? (IResource)maui.AddAndroidEmulator().Resource 571: maui.AddiOSSimulator().Resource; 641resource = maui.AddAndroidDevice().Resource; 645resource = maui.AddAndroidEmulator().Resource; 673var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault(); 698var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList(); 726platform.Resource, 736var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 753dashboard.Resource.Annotations.Add(new EndpointAnnotation( 764var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 773var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 775await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None).DefaultTimeout(); 787iosSimulator.Resource, 806dashboard.Resource.Annotations.Add(new EndpointAnnotation( 812dashboard.Resource.Annotations.Add(new EndpointAnnotation( 820var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 824var httpEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>() 827var grpcEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>() 832new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 844new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 853iosSimulator.Resource, 878dashboard.Resource.Annotations.Add(dashboardEndpoint); 882var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 892new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 909dashboard.Resource.Annotations.Add(new EndpointAnnotation( 917var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 922.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 934var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 942new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), 972dashboard.Resource.Annotations.Add(dashboardEndpoint); 974var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 999await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None).DefaultTimeout(); 1010androidEmulator.Resource, 1031var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1046iosSimulator.Resource, 1067var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1086iosSimulator.Resource, 1108var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1113androidEmulator.Resource, 1119appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None).DefaultTimeout()); 1140var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1145appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None).DefaultTimeout()); 1165var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1175new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), 1192dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1200var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1205tunnelConfig.DevTunnel.Resource.Name, 1212var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1219.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1232iosSimulator.Resource, 1239.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1257iosSimulator.Resource, 1274dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1282var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1288iosSimulator.Resource, 1310dashboard.Resource.Annotations.Add(new EndpointAnnotation( 1318var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 1322var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 1330await notificationService.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with 1336iosSimulator.Resource, 1342new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), 1346await notificationService.PublishUpdateAsync(dashboard.Resource, snapshot => snapshot with
MauiProjectResourceValidationTests.cs (2)
52Assert.Equal(projectPath, maui.Resource.ProjectPath); 62Assert.Equal("my-maui-app", maui.Resource.Name);
MauiUnsupportedPlatformTests.cs (6)
24var annotation = windows.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 48var annotation = macCatalyst.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 72var annotation = iosDevice.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 96var annotation = iosSimulator.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 121var annotation = androidDevice.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault(); 136var annotation = androidEmulator.Resource.Annotations.OfType<UnsupportedPlatformAnnotation>().FirstOrDefault();
MauiWithArgsTests.cs (12)
28var args = await ArgumentEvaluator.GetArgumentListAsync(windows.Resource).DefaultTimeout(); 46var args = await ArgumentEvaluator.GetArgumentListAsync(macCatalyst.Resource).DefaultTimeout(); 65var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource).DefaultTimeout(); 85var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource).DefaultTimeout(); 102var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource).DefaultTimeout(); 122var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource).DefaultTimeout(); 139var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource).DefaultTimeout(); 158var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource).DefaultTimeout(); 175var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource).DefaultTimeout(); 195var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource).DefaultTimeout(); 234var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource).DefaultTimeout(); 235Assert.True(args.Count > 0, $"Expected args for {builder.Resource.Name}");
Aspire.Hosting.Milvus (6)
MilvusBuilderExtensions.cs (6)
53var apiKeyParameter = apiKey?.Resource ?? 111builder.Resource.AddDatabase(name, databaseName); 112var milvusDatabaseResource = new MilvusDatabaseResource(name, databaseName, builder.Resource); 147containerName ??= $"{builder.Resource.Name}-attu"; 155.WithEnvironment(context => ConfigureAttuContainer(context, builder.Resource)) 157.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages)
Aspire.Hosting.Milvus.Tests (20)
AddMilvusTests.cs (7)
85var connectionStringResource = milvus.Resource as IResourceWithConnectionString; 115var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 127var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 144var serverManifest = await ManifestUtils.GetManifest(milvus.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 145var dbManifest = await ManifestUtils.GetManifest(db1.Resource); 221Assert.Single(attu.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Parent" && r.Resource == milvus.Resource); 222Assert.Single(attu.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == milvus.Resource);
MilvusFunctionalTests.cs (13)
32await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus.Resource.Name); 37hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 39hb.AddMilvusClient(db.Resource.Name); 83var password = milvus1.Resource.ApiKeyParameter.Value; 108await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus1.Resource.Name); 115hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 117hb.AddMilvusClient(db1.Resource.Name); 156await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus2.Resource.Name); 163hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 165hb.AddMilvusClient(db2.Resource.Name);
Aspire.Hosting.MongoDB (72)
MongoDBBuilderExtensions.cs (21)
68var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 70var mongoServerResource = new MongoDBServerResource(name, userName?.Resource, passwordParameter) 200return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 269builder.Resource.AddDatabase(name, databaseName); 270var mongoDBDatabase = new MongoDBDatabaseResource(name, databaseName, builder.Resource); 317containerName ??= $"{builder.Resource.Name}-mongoexpress"; 325.WithEnvironment(context => ConfigureMongoExpressContainer(context, builder.Resource)) 328.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages) 350.SingleOrDefault(r => r.Members.Contains(builder.Resource)); 469if (builder.Resource.HasAnnotationOfType<MongoDBServerBindAllIpAnnotation>()) 519name ??= builder.Resource.ReplicaSetName ?? builder.Resource.Name; 523if (builder.Resource.ReplicaSetName is { } existingName) 525if (!builder.Resource.HasAnnotationOfType<MongoDBSingleMemberReplicaSetAnnotation>()) 527throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' belongs to the advanced replica set '{existingName}'. Configure it with WithMember instead of WithReplicaSet."); 532: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' is already configured as a member of the replica set '{existingName}' and cannot also be a member of '{name}'."); 535if (!builder.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()) 537builder.WithKeyFile(CreateReplicaSetKeyFile(builder.ApplicationBuilder, builder.Resource.Name)); 559builder.Resource.ReplicaSetName = name; 608if (builder.Resource.TryGetLastAnnotation<MongoDBServerKeyFileAnnotation>(out var existingKeyFile)) 612: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' already has a key file configured at '{existingKeyFile.FilePath}'. A MongoDB server can only have one key file; note that adding a server to a replica set gives it the replica set's shared key file.");
ReplicaSet\MongoDBReplicaSetBuilderExtensions.cs (51)
79sharedUserName: userName?.Resource, 80sharedPassword: password?.Resource 404if (member.Resource.HasAnnotationOfType<MongoDBSingleMemberReplicaSetAnnotation>()) 406throw new InvalidOperationException($"The MongoDB server resource '{member.Resource.Name}' is configured as a single-member replica set. Remove WithReplicaSet before adding it to the advanced replica set '{builder.Resource.Name}'. Migrating existing single-member data to an advanced replica set is not supported."); 409if (builder.Resource.Members.Count() >= MaxMembers) 411throw new InvalidOperationException($"The MongoDB replica set '{builder.Resource.Name}' already has the maximum of {MaxMembers} members that MongoDB allows a replica set to hold."); 417if (member.Resource.ReplicaSetName is { } existingReplicaSetName) 420string.Equals(existingReplicaSetName, builder.Resource.Name, StringComparisons.ResourceName) 421? $"The MongoDB server resource '{member.Resource.Name}' has already been added as a member of the replica set '{builder.Resource.Name}'." 422: $"The MongoDB server resource '{member.Resource.Name}' is already a member of the replica set '{existingReplicaSetName}' and cannot also be a member of '{builder.Resource.Name}'."); 428var memberKeyFile = member.Resource.TryGetLastAnnotation<MongoDBServerKeyFileAnnotation>(out var existingKeyFile) ? existingKeyFile : null; 429if (memberKeyFile is not null && memberKeyFile.Value != builder.Resource.SharedKeyFileParameter) 432$"The MongoDB server resource '{member.Resource.Name}' was given a key file of its own, which conflicts with the one shared by the members of the replica set '{builder.Resource.Name}'. Members are given the replica set's key file automatically, so remove the '{nameof(MongoDBBuilderExtensions.WithKeyFile)}' call on the member."); 443if (member.Resource.UserNameParameter is { } memberUserName && memberUserName != builder.Resource.SharedUserNameParameter) 446$"The MongoDB server resource '{member.Resource.Name}' was given an explicit user name that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the user name to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 449if (!member.Resource.PasswordParameterWasGenerated && member.Resource.PasswordParameter != builder.Resource.SharedPasswordParameter) 452$"The MongoDB server resource '{member.Resource.Name}' was given an explicit password that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the password to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 455MongoDBBuilderExtensions.ConfigureReplicaSetMember(member, builder.Resource.Name); 462member.WithKeyFile(builder.Resource.SharedKeyFileParameter); 476if (!member.Resource.HasAnnotationOfType<HttpsCertificateAnnotation>()) 481member.Resource.UserNameParameter = builder.Resource.SharedUserNameParameter; 482member.Resource.PasswordParameter = builder.Resource.SharedPasswordParameter; 483member.Resource.PasswordParameterWasGenerated = false; 491.PublishUpdateAsync(builder.Resource, s => 493lock (builder.Resource.StoppedMembers) 495builder.Resource.StoppedMembers.Add(stopped.Name); 496return builder.Resource.StoppedMembers.Count >= builder.Resource.Members.Count() 507.PublishUpdateAsync(builder.Resource, s => 509lock (builder.Resource.StoppedMembers) 511var wasAllStopped = builder.Resource.StoppedMembers.Count >= builder.Resource.Members.Count() 512&& builder.Resource.StoppedMembers.Count > 0; 513builder.Resource.StoppedMembers.Remove(starting.Name); 518return wasAllStopped && builder.Resource.IsConfigured 529.PublishUpdateAsync(builder.Resource, s => 531lock (builder.Resource.StoppedMembers) 534&& builder.Resource.IsConfigured 535&& !builder.Resource.StoppedMembers.Contains(ready.Name) 544.WithAnnotation(new MongoReplicaSetMemberAnnotation(member.Resource))
Aspire.Hosting.MongoDB.Tests (217)
AddMongoDBTests.cs (44)
25Assert.Single(mongo.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mongodb_check"); 33Assert.Single(db.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mydb_check"); 144Assert.Same(mongo.Resource, wait.Resource); 176Assert.Same(mongo.Resource, wait.Resource); 181Assert.Same(replicaSet.Resource, wait.Resource); 184var memberWait = Assert.Single(replicaSet.Resource.Annotations.OfType<WaitAnnotation>()); 185Assert.Same(mongo.Resource, memberWait.Resource); 286Assert.Single(mongoExpress.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Parent" && r.Resource == mongo.Resource); 287Assert.Single(mongoExpress.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mongo.Resource); 297var mongoManifest = await ManifestUtils.GetManifest(mongo.Resource); 298var dbManifest = await ManifestUtils.GetManifest(db.Resource); 363Assert.Equal("customers1", db1.Resource.DatabaseName); 364Assert.Equal("customers2", db2.Resource.DatabaseName); 366Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers1?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db1.Resource.ConnectionStringExpression.ValueExpression)); 367Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers2?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db2.Resource.ConnectionStringExpression.ValueExpression)); 381Assert.Equal("imports", db1.Resource.DatabaseName); 382Assert.Equal("imports", db2.Resource.DatabaseName); 384Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db1.Resource.ConnectionStringExpression.ValueExpression)); 385Assert.Equal("mongodb://admin:{mongo2-password.value}@{mongo2.bindings.tcp.host}:{mongo2.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", MongoDBTestHelpers.WithoutTlsFlag(db2.Resource.ConnectionStringExpression.ValueExpression)); 421Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerBindAllIpAnnotation>()); 422var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 433Assert.Equal("test", mongo1.Resource.ReplicaSetName); 434Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerReplicaSetAnnotation>()); 435var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 448Assert.True(mongo1.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 449var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 465Assert.False(mongo1.Resource.TlsEnabled); 471Assert.True(mongo1.Resource.TlsEnabled); 473var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 479var connectionString = await mongo1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 496Assert.False(mongo1.Resource.TlsEnabled); 498var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 501var connectionString = await mongo1.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 522var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 543var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 581var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(mongoExpress.Resource); 622Assert.False(mongo1.Resource.TlsEnabled); 624var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 642var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 660var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 672var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 682var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 684Assert.Equal("rs0", mongo1.Resource.ReplicaSetName); 704var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource);
ConnectionPropertiesTests.cs (1)
105var manifest = await ManifestUtils.GetManifest(app.Resource);
MongoDbFunctionalTests.cs (27)
56await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 58await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 62await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 64await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 90hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 92hb.AddMongoDBClient(db.Resource.Name); 132await app.ResourceNotifications.WaitForResourceHealthyAsync(mongodb.Resource.Name, cts.Token); 133Assert.True(mongodb.Resource.TlsEnabled); 135await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 137var endpoint = mongoExpress.Resource.GetEndpoint("http"); 175var connectionString = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 176hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = connectionString; 179hb.AddMongoDBClient(db.Resource.Name); 212var password = mongodb1.Resource.PasswordParameter!.Value; 240hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 242hb.AddMongoDBClient(db1.Resource.Name); 285hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 287hb.AddMongoDBClient(db2.Resource.Name); 406hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 408hb.AddMongoDBClient(db.Resource.Name); 496hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 498hb.AddMongoDBClient(db.Resource.Name);
MongoDBReplCommandTests.cs (8)
53var options = await MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken); 78var options = await MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken); 98MongoDBBuilderExtensions.CreateReplOptionsAsync(mongo.Resource, TestContext.Current.CancellationToken)); 116Resource = mongo.Resource, 125var callback = Assert.Single(mongo.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>()); 169await VerifyReplAsync(app, mongo.Resource, "mongosh (mongo)", 190await VerifyReplAsync(app, mongo.Resource, "mongosh (mongo)", 193Assert.True(mongo.Resource.TlsEnabled);
ReplicaSet\AddMongoDBReplicaSetTests.cs (49)
26Assert.Single(rs.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "rs0_check"); 50var wait = Assert.Single(rs.Resource.Annotations.OfType<WaitAnnotation>(), 51a => a.Resource == mongo1.Resource); 67var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 173var rs = builder.AddResource(new MongoDBReplicaSetResource("rs0", keyFile.Resource, null, password.Resource)); 175var memberAnnotations = member.Resource.Annotations.ToArray(); 176var replicaSetAnnotations = rs.Resource.Annotations.ToArray(); 177var memberPassword = member.Resource.PasswordParameter; 182Assert.Null(member.Resource.ReplicaSetName); 183Assert.Equal(memberAnnotations, member.Resource.Annotations); 184Assert.Equal(replicaSetAnnotations, rs.Resource.Annotations); 185Assert.Null(member.Resource.UserNameParameter); 186Assert.Same(memberPassword, member.Resource.PasswordParameter); 187Assert.True(member.Resource.PasswordParameterWasGenerated); 198var annotation = Assert.Single(mongo1.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 210var annotation = Assert.Single(mongo1.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 211Assert.Equal(certificatePassword.Resource, annotation.Password); 226var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 242Assert.Equal(50, rs.Resource.Members.Count()); 249Assert.Null(tooMany.Resource.ReplicaSetName); 250Assert.False(tooMany.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 251Assert.Equal(50, rs.Resource.Members.Count()); 321Assert.Null(mongo1.Resource.ReplicaSetName); 335replicaSet.Resource.IsConfigured = true; 336await notifications.PublishUpdateAsync(replicaSet.Resource, snapshot => snapshot with 347var stoppedResourceEvent = new ResourceEvent(mongo1.Resource, mongo1.Resource.Name, stoppedSnapshot); 348await eventing.PublishAsync(new ResourceStoppedEvent(mongo1.Resource, app.Services, stoppedResourceEvent)); 352await eventing.PublishAsync(new BeforeResourceStartedEvent(mongo1.Resource, app.Services)); 358await eventing.PublishAsync(new ResourceReadyEvent(mongo1.Resource, app.Services), staleReadyCts.Token); 362await eventing.PublishAsync(new ResourceReadyEvent(mongo1.Resource, app.Services)); 368Assert.True(notifications.TryGetCurrentState(replicaSet.Resource.Name, out var resourceEvent)); 381var mongo1 = builder.AddMongoDB("mongo1").WithKeyFile(rs.Resource.SharedKeyFileParameter, "/custom/rs.key"); 384Assert.Equal("rs0", mongo1.Resource.ReplicaSetName); 385var args = await ArgumentEvaluator.GetArgumentListAsync(mongo1.Resource); 401Assert.Null(mongo1.Resource.ReplicaSetName); 402Assert.False(mongo1.Resource.HasAnnotationOfType<MongoDBServerKeyFileAnnotation>()); 406Assert.Equal("rs1", mongo1.Resource.ReplicaSetName); 407Assert.Single(rs.Resource.Members); 420Assert.Same(userName.Resource, mongo1.Resource.UserNameParameter); 421Assert.Same(password.Resource, mongo1.Resource.PasswordParameter); 422Assert.Single(rs.Resource.Members); 432Assert.Same(rs.Resource.SharedPasswordParameter, mongo1.Resource.PasswordParameter); 443var properties = ((IResourceWithConnectionString)rs.Resource).GetConnectionProperties().ToArray(); 454Assert.Equal(await rs.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None), uri);
ReplicaSet\MongoDbReplicaSetFunctionalTests.cs (23)
58await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 61var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 95await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 97var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 142await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 144var endpoint = mongoExpress.Resource.GetEndpoint("http"); 179await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 181var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 221await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 223await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, cts.Token); 224await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, cts.Token); 225await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo3.Resource.Name, cts.Token); 227Assert.True(mongo1.Resource.TlsEnabled); 228Assert.True(mongo2.Resource.TlsEnabled); 229Assert.True(mongo3.Resource.TlsEnabled); 231var mongoExpressEndpoint = mongoExpress.Resource.GetEndpoint("http"); 311password = await rs.Resource.SharedPasswordParameter.GetValueAsync(cts.Token); 315await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 317var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(cts.Token); 383await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, secondPhaseCts.Token); 385var connectionString = await rs.Resource.ConnectionStringExpression.GetValueAsync(secondPhaseCts.Token); 454await app.ResourceNotifications.WaitForResourceAsync(rs.Resource.Name, KnownResourceStates.FailedToStart, cts.Token);
SingleMemberReplicaSetFunctionalTests.cs (24)
51await app.ResourceNotifications.WaitForResourceHealthyAsync(database.Resource.Name, ready.Token); 52Assert.Equal(useTls, mongo.Resource.TlsEnabled); 55using var serverClient = new MongoClient(await mongo.Resource.ConnectionStringExpression.GetValueAsync(operations.Token)); 56using var databaseClient = new MongoClient(await database.Resource.ConnectionStringExpression.GetValueAsync(operations.Token)); 93await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 94Assert.Equal(useTls, mongo.Resource.TlsEnabled); 96using var client = new MongoClient(await mongo.Resource.ConnectionStringExpression.GetValueAsync(cts.Token)); 100await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 101using var httpClient = new HttpClient { BaseAddress = new Uri(mongoExpress.Resource.GetEndpoint("http").Url) }; 160await app.ResourceNotifications.WaitForResourceAsync(mongo.Resource.Name, 162await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, KnownResourceStates.Waiting, ready.Token); 166var completed = await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, 170using var client = new MongoClient(await database.Resource.ConnectionStringExpression.GetValueAsync(ready.Token)); 196var running = await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, ready.Token); 197password = (await mongo1.Resource.PasswordParameter!.GetValueAsync(ready.Token))!; 198originalPort = mongo1.Resource.PrimaryEndpoint.Port; 199using var client = new MongoClient(await mongo1.Resource.ConnectionStringExpression.GetValueAsync(ready.Token)); 207await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, restart.Token); 209await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Running, restart.Token); 210await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, restart.Token); 217await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, stop.Token); 226await app2.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, secondReady.Token); 227Assert.Equal(2, new[] { originalPort, mongo2.Resource.PrimaryEndpoint.Port }.Distinct().Count()); 229using var secondClient = new MongoClient(await mongo2.Resource.ConnectionStringExpression.GetValueAsync(secondReady.Token));
SingleMemberReplicaSetTests.cs (34)
24var password = mongo.Resource.PasswordParameter; 28Assert.Equal("mongo", mongo.Resource.ReplicaSetName); 29Assert.Same(password, mongo.Resource.PasswordParameter); 30Assert.Same(mongo.Resource, database.Resource.Parent); 33await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 34var endpoint = Assert.Single(mongo.Resource.Annotations.OfType<EndpointAnnotation>()); 38Assert.Single(mongo.Resource.Annotations.OfType<MongoDBSingleMemberReplicaSetAnnotation>()); 40Assert.Single(mongo.Resource.Annotations.OfType<MongoDBServerKeyFileAnnotation>()).Value).Secret); 48var mongo = builder.AddMongoDB("mongo").WithKeyFile(key.Resource, "/etc/custom.key").WithReplicaSet("rs0").WithReplicaSet(); 50Assert.Equal("rs0", mongo.Resource.ReplicaSetName); 51Assert.Same(key.Resource, Assert.Single(mongo.Resource.Annotations.OfType<MongoDBServerKeyFileAnnotation>()).Value); 53await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 62var annotations = mongo.Resource.Annotations.ToArray(); 65Assert.Equal(annotations, mongo.Resource.Annotations); 66Assert.Equal("rs0", mongo.Resource.ReplicaSetName); 77var annotations = mongo.Resource.Annotations.ToArray(); 78var password = mongo.Resource.PasswordParameter; 82Assert.Equal(annotations, mongo.Resource.Annotations); 83Assert.Same(password, mongo.Resource.PasswordParameter); 84Assert.Empty(advanced.Resource.Members); 93var annotations = mongo.Resource.Annotations.ToArray(); 96Assert.Equal(annotations, mongo.Resource.Annotations); 97Assert.Same(mongo.Resource, Assert.Single(advanced.Resource.Members)); 105var annotations = mongo.Resource.Annotations.ToArray(); 109Assert.Equal(annotations, mongo.Resource.Annotations); 127Assert.False(mongo.Resource.TlsEnabled); 128Assert.False(mongo.Resource.TlsAllowInvalidCertificates); 130await ArgumentEvaluator.GetArgumentListAsync(mongo.Resource)); 132foreach (IResourceWithConnectionString resource in new IResourceWithConnectionString[] { mongo.Resource, database.Resource }) 141Assert.Equal(resource == database.Resource ? "orders" : null, url.DatabaseName);
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.MySql (9)
MySqlBuilderExtensions.cs (9)
43var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 116return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 173var mySqlDatabase = new MySqlDatabaseResource(name, databaseName, builder.Resource); 175builder.Resource.AddDatabase(mySqlDatabase); 275builder.Resource.PasswordParameter = password.Resource; 299builderForExistingResource.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 362var configStoreFilename = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-config.user.inc.php", tempConfigFile); 387phpMyAdminContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages);
Aspire.Hosting.MySql.Tests (75)
AddMySqlTests.cs (23)
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); 233Assert.Single(phpMyAdmin.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mySql1.Resource); 234Assert.Single(phpMyAdmin.Annotations.OfType<ResourceRelationshipAnnotation>(), r => r.Type == "Manages" && r.Resource == mySql2.Resource); 267Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); 299string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';"; 300string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';"; 340Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys); 341Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values); 343Assert.Equal("customers1", db1.Resource.DatabaseName); 344Assert.Equal("customers2", db2.Resource.DatabaseName); 346Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 347Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 361Assert.Equal("imports", db1.Resource.DatabaseName); 362Assert.Equal("imports", db2.Resource.DatabaseName); 364Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 365Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
ConnectionPropertiesTests.cs (1)
92var manifest = await ManifestUtils.GetManifest(app.Resource);
MySqlFunctionalTests.cs (41)
51await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 57await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 93[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 96hb.AddMySqlDataSource(db.Resource.Name); 136var password = mysql1.Resource.PasswordParameter.Value; 170[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 173hb.AddMySqlDataSource(db1.Resource.Name); 240[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 243hb.AddMySqlDataSource(db2.Resource.Name); 351[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 354hb.AddMySqlDataSource(db.Resource.Name); 435[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 438hb.AddMySqlDataSource(db.Resource.Name); 506[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 509hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name); 664hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 666hb.AddMySqlDataSource(newDb.Resource.Name); 672await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 678resourceName: mysql.Resource.Name, 747hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 749hb.AddMySqlDataSource(newDb.Resource.Name); 755await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token); 807hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 808hb.AddKeyedMySqlDataSource(db.Resource.Name); 817await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 819var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name); 850hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 851hb.AddMySqlDataSource(newDb.Resource.Name); 856await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
MySqlReplCommandTests.cs (3)
47var options = await MySqlBuilderExtensions.CreateReplOptionsAsync(mysql.Resource, TestContext.Current.CancellationToken); 69MySqlBuilderExtensions.CreateReplOptionsAsync(mysql.Resource, TestContext.Current.CancellationToken)); 91await VerifyReplAsync(app, mysql.Resource, "mysql (mysql)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Nats (2)
NatsBuilderExtensions.cs (2)
58var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 60var 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)
37await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 42hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 83await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 88var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 89hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString; 126await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 131var connectionString = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 136hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString; 189await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name); 195hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default); 238await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name); 244hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default); 349await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 351await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 355await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 357await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
NatsPublicApiTests.cs (2)
178var action = () => new NatsServerResource(name, user?.Resource, password?.Resource);
Aspire.Hosting.OpenAI (13)
OpenAIExtensions.cs (13)
38defaultApiKeyParameter.Resource.Description = """ 42defaultApiKeyParameter.Resource.EnableDescriptionMarkdown = true; 44var resource = new OpenAIResource(name, defaultApiKeyParameter.Resource); 111var resource = new OpenAIModelResource(name, model, builder.Resource); 152builder.Resource.Endpoint = endpoint; 165if (!apiKey.Resource.Secret) 171if (builder.Resource.DefaultKeyParameter == builder.Resource.Key) 173builder.ApplicationBuilder.Resources.Remove(builder.Resource.Key); 176builder.Resource.Key = apiKey.Resource; 207var healthCheckKey = $"{builder.Resource.Name}_check"; 229var 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)
39var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 91builder.Resource.AddDatabase(name, databaseName); 92var 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)
53hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 55hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 101var password = oracle1.Resource.PasswordParameter.Value; 139hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 141hb.AddOracleDatabaseDbContext<TestDbContext>(db1.Resource.Name); 200hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 202hb.AddOracleDatabaseDbContext<TestDbContext>(db2.Resource.Name); 307hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 309hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 404hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 406hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 467await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 469await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 473await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 475await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
OraclePublicApiTests.cs (2)
208var parent = builder.Resource; 227var parent = builder.Resource;
Aspire.Hosting.Orleans (8)
OrleansServiceExtensions.cs (5)
59orleansServiceBuilder.ClusterId = clusterId.Resource; 90orleansServiceBuilder.ServiceId = serviceId.Resource; 143=> WithGrainStorage(orleansServiceBuilder, provider.Resource.Name, provider); 200=> WithStreaming(orleansServiceBuilder, provider.Resource.Name, provider); 328=> WithGrainDirectory(orleansServiceBuilder, provider.Resource.Name, provider);
ProviderConfiguration.cs (3)
19if (resourceBuilder.Resource.TryGetAnnotationsOfType<OrleansProviderTypeAnnotation>(out var annotations) && annotations.FirstOrDefault() is OrleansProviderTypeAnnotation annotation) 26var resourceType = resourceBuilder.Resource.GetType().Name; 49var serviceKey = resourceBuilder.Resource.Name;
Aspire.Hosting.Orleans.Tests (3)
OrleansProviderTypeTests.cs (3)
27var config = await GetEnvironmentVariablesAsync(silo.Resource, builder); 49var config = await GetEnvironmentVariablesAsync(silo.Resource, builder); 73var config = await GetEnvironmentVariablesAsync(silo.Resource, builder);
Aspire.Hosting.PostgreSQL (15)
PostgresBuilderExtensions.cs (15)
60var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 62var postgresServer = new PostgresServerResource(name, userName?.Resource, passwordParameter); 150return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 202var postgresDatabase = new PostgresDatabaseResource(name, databaseName, builder.Resource); 204builder.Resource.AddDatabase(postgresDatabase.Name, postgresDatabase.DatabaseName); 284pgAdminContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 381pgwebContainerBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 433containerName ??= $"{builder.Resource.Name}-mcp"; 451context.EnvironmentVariables[PostgresMcpDatabaseUriEnvVarName] = builder.Resource.UriExpression; 459mcpContainerBuilder.WithParentRelationship(builder.Resource); 647builder.Resource.PasswordParameter = password.Resource; 664builder.Resource.UserNameParameter = userName.Resource; 769if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation)
Aspire.Hosting.PostgreSQL.Tests (96)
AddPostgresTests.cs (37)
22Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check"); 32Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 42Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 158var connectionStringResource = postgres.Resource as IResourceWithConnectionString; 163Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 208Assert.Equal($"Host=postgres.dev.internal;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value};Database=db", config["ConnectionStrings__db"]); 274var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 275var dbManifest = await ManifestUtils.GetManifest(db.Resource); 318var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 344serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 370serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 535Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString()); 543Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString()); 547Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString()); 555Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString()); 603Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents); 610Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents); 647Assert.Equal("customers1", db1.Resource.DatabaseName); 648Assert.Equal("customers2", db2.Resource.DatabaseName); 650Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 651Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 665Assert.Equal("imports", db1.Resource.DatabaseName); 666Assert.Equal("imports", db2.Resource.DatabaseName); 668Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 669Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 714var connectionString = await postgres.Resource.GetConnectionStringAsync(); 728var connectionString = await postgres.Resource.GetConnectionStringAsync(); 730Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 743var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 744var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 825var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 852var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 868var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 881var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 906var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 933var 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 (46)
54await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 57await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 63await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 66await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 88await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name); 90var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http"); 121[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 124hb.AddNpgsqlDataSource(db.Resource.Name); 130await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 167var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http"); 169await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 235await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 244[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 247hb.AddNpgsqlDataSource(db1.Resource.Name); 298await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 307[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default) 310hb.AddNpgsqlDataSource(db2.Resource.Name); 410[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 413hb.AddNpgsqlDataSource(db.Resource.Name); 419await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 494[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 497hb.AddNpgsqlDataSource(db.Resource.Name); 503await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 622hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 624hb.AddNpgsqlDataSource(newDb.Resource.Name); 630await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 636resourceName: postgres.Resource.Name, 671hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 673hb.AddNpgsqlDataSource(newDb.Resource.Name); 679await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 741hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 743hb.AddNpgsqlDataSource(newDb.Resource.Name); 749await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 801hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 802hb.AddKeyedNpgsqlDataSource(db.Resource.Name); 811await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 813var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
PostgresReplCommandTests.cs (3)
48var options = await PostgresBuilderExtensions.CreateReplOptionsAsync(postgres.Resource, TestContext.Current.CancellationToken); 70PostgresBuilderExtensions.CreateReplOptionsAsync(postgres.Resource, TestContext.Current.CancellationToken)); 93await VerifyReplAsync(app, postgres.Resource, "psql (postgres)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Python (38)
PythonAppResourceBuilderExtensions.cs (38)
484ValidateExistingDockerfileEntrypoint(resource, containerBuilder.Resource, entrypointType, entrypoint); 485return context.WriteContainerAsync(containerBuilder.Resource); 500Resource = containerBuilder.Resource, 504if (!containerBuilder.Resource.IsExcludedFromPublish()) 506ValidateExistingDockerfileEntrypoint(resource, containerBuilder.Resource, entrypointType, entrypoint); 517var validationStep = context.GetSteps(containerBuilder.Resource).FirstOrDefault(step => step.Name == validationStepName); 519context.GetSteps(containerBuilder.Resource, WellKnownPipelineTags.BuildCompute).DependsOn(validationStep); 525if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 527var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 542var resourceToSetup = resourceBuilder.Resource; 957: Path.GetFullPath(virtualEnvironmentPath, builder.Resource.WorkingDirectory); 962if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 1018if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 1030var workingDirectory = builder.Resource.WorkingDirectory; 1052if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var annotation) || annotation.VirtualEnvironment is null) 1128if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1227if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1232pythonEnv = builder.Resource.Annotations.OfType<PythonEnvironmentAnnotation>().Last(); 1239var workingDirectory = builder.Resource.WorkingDirectory; 1385var installerName = $"{builder.Resource.Name}-installer"; 1402var installer = new PythonInstallerResource(installerName, builder.Resource); 1405.WithParentRelationship(builder.Resource) 1420if (!builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager) || 1421!builder.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installCommand)) 1430.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1455if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1463: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1466var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1476var venvCreator = new PythonVenvCreatorResource(venvCreatorName, builder.Resource, venvPath); 1495.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1496.WithParentRelationship(builder.Resource) 1505var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1510builder.ApplicationBuilder.Resources.Remove(venvCreatorBuilder.Resource); 1536var shouldSkipInstallerWait = installerBuilder?.Resource.TryGetLastAnnotation<ExplicitStartupAnnotation>(out _) ?? false; 1575var isUsingUv = builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var pkgMgr) && 1585if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1599: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1615if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var existing))
Aspire.Hosting.Python.Tests (49)
AddPythonAppTests.cs (47)
40var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 78var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 138var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 751Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 771Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 878Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 882Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 909Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 913Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1185var initialCommand = pythonBuilder.Resource.Command; 1190var newCommand = pythonBuilder.Resource.Command; 1254var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 1311builder.AddPythonApp("script-app", sourceDir, "main.py").Resource, 1312builder.AddPythonModule("module-app", sourceDir, "mymodule").Resource, 1313builder.AddPythonExecutable("executable-app", sourceDir, "pytest").Resource, 1314builder.AddUvicornApp("uvicorn-app", sourceDir, "main:app").Resource 1334var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1349var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1364var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 1694var resource = pythonApp.Resource; 1738var resource = pythonApp.Resource; 1778var resource = pythonApp.Resource; 1809var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1830var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1855var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1882var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1908var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1950var resource = pythonApp.Resource; 1981var resource = pythonApp.Resource; 2004pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 2026pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 2044pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 2305Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2309Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2339Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2343Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2376Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2380Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2400Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _)); 2506Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2541Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2545Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2581Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2611Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2712Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2744Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
AddUvicornAppTests.cs (2)
22Assert.IsType<UvicornAppResource>(uvicornApp.Resource); 23Assert.Equal("uvicorn-app", uvicornApp.Resource.Name);
Aspire.Hosting.Qdrant (4)
QdrantBuilderExtensions.cs (4)
50var apiKeyParameter = apiKey?.Resource ?? 176var resource = (IResourceWithConnectionString)qdrantResource.Resource; 188var httpConnectionStringExpression = qdrantResource.Resource.HttpConnectionStringExpression; 197var injectionAnnotation = builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var annotation) ? annotation : null;
Aspire.Hosting.Qdrant.Tests (30)
AddQdrantTests.cs (16)
31Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 41Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", qd.Resource.ApiKeyParameter.Default?.GetType().FullName); 165var connectionStringResource = qdrant.Resource as IResourceWithConnectionString; 199var context = new EnvironmentCallbackContext(appBuilder.ExecutionContext, projectA.Resource); 200foreach (var callback in projectA.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 210Assert.Same(qdrant.Resource, reference.Resource); 222Assert.Same(qdrant.Resource, reference.Resource); 239Assert.Same(qdrant.Resource, ((IValueWithReferences)httpReference).References.First()); 242var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 256var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 289var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 306var context = new EnvironmentCallbackContext(appBuilder.ExecutionContext, consumer.Resource); 309foreach (var callback in consumer.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 331consumer.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 346var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 384var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes
QdrantFunctionalTests.cs (14)
47[$"ConnectionStrings:{qdrant.Resource.Name}"] = await qdrant.Resource.ConnectionStringExpression.GetValueAsync(default) 50hb.AddQdrantClient(qdrant.Resource.Name); 133[$"ConnectionStrings:{qdrant1.Resource.Name}"] = await qdrant1.Resource.ConnectionStringExpression.GetValueAsync(default) 136hb.AddQdrantClient(qdrant1.Resource.Name); 179[$"ConnectionStrings:{qdrant2.Resource.Name}"] = await qdrant2.Resource.ConnectionStringExpression.GetValueAsync(default) 182hb.AddQdrantClient(qdrant2.Resource.Name); 247var urls = qdrant.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 278await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 280await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 284await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, (re => re.Snapshot.HealthStatus == HealthStatus.Healthy), cts.Token); 286await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.RabbitMQ (5)
RabbitMQBuilderExtensions.cs (5)
41var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 43var rabbitMq = new RabbitMQServerResource(name, userName?.Resource, passwordParameter); 177var containerAnnotations = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().ToList(); 238throw 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."); 292var 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)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 72hb.Configuration[$"ConnectionStrings:{rabbitMQ.Resource.Name}"] = await rabbitMQ.Resource.ConnectionStringExpression.GetValueAsync(default); 73hb.AddRabbitMQClient(rabbitMQ.Resource.Name); 110var password = rabbitMQ1.Resource.PasswordParameter.Value; 136hb.Configuration[$"ConnectionStrings:{rabbitMQ1.Resource.Name}"] = await rabbitMQ1.Resource.ConnectionStringExpression.GetValueAsync(default); 137hb.AddRabbitMQClient(rabbitMQ1.Resource.Name); 193hb.Configuration[$"ConnectionStrings:{rabbitMQ2.Resource.Name}"] = await rabbitMQ2.Resource.ConnectionStringExpression.GetValueAsync(default); 194hb.AddRabbitMQClient(rabbitMQ2.Resource.Name);
Aspire.Hosting.Radius (25)
CloudProviders\RadiusCloudProviderExtensions.cs (2)
64RadiusCloudProvidersAnnotation.GetOrAdd(builder.Resource).Azure = config; 105RadiusCloudProvidersAnnotation.GetOrAdd(builder.Resource).Aws = config;
Publishing\RadCredentialRegisterStep.cs (2)
229AwsRadiusCredential.AccessKey ak => $"access-key|{ak.AccessKeyId.Resource.Name}", 243return await parameter.Resource.GetValueAsync(cancellationToken).ConfigureAwait(false) ?? string.Empty;
Publishing\RadiusInfrastructureBuilder.cs (2)
4141parts.Add(ResolveParameterPart(paramBuilder.Resource, referencedResource, allowRecipeSubstitutions)); 5324return ParameterReference(GetOrAddRecipeParameter(parameterBuilder.Resource));
RadiusExtensions.cs (5)
80builder.Resource.Namespace = kubernetesNamespace; 99builder.Resource.Annotations.Add(new RadiusInfrastructureConfigureAnnotation(configure)); 174var existing = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault(); 177builder.Resource.Annotations.Remove(existing); 180builder.Resource.Annotations.Add(new ContainerImageAnnotation
Recipes\RadiusRecipeParameterExtensions.cs (2)
75var annotation = RadiusRecipeParametersAnnotation.GetOrAdd(builder.Resource); 109var annotation = RadiusRecipeParametersAnnotation.GetOrAdd(builder.Resource);
Secrets\RadiusSecretStoreConsumerExtensions.cs (2)
79RadiusSecretStoresAnnotation.GetOrAdd(radius.Resource).Consumers.Add( 80new RadiusSecretStoreConsumer(kind, store.Resource, selector, key));
Secrets\RadiusSecretStoreExtensions.cs (10)
113OwningEnvironment = radius.Resource, 141EnsureNotAlreadyPopulated(store.Resource); 149var population = store.Resource.Population; 211EnsureNotAlreadyPopulated(store.Resource); 213var population = store.Resource.Population; 241EnsureNotAlreadyPopulated(store.Resource); 243var population = store.Resource.Population; 290store.Resource.MaterializationTimeout = timeout; 291store.Resource.MaterializationTimeoutWasSet = true; 438if (!_population.Data.TryAdd(key, new RadiusSecretKeyBinding(parameter.Resource, encoding?.ToRadiusEncodingString())))
Aspire.Hosting.Radius.Tests (96)
CloudProviders\AdditiveCompatibilityTests.cs (5)
16Assert.Empty(env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>()); 32var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 43var first = RadiusCloudProvidersAnnotation.GetOrAdd(env.Resource); 44var second = RadiusCloudProvidersAnnotation.GetOrAdd(env.Resource); 47Assert.Single(env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>());
CloudProviders\CredentialModeOverrideTests.cs (3)
32var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 50var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 65var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\MultiEnvironmentProvidersTests.cs (3)
29var annA = envA.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 33var annB = envB.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().FirstOrDefault(); 49var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\WithAwsProviderTests.cs (4)
27var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 44var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 134var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 147var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
CloudProviders\WithAzureProviderTests.cs (2)
30var annotation = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 123var ann = env.Resource.Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
Deployment\ControlPlaneVersionGateTests.cs (2)
374var annotation = Assert.Single(environment.Resource.Annotations.OfType<PipelineStepAnnotation>()); 378Resource = environment.Resource,
InnerLoop\MultiEnvironmentTests.cs (2)
71Assert.Same(env1.Resource, annotations[0].ComputeEnvironment); 99Assert.Same(env1.Resource, annotations[0].ComputeEnvironment);
InnerLoop\RadiusInfrastructureInitializationTests.cs (1)
89Assert.Same(env.Resource, annotation.ComputeEnvironment);
Publishing\BackingResourceContractTests.cs (4)
139Assert.Same(cache.Resource, ex.Resource); 171var environment = builder.AddRadiusEnvironment("myenv").Resource; 189var environment = builder.AddRadiusEnvironment("myenv").Resource; 225var environment = builder.AddRadiusEnvironment("myenv").Resource;
Publishing\BackingResourceValueResolutionTests.cs (10)
340context.EnvironmentVariables["DB"] = second.Resource.ConnectionStringExpression; 369context.EnvironmentVariables["DB"] = second.Resource.ConnectionStringExpression; 456mode.Resource, 530mode.Resource, 552ReferenceExpression.Create($"{mode.Resource}"), 598new ContainerImageReference(target.Resource), 621var cyclic = new SelfReferentialConnectionStringResource("cyclic", mode.Resource); 1215mode.Resource, 1297.WithEnvironment(ctx => ctx.EnvironmentVariables["CS"] = db.Resource); 1316.WithEnvironment(ctx => ctx.EnvironmentVariables["CS"] = db.Resource.ConnectionStringExpression);
Publishing\BicepGenerationSimpleTests.cs (5)
170RadiusTestHelper.AttachDeploymentTargets(env.Resource, model); 171var context = new RadiusBicepPublishingContext(env.Resource); 186RadiusTestHelper.AttachDeploymentTargets(environment.Resource, model); 187var context = new RadiusBicepPublishingContext(environment.Resource); 201var annotations = env.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList();
Publishing\BicepIdentifierTests.cs (2)
106RadiusTestHelper.AttachDeploymentTargets(env.Resource, model); 107var context = new RadiusBicepPublishingContext(env.Resource);
Publishing\RadCredentialArgumentTests.cs (4)
29var args = await ResolveSingleAsync(env.Resource); 51var args = await ResolveSingleAsync(env.Resource); 73var args = await ResolveSingleAsync(env.Resource); 93var args = await ResolveSingleAsync(env.Resource);
Publishing\RadiusDeployParametersTests.cs (11)
42Assert.Same(secret.Resource, binding.Value); 133radius.Resource.Annotations.Add(new RadiusDeployParametersAnnotation( 134new Dictionary<string, ParameterResource> { ["rabbituser"] = userName.Resource }, 135new Dictionary<ParameterResource, IReadOnlyList<IResource>> { [userName.Resource] = new[] { (IResource)rabbit.Resource } })); 137var step = new RadiusDeploymentPipelineStep(radius.Resource); 159Assert.Same(rabbit.Resource, Assert.Single(annotation.RabbitMqUserNames[userName.Resource])); 211Assert.Same(surviving.Resource, Assert.Single(annotation.RabbitMqUserNames[userName.Resource])); 307Assert.Same(reserved.Resource, binding.Value);
Publishing\SealedSecretPublishTests.cs (1)
76var resolved = store.Resource.Population.SealedManifestPath;
RadiusExtensionsTests.cs (13)
22Assert.Equal("radius", resourceBuilder.Resource.Name); 23Assert.Equal("default", resourceBuilder.Resource.Namespace); 33Assert.Equal("staging", resourceBuilder.Resource.Name); 60Assert.Equal("staging-ns", resourceBuilder.Resource.Namespace); 117Assert.Equal("a", resourceBuilder.Resource.Namespace); 121Assert.Equal("my-ns", resourceBuilder.Resource.Namespace); 125Assert.Equal("123", resourceBuilder.Resource.Namespace); 130Assert.Equal(maxName, resourceBuilder.Resource.Namespace); 171var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 195var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 209var annotation = Assert.Single(project.Resource.Annotations.OfType<ContainerImageAnnotation>()); 213Assert.True(project.Resource.SupportsDotnetProgramPublishing()); 214Assert.False(project.Resource.RequiresImageBuild());
Recipes\RecipeParameterIsolationAndFidelityTests.cs (2)
18var devAnn = dev.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 19var prodAnn = prod.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single();
Recipes\WithRecipeParametersTests.cs (4)
19var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 33var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 47var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().Single(); 76var ann = env.Resource.Annotations.OfType<RadiusRecipeParametersAnnotation>().SingleOrDefault();
Secrets\AddRadiusSecretStoreTests.cs (13)
23Assert.Equal("db-creds", store.Resource.Name); 24Assert.Equal(RadiusSecretStoreType.BasicAuthentication, store.Resource.Type); 47Assert.Same(env.Resource, store.OwningEnvironment); 111Assert.Equal(valid, store.Resource.Name); 123Assert.True(store.Resource.Population.HasInlineData); 124Assert.True(store.Resource.Population.Data.ContainsKey("password")); 187Assert.Equal(reference, store.Resource.Population.ResourceReference); 231Assert.Equal(["k1", "k2", "k3"], store.Resource.Population.Keys); 245Assert.Equal(["ok"], store.Resource.Population.Keys); 259Assert.Equal("app/s", store.Resource.Population.ResourceReference); 260Assert.Equal(["ok"], store.Resource.Population.Keys); 314Assert.Equal([key], store.Resource.Population.Keys); 362Assert.Equal(max, store.Resource.MaterializationTimeout);
Secrets\SecretStoreConsumerTests.cs (2)
28var annotation = env.Resource.Annotations.OfType<RadiusSecretStoresAnnotation>().Single(); 33Assert.Same(store.Resource, registry.Store);
Secrets\SecretStoreDefaultPathTests.cs (1)
56Assert.True(pass.Resource.Secret);
Secrets\SecretStoreValidationTests.cs (2)
124var annotation = Assert.Single(store.Resource.Annotations.OfType<PipelineStepAnnotation>()); 128Resource = store.Resource,
Aspire.Hosting.Redis (6)
RedisBuilderExtensions.cs (6)
77var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 236return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct)); 342resourceBuilder.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages); 410.WithRelationship(builder.Resource, KnownRelationshipTypes.Manages) 701builder.Resource.SetPassword(password?.Resource);
Aspire.Hosting.Redis.Tests (113)
AddRedisTests.cs (46)
28Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check"); 306foreach (var redis in new[] { redis1.Resource, redis2.Resource }) 332foreach (var redis in new[] { redis1.Resource, redis2.Resource, redis3.Resource }) 375Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value); 380Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 385Assert.Equal(redis1.Resource.Name, item.Value); 391Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value); 397Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value); 402Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 407Assert.Equal(redis2.Resource.Name, item.Value); 413Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value); 419Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value); 424Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 429Assert.Equal(redis3.Resource.Name, item.Value); 571Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 593Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]); 618Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 639var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 664var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 777var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource); 785var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 796Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 861var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 874var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 888var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 891Assert.Equal(password.Resource, annotation.Password); 903var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 919var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 922Assert.Equal(password.Resource, annotation.Password); 940Assert.True(redis.Resource.TlsEnabled); 943var connectionStringExpression = redis.Resource.ConnectionStringExpression; 953var endpoint = Assert.Single(redis.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "tcp"); 958var uriExpression = redis.Resource.UriExpression; 977var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource, app.Services).AsTask().WaitAsync(TimeSpan.FromSeconds(60)); 994Assert.False(redis.Resource.TlsEnabled); 997var expressionBeforeTls = redis.Resource.ConnectionStringExpression; 1014Assert.True(redis.Resource.TlsEnabled); 1023var expressionAfterTls = redis.Resource.ConnectionStringExpression; 1039Assert.False(redis.Resource.TlsEnabled); 1042var connectionStringExpression = redis.Resource.ConnectionStringExpression;
RedisFunctionalTests.cs (57)
53await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 82await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name); 84var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http"); 87if (redis.Resource.TlsEnabled) 93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info"; 121commanderBuilder.Resource.Name, 129redis.Resource.Name, 167redis.Resource.Name, 175var startResult = await app.ResourceCommands.ExecuteCommandAsync(commanderBuilder.Resource, KnownResourceCommands.StartCommand); 179commanderBuilder.Resource.Name, 185redis.Resource.Name, 194var stopResult = await app.ResourceCommands.ExecuteCommandAsync(commanderBuilder.Resource, KnownResourceCommands.StopCommand); 198redis.Resource.Name, 222[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync() 225hb.AddRedisClient(redis.Resource.Name); 255await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token); 262[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true" 265hb.AddRedisClient(redis.Resource.Name); 296await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 298var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http"); 314Assert.Equal(redis1.Resource.Name, db.Name); 315Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host); 316Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port); 320Assert.Equal(redis2.Resource.Name, db.Name); 321Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host); 322Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port); 326Assert.Equal(redis3.Resource.Name, db.Name); 327Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host); 328Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port); 364[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 367hb.AddRedisClient(redis1.Resource.Name); 401[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 404hb.AddRedisClient(redis2.Resource.Name); 447[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 450hb.AddRedisClient(redis1.Resource.Name); 482[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 485hb.AddRedisClient(redis2.Resource.Name); 532[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 535hb.AddRedisClient(redis1.Resource.Name); 563[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 566hb.AddRedisClient(redis2.Resource.Name); 631await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 635var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http"); 666await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 670var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http"); 787await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
RedisReplCommandTests.cs (3)
48var options = await RedisBuilderExtensions.CreateReplOptionsAsync(redis.Resource, TestContext.Current.CancellationToken); 67var options = await RedisBuilderExtensions.CreateReplOptionsAsync(redis.Resource, TestContext.Current.CancellationToken); 83await VerifyReplAsync(app, redis.Resource, "redis-cli (redis)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.RemoteHost.Tests (6)
CapabilityDispatcherTests.cs (6)
100var annotation = Assert.Single(resource.Resource.Annotations.OfType<TerminalAnnotation>()); 103var properties = TerminalResourceSnapshotProperties.AddTerminalProperties(resource.Resource, resource.Resource.Name, []); 167var annotation = Assert.Single(resource.Resource.Annotations.OfType<TerminalAnnotation>()); 204Assert.Empty(resource.Resource.Annotations.OfType<TerminalAnnotation>()); 2445$"Endpoint with name 'http' already exists on resource '{builder.Resource.Name}'. Endpoint name may not have been explicitly specified and was derived automatically from scheme argument (e.g. 'http', 'https', or 'tcp'). Multiple calls to WithEndpoint (and related methods) may result in a conflict if name argument is not specified. Each endpoint must have a unique name. For more information on networking in Aspire see: https://aka.ms/aspire/networking");
Aspire.Hosting.Rust (5)
RustHostingExtensions.cs (5)
148|| !containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var provisionalDockerfile)) 483if (!builder.Resource.TryGetLastAnnotation<RustCargoOptionsAnnotation>(out var options)) 729var annotations = containerBuilder.Resource.Annotations; 730if (!containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var activeDockerfile) 759targetPlatform = ResolveContainerTargetPlatform(resource, containerBuilder.Resource);
Aspire.Hosting.Rust.Tests (44)
AddRustAppPublishTests.cs (4)
316var rustBuildStep = CreateBuildComputeStep("build-api", rust.Resource); 317var frontendBuildStep = CreateBuildComputeStep("build-frontend", frontend.Resource); 318var assetsBuildStep = CreateBuildComputeStep("build-assets", assets.Resource); 1108configuredResource = app.Resource;
RustDebugArgsTests.cs (2)
39var args = await ArgumentEvaluator.GetArgumentListAsync(rust.Resource, app.Services); 41return (args, rust.Resource);
RustPublicApiTests.cs (38)
42var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 55var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 68var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 81var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 98var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 114var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 128var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 140var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 153var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 166await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 169Assert.All(observed, resource => Assert.Same(app.Resource, resource)); 184await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 187Assert.All(observed, resource => Assert.Same(app.Resource, resource)); 228Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out _)); 239var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 257var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 278var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 293var launchConfig = await InvokeLaunchConfigurationProducerAsync(builder, app.Resource); 319app.Resource, 343var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource); 346() => LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext)); 366await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 369await app.Resource.CreateLaunchConfigurationAsync( 376await app.Resource.CreateLaunchConfigurationAsync( 405await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 408app.Resource, 411app.Resource, 415await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, firstContext)); 417await LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, secondContext)); 437await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 440await app.Resource.CreateLaunchConfigurationAsync( 444await app.Resource.CreateLaunchConfigurationAsync( 476await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 479() => app.Resource.CreateLaunchConfigurationAsync( 483await app.Resource.CreateLaunchConfigurationAsync( 511await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 514var callbackContext = LaunchConfigurationTestHelpers.CreateCallbackContext(app.Resource, cancellationToken: cts.Token); 515var launchTask = LaunchConfigurationTestHelpers.InvokeLaunchConfigurationProducerAsync(app.Resource, callbackContext);
Aspire.Hosting.Seq.Tests (14)
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)
28await app.WaitForTextAsync("Seq listening on", seq.Resource.Name); 30var seqUrl = await seq.Resource.ConnectionStringExpression.GetValueAsync(default); 37await app.ResourceNotifications.WaitForResourceHealthyAsync(seq.Resource.Name, default); 106await app.WaitForTextAsync("Seq listening on", seq1.Resource.Name); 110var seqUrl = await seq1.Resource.ConnectionStringExpression.GetValueAsync(default); 117await app.ResourceNotifications.WaitForResourceHealthyAsync(seq1.Resource.Name, default); 145await app.WaitForTextAsync("Seq listening on", seq2.Resource.Name); 149var seqUrl = await seq2.Resource.ConnectionStringExpression.GetValueAsync(default); 156await app.ResourceNotifications.WaitForResourceHealthyAsync(seq2.Resource.Name, default);
Aspire.Hosting.SqlServer (6)
SqlServerBuilderExtensions.cs (6)
46var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", minLower: 1, minUpper: 1, minNumeric: 1); 174return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, executablePath, ct)); 235var sqlServerDatabase = new SqlServerDatabaseResource(name, databaseName, builder.Resource); 237builder.Resource.AddDatabase(sqlServerDatabase); 350builder.Resource.SetPassword(password.Resource);
Aspire.Hosting.SqlServer.Tests (61)
AddSqlServerTests.cs (15)
25Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 35Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 133var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 134var dbManifest = await ManifestUtils.GetManifest(db.Resource); 174var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 231Assert.Equal("customers1", db1.Resource.DatabaseName); 232Assert.Equal("customers2", db2.Resource.DatabaseName); 234Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 235Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 249Assert.Equal("imports", db1.Resource.DatabaseName); 250Assert.Equal("imports", db2.Resource.DatabaseName); 252Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 253Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 321await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(sqlServer.Resource, app.Services)); 322await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(db.Resource, app.Services));
SqlServerFunctionalTests.cs (35)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 52await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 84hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 86hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name); 87hb.AddSqlServerClient(newDb.Resource.Name); 146var password = sqlserver1.Resource.PasswordParameter.Value; 182await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 191[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default), 194hb1.AddSqlServerClient(db1.Resource.Name); 268await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 277[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default), 280hb2.AddSqlServerClient(db2.Resource.Name); 374hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 376hb.AddSqlServerClient(newDb.Resource.Name); 382await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 388resourceName: sqlserver.Resource.Name, 435hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 437hb.AddSqlServerClient(newDb.Resource.Name); 443await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 508hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 510hb.AddSqlServerClient(newDb.Resource.Name); 516await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token); 569hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 570hb.AddKeyedSqlServerClient(db.Resource.Name); 579await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 581var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
SqlServerReplCommandTests.cs (4)
67Assert.Equal(expectedCalls, sqlServer.Resource.Annotations.OfType<ResourceCommandAnnotation>().Count()); 83Assert.Empty(sqlServer.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 105var options = await SqlServerBuilderExtensions.CreateReplOptionsAsync(sqlServer.Resource, replOptions.Command, TestContext.Current.CancellationToken); 145await VerifyReplAsync(app, sqlServer.Resource, "sqlcmd (sqlserver)",
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
Aspire.Hosting.Testing.Tests (4)
TestingBuilderTests.cs (3)
157Assert.Equal(new Projects.TestingAppHost1_MyWebApp().ProjectPath, web.Resource.GetProjectMetadata().ProjectPath); 158Assert.Equal(new Projects.TestingAppHost1_MyWorker().ProjectPath, worker.Resource.GetProjectMetadata().ProjectPath); 572redis1.Resource.ShellExecution = false;
tests\Aspire.Hosting.TestUtilities\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Aspire.Hosting.Tests (1681)
AddConnectionStringTests.cs (3)
82cs.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations); 89Assert.Same(redis.Resource, wa.Resource); 94Assert.Same(key.Resource, wa.Resource);
AddParameterTests.cs (39)
52Assert.True(parameter.Resource.Required); 63Assert.False(parameter.Resource.Required); 75Assert.True(parameter.Resource.Required); 84Assert.False(parameter.Resource.TryGetCurrentValue(out _)); 88Assert.Null(await parameter.Resource.GetValueAsync(CancellationToken.None)); 98Assert.False(parameter.Resource.TryGetCurrentValue(out _)); 103() => parameter.Resource.GetValueAsync(CancellationToken.None).AsTask()); 112await parameter.Resource.SetValueAsync(null).DefaultTimeout(); 116Assert.Null(await parameter.Resource.GetValueAsync(CancellationToken.None).DefaultTimeout()); 126await parameter.Resource.SetValueAsync(null).DefaultTimeout(); 131() => parameter.Resource.GetValueAsync(CancellationToken.None).AsTask()).DefaultTimeout(); 148Assert.Equal(string.Empty, parameter.Resource.Value); 334parameter.Resource.Default = new TestParameterDefault("DefaultValue"); 574Assert.IsType<UserSecretsParameterDefault>(parameter1.Resource.Default); 578Assert.IsType<GenerateParameterDefault>(parameter2.Resource.Default); 674Assert.Equal("This is a test parameter", parameter.Resource.Description); 675Assert.False(parameter.Resource.EnableDescriptionMarkdown); 689Assert.Equal("This is a **markdown** description", parameter.Resource.Description); 690Assert.True(parameter.Resource.EnableDescriptionMarkdown); 712Assert.Equal("Custom input parameter", parameter.Resource.Description); 713Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 725var input = parameter.Resource.CreateInput(); 743var input = parameter.Resource.CreateInput(); 757var input = parameter.Resource.CreateInput("value"); 777var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 791var input = parameter.Resource.CreateInput(); 819var input = parameter.Resource.CreateInput(); 841var input = parameter.Resource.CreateInput(); 859var input = parameter.Resource.CreateInput(); 877var input = parameter.Resource.CreateInput(required: true); 899var input = parameter.Resource.CreateInput("value"); 927var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 941var input = parameter.Resource.CreateInput(); 966Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 968var input = parameter.Resource.CreateInput(); 997Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 999var input = parameter.Resource.CreateInput("value", required: true); 1030var input = parameter.Resource.CreateInput(); 1053var input = parameter.Resource.CreateInput();
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (26)
25var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 49var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 68var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 89var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 96Resource = container.Resource, 141var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 147Resource = container.Resource, 177var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 183Resource = container.Resource, 211var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 217Resource = container.Resource, 252var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 258Resource = container.Resource, 287Assert.Equal("mycontainer", container.Resource.Name); 288var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 308Assert.Equal("mycontainer", container.Resource.Name); 309var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 331var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 338Resource = container.Resource, 367var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 374Resource = container.Resource, 399var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 433var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 439Resource = container.Resource, 469var envAnnotation = container.Resource.Annotations.OfType<EnvironmentAnnotation>().FirstOrDefault(); 471var endpointAnnotation = container.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
ApplicationModel\EndpointHostHelpersTests.cs (1)
254container.Resource,
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>();
AtsAnnotationTests.cs (11)
20Assert.Equal("{\"value\":1}", container.Resource.GetSerializedAnnotation("my.id")); 32Assert.Single(container.Resource.Annotations.OfType<AtsAnnotation>()); 33Assert.Equal("second", container.Resource.GetSerializedAnnotation("my.id")); 42Assert.Throws<InvalidOperationException>(() => container.Resource.GetSerializedAnnotation("missing")); 52Assert.False(container.Resource.HasSerializedAnnotation("my.id")); 57Assert.True(container.Resource.HasSerializedAnnotation("my.id")); 69var roundTripped = container.Resource.GetAnnotation(s_stateAnnotation); 89var json = container.Resource.GetSerializedAnnotation(s_stateAnnotation.Id); 127Assert.True(container.Resource.TryGetAnnotation(definition, out var readByTryGet)); 137Assert.False(container.Resource.TryGetAnnotation(s_stateAnnotation, out var missing)); 142Assert.True(container.Resource.TryGetAnnotation(s_stateAnnotation, out var present));
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (57)
134await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 138await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-def456", s => s with 181await notificationService.PublishUpdateAsync(custom.Resource, s => s with 346await notificationService.PublishUpdateAsync(custom.Resource, s => s with 386.WithEnvironment("GOFLAGS", ReferenceExpression.Create($"prefix {flags.Resource} suffix")) 392var executionConfiguration = await ExecutionConfigurationBuilder.Create(custom.Resource) 398await notificationService.PublishUpdateAsync(custom.Resource, s => s with 442await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 445await notificationService.PublishUpdateAsync(owner.Resource, s => s with 485topLevelParameter.Resource.WaitForValueTcs = new TaskCompletionSource<string?>(TaskCreationOptions.RunContinuationsAsynchronously); 486topLevelParameter.Resource.WaitForValueTcs.SetResult("top-level-secret"); 491await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 494await notificationService.PublishUpdateAsync(owner.Resource, s => s with 553await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 556await notificationService.PublishUpdateAsync(owner.Resource, s => s with 581var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 583await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 585await notificationService.PublishUpdateAsync(owner.Resource, s => s with 629await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 632await notificationService.PublishUpdateAsync(owner.Resource, s => s with 655var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 657await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 659await notificationService.PublishUpdateAsync(owner.Resource, s => s with 699await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 702await notificationService.PublishUpdateAsync(owner.Resource, s => s with 730await notificationService.PublishUpdateAsync(owner.Resource, s => s with 770await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 773await notificationService.PublishUpdateAsync(owner.Resource, s => s with 798await notificationService.PublishUpdateAsync(owner.Resource, s => s with 859await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 862await notificationService.PublishUpdateAsync(mcpResource.Resource, s => s with 866await notificationService.PublishUpdateAsync(owner.Resource, s => s with 905.WithEnvironment(context => context.EnvironmentVariables["SECRET"] = coldSecret.Resource); 913await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 918coldSecret.Resource.WaitForValueTcs = new TaskCompletionSource<string?>(TaskCreationOptions.RunContinuationsAsynchronously); 919coldSecret.Resource.WaitForValueTcs.SetResult("value-b"); 922await notificationService.PublishUpdateAsync(owner.Resource, s => s with 979var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 986.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 1034var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 1043.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 1072await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1075await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1123await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1138await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1154await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1191await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1263await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1276ResourceName = custom.Resource.Name, 1299await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1339await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1392AddSyntheticTerminalAnnotation(custom.Resource, replicaCount: 1); 1398await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1434await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1480await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1519await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1987await notificationService.PublishUpdateAsync(hidden.Resource, snapshot => snapshot with
Codespaces\CodespacesUrlRewriterTests.cs (2)
73await app.ResourceNotifications.PublishUpdateAsync(resource.Resource, s => s with 81resource.Resource.Name,
ComputeEnvironmentEndpointResolverTests.cs (35)
20var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 21agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource }); 24endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 40var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 41agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(owningEnv.Resource) { ComputeEnvironment = owningEnv.Resource }); 45endpoint, [currentEnv.Resource], out var expression); 59var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 60agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 63endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 79var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 82endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 96var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 99endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 117agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 118agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource }); 119var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 122endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out var expression); 140agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(currentEnv.Resource) { ComputeEnvironment = currentEnv.Resource }); 141agent.Resource.Annotations.Add(new DeploymentTargetAnnotation(otherEnv.Resource) { ComputeEnvironment = otherEnv.Resource }); 142var endpoint = AddHttpEndpoint(agent.Resource, port: 8080, targetPort: 5000); 146endpoint.Property(EndpointProperty.Url), [currentEnv.Resource], out _));
ComputeEnvironmentValidationTests.cs (2)
60Assert.Same(env.Resource, api.Resource.GetComputeEnvironment());
ContainerRegistryResourceTests.cs (66)
30Assert.Equal("docker-hub", registry.Resource.Name); 32var containerRegistry = registry.Resource as IContainerRegistry; 46Assert.Equal("acr", registry.Resource.Name); 48var containerRegistry = registry.Resource as IContainerRegistry; 64Assert.Equal("my-registry", registry.Resource.Name); 66var containerRegistry = registry.Resource as IContainerRegistry; 81Assert.Equal("my-registry", registry.Resource.Name); 83var containerRegistry = registry.Resource as IContainerRegistry; 207var containerRegistry = registry.Resource as IContainerRegistry; 221var containerRegistry = registry.Resource as IContainerRegistry; 236var containerRegistry = registry.Resource as IContainerRegistry; 252var containerRegistry = registry.Resource as IContainerRegistry; 270var containerRegistry = registry.Resource as IContainerRegistry; 285Assert.IsAssignableFrom<IContainerRegistry>(registry.Resource); 316var annotation = container.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().SingleOrDefault(); 318Assert.Same(registry.Resource, annotation.Registry); 351var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 352var pipelineConfigAnnotations = container.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 366var pipelineStepAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 371Resource = container.Resource 390var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 397Resource = container.Resource 413var annotation = new ContainerRegistryReferenceAnnotation(registry.Resource); 415Assert.Same(registry.Resource, annotation.Registry); 435var containerRegistry = env.Resource.GetContainerRegistry(); 436Assert.Same(acr.Resource, containerRegistry); 455var pipelineStepAnnotations = project.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 456var pipelineConfigAnnotations = project.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 470var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 475Resource = project.Resource 494var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 499Resource = project.Resource 522var annotation = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().FirstOrDefault(); 524Assert.Same(registry.Resource, annotation.Registry); 538var annotations = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().ToList(); 540Assert.Same(registry1.Resource, annotations[0].Registry); 555Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 562var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 563Assert.Same(registry.Resource, registryTargetAnnotation.Registry); 583var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 587Assert.Contains(registry1.Resource, registryResources); 588Assert.Contains(registry2.Resource, registryResources); 607var containerRegistry = project.Resource.GetContainerRegistry(); 608Assert.Same(registry.Resource, containerRegistry); 630var containerRegistry = project.Resource.GetContainerRegistry(); 631Assert.Same(registry2.Resource, containerRegistry); 652var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 666var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 688Assert.Single(project1.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 689Assert.Single(project2.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 690Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 712var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 715var containerRegistryRefAnnotation = Assert.Single(project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>()); 716Assert.Same(specificRegistry.Resource, containerRegistryRefAnnotation.Registry); 719var containerRegistry = project.Resource.GetContainerRegistry(); 720Assert.Same(specificRegistry.Resource, containerRegistry); 735Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 742var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 743Assert.Same(acr.Resource, registryTargetAnnotation.Registry); 763Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 764Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 783var containerRegistry = project.Resource.GetContainerRegistry(); 784Assert.Same(acr.Resource, containerRegistry); 804var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 808Assert.Contains(acr.Resource, registryResources); 809Assert.Contains(dockerHub.Resource, registryResources);
ContainerTunnelTests.cs (8)
65await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 67using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 108await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 110using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 148await app.ResourceNotifications.WaitForResourceAsync(c.Resource.Name, KnownResourceStates.Running) 180foreach (var resourceName in new[] { upstreamService.Resource.Name, tunnelDependentContainer.Resource.Name, downstreamService.Resource.Name })
Dashboard\DashboardResourceTests.cs (1)
130Assert.Same(container.Resource, dashboard);
Dcp\DcpExecutorTests.cs (166)
304Assert.Same(resource.Resource, Assert.Single(startingEvents).Resource); 346Assert.True(resource.Resource.TryGetInstances(out var instances)); 392Assert.True(resource.Resource.TryGetInstances(out var instances)); 477.WithReplicas(2).Resource; 911}).Resource; 1533Assert.IsNotAssignableFrom<IComputeResource>(emulator.Resource); 1534Assert.True(emulator.Resource.IsContainer()); 1538Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name); 4334var allocatedEndpoint = database.Resource.GetEndpoint("tcp").AllocatedEndpoint; 4520Assert.Same(database.Resource, connectionStringAvailableResource); 4568Assert.Same(database.Resource, connectionStringAvailableResource); 4628if (ReferenceEquals(context.Resource, client.Resource)) 4674if (ReferenceEquals(context.Resource, client.Resource)) 4885HasKnownCommandAnnotations(exe.Resource); 4886HasKnownCommandAnnotations(container.Resource); 4887HasKnownProjectCommandAnnotations(project.Resource); 5041var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5044projectBuilder.Resource.Annotations.Remove(annotationToRemove); 5563var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5566projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5602var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5605projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5643var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5646projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5687var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5690projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5734var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5737projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5773Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 6239var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 6252resource.Resource.Annotations.Add( 6273var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 6286Assert.Same(resource.Resource, failure.Resource); 6803var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6806projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6843var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6846projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6893var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6896projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6953var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6956projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7005var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7008projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7049var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7052projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7131var projectResource = projectBuilder.Resource; 7132var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7135projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 7139projectBuilder.Resource.Annotations.Add( 7266var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7269projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 7273projectBuilder.Resource.Annotations.Add( 7376await foreach (var lines in resourceLoggerService.GetAllAsync(projectBuilder.Resource).DefaultTimeout()) 7394var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7397projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7481var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7484projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7589var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7592projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7656var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7659projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 7700var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7703projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7766var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7769projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7793var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7796projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7840var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7843customProject.Resource.Annotations.Remove(annotationToRemove); 7890var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7893customProject.Resource.Annotations.Remove(annotationToRemove); 7936var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7939projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8018var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8021projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8281projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8328projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8365projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8401projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8436projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 8481projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 8522var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8525projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8550var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8553projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8589var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 8592projectBuilder.Resource.Annotations.Remove(annotationToRemove); 9638await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 9639await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 9643await AssertTunneledPort(executable.Resource, "proxied", 5678); 9644await AssertTunneledPort(executable.Resource, "notProxied", 8765); 9658await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, port); 9660await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, hostPort); 9664.Where(c => c.AppModelResourceName == container.Resource.Name) 9672await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 9673await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 9674await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 5678); 9675await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 8765); 9678await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 15678); 9679await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 18765); 9681await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234); 9682await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765); 9684await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 25678); 9685await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 28765); 9687await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234); 9688await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765); 9772s => s.AppModelResourceName == executable.Resource.Name 9924var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9969var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10026var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10079var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 10225Assert.Equal(executable.Resource.Name, tunnelService.AppModelResourceName); 10230resource => resource.AppModelResourceName == executable.Resource.Name); 10259target.Resource.Name, 10260target.Resource.Command, 10261target.Resource.WorkingDirectory); 10263distributedAppModel.Resources[distributedAppModel.Resources.IndexOf(target.Resource)] = replacement; 10276Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10280resource => resource.AppModelResourceName == source.Resource.Name); 10313Assert.Equal(project.Resource.Name, tunnelService.AppModelResourceName); 10317resource => resource.AppModelResourceName == project.Resource.Name); 10352Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10357resource => resource.AppModelResourceName == source.Resource.Name); 10402Assert.Equal(executable.Resource, failure.Resource); 10409resource => resource.AppModelResourceName == executable.Resource.Name); 10417await foreach (var lines in resourceLoggerService.GetAllAsync(executable.Resource).DefaultTimeout()) 10469Assert.Equal(executable.Resource, failure.Resource); 10476resource => resource.AppModelResourceName == executable.Resource.Name); 10517resource => resource.AppModelResourceName == source.Resource.Name); 10556var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(executable.Resource, instanceIndex: 0).Name); 10566resource => resource.AppModelResourceName == executable.Resource.Name); 10609var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(executable.Resource, instanceIndex: 0).Name); 10665[containerSource.Resource, executableSource.Resource], 10668.Where(resource => ReferenceEquals(resource, containerSource.Resource) || ReferenceEquals(resource, executableSource.Resource)) 10701if (context.Resource == waiting.Resource || context.Resource == waitingConsumingEndpoint.Resource) 10703while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name)) 10719Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name); 10720Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name); 10721var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name); 10728Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name); 10729var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name); 10762if (context.Resource == tunnelDependentContainer.Resource) 10764while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name)) 10770if (context.Resource == downstreamExecutable.Resource) 10772while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name)) 10788var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name); 10789var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name); 10790var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name); 10801var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name); 10977var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 10980projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11019var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 11022projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11057Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 11069var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 11072projectBuilder.Resource.Annotations.Remove(annotationToRemove); 11144.Resource; 11218.Resource; 11264.Resource;
Dcp\ResourceSnapshotBuilderTests.cs (8)
95project.Resource.Annotations.Add(new TestProjectMetadata()); 99executable.Annotate(DcpCustomResource.ResourceNameAnnotation, configuredProject.Resource.Name); 108[configuredProject.Resource.Name] = configuredProject.Resource 123project.Resource.Annotations.Add(new TestProjectMetadata()); 127executable.Annotate(DcpCustomResource.ResourceNameAnnotation, project.Resource.Name); 147[project.Resource.Name] = project.Resource
DebugSupportExtensionsTests.cs (31)
88await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 91Assert.Same(executable.Resource, observedContext.Resource); 106var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 109Assert.Equal(GetProjectPath(project.Resource), launchConfiguration.ProjectPath); 129var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 143var debugSupport = Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 164var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.NoDebug)); 178var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.NoDebug)); 198var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 218await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug, cts.Token); 242await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 248Assert.Same(executable.Resource, actualContext.Resource); 261() => executable.Resource.CreateLaunchConfigurationAsync(null!, CancellationToken.None)); 282executable.Resource, 288await executable.Resource.CreateLaunchConfigurationAsync(callbackContext)); 303var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 316mode => ProjectLaunchConfigurationFactory.Create(executable.Resource, mode), 319var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 331var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 344Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 355Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(debugSessionPort: null), out _)); 368Assert.True(project.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 387Assert.False(fileApp.Resource.SupportsDebugging(configuration, out _)); 404Assert.True(fileApp.Resource.SupportsDebugging(configuration, out var annotation)); 417Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out _)); 433Assert.Equal(expected, executable.Resource.SupportsDebugging(configuration, out _)); 449Assert.False(project.Resource.SupportsDebugging(configuration, out _)); 461Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 473Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 490Assert.True(project.Resource.SupportsDebugging(configuration, out _)); 491Assert.False(executable.Resource.SupportsDebugging(configuration, out _));
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)
33item => Assert.Equal(container1.Resource, item), 34item => Assert.Equal(container2.Resource, item), 35item => Assert.Equal(project.Resource, item), 36item => Assert.Equal(emulator.Resource, item)); 52containerWithDockerfile.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null)); 56buildOnlyContainer.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null) { HasEntrypoint = false }); 68item => Assert.Equal(project.Resource, item), 69item => Assert.Equal(containerWithDockerfile.Resource, item));
DistributedApplicationTests.cs (31)
785using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http"); 786using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http"); 793var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http"); 1111var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 1272using var serviceAClient = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 1712var endpoint = testProgram.ServiceABuilder.Resource.GetEndpoint("http"); 1784await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration); 1787var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http"); 1805var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https"); 1857using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1865var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1867Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value); 1872if (redis.Resource.TlsEnabled) 1882var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1886sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1888Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value); 1891if (redisNoPort.Resource.TlsEnabled) 1933using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1945var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1947Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value); 1952if (redis.Resource.TlsEnabled) 1962var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1966sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1968Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value); 1972if (redisNoPort.Resource.TlsEnabled) 2062await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token) 2064await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token) 2070var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name); 2079var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name);
DotnetProgramPublishingTests.cs (29)
53resource.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>(), 69Assert.Empty(resource.Resource.Annotations.OfType<DotnetProgramBuildEnvironmentCallbackAnnotation>()); 86Assert.False(resource.Resource.SupportsDotnetProgramPublishing()); 104Assert.False(resource.Resource.SupportsDotnetProgramPublishing()); 117Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 118Assert.Single(resource.Resource.Annotations.OfType<DotnetProgramPublishingAnnotation>()); 119Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 120Assert.Single(resource.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()); 121Assert.Single(resource.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>()); 161resource.Resource, 182Assert.Contains(resource.Resource, model.GetComputeResources()); 183Assert.Contains(resource.Resource, model.GetBuildResources()); 184Assert.True(resource.Resource.RequiresImageBuild()); 210Assert.Contains(resource.Resource, model.GetComputeResources()); 211Assert.DoesNotContain(resource.Resource, model.GetBuildResources()); 212Assert.DoesNotContain(resource.Resource, model.GetBuildAndPushResources()); 213Assert.False(resource.Resource.RequiresImageBuild()); 214Assert.True(resource.Resource.SupportsDotnetProgramPublishing()); 222var annotation = Assert.Single(resource.Resource.Annotations.OfType<PipelineStepAnnotation>()); 226Resource = resource.Resource 232await imageManager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 233await imageManager.BuildImagesAsync([resource.Resource], TestContext.Current.CancellationToken); 262Source = source.Resource, 276() => imageManager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 278() => imageManager.BuildImagesAsync([resource.Resource], TestContext.Current.CancellationToken)); 336Source = source.Resource, 416manager.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)).DefaultTimeout(); 445Source = source.Resource, 459resource.Resource, metadata, buildResult, app.Services, logger, TestContext.Current.CancellationToken));
Eventing\DistributedApplicationBuilderEventingTests.cs (4)
330var testResourceEvent = new ResourceEvent(resource.Resource, "test-resource", testSnapshot); 331var testEvent = new ResourceStoppedEvent(resource.Resource, app.Services, testResourceEvent); 335Assert.Equal(resource.Resource, resourceStopped); 517builder.Eventing.Subscribe<IDistributedApplicationResourceEvent>(resource.Resource, (_, _) => Task.CompletedTask));
ExecutableResourceBuilderExtensionTests.cs (25)
30var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 42var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 57var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 79var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 101var annotation = executable.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 113var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 117executable.Resource, 119executable.Resource, 134var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 153syncExecutable.Resource, 154LaunchConfigurationTestHelpers.CreateCallbackContext(syncExecutable.Resource))); 157asyncExecutable.Resource, 158LaunchConfigurationTestHelpers.CreateCallbackContext(asyncExecutable.Resource))); 205var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 223await executable.Resource.ProcessArgumentValuesAsync( 270var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 294var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 320var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 339var annotations = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().ToList(); 341annotation => Assert.True(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)), 342annotation => Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation))); 360var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Single(); 361Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)); 376Assert.Empty(executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 378var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource);
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 (32)
31.Resource; 54.Resource; 74var resource = builder.AddExecutable("test", "test.exe", ".").Resource; 98.Resource; 129.Resource; 159.Resource; 182.Resource; 202var resource = builder.AddContainer("test", "image").Resource; 226.Resource; 247.Resource; 251.Resource; 284.Resource; 325.Resource; 329.Resource; 365.Resource; 393.Resource; 423.Resource; 451.Resource; 473var resource = builder.AddContainer("test", "image").Resource; 499.Resource; 534.Resource; 564.Resource; 600.Resource; 660.Resource; 722.Resource; 756.Resource; 788Password = password.Resource 790.Resource; 820.Resource; 840var resource = builder.AddContainer("test", "image").Resource; 863.Resource; 907.Resource;
ExpressionResolverTests.cs (10)
128var csRef = new ConnectionStringReference(target.Resource, false); 144var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 182var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 219var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 267var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, serviceProvider).DefaultTimeout(); 293var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 312var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 330var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 335_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (42)
23Assert.Equal("nuget", externalService.Resource.Name); 24Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 25Assert.Null(externalService.Resource.UrlParameter); 36Assert.Equal("nuget", externalService.Resource.Name); 37Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 38Assert.Null(externalService.Resource.UrlParameter); 49Assert.Equal("nuget", externalService.Resource.Name); 50Assert.Null(externalService.Resource.Uri); 51Assert.NotNull(externalService.Resource.UrlParameter); 52Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name); 87Assert.Equal("nuget", externalService.Resource.Name); 88Assert.Equal(uriWithPath, externalService.Resource.Uri); 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(); 215await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 233Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 234Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 249Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 250Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 272Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations)); 286Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 342externalService.Resource.Name, 369externalService.Resource.Name, 396externalService.Resource.Name, 420Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 421var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 441Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 442var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 466Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 467var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 491var manifest = await ManifestUtils.GetManifest(project.Resource); 508Assert.Equal("service", externalService.Resource.Name); 509Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 523Assert.Equal("service", externalService.Resource.Name); 524Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 561var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Health\FriendlyHealthCheckErrorMessagesTests.cs (8)
32Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 33var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 72Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 73var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 112Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 113var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 149Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 150var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
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 (5)
97await eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(resource.Resource, app.Services)); 137await rns.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 139await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 143await rns.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 145await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
ManifestGenerationTests.cs (10)
102var redisManifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout(); 509param.Resource.Default = new GenerateParameterDefault() 547var manifest = await ManifestUtils.GetManifest(param.Resource).DefaultTimeout(); 567Source = sourceContainer.Resource, 573var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 610Source = sourceContainer.Resource, 616var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout(); 656Source = source1.Resource, 661Source = source2.Resource, 667var destManifest = await ManifestUtils.GetManifest(destContainer.Resource).DefaultTimeout();
Orchestrator\ApplicationOrchestratorTests.cs (103)
42await notifications.PublishUpdateAsync(resource.Resource, resource.Resource.Name, 68CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, resource.Resource.Name, 80var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 97if (item.Resource == parentResource.Resource) 101else if (item.Resource == childResource.Resource) 145if (item.Resource == parentResource.Resource) 149else if (item.Resource == childResource.Resource) 192applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) => 210Assert.Equal(resource.Resource, initEvent.Resource); 245if (item.Resource == parent.Resource) 249else if (item.Resource == child.Resource) 254else if (item.Resource == nestedChild.Resource) 258else if (item.Resource == child2.Resource) 311if (item.Resource == firstParent.Resource) 315else if (item.Resource == secondParent.Resource) 319else if (item.Resource == child.Resource) 363if (item.Resource == projectA.Resource) 367else if (item.Resource == projectB.Resource) 413new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource) 416new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource) 433applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) => 438applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) => 443applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) => 449await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, parentResource.Resource)); 472applicationEventing.Subscribe<ConnectionStringAvailableEvent>(resource.Resource, (_, _) => 477applicationEventing.Subscribe<BeforeResourceStartedEvent>(resource.Resource, (_, _) => 486await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, resource.Resource)); 487await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, "test-resource-dcp")); 514await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 515await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 517Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState)); 560container.Resource, 589container.Resource, 614await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Tool, resource.Resource, "tool-dcp")); 645await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 648Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent)); 653await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 654await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 685CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name)); 687await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 689Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent)); 694await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 711waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 728await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 734CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 737waiter.Resource.Name, 743await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 771waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 788await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 792CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 795waiter.Resource.Name, 820waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 832dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 833dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 840await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 843CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 846waiter.Resource.Name, 873waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 885dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 886dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 893await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 897CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 900waiter.Resource.Name, 905CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-def456")); 908waiter.Resource.Name, 955await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 958await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }).DefaultTimeout(); 960await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 962Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1007waiter.Resource.Name, 1011while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent) 1018await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }); 1026await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout(); 1028Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1046var connectionString = builder.AddConnectionString("cs", ReferenceExpression.Create($"Endpoint={referenced.Resource}")); 1059await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 1063await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1064await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1095waiter.Resource.Name, 1100Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor)); 1106await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1107await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1339var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1357parentContainer.Resource, 1365var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null; 1366var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1387var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1405parentContainer.Resource, 1413var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null; 1414var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1455if (item.Resource == parent.Resource) 1459else if (item.Resource == child.Resource) 1463else if (item.Resource == child2.Resource) 1493parent.WithChildRelationship(child.Resource) 1494.WithChildRelationship(child2.Resource); 1512if (item.Resource == parent.Resource) 1516else if (item.Resource == child.Resource) 1520else if (item.Resource == child2.Resource) 1566if (item.Resource == parentProject.Resource) 1570else if (item.Resource == childProject.Resource)
Orchestrator\RelationshipEvaluatorTests.cs (37)
21manager.WithRelationship(first.Resource, "Manages") 22.WithRelationship(first.Resource, "Manages") 23.WithRelationship(first.Resource, "Observes") 24.WithRelationship(second.Resource, "Manages"); 26Assert.Collection(manager.Resource.Annotations.OfType<ResourceRelationshipAnnotation>(), 27relationship => { Assert.Same(first.Resource, relationship.Resource); Assert.Equal("Manages", relationship.Type); }, 28relationship => { Assert.Same(first.Resource, relationship.Resource); Assert.Equal("Observes", relationship.Type); }, 29relationship => { Assert.Same(second.Resource, relationship.Resource); Assert.Equal("Manages", relationship.Type); }); 38var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 39var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource)); 40var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource)); 54Assert.Collection(parentChildLookup[parentResource.Resource], 55x => Assert.Equal(childResource.Resource, x), 56x => Assert.Equal(childWithAnnotationsResource.Resource, x)); 58Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource); 59Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource); 61Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]); 63Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource); 65Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]); 86Assert.Collection(parentChildLookup[parentResource.Resource], 87x => Assert.Equal(child1Resource.Resource, x), 88x => Assert.Equal(child2Resource.Resource, x)); 100parentResource.WithChildRelationship(child1Resource.Resource) 101.WithChildRelationship(child2Resource.Resource); 109Assert.Collection(parentChildLookup[parentResource.Resource], 110x => Assert.Equal(child1Resource.Resource, x), 111x => Assert.Equal(child2Resource.Resource, x)); 132Assert.Collection(parentChildLookup[parentResource.Resource], 133x => Assert.Equal(child1Resource.Resource, x), 134x => Assert.Equal(child2Resource.Resource, x)); 155Assert.Single(parentChildLookup[grandParentResource.Resource], parentResource.Resource); 156Assert.Single(parentChildLookup[parentResource.Resource], childResource.Resource);
ProjectRebuilderResourceTests.cs (4)
24var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 44project.Resource.GetProjectMetadata().ProjectPath, 62var launchDefaults = Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 78project.Resource.GetProjectMetadata().ProjectPath
ProjectResourceBuilderExtensionTests.cs (19)
53var annotation = project.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 73Assert.Contains(executable.Resource.Name, exception.Message); 93Assert.Contains(project.Resource.Name, exception.Message); 107Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 122Assert.Contains(project.Resource.Name, exception.Message); 137var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetProjectMetadata); 139Assert.Contains(project.Resource.Name, exception.Message); 154.Resource; 164Assert.Same(password.Resource, context.EnvironmentVariables[KnownAspNetCoreConfigNames.KestrelCertificatesDefaultPassword]); 182.Resource; 205.Resource; 253.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 341.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 345.GatherAsync(context, project.Resource, NullLogger.Instance, builder.ExecutionContext); 380.Resource; 418.Resource; 455.Resource; 492.Resource; 504Assert.Same(password.Resource, context.EnvironmentVariables[KnownAspNetCoreConfigNames.KestrelCertificatesDefaultPassword]);
ProjectResourceTests.cs (7)
715var args = await ArgumentEvaluator.GetArgumentListAsync(project.Resource).DefaultTimeout(); 723Assert.False(project.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 905Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 1009var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1020var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1081var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1102new BeforeResourceStartedEvent(appResource.Resource, app.Services),
PublishAsConnectionStringTests.cs (2)
22Assert.True(redis.Resource.TryGetLastAnnotation<ManifestPublishingCallbackAnnotation>(out _)); 24var manifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout();
PublishAsDockerfileTests.cs (5)
29var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 75var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 124var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 173var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 235var manifest = await ManifestUtils.GetManifest(project.Resource, manifestDirectory: path).DefaultTimeout();
Publishing\DotnetProgramArchiveTests.cs (13)
44await BuildAsync(app, resource.Resource, usePipeline, TestContext.Current.CancellationToken).DefaultTimeout(); 97var firstBuild = BuildAsync(firstApp, firstResource.Resource, false, TestContext.Current.CancellationToken); 98var secondBuild = BuildAsync(secondApp, secondResource.Resource, false, TestContext.Current.CancellationToken); 139() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 185() => BuildAsync(app, resource.Resource, false, cancellation.Token)).DefaultTimeout(); 227() => BuildAsync(app, resource.Resource, false, cancellation.Token)).DefaultTimeout(); 232() => BuildAsync(app, resource.Resource, false, cancellation.Token)); 267() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 293() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 321() => BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken)); 359await BuildAsync(app, resource.Resource, false, TestContext.Current.CancellationToken); 361IValueProvider imageReference = new ContainerImageReference(resource.Resource); 386Source = assets.Resource,
Publishing\PodmanSaveArgumentsTests.cs (1)
113IValueProvider imageReference = new ContainerImageReference(container.Resource);
Publishing\ResourceContainerImageManagerTests.cs (62)
44await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 81await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 108await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 141await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 180await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 216await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 248await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 286await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 298AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 330await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 343AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 369await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 403await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 436await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 487await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 516await imageBuilder.PushImageAsync(testResource.Resource, cts.Token); 521resource => Assert.Equal(testResource.Resource, resource)); 541imageBuilder.PushImageAsync(testResource.Resource, cts.Token)); 578await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token); 609await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 642await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 681imageBuilder.BuildImagesAsync([container.Resource], cts.Token)); 720imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 743() => imageBuilder.BuildImageAsync(project.Resource)); 784imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 833() => imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken)); 873await imageBuilder.BuildImageAsync(resource.Resource); 874await imageBuilder.BuildImageAsync(resource.Resource); 916Source = source.Resource, 950await imageBuilder.BuildImageAsync(resource.Resource); 956IValueProvider imageReference = new ContainerImageReference(resource.Resource); 1004Source = source.Resource, 1018() => imageBuilder.BuildImageAsync(resource.Resource)); 1061() => imageBuilder.BuildImageAsync(resource.Resource)); 1103() => imageBuilder.BuildImageAsync(resource.Resource)); 1135Source = source.Resource, 1146await imageBuilder.BuildImageAsync(resource.Resource); 1196Source = source.Resource, 1203await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 1287await imageBuilder.BuildImageAsync(resource.Resource, TestContext.Current.CancellationToken); 1365await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1439await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1535await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1581var annotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1588await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1684var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1725var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1754var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1785var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1791var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1817var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1865var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1898var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1933await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1939Assert.Equal(servicea.Resource, capturedResource); 1982await imageManager.BuildImagesAsync([servicea.Resource], cts.Token); 2028() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 2063() => imageManager.BuildImageAsync(container.Resource, cts.Token)); 2110() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token)); 2145() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 2180() => imageBuilder.BuildImageAsync(container.Resource, cts.Token));
RequiredCommandAnnotationTests.cs (4)
63var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 77var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 93var annotation = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().Single(); 109var annotations = resourceBuilder.Resource.Annotations.OfType<RequiredCommandAnnotation>().ToList();
ResourceBuilderLifetimeTests.cs (12)
23var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 49var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 65var annotation = Assert.Single(container.Resource.Annotations.OfType<PersistenceAnnotation>()); 82Assert.Equal(Lifetime.Persistent, container.Resource.GetLifetimeType()); 83var annotation = Assert.Single(container.Resource.Annotations.OfType<PersistenceAnnotation>()); 85Assert.Same(source.Resource, annotation.SourceResource); 89Assert.Equal(Lifetime.Session, container.Resource.GetLifetimeType()); 104Assert.True(container.Resource.TryGetParentProcessLifetime(out var parentProcessId, out var parentProcessTimestamp)); 110Assert.False(container.Resource.TryGetParentProcessLifetime(out _, out _)); 126Assert.Equal(Lifetime.Persistent, container.Resource.GetLifetimeType()); 153var exception = Assert.Throws<InvalidOperationException>(() => containerA.Resource.GetLifetimeType()); 166var annotation = container.Resource.Annotations.OfType<PersistenceAnnotation>().Single();
ResourceCommandAnnotationTests.cs (6)
60resourceBuilder.Resource.AddLifeCycleCommands(); 62var startCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == commandName); 86resourceBuilder.Resource.AddLifeCycleCommands(); 89var restartCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == KnownResourceCommands.RestartCommand); 165containerResource.Resource.AddLifeCycleCommands(); 170Assert.DoesNotContain(containerResource.Resource.Annotations.OfType<ResourceCommandAnnotation>(), a => a.Name == KnownResourceCommands.RebuildCommand);
ResourceCommandServiceTests.cs (24)
83var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 103var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 124var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 161var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 193var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 199var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 232var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 237var resourceNames = custom.Resource.GetResolvedResourceNames(); 267var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 297var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 335var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 341var resourceNames = custom.Resource.GetResolvedResourceNames(); 378var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 401var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 423var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "resource-start"); 465var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, legacyCommandName); 483var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 504var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 599custom.Resource, 639custom.Resource, 1729var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 1755await resourceNotificationService.WaitForResourceAsync(project.Resource.Name, e => KnownResourceStates.BuildableStates.Contains(e.Snapshot.State?.Text), cts.Token).DefaultTimeout(TimeSpan.FromMinutes(2)); 1758var result = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2)); 1767var secondResult = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2));
ResourceDependencyTests.cs (172)
24var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 26Assert.Contains(redis.Resource, dependencies); 41var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 43Assert.Contains(api.Resource, dependencies); 58var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 60Assert.Contains(api.Resource, dependencies); 97var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 99Assert.Contains(host.Resource, dependencies); 100Assert.DoesNotContain(nonHost.Resource, dependencies); 115var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 117Assert.Contains(db.Resource, dependencies); 118Assert.Contains(postgres.Resource, dependencies); // Parent of db 128.WithConnectionStringRedirection(redis.Resource); 134var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 136Assert.Contains(redirect.Resource, dependencies); 137Assert.Contains(redis.Resource, dependencies); // The redirect target 149var dependencies = await db.Resource.GetResourceDependenciesAsync(executionContext); 151Assert.Contains(postgres.Resource, dependencies); 164var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 166Assert.Contains(redis.Resource, dependencies); 179var dependencies = await mainContainer.Resource.GetResourceDependenciesAsync(executionContext); 181Assert.Contains(initContainer.Resource, dependencies); 194var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 196Assert.Contains(param.Resource, dependencies); 209var dependencies = await exe.Resource.GetResourceDependenciesAsync(executionContext); 211Assert.Contains(param.Resource, dependencies); 226var dependencies = await executable.Resource.GetResourceDependenciesAsync( 234Assert.Collection(dependencies, dependency => Assert.Same(param.Resource, dependency)); 248context.EnvironmentVariables["CONFIG"] = param.Resource; 260var beforePriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 265var annotation = executable.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 267new EnvironmentCallbackContext(executionContext, executable.Resource, new Dictionary<string, object>())); 271var afterPriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 273Assert.Contains(param.Resource, afterPriming); 288var dependencies = await executable.Resource.GetResourceDependenciesAsync( 292Assert.Collection(dependencies, dependency => Assert.Same(active.Resource, dependency)); 305var dependencies = await container.Resource.GetResourceDependenciesAsync( 325var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 327Assert.Contains(host.Resource, dependencies); 328Assert.Contains(port.Resource, dependencies); 329Assert.Contains(password.Resource, dependencies); 345var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 347Assert.Contains(b.Resource, dependencies); 348Assert.Contains(c.Resource, dependencies); 364var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 366Assert.Contains(b.Resource, dependencies); 367Assert.Contains(c.Resource, dependencies); 385var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 387Assert.Contains(b.Resource, dependencies); 388Assert.Contains(c.Resource, dependencies); 405var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 407Assert.Contains(b.Resource, dependencies); 408Assert.Contains(c.Resource, dependencies); 409Assert.Contains(d.Resource, dependencies); 426var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 428Assert.Contains(b.Resource, dependencies); 429Assert.Contains(c.Resource, dependencies); 430Assert.Contains(d.Resource, dependencies); 431Assert.Contains(e.Resource, dependencies); 449var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 450Assert.Contains(b.Resource, dependencies); 451Assert.Contains(c.Resource, dependencies); 452Assert.Contains(d.Resource, dependencies); 470var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 472Assert.Contains(backend.Resource, dependencies); 488var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 490Assert.Contains(db.Resource, dependencies); 491Assert.Contains(postgres.Resource, dependencies); // Parent included due to transitive dependency 505var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 507Assert.DoesNotContain(unrelatedResource.Resource, dependencies); 518var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 520Assert.DoesNotContain(container.Resource, dependencies); 534var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 536Assert.DoesNotContain(dependentContainer.Resource, dependencies); 549var dependencies = await db1.Resource.GetResourceDependenciesAsync(executionContext); 551Assert.DoesNotContain(db2.Resource, dependencies); 552Assert.Contains(postgres.Resource, dependencies); // Parent IS included 567var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 569Assert.Contains(b.Resource, dependencies); 570Assert.DoesNotContain(c.Resource, dependencies); 571Assert.DoesNotContain(d.Resource, dependencies); 582var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 598var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 600Assert.Contains(redis.Resource, dependencies); 618var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 620Assert.Contains(b.Resource, dependencies); 621Assert.DoesNotContain(c.Resource, dependencies); 638var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.Recursive); 640Assert.Contains(b.Resource, dependencies); 641Assert.Contains(c.Resource, dependencies); 664var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 667Assert.Contains(b.Resource, dependencies); 682var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 686Assert.Contains(db.Resource, dependencies); 687Assert.Contains(postgres.Resource, dependencies); 707var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 710Assert.Contains(b.Resource, dependencies); 712Assert.DoesNotContain(c.Resource, dependencies); 731var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 733Assert.Contains(b.Resource, dependencies); 734Assert.Contains(c.Resource, dependencies); 754[a.Resource, b.Resource], executionContext); 756Assert.Contains(x.Resource, dependencies); 757Assert.Contains(y.Resource, dependencies); 774[a.Resource, b.Resource], executionContext); 776Assert.Contains(x.Resource, dependencies); 793[a.Resource, b.Resource], executionContext); 796Assert.DoesNotContain(a.Resource, dependencies); 797Assert.DoesNotContain(b.Resource, dependencies); 816[a.Resource, b.Resource], executionContext); 819Assert.Contains(c.Resource, dependencies); 821Assert.DoesNotContain(a.Resource, dependencies); 822Assert.DoesNotContain(b.Resource, dependencies); 846[a.Resource, b.Resource, c.Resource], executionContext); 872[a.Resource, c.Resource], executionContext); 874Assert.Contains(b.Resource, dependencies); 875Assert.Contains(d.Resource, dependencies); 876Assert.DoesNotContain(a.Resource, dependencies); 877Assert.DoesNotContain(c.Resource, dependencies); 903[a.Resource, d.Resource], executionContext, new ResourceDependencyDiscoveryOptions 909Assert.Contains(b.Resource, dependencies); 910Assert.Contains(e.Resource, dependencies); 911Assert.DoesNotContain(c.Resource, dependencies); 912Assert.DoesNotContain(f.Resource, dependencies); 938[a.Resource, b.Resource, c.Resource], executionContext); 941Assert.Contains(d.Resource, dependencies); 942Assert.DoesNotContain(a.Resource, dependencies); 943Assert.DoesNotContain(b.Resource, dependencies); 944Assert.DoesNotContain(c.Resource, dependencies); 961[parent.Resource, child.Resource], executionContext); 964Assert.DoesNotContain(parent.Resource, dependencies); 965Assert.DoesNotContain(child.Resource, dependencies); 989[a.Resource, b.Resource, c.Resource], executionContext); 991Assert.Contains(x.Resource, dependencies); 992Assert.Contains(y.Resource, dependencies); 993Assert.Contains(z.Resource, dependencies); 1013var singleDeps = await a.Resource.GetResourceDependenciesAsync(executionContext); 1014var multiDeps = await ResourceExtensions.GetDependenciesAsync([a.Resource], executionContext); 1034enableTls.Resource, 1043var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1045Assert.Contains(enableTls.Resource, dependencies); 1046Assert.Contains(tlsSuffix.Resource, dependencies); 1061flag.Resource, 1070var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1072Assert.Contains(flag.Resource, dependencies); 1073Assert.Contains(primary.Resource, dependencies); 1074Assert.Contains(secondary.Resource, dependencies); 1089innerFlag.Resource, 1095outerFlag.Resource, 1104var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1106Assert.Contains(outerFlag.Resource, dependencies); 1107Assert.Contains(innerFlag.Resource, dependencies); 1108Assert.Contains(paramA.Resource, dependencies); 1109Assert.Contains(paramB.Resource, dependencies); 1110Assert.Contains(paramC.Resource, dependencies); 1122flag.Resource, 1132var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1135Assert.Contains(flag.Resource, dependencies); 1136Assert.Contains(param.Resource, dependencies);
ResourceExtensionsTests.cs (56)
43Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 44Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 55Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 56Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 67Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 68Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 79Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 80Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 90Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 91Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 102Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 103Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 114var child = builder.AddResource(new ChildResource("child", parent.Resource)) 117Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 118Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 129var child = builder.AddResource(new ChildResource("child", parent.Resource)); 131Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 132Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 143var child = builder.AddResource(new ChildResource("child", parent.Resource)) 146Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 147Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 158var child = builder.AddResource(new ChildResource("child", parent: parent.Resource)) 161var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource)) 164Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 165Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 178.WithAnnotation(new DeploymentTargetAnnotation(deploymentTarget.Resource) 180ComputeEnvironment = annotationEnvironment.Resource 183var annotation = resource.Resource.GetDeploymentTargetAnnotation(requestedEnvironment.Resource); 194Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 204Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 223var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 258var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 293var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout(); 327.Resource.GetArgumentValuesAsync().DefaultTimeout(); 339.Resource.GetArgumentValuesAsync().DefaultTimeout(); 357var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 366Resource = containerResource.Resource, 404var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList(); 414Resource = containerResource.Resource, 434Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 440Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 444Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 461var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 471Resource = containerResource.Resource, 488var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 500var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 512Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 520var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 524Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 542var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 618var result = resource.Resource.TryGetInstances(out var instances); 634var result = resource.Resource.TryGetInstances(out var instances); 655var result = resource.Resource.GetResolvedResourceNames(); 670var result = resource.Resource.GetResolvedResourceNames(); 684var endpoint = Assert.Single(resource.Resource.ResolveEndpoints());
ResourceFailureLoggingTests.cs (6)
36await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.Finished, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 59await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 85Assert.False(Directory.Exists(executable.Resource.WorkingDirectory)); 90await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 96&& line.Contains($"WorkingDirectory = {executable.Resource.WorkingDirectory}") 104var category = $"{builder.ApplicationBuilder.Environment.ApplicationName}.Resources.{builder.Resource.Name}";
ResourceNotificationTests.cs (3)
37var annotation = custom.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().SingleOrDefault(); 1705await notificationService.PublishUpdateAsync(resourceBuilder.Resource, snapshot => snapshot with { State = state, ExitCode = exitCode }).DefaultTimeout(); 1706Assert.True(notificationService.TryGetCurrentState(resourceBuilder.Resource.Name, out var resourceEvent));
ResourceTraitBuilderTests.cs (4)
29resource.Resource.Annotations.OfType<TraitAnnotation>().Select(t => (t.Name, t.Value))); 53var properties = ResourceTraitSnapshotProperties.AddTraitProperties(resource.Resource, [source]); 71resource.Resource.Annotations.OfType<TraitAnnotation>().Select(t => (t.Name, t.Value))); 86resource.Resource.Annotations.OfType<TraitAnnotation>().Select(t => t.Value));
ResourceWithProbeTests.cs (3)
17var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 31var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 51var 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");
TestProgramModelTests.cs (2)
29var project = Assert.IsType<DotnetProjectResource>(builder.Resource); 41var integrationService = Assert.IsType<DotnetProjectResource>(program.IntegrationServiceABuilder?.Resource);
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 (27)
149var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 162var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 197var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 213var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 275var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 303var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 330var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 357var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 384var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 411var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 438var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 469var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 537var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 562var manifests = await ManifestUtils.GetManifests([container0.Resource, container1.Resource]).DefaultTimeout(); 606var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 860var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 877var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 912var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 950Assert.False(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var annotations)); 967Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 984Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 1038var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 1069var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 1074EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 1103var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 1108EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>());
WithEnvironmentTests.cs (37)
41container.Resource, 70.WithEnvironment("HOST", $"{test.Resource};name=1"); 72var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 73var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 87Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 92Assert.Same(container.Resource, r.Resource); 97Assert.Same(test.Resource, r.Resource); 118Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 123Assert.Same(container.Resource, r.Resource); 151var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 175var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout(); 181var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 186Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 191Assert.Same(sourceBuilder.Resource, r.Resource); 218var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 222Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 227Assert.Same(projectA.Resource, r.Resource); 239var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 255var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 271var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 288var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 292Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 297Assert.Same(parameter.Resource, r.Resource); 311var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, 328projectA.Resource, 354var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 378var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 394projectA.Resource, 402projectA.Resource, 415var testValue = new TestValueWithReferences("test-value", resourceA.Resource); 421Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 424Assert.Same(resourceA.Resource, relationship.Resource); 428projectA.Resource, 475projectA.Resource, 483projectA.Resource, 490Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 493Assert.Same(container.Resource, relationship.Resource);
WithHttpCommandTests.cs (49)
143await MoveResourceToRunningStateAsync(app, service.Resource); 145var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 205var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 211Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name); 238var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().FirstOrDefault(); 279var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 315var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 375await MoveResourceToRunningStateAsync(app, service.Resource); 387var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout(); 414var commands = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 455await MoveResourceToRunningStateAsync(app, service.Resource); 457var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 480await MoveResourceToRunningStateAsync(app, service.Resource); 482var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", cts.Token).DefaultTimeout(); 512await MoveResourceToRunningStateAsync(app, service.Resource); 514var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 547await MoveResourceToRunningStateAsync(app, service.Resource); 549var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 627await app.ResourceNotifications.PublishUpdateAsync(serviceA.Resource, s => s with 631await app.ResourceNotifications.WaitForResourceAsync(serviceA.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 634await MoveResourceToRunningStateAsync(app, serviceB.Resource); 636var result = await app.ResourceCommands.ExecuteCommandAsync(serviceB.Resource, "mycommand").DefaultTimeout(); 664Assert.Equal(service.Resource.Name, requestContext.ResourceName); 678await MoveResourceToRunningStateAsync(app, service.Resource); 680var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 708Assert.Equal(service.Resource.Name, resultContext.ResourceName); 722await MoveResourceToRunningStateAsync(app, service.Resource); 724var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 776await MoveResourceToRunningStateAsync(app, service.Resource); 788var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand", arguments).DefaultTimeout(); 815await MoveResourceToRunningStateAsync(app, service.Resource); 817var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 841await MoveResourceToRunningStateAsync(app, service.Resource); 843var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 868await MoveResourceToRunningStateAsync(app, service.Resource); 870var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 896await MoveResourceToRunningStateAsync(app, service.Resource); 898var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 923await MoveResourceToRunningStateAsync(app, service.Resource); 925var result = await app.ResourceCommands.ExecuteCommandAsync(service.Resource, "mycommand").DefaultTimeout(); 950await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 956service.Resource.Name, 962await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 969service.Resource.Name, 1005await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 1012service.Resource.Name, 1020await app.ResourceNotifications.PublishUpdateAsync(service.Resource, s => s with 1027service.Resource.Name, 1082var endpointAnnotation = service.Resource.Annotations.OfType<EndpointAnnotation>().Single();
WithIconNameTests.cs (7)
20var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 34var iconAnnotation = container.Resource.Annotations.OfType<ResourceIconAnnotation>().Single(); 78Assert.Single(container.Resource.Annotations.OfType<ResourceIconAnnotation>()); 79Assert.Single(parameter.Resource.Annotations.OfType<ResourceIconAnnotation>()); 80Assert.Single(project.Resource.Annotations.OfType<ResourceIconAnnotation>()); 93var iconAnnotations = container.Resource.Annotations.OfType<ResourceIconAnnotation>().ToList(); 101Assert.True(container.Resource.TryGetLastAnnotation<ResourceIconAnnotation>(out var lastAnnotation));
WithOtlpExporterTests.cs (23)
46container.Resource, 72container.Resource, 92container.Resource, 97var annotation = Assert.Single(container.Resource.Annotations.OfType<OtlpExporterAnnotation>()); 114container.Resource, 137container.Resource, 158dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: endpointName, uriScheme: "http", port: 18889, isProxied: true, transport: transport)); 174var annotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == endpointName); 178container.Resource, 195dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 196dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpHttpEndpointName, uriScheme: "http", port: 18890, isProxied: true)); 204var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 207var httpAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpHttpEndpointName); 211container.Resource, 234container.Resource, 250dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 259var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 263executable.Resource, 280dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 294var collectorEndpoint = collector.Resource.GetEndpoint("otlp-grpc"); 316var dashboardAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 319var collectorAnnotation = collector.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "otlp-grpc"); 327container.Resource,
WithProcessCommandTests.cs (47)
71var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 111var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 124var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-command").DefaultTimeout(); 190var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "options-callback-command", arguments).DefaultTimeout(); 251var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 269var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-command", arguments).DefaultTimeout(); 276Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 313var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-accepted-exit-code").DefaultTimeout(); 334var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 384var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "echo-argument", arguments).DefaultTimeout(); 390Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 444ResourceName = resource.Resource.Name, 488var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "async-factory").DefaultTimeout(); 522var firstResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 523var secondResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 566var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "many-lines").DefaultTimeout(); 599var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "display-immediately").DefaultTimeout(); 623var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "no-output").DefaultTimeout(); 645var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail-no-output").DefaultTimeout(); 673var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "accepted-exit-code").DefaultTimeout(); 711var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "failure-display-immediately").DefaultTimeout(); 735var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "log-output").DefaultTimeout(); 742var logs = await ConsoleLoggingTestHelpers.WatchForLogsAsync(loggerService, 4, resource.Resource).DefaultTimeout(); 791var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "custom-result").DefaultTimeout(); 800Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 833var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "ordered-output").DefaultTimeout(); 862var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail").DefaultTimeout(); 898var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "argument-fidelity").DefaultTimeout(); 922var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "stdin").DefaultTimeout(); 945var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "path-executable").DefaultTimeout(); 969var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "working-directory").DefaultTimeout(); 997var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment").DefaultTimeout(); 1023var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "invalid-environment-name").DefaultTimeout(); 1049var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-environment-value").DefaultTimeout(); 1087var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-options").DefaultTimeout(); 1125var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-accepted-exit-code").DefaultTimeout(); 1150var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-default-options").DefaultTimeout(); 1213var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, $"invalid-export-{i}").DefaultTimeout(); 1260var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "default-success-exit-codes").DefaultTimeout(); 1284var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment-inheritance").DefaultTimeout(); 1307var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "missing").DefaultTimeout(); 1331var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "process-task-failure").DefaultTimeout(); 1354var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 1380var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-exception").DefaultTimeout(); 1404var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-argument").DefaultTimeout(); 1442var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "validation-failure").DefaultTimeout(); 1472var commandTask = app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "wait", cts.Token);
WithReferenceTests.cs (68)
36var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 61var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 88var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 113var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 140var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 201project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 224consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 239var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 252var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 297var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 302Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 305Assert.Same(projectA.Resource, r.Resource); 320var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 340var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 370var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 419var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 447var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 473var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 481Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 484Assert.Same(projectA.Resource, r.Resource); 502var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 510Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 513Assert.Same(projectA.Resource, r.Resource); 532var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 554var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 573await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 590var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 609await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 629var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 645var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 661var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 680var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 710var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 716Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 719Assert.Same(resource.Resource, r.Resource); 720Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships)); 725Assert.Same(endpoint.Resource, r.Resource); 730Assert.Same(key.Resource, r.Resource); 735Assert.Same(endpoint.Resource, r.Resource); 740Assert.Same(key.Resource, r.Resource); 762var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 784var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 808var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 825var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 848var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 877var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 900var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 922var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 945var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 946foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 952Assert.Same(resource.Resource, reference.Resource); 956project.Resource, 986.WithEnvironment("ConnectionStrings__my-db", new ConnectionStringReference(standalone.Resource, optional: false)) 990project.Resource, 1030var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 1033foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 1056var context = new EnvironmentCallbackContext(builder.ExecutionContext, project.Resource); 1059foreach (var callback in project.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>()) 1085project.Resource, 1108project.Resource, 1137resource.Resource.ConnectionString = "Host=after"; 1141project.Resource, 1189var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1219var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1249var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1270var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1290var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 1310var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithTerminalTests.cs (28)
86var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 109var properties = TerminalResourceSnapshotProperties.AddTerminalProperties(resource.Resource, resource.Resource.Name, []); 137var properties = TerminalResourceSnapshotProperties.AddTerminalProperties(resource.Resource, resource.Resource.Name, []); 160var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 229Assert.Same(resource.Resource, single.Parent); 243var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 258var waitAnnotations = resource.Resource.Annotations.OfType<WaitAnnotation>() 284var annotation = container.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 358var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 376var parentEnvironment = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(resource.Resource, serviceProvider: app.Services); 413var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 450.Select(resource => resource.Resource.Annotations.OfType<TerminalAnnotation>().Single()) 527var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 1083Assert.False(resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().IsInitialized); 1158var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().FirstOrDefault(); 1217var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1236var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1266var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1287var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1316firstResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1322secondResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1334resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts); 1364var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1404foreach (var host in resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts) 1463Assert.True(resource.Resource.HasAnnotationOfType<ForceProcessExecutionAnnotation>()); 1478var host = Assert.Single(resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts);
WithUrlsTests.cs (46)
120if (notification.Resource == custom.Resource && notification.Snapshot.Urls.Length > 0) 136await rns.WaitForResourceAsync(custom.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 196var callback = Assert.Single(surrogateBuilder.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 221managed.Resource, 224var callback = Assert.Single(managed.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 229Assert.Same(manager.Resource, managementUrl.Endpoint?.Resource); 258var urlsCallback = projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>() 271Assert.Empty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 275Assert.NotEmpty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 383var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 407var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 422projectA.WithUrl($"{projectA.Resource.GetEndpoint("https")}/test", "Example") 433var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 461var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 494var urls = projectB.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 498Assert.StartsWith($"http://{projectB.Resource.Name.ToLowerInvariant()}{expectedHostSuffix}", u.Url); 537var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 560var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 590var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 608var httpEndpoint = servicea.Resource.GetEndpoint("http"); 617servicea.Resource.Name, 631var httpEndpoint = servicea.Resource.GetEndpoint("http"); 642servicea.Resource.Name, 675servicea.Resource.Name, 709if (notification.Resource == servicea.Resource && notification.Snapshot.Urls.Length > 0) 725await rns.WaitForResourceAsync(servicea.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 878var allUrls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 939var endpointUrl = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test"); 978var launchProfileUrls = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().Where(u => u.Endpoint?.EndpointName == "http"); 1019var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 1036Assert.Same(manager.Resource, url.Endpoint?.Resource); 1052var url = Assert.Single(managed.Resource.Annotations.OfType<ResourceUrlAnnotation>(), u => u.DisplayText == "Manage"); 1053Assert.Same(manager.Resource, url.Endpoint?.Resource); 1081var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 1107Endpoint = resourceA.Resource.GetEndpoint("api") 1118resourceB.Resource.Name, 1120&& e.Snapshot.Urls.Length == resourceB.Resource.GetEndpoints().ToArray().Length + 1 1123using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1124using var resourceBClient = app.CreateHttpClientWithResilience(resourceB.Resource.Name, "http"); 1159Endpoint = resourceA.Resource.GetEndpoint("api") 1170resourceB.Resource.Name, 1179var startResult = await app.ResourceCommands.ExecuteCommandAsync(resourceA.Resource, KnownResourceCommands.StartCommand).DefaultTimeout(TestConstants.DefaultOrchestratorTestTimeout); 1181using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1185resourceB.Resource.Name, 1190var stopResult = await app.ResourceCommands.ExecuteCommandAsync(resourceA.Resource, KnownResourceCommands.StopCommand).DefaultTimeout(TestConstants.DefaultOrchestratorTestTimeout); 1194resourceB.Resource.Name,
WithVolumeTests.cs (16)
36container.Resource, 42var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 70var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 85executable.Resource, 129executable.Resource, 168var expectedPath = VolumeMountPathResolver.GetLocalPath(store, custom.Resource, "data"); 171custom.Resource, 211var expectedProjectPath = VolumeMountPathResolver.GetLocalPath(store, project.Resource, "data"); 212var expectedExecutablePath = VolumeMountPathResolver.GetLocalPath(store, executable.Resource, "data"); 218project.Resource, 221executable.Resource, 241project.Resource, 245executable.Resource, 279project.Resource, 300project.Resource, 318project.Resource,
Aspire.Hosting.TestUtilities (5)
Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Utils\OtlpExporterActivationTestExtensions.cs (4)
14if (!builder.Resource.TryGetLastAnnotation<OtlpExporterAnnotation>(out var exporter)) 16throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not have an OTLP exporter annotation."); 24builder.Resource.Annotations.Remove(exporter); 25builder.Resource.Annotations.Add(new TestOtlpExporterAnnotation(activationEnvironmentVariables)
Aspire.Hosting.Valkey (2)
ValkeyBuilderExtensions.cs (2)
126var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 211return builder.WithReplCommand(ct => CreateReplOptionsAsync(builder.Resource, ct));
Aspire.Hosting.Valkey.Tests (32)
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);
tests\Shared\ContainerReplCommandTestBase.cs (7)
29var commands = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToArray(); 51var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 76await notifications.PublishUpdateAsync(resource.Resource, snapshot => snapshot with 81var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 85ResourceName = resource.Resource.Name, 104var command = Assert.Single(resource.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 108ResourceName = resource.Resource.Name,
ValkeyFunctionalTests.cs (13)
39[$"ConnectionStrings:{valkey.Resource.Name}"] = await valkey.Resource.ConnectionStringExpression.GetValueAsync(default) 42hb.AddRedisClient(valkey.Resource.Name); 103[$"ConnectionStrings:{valkey1.Resource.Name}"] = $"{await valkey1.Resource.ConnectionStringExpression.GetValueAsync(default)},allowAdmin=true" 106hb.AddRedisClient(valkey1.Resource.Name); 155[$"ConnectionStrings:{valkey2.Resource.Name}"] = await valkey2.Resource.ConnectionStringExpression.GetValueAsync(default) 158hb.AddRedisClient(valkey2.Resource.Name); 227await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 229await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 235await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
ValkeyReplCommandTests.cs (3)
45var options = await ValkeyBuilderExtensions.CreateReplOptionsAsync(valkey.Resource, TestContext.Current.CancellationToken); 65var options = await ValkeyBuilderExtensions.CreateReplOptionsAsync(valkey.Resource, TestContext.Current.CancellationToken); 81await VerifyReplAsync(app, valkey.Resource, "valkey-cli (valkey)", "127.0.0.1:", "PING\r", "PONG");
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)
96YarpEnvConfigGenerator.PopulateEnvVariables(ctx.EnvironmentVariables, yarpBuilder.Resource.Routes, yarpBuilder.Resource.Clusters); 143builder.Resource.HostHttpsPort = port; 242if (builder.Resource.HasAnnotationOfType<DockerfileBuilderCallbackAnnotation>())
Aspire.Hosting.Yarp.Tests (39)
AddYarpTests.cs (28)
54var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 77var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 103YarpEnvConfigGenerator.PopulateEnvVariables(env, yarp.Resource.Routes, yarp.Resource.Clusters); 126var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 148var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, testProvider); 173var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Run, testProvider); 188var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 202var annotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 214var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 227var annotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 232Resource = yarp.Resource, 260Assert.Empty(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 261Assert.Empty(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 278var containerFilesAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<ContainerFilesDestinationAnnotation>()); 279Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 283var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(yarp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 288Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 305var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 312Resource = yarp.Resource, 335var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 343Resource = yarp.Resource, 368var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 375Resource = yarp.Resource, 406var buildAnnotation = Assert.Single(yarp.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 413Resource = yarp.Resource, 446var httpsEndpoint = Assert.Single(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https"); 471Assert.DoesNotContain(yarp.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "https");
YarpClusterTests.cs (8)
82var httpCluster = new YarpCluster(httpService.Resource); 89var httpsCluster = new YarpCluster(httpsService.Resource); 100var cluster = new YarpCluster(service.Resource); 113var clusterA = new YarpCluster(serviceA.Resource); 259var cluster = Assert.Single(yarp.Resource.Clusters); 260var storedRoute = Assert.Single(yarp.Resource.Routes); 280var cluster = Assert.Single(yarp.Resource.Clusters); 281var storedRoute = Assert.Single(yarp.Resource.Routes);
YarpFunctionalTests.cs (3)
54await app.ResourceNotifications.WaitForResourceHealthyAsync(backend.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name, cts.Token); 57using var httpClient = app.CreateHttpClient(yarp.Resource.Name);
Aspire.Playground.Tests (1)
tests\Aspire.Hosting.TestUtilities\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
AzureKusto.AppHost (2)
AzureKustoReadWriteDatabaseResourceBuilderExtensions.cs (2)
30if (!dbBuilder.Resource.Parent.IsEmulator) 32var logger = evt.Services.GetRequiredService<ResourceLoggerService>().GetLogger(dbBuilder.Resource);
BicepSample.AppHost (1)
AppHost.cs (1)
28temp00 = bicep0.Resource;
DotnetTool.AppHost (2)
AppHost.cs (2)
49foreach(var toolAnnotation in substituted.Resource.Annotations.OfType<DotnetToolAnnotation>().ToList()) 51substituted.Resource.Annotations.Remove(toolAnnotation);
FoundryEndToEnd.AppHost (1)
AppHost.cs (1)
11var model = foundry.Resource.IsEmulator
KafkaBasic.AppHost (2)
AppHost.cs (2)
11.WithArgs(kafka.Resource.Name); 15.WithArgs(kafka.Resource.Name);
ParameterEndToEnd.AppHost (1)
AppHost.cs (1)
32var cs = builder.AddConnectionString("cs", ReferenceExpression.Create($"sql={db.Resource.Parent.PrimaryEndpoint};rows={insertionrows}"));
Pipelines.AppHost (1)
AppHost.cs (1)
241var resource = withBindMount.Resource;
Stress.AppHost (9)
AppHost.cs (2)
45IResource parent = rb.Resource; 51parent = nestedRb.Resource;
CommandResources.cs (7)
38var iconCommands = builder.AddCommandGroup("icon-commands", serviceBuilder.Resource); 118var argumentCommands = builder.AddCommandGroup("argument-commands", serviceBuilder.Resource); 500var processCommands = builder.AddCommandGroup("process-commands", serviceBuilder.Resource); 998var largeTelemetryCommands = builder.AddHttpCommandGroup("large-telemetry-commands", serviceBuilder.Resource); 1170var interactionCommands = builder.AddCommandGroup("interaction-commands", telemetryBuilder.Resource); 1173var lifecycleCommands = builder.AddCommandGroup("lifecycle-commands", telemetryBuilder.Resource); 1202var resultCommands = builder.AddCommandGroup("result-commands", telemetryBuilder.Resource);
Terminals.AppHost (7)
TerminalInteractionCommands.cs (7)
86ResolveContainerName(container.Resource), 88title: $"Shell into '{container.Resource.Name}'", 89message: $"Runs `docker exec -it {ResolveContainerName(container.Resource)} /bin/sh` from the AppHost process.")); 107ResolveContainerName(container.Resource), 110message: $"Runs `docker exec -it {ResolveContainerName(container.Resource)} node` from the AppHost process.")); 170var containerName = ResolveContainerName(container.Resource); 177Title = container.Resource.Name,
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);
WebPubSub.AppHost (1)
AppHost.cs (1)
13chat.AddEventHandler($"{callbackEndpoint}/eventhandler/{chat.Resource.HubName}", systemEvents: ["connected"]);