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)
2647public T Resource { get; }
6494 references to Resource
Aspire.Hosting (247)
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); 596var unwrapped = valueProvider is IResourceBuilder<IResource> rb ? rb.Resource : valueProvider; 716builder.AppendFormatted(valueProvider.Resource, format);
ApplicationModel\ResourceExtensions.cs (5)
597(DistributedApplicationOperation.Run, IResourceBuilder<IResource> rb) when rb.Resource is IValueProvider provider => await resource.GetValue(executionContext, key, provider, logger, cancellationToken).ConfigureAwait(false), 599(DistributedApplicationOperation.Publish, IResourceBuilder<IResource> rb) when rb.Resource is IManifestExpressionProvider provider => new(provider.ValueExpression, false), 1805if (dependencies.Add(resourceBuilder.Resource)) 1807newDependencies.Add(resourceBuilder.Resource); 1809value = resourceBuilder.Resource;
Ats\CoreExports.cs (1)
177return 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)
58if (builder.Resource.IsExcludedFromPublish()) 63if (builder.Resource.RequiresImageBuild()) 67Name = $"build-{builder.Resource.Name}", 72builder.Resource, 78Resource = builder.Resource 83if (builder.Resource.RequiresImageBuildAndPush()) 87Name = $"push-{builder.Resource.Name}", 88Action = ctx => PipelineStepHelpers.PushImageToRegistryAsync(builder.Resource, ctx), 91Resource = builder.Resource 101var buildSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.BuildCompute); 102var pushSteps = context.GetSteps(builder.Resource, WellKnownPipelineTags.PushContainerImage); 345builder.Resource.Entrypoint = entrypoint; 363if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 369if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation && 394if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 435if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation) 442builder.Resource.Annotations.Add(imageAnnotation); 463if (builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault() is { } buildAnnotation) 486if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } existingImageAnnotation) 620throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a container image specified. Use WithImage to specify the container image and tag."); 634return builder.WithManifestPublishingCallback(context => context.WriteContainerAsync(builder.Resource)); 720if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 870if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { }) 1151var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1155throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildArg."); 1203if (value.Resource.Secret) 1205throw new InvalidOperationException($"Cannot add secret parameter '{value.Resource.Name}' as build argument '{name}' while configuring resource '{builder.Resource.Name}'. Use WithBuildSecret instead."); 1208return builder.WithBuildArg(name, value.Resource); 1282var annotation = builder.Resource.Annotations.OfType<DockerfileBuildAnnotation>().SingleOrDefault(); 1286throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildSecret."); 1289annotation.BuildSecrets[name] = value.Resource; 1707var callbackAnnotation = builder.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault();
DistributedApplicationEventingExtensions.cs (2)
141builder.ApplicationBuilder.Eventing.Subscribe<TEvent>(builder.Resource, (evt, ct) => callback(builder.Resource, evt, ct));
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 (9)
134if (builder.ApplicationBuilder.TryCreateResourceBuilder<ExecutableContainerResource>(builder.Resource.Name, out var existingBuilder)) 152builder.ApplicationBuilder.Resources.Remove(builder.Resource); 154var container = new ExecutableContainerResource(builder.Resource); 157cb.WithImage(builder.Resource.Name); 158cb.WithDockerfile(contextPath: builder.Resource.WorkingDirectory); 185var executableAnnotation = builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault(); 197builder.Resource.Annotations.Add(executableAnnotation); 216if (builder.Resource.Annotations.OfType<ExecutableAnnotation>().LastOrDefault() is { } executableAnnotation) 223throw 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 (2)
140AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment); 177AddOtlpEnvironment(builder.Resource, builder.ApplicationBuilder.Configuration, builder.ApplicationBuilder.Environment, protocol);
ParameterResourceBuilderExtensions.cs (5)
214builder.Resource.Description = description; 215builder.Resource.EnableDescriptionMarkdown = enableMarkdown; 247builder.Resource.Annotations.Add(new InputGeneratorAnnotation(createInput)); 264builder.Resource.Annotations.Add(new InputGeneratorAnnotation(parameter => new InteractionInput 387var parameter = new ParameterResource(builder.Resource.Name, _ => "", secret: true);
Pipelines\PipelineStepFactoryExtensions.cs (1)
125Resource = builder.Resource
ProjectResourceBuilderExtensions.cs (19)
486var projectMetadata = builder.Resource.GetProjectMetadata(); 490if (!builder.Resource.TryGetLastAnnotation<ProjectLaunchDefaultsAnnotation>(out var launchDefaults)) 501$"Project defaults have already been applied to resource '{builder.Resource.Name}'. " + 508mode => ProjectLaunchConfigurationFactory.Create(builder.Resource, mode), 544if (!string.Equals(builder.Resource.Name, KnownResourceNames.AspireDashboard, StringComparisons.ResourceName)) 563var logger = resourceLogger.GetLogger(builder.Resource); 593var projectResource = builder.Resource; 950builder.Resource.Annotations.Add(new EndpointEnvironmentInjectionFilterAnnotation(filter)); 982if (builder.ApplicationBuilder.TryCreateResourceBuilder<ProjectContainerResource>(builder.Resource.Name, out var existingBuilder)) 996builder.ApplicationBuilder.Resources.Remove(builder.Resource); 998var container = new ProjectContainerResource(builder.Resource); 1001cb.WithImage(builder.Resource.Name); 1003var projectFilePath = builder.Resource.GetProjectMetadata().ProjectPath; 1100foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1151foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment)) 1183foreach (var e in builder.Resource.GetEndpoints().Where(builder.Resource.ShouldInjectEndpointEnvironment))
ResourceBuilderExtensions.cs (129)
124if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 131SourceResource = sourceBuilder.Resource 135throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 192if (builder.Resource is ContainerResource or ExecutableResource or ProjectResource) 207throw new InvalidOperationException($"Resource '{builder.Resource.Name}' does not support lifetime configuration."); 213foreach (var annotation in builder.Resource.Annotations.OfType<ContainerLifetimeAnnotation>().ToArray()) 215builder.Resource.Annotations.Remove(annotation); 431builder.WithReferenceRelationship(externalService.Resource); 433if (externalService.Resource.Uri is not null) 435builder.WithEnvironment(name, externalService.Resource.Uri.ToString()); 437else if (externalService.Resource.UrlParameter is not null) 444var url = await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false); 447throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 451context.EnvironmentVariables[name] = externalService.Resource.UrlParameter; 473builder.WithReferenceRelationship(parameter.Resource); 477context.EnvironmentVariables[name] = parameter.Resource; 500builder.WithReferenceRelationship(resource.Resource); 504context.EnvironmentVariables[envVarName] = new ConnectionStringReference(resource.Resource, optional: false); 966var hasConnectionString = source.Resource is IResourceWithConnectionString && connectionStringSource is not null; 967var hasServiceDiscovery = source.Resource is IResourceWithServiceDiscovery && serviceDiscoverySource is not null; 968var hasExternalService = source.Resource is ExternalServiceResource && externalServiceSource is not null; 1018throw new InvalidOperationException($"The resource '{source.Resource.Name}' can't be used with withReference because it doesn't provide a connection string, service discovery, or a custom withReference implementation."); 1045return TryDispatchCustomWithReference(builder, source, connectionName, optional, name, source.Resource.GetType(), out dispatchedBuilder); 1112var resource = source.Resource; 1118builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1209ApplyEndpoints(builder, source.Resource); 1241ApplyEndpoints(builder, source.Resource, endpointName: null, name); 1265throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it must be absolute."); 1270throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a fragment."); 1275throw new InvalidOperationException($"The URI for service reference '{name}' is invalid while configuring target resource '{builder.Resource.Name}': it cannot contain a query string."); 1279builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1310builder.WithReferenceRelationship(externalService.Resource); 1313builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var injectionAnnotation); 1316if (externalService.Resource.Uri is { } uri) 1320var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1326var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1330else if (externalService.Resource.UrlParameter is not null) 1336var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1341discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0"; 1344else if (ExternalServiceResource.UrlIsValidForExternalService(await externalService.Resource.UrlParameter.GetValueAsync(context.CancellationToken).ConfigureAwait(false), out var uri, out var message)) 1346discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1352throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 1357context.EnvironmentVariables[discoveryEnvVarName] = externalService.Resource.UrlParameter; 1362context.EnvironmentVariables[endpointEnvVarName] = externalService.Resource.UrlParameter; 1397var endpointReferenceAnnotation = builder.Resource.Annotations 1405if (builder.Resource.IsContainer()) 1467var endpoint = builder.Resource.Annotations 1484builder.Resource.Annotations.Add(endpoint); 1534!builder.Resource.Annotations.OfType<EndpointAnnotation>().Any(endpoint => string.Equals(endpoint.Name, endpointName, StringComparisons.EndpointAnnotationName))) 1571var existing = builder.Resource.Annotations.OfType<EndpointAnnotation>() 1652if (env is null || builder.Resource is not IResourceWithEndpoints resourceWithEndpoints || builder.Resource is not IResourceWithEnvironment) 1862if (!builder.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var endpoints)) 1893return builder.Resource.GetEndpoint(name, contextNetworkId); 1910return builder.Resource.GetEndpoint(name); 2195context.Logger.LogWarning("Could not execute callback to customize endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name); 2243context.Logger.LogWarning("Could not execute callback to add an endpoint URL as no endpoint with name '{EndpointName}' could be found on resource '{ResourceName}'.", endpointName, builder.Resource.Name); 2274Source = source.Resource, 2313builder.Resource.Annotations 2316.ForEach(w => builder.Resource.Annotations.Remove(w)); 2434if (builder.Resource as IResource == dependency.Resource) 2436throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2439if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2441throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2444if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2457builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2460return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilHealthy) { WaitBehavior = waitBehavior }); 2557if (builder.Resource as IResource == dependency.Resource) 2559throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2562if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2564throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2567if (dependency.Resource is IResourceWithParent dependencyResourceWithParent) 2579if (dependency.Resource is ConnectionStringResource cs) 2590builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2593return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitUntilStarted) { WaitBehavior = waitBehavior }); 2660if (builder.Resource as IResource == dependency.Resource) 2662throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for itself."); 2665if (builder.Resource is IResourceWithParent resourceWithParent && resourceWithParent.Parent == dependency.Resource) 2667throw new DistributedApplicationException($"The '{builder.Resource.Name}' resource cannot wait for its parent '{dependency.Resource.Name}'."); 2670builder.WithRelationship(dependency.Resource, KnownRelationshipTypes.WaitFor); 2672return builder.WithAnnotation(new WaitAnnotation(dependency.Resource, WaitType.WaitForCompletion, exitCode)); 2720if (builder.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var annotations) && annotations.Any(a => a.Key == key)) 2722throw new DistributedApplicationException($"Resource '{builder.Resource.Name}' already has a health check with key '{key}'."); 2809?? throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 2813throw new DistributedApplicationException($"Could not create HTTP health check for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint."); 2826throw new DistributedApplicationException($"The endpoint '{endpointName}' does not exist on the resource '{builder.Resource.Name}'."); 2832var healthCheckKey = $"{builder.Resource.Name}_{endpointName}_{path}_{statusCode}_check"; 2928var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 2931builder.Resource.Annotations.Remove(existingAnnotation); 2995var existingAnnotation = builder.Resource.Annotations.OfType<ResourceCommandAnnotation>().SingleOrDefault(a => a.Name == name); 2998builder.Resource.Annotations.Remove(existingAnnotation); 3684?? throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 3688throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as the endpoint with name '{endpoint.EndpointName}' and scheme '{endpoint.Scheme}' is not an HTTP endpoint."); 3996CertificateAuthorityCollections = { certificateAuthorityCollection.Resource }, 3998if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4002if (existingCollection != certificateAuthorityCollection.Resource) 4055if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4106if (builder.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var existingAnnotation)) 4182Password = password?.Resource, 4218Password = password?.Resource, 4325var resource = builder.Resource; 4372var endpoints = builder.Resource.GetEndpoints(); 4382throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as the endpoint with name '{matchingEndpoint.EndpointName}' and scheme '{matchingEndpoint.Scheme}' is not an HTTP endpoint."); 4390throw new DistributedApplicationException($"Could not create {errorDisplayNoun} for resource '{builder.Resource.Name}' as no endpoint was found matching one of the specified names: {endpointNamesString}"); 4398var endpoints = builder.Resource.GetEndpoints(); 4410throw new DistributedApplicationException($"Could not create HTTP command for resource '{builder.Resource.Name}' as it has no HTTP endpoints."); 4467return builder.WithRelationship(resourceBuilder.Resource, type); 4533AddReference(resourceBuilder.Resource); 4566return builder.WithAnnotation(new ResourceRelationshipAnnotation(resourceBuilder.Resource, KnownRelationshipTypes.Reference)); 4599return builder.WithParentRelationship(parent.Resource); 4665child.WithRelationship(builder.Resource, KnownRelationshipTypes.Parent); 4759builder.WithAnnotation(new ComputeEnvironmentAnnotation(computeEnvironmentResource.Resource)); 4969builder.Resource.Name, 5074var endpoint = endpointSelector() ?? throw new DistributedApplicationException($"Could not create HTTP probe for resource '{builder.Resource.Name}' as the endpoint selector returned null."); 5103if (builder.Resource.Annotations.OfType<ProbeAnnotation>().SingleOrDefault(a => a.Type == probeAnnotation.Type) is { } existingAnnotation) 5105builder.Resource.Annotations.Remove(existingAnnotation);
TerminalResourceBuilderExtensions.cs (3)
75if (builder.Resource.Annotations.OfType<TerminalAnnotation>().Any()) 78$"Resource '{builder.Resource.Name}' already has a terminal configured. Call WithTerminal() only once per resource."); 97var 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)
119builder.Resource.Location = location.Resource; 144builder.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); 109return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 164return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter?.Resource); 203return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 260return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 317return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: subscriptionParameter.Resource); 374return RunAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 434return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 494return AsExistingCore(builder, nameParameter.Resource, resourceGroupParameter.Resource, subscriptionParameter.Resource); 553return RunAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 605return PublishAsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true); 657return AsExistingCore(builder, nameParameter.Resource, resourceGroup: null, subscription: null, isTenantScope: true);
Aspire.Hosting.Azure.AppConfiguration (3)
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 (16)
AzureContainerAppExtensions.cs (7)
915builder.Resource.UseAzdNamingConvention = true; 947builder.Resource.UseCompactResourceNaming = true; 1003builder.Resource.UseUniqueResourceNaming = true; 1017builder.Resource.EnableDashboard = enable; 1037builder.Resource.PreserveHttpEndpoints = !upgrade; 1056builder.WithAnnotation(new AzureLogAnalyticsWorkspaceReferenceAnnotation(workspaceBuilder.Resource)); 1113builder.WithAnnotation(new AzureContainerAppEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
49if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 58Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 59Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 110if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 111builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 119var identityName = $"{builder.Resource.Name}-mi"; 123$"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."); 147builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 148if (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)
333builder.Resource.PreserveHttpEndpoints = !upgrade; 347builder.Resource.EnableDashboard = enable; 360builder.Resource.EnableApplicationInsights = true; 396builder.Resource.ApplicationInsightsLocation = applicationInsightsLocation; 410builder.Resource.ApplicationInsightsLocationParameter = applicationInsightsLocation.Resource; 424builder.Resource.ApplicationInsightsResource = applicationInsightsBuilder.Resource; 440builder.Resource.DeploymentSlotParameter = deploymentSlot.Resource; 475builder.Resource.DeploymentSlot = deploymentSlot; 544builder.WithAnnotation(new AzureAppServiceEnvironmentAcrPullIdentityAnnotation(identityBuilder.Resource));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
49if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 58Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 59Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 110if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 111builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 119var identityName = $"{builder.Resource.Name}-mi"; 123$"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."); 147builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 148if (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.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); 179var password = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-certificate-passphrase"); 216var healthCheckKey = $"{builder.Resource.Name}_check"; 227var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); 271var isVNext = builder.Resource.InnerResource.IsVNextEmulator; 317if (builder.Resource.InnerResource.IsVNextEmulator) 366var database = new AzureCosmosDBDatabaseResource(name, databaseName, builder.Resource); 367builder.Resource.Databases.Add(database); 391var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPath, builder.Resource); 392builder.Resource.Containers.Add(container); 448var container = new AzureCosmosDBContainerResource(name, containerName, partitionKeyPaths, builder.Resource); 450builder.Resource.Containers.Add(container); 465builder.Resource.UseDefaultAzureSku = true; 483if (!builder.Resource.InnerResource.IsVNextEmulator) 549var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 550.WithParentRelationship(builder.Resource); 558if (builder.Resource.IsEmulator) 560data.Model.Resources.Remove(kv.Resource); 595var azureResource = builder.Resource; 596azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 597azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}");
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 (5)
AzureFrontDoorExtensions.cs (5)
190if (builder.Resource.Annotations 192.Any(a => a.Resource.Name == resource.Resource.Name)) 195$"Origin resource '{resource.Resource.Name}' has already been added to Azure Front Door resource '{builder.Resource.Name}'. " + 199return builder.WithAnnotation(new AzureFrontDoorOriginAnnotation(resource.Resource));
Aspire.Hosting.Azure.Functions (19)
AzureFunctionsProjectResourceExtensions.cs (12)
156.Resource; 266var launchProfile = builder.Resource.GetEffectiveLaunchProfile(); 310var targetEndpoint = builder.Resource.GetEndpoint(useHttps ? "https" : "http"); 328builder.Resource.HostStorage = storage.Resource; 348destination.WithReferenceRelationship(source.Resource); 352connectionName ??= source.Resource.Name; 353source.Resource.ApplyAzureFunctionsConfiguration(context.EnvironmentVariables, connectionName); 364if (source.Resource is not IResourceWithConnectionString || source.Resource is not IResourceWithAzureFunctionsConfig azureFunctionsConfig) 379destination.WithReferenceRelationship(source.Resource); 383connectionName ??= source.Resource.Name;
DurableTask\DurableTaskResourceExtensions.cs (6)
98builder.WithAnnotation(new DurableTaskSchedulerConnectionStringAnnotation(connectionString.Resource)); 161var emulatorResource = new DurableTaskSchedulerEmulatorResource(builder.Resource); 177.Where(th => th.Parent == builder.Resource) 220var hub = new DurableTaskHubResource(name, builder.Resource); 232var url = builder.Resource.IsEmulator 289return 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 (46)
AzureCertManagerExtensions.cs (1)
42var k8sEnvBuilder = builder.ApplicationBuilder.CreateResourceBuilder(builder.Resource.KubernetesEnvironment);
AzureKubernetesEnvironmentExtensions.cs (33)
79resource.KubernetesEnvironment = k8sEnvBuilder.Resource; 93resource.DefaultContainerRegistry = defaultRegistry.Resource; 94resource.Annotations.Add(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 95k8sEnvBuilder.WithAnnotation(new ContainerRegistryReferenceAnnotation(defaultRegistry.Resource)); 100resource.Parameters["acrName"] = defaultRegistry.Resource.NameOutputReference; 179builder.Resource.NodePools.Add(config); 181var nodePool = new AksNodePoolResource(name, config, builder.Resource); 232builder.Resource.NodePools.RemoveAll(p => p.Mode is AksNodePoolMode.System); 233builder.Resource.NodePools.Insert(0, new AksNodePoolConfig("system", vmSize, minCount, maxCount, AksNodePoolMode.System)); 264builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id), ResourceAnnotationMutationBehavior.Replace); 300builder.WithAnnotation(new AksSubnetAnnotation(subnet.Resource.Id)); 304builder.Resource.AksParent.NodePoolSubnets[builder.Resource.Name] = subnet.Resource.Id; 331if (builder.Resource.DefaultContainerRegistry is not null) 333builder.ApplicationBuilder.Resources.Remove(builder.Resource.DefaultContainerRegistry); 334builder.Resource.DefaultContainerRegistry = null; 340new ContainerRegistryReferenceAnnotation(registry.Resource), 346var staleAnnotations = builder.Resource.KubernetesEnvironment.Annotations 350builder.Resource.KubernetesEnvironment.Annotations.Remove(old); 353builder.Resource.KubernetesEnvironment.Annotations.Add( 354new ContainerRegistryReferenceAnnotation(registry.Resource)); 358builder.Resource.Parameters["acrName"] = registry.Resource.NameOutputReference; 428builder.Resource.GatewayApiEnabled = true; 429builder.Resource.ApplicationLoadBalancerEnabled = true; 445var existingDelegation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().LastOrDefault(); 458builder.Resource, 459subnet.Resource.Id, 460subnet.Resource, 468builder.Resource.LoadBalancers.Add(lb); 505builder.Resource.OidcIssuerEnabled = enabled; 506builder.Resource.WorkloadIdentityEnabled = enabled;
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 (177)
AzureKubernetesEnvironmentExtensionsTests.cs (91)
27Assert.Equal("aks", aks.Resource.Name); 28Assert.Equal("{aks.outputs.id}", aks.Resource.Id.ValueExpression); 29Assert.Equal("{aks.outputs.clusterFqdn}", aks.Resource.ClusterFqdn.ValueExpression); 30Assert.Equal("{aks.outputs.oidcIssuerUrl}", aks.Resource.OidcIssuerUrl.ValueExpression); 32var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 45Assert.Equal(2, aks.Resource.NodePools.Count); 47Assert.Equal("gpu", gpuPool.Resource.Name); 48Assert.Equal("gpu", gpuPool.Resource.Config.Name); 49Assert.Equal("Standard_NC6s_v3", gpuPool.Resource.Config.VmSize); 50Assert.Equal(0, gpuPool.Resource.Config.MinCount); 51Assert.Equal(5, gpuPool.Resource.Config.MaxCount); 52Assert.Equal(AksNodePoolMode.User, gpuPool.Resource.Config.Mode); 53Assert.Same(aks.Resource, gpuPool.Resource.AksParent); 63Assert.Single(aks.Resource.NodePools); 64var defaultPool = aks.Resource.NodePools[0]; 79Assert.True(aks.Resource.OidcIssuerEnabled); 80Assert.True(aks.Resource.WorkloadIdentityEnabled); 81Assert.Null(aks.Resource.KubernetesVersion); 82Assert.False(aks.Resource.IsPrivateCluster); 83Assert.False(aks.Resource.ContainerInsightsEnabled); 84Assert.Null(aks.Resource.LogAnalyticsWorkspace); 94Assert.NotNull(aks.Resource.KubernetesEnvironment); 95Assert.Equal("aks", aks.Resource.KubernetesEnvironment.Name); 96Assert.True(aks.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var annotation)); 113Assert.Same(aks.Resource, computeEnvironment); 157Assert.True(aks.Resource.OidcIssuerEnabled); 158Assert.True(aks.Resource.WorkloadIdentityEnabled); 172Assert.True(project.Resource.TryGetLastAnnotation<AppIdentityAnnotation>(out var appIdentity)); 173Assert.Same(identity.Resource, appIdentity.IdentityResource); 181Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(aks.Resource); 189Assert.IsAssignableFrom<IAzureNspAssociationTarget>(aks.Resource); 223Assert.True(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 226Assert.Single(aks.Resource.NodePoolSubnets); 227Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 230Assert.True(gpuPool.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 249Assert.False(aks.Resource.TryGetLastAnnotation<AksSubnetAnnotation>(out _)); 252Assert.Single(aks.Resource.NodePoolSubnets); 253Assert.True(aks.Resource.NodePoolSubnets.ContainsKey("gpu")); 267Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 268Assert.Same(gpuPool.Resource, affinity.NodePool); 282Assert.Equal(3, aks.Resource.NodePools.Count); 283Assert.Equal("cpu", pool1.Resource.Name); 284Assert.Equal("gpu", pool2.Resource.Name); 295Assert.NotNull(aks.Resource.DefaultContainerRegistry); 296Assert.Equal("aks-acr", aks.Resource.DefaultContainerRegistry.Name); 311Assert.Null(aks.Resource.DefaultContainerRegistry); 314Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var annotation)); 315Assert.Same(explicitAcr.Resource, annotation.Registry); 330Assert.True(aks.Resource.TryGetLastAnnotation<ContainerRegistryReferenceAnnotation>(out var aksAnnotation)); 331Assert.Same(aks.Resource.DefaultContainerRegistry, aksAnnotation.Registry); 333Assert.True(aks.Resource.KubernetesEnvironment 335Assert.Same(aks.Resource.DefaultContainerRegistry, annotation.Registry); 346Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 347var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 362var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 376Assert.Equal("Standard_D2s_v5", aks.Resource.NodePools[0].VmSize); 382Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 383Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 395Assert.Single(aks.Resource.NodePools, p => p.Mode is AksNodePoolMode.System); 396var systemPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System); 413Assert.Equal(2, aks.Resource.NodePools.Count); 414Assert.Equal("Standard_B2s", aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.System).VmSize); 415Assert.Equal("gpu", gpuPool.Resource.Name); 435var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 454var manifest = await AzureManifestUtils.GetManifestWithBicep(aks.Resource); 469Assert.True(aks.Resource.GatewayApiEnabled); 470Assert.True(aks.Resource.ApplicationLoadBalancerEnabled); 471Assert.True(aks.Resource.RequiresPreviewIngressApi); 474Assert.True(albSubnet.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out var delegation)); 489Assert.Same(aks.Resource, lb.Resource.Parent); 490Assert.Equal("alb-lb", lb.Resource.AlbName); 491Assert.True(lb.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var stepAnnotations)); 508Assert.NotSame(lb1.Resource, lb2.Resource); 509Assert.Equal("alb-lb1", lb1.Resource.AlbName); 510Assert.Equal("alb-lb2", lb2.Resource.AlbName); 513Assert.True(lb1.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb1Steps)); 514Assert.True(lb2.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var lb2Steps)); 520Assert.True(alb1.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 521Assert.True(alb2.Resource.TryGetLastAnnotation<AzureSubnetServiceDelegationAnnotation>(out _)); 540var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 544Assert.Equal("Microsoft.Netapp/volumes", lb.Resource.DisplacedDelegationServiceName); 560var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 564Assert.Null(lb1.Resource.DisplacedDelegationServiceName); 565Assert.Null(lb2.Resource.DisplacedDelegationServiceName); 580var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 582Assert.Null(lb.Resource.DisplacedDelegationServiceName); 602var delegation = Assert.Single(albSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 606Assert.Equal("Microsoft.Sql/managedInstances", lb.Resource.DisplacedDelegationServiceName);
AzureKubernetesHelmChartTests.cs (12)
24Assert.IsType<KubernetesHelmChartResource>(chart.Resource); 25Assert.IsType<KubernetesEnvironmentResource>(chart.Resource.Parent); 36Assert.Equal("cert-manager", chart.Resource.Name); 37Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 38Assert.Equal("1.17.0", chart.Resource.ChartVersion); 51Assert.Equal(2, chart.Resource.Values.Count); 52Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 53Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 65Assert.Equal("ingress-nginx", chart.Resource.Namespace); 77Assert.Equal("my-nginx", chart.Resource.ReleaseName); 89Assert.True(chart.Resource.DestroyOnUninstall); 100Assert.False(chart.Resource.DestroyOnUninstall);
AzureKubernetesInfrastructureTests.cs (54)
34Assert.Single(aks.Resource.NodePools); 35Assert.Equal(AksNodePoolMode.System, aks.Resource.NodePools[0].Mode); 43Assert.Equal(2, aks.Resource.NodePools.Count); 44var workloadPool = aks.Resource.NodePools.First(p => p.Mode is AksNodePoolMode.User); 48Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 67Assert.Equal(2, aks.Resource.NodePools.Count); // system + gpu 68Assert.DoesNotContain(aks.Resource.NodePools, p => p.Name == "workload"); 71Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 92Assert.True(container.Resource.TryGetLastAnnotation<KubernetesNodePoolAnnotation>(out var affinity)); 108Assert.True(container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target)); 112Assert.Same(aks.Resource, target.ComputeEnvironment); 143Assert.Same(enva.Resource, enva.Resource.KubernetesEnvironment.OwningComputeEnvironment); 144Assert.Same(envb.Resource, envb.Resource.KubernetesEnvironment.OwningComputeEnvironment); 145Assert.True(enva.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 146Assert.True(envb.Resource.TryGetLastAnnotation<KubernetesEnvironmentAnnotation>(out var _)); 152Assert.True(cache.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var cacheTarget), 154Assert.Same(enva.Resource, cacheTarget.ComputeEnvironment); 156Assert.True(api.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var apiTarget), 158Assert.Same(enva.Resource, apiTarget.ComputeEnvironment); 161Assert.True(other.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var otherTarget), 163Assert.Same(envb.Resource, otherTarget.ComputeEnvironment); 396aks.Resource.Outputs["name"] = clusterName; 399aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 400aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 424foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 429Resource = aks.Resource 439Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 440aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 469await File.ReadAllTextAsync(aks.Resource.KubernetesEnvironment.KubeConfigPath!, TestContext.Current.CancellationToken)); 496aks.Resource.Outputs["name"] = clusterName; 499aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 500aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 517foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 522Resource = aks.Resource 528Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 529aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 707aks.Resource.Scope = new AzureBicepResourceScope(scopeResourceGroup, scopeSubscriptionId); 708aks.Resource.Outputs["name"] = clusterName; 711aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 712aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 729foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 734Resource = aks.Resource 740Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 741aks.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 776aks.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscriptionId); 777aks.Resource.Outputs["name"] = clusterName; 780aks.Resource.AzCliPathResolverForTesting = () => "/usr/bin/az"; 781aks.Resource.AzCommandRunnerForTesting = (path, arguments, logger) => 798foreach (var annotation in aks.Resource.Annotations.OfType<PipelineStepAnnotation>()) 803Resource = aks.Resource 809Assert.NotNull(aks.Resource.ProvisioningTaskCompletionSource); 810aks.Resource.ProvisioningTaskCompletionSource.TrySetResult();
AzureKubernetesIngressTests.cs (16)
49Assert.IsType<KubernetesIngressResource>(ingress.Resource); 50Assert.IsType<KubernetesEnvironmentResource>(ingress.Resource.Parent); 60Assert.IsType<KubernetesGatewayResource>(gateway.Resource); 61Assert.IsType<KubernetesEnvironmentResource>(gateway.Resource.Parent); 76Assert.NotNull(gateway.Resource.GatewayClassName); 77var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 80Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 83Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 99Assert.NotNull(ingress.Resource.IngressClassName); 100var resolvedClass = await ingress.Resource.IngressClassName!.GetValueAsync(default); 103Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-name", out var albNameRef)); 106Assert.True(ingress.Resource.IngressAnnotations.TryGetValue("alb.networking.azure.io/alb-namespace", out var albNsRef)); 126Assert.NotNull(gateway.Resource.GatewayClassName); 127var resolvedClass = await gateway.Resource.GatewayClassName!.GetValueAsync(default); 130Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-name")); 131Assert.True(gateway.Resource.GatewayAnnotations.ContainsKey("alb.networking.azure.io/alb-namespace"));
AzureKubernetesPersistentVolumeTests.cs (4)
24Assert.Same(aks.Resource.KubernetesEnvironment, volume.Resource.Parent); 58var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 60executable.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)
232builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.None; 233builder.Resource.WorkloadUserAssignedIdentities.Clear(); 254builder.Resource.WorkloadManagedIdentityType = ManagedServiceIdentityType.SystemAssigned; 255builder.Resource.WorkloadUserAssignedIdentities.Clear(); 279builder.Resource.AddWorkloadUserAssignedIdentity(identity.Resource); 305builder.Resource.References.Add(identity.Resource); 307new AzureSandboxGroupAcrPullIdentityAnnotation(identity.Resource),
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
src\Shared\CrossScopeAcrPullIdentityPreparer.cs (9)
49if (!ShouldPrepareIdentity(context.PipelineContext.ExecutionContext, builder.Resource)) 58Name = $"prepare-cross-scope-acr-pull-identity-{builder.Resource.Name}", 59Description = $"Prepares the ACR pull identity for {builder.Resource.Name}.", 110if (!ShouldPrepareIdentity(context.ExecutionContext, builder.Resource) || 111builder.Resource.ContainerRegistry is not AzureContainerRegistryResource registry) 119var identityName = $"{builder.Resource.Name}-mi"; 123$"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."); 147builder.Resource.Annotations.Add(createIdentityAnnotation(identity)); 148if (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 (19)
AzureServiceBusExtensions.cs (18)
183var queue = new AzureServiceBusQueueResource(name, queueName, builder.Resource); 184builder.Resource.Queues.Add(queue); 203configure(builder.Resource); 269var topic = new AzureServiceBusTopicResource(name, topicName, builder.Resource); 270builder.Resource.Topics.Add(topic); 289configure(builder.Resource); 311if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource) 342var subscription = new AzureServiceBusSubscriptionResource(name, subscriptionName, builder.Resource); 343builder.Resource.Subscriptions.Add(subscription); 362configure(builder.Resource); 400if (builder.Resource.IsEmulator) 416var passwordParameter = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-sql-pwd", minLower: 1, minUpper: 1, minNumeric: 1); 431.AddContainer($"{builder.Resource.Name}-mssql", 445var sqlEndpoint = sqlServerResource.Resource.GetEndpoint("tcp"); 452var surrogate = new AzureServiceBusEmulatorResource(builder.Resource); 467var customConfigFile = builder.Resource.Annotations.OfType<ConfigFileAnnotation>().FirstOrDefault(); 480var tempConfig = JsonNode.Parse(CreateEmulatorConfigJson(builder.Resource)); 488var configJsonAnnotations = builder.Resource.Annotations.OfType<ConfigJsonAnnotation>();
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)
185if (builder.Resource.IsHnsEnabled) 218var blobConnectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 221var queueConnectionString = await builder.Resource.GetQueueConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 232foreach (var container in builder.Resource.BlobContainers) 238foreach (var queue in builder.Resource.Queues) 246var healthCheckKey = $"{builder.Resource.Name}_check"; 259var surrogate = new AzureStorageEmulatorResource(builder.Resource); 281return builder.WithBindMount(path ?? $".azurite/{builder.Resource.Name}", "/data", isReadOnly); 391if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName)) 396builder.Resource.ImplicitBlobService ??= defaultService; 401builder.Resource.ImplicitBlobService ??= service; 418builder.Resource.IsHnsEnabled = true; 420if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName)) 425builder.Resource.ImplicitDataLakeService ??= defaultService; 430builder.Resource.ImplicitDataLakeService ??= service; 461var name = builder.Resource.Name + "-blobs"; 463return builder.Resource.BlobStorageBuilder ??= CreateBlobService(builder, name); 470var name = builder.Resource.Name + "-data-lake"; 472return builder.Resource.DataLakeStorageBuilder ??= CreateDataLakeService(builder, name); 492var parentBuilder = builder.Resource.ImplicitBlobService ??= GetBlobService(builder); 493AzureBlobStorageContainerResource resource = new(name, blobContainerName, parentBuilder.Resource); 494builder.Resource.BlobContainers.Add(resource); 531builder.Resource.IsHnsEnabled = true; 535var parentBuilder = builder.Resource.ImplicitDataLakeService ??= GetDataLakeService(builder); 536AzureDataLakeStorageFileSystemResource resource = new(name, dataLakeFileSystemName, parentBuilder.Resource); 537builder.Resource.DataLakeFileSystems.Add(resource); 559AzureBlobStorageContainerResource resource = new(name, blobContainerName, builder.Resource); 560builder.Resource.Parent.BlobContainers.Add(resource); 611if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName)) 616builder.Resource.ImplicitQueueService ??= defaultService; 621builder.Resource.ImplicitQueueService ??= service; 634var name = builder.Resource.Name + "-queues"; 636return builder.Resource.QueueStorageBuilder ??= CreateQueueService(builder, name); 656var parentBuilder = builder.Resource.ImplicitQueueService ??= builder.GetQueueService(); 657AzureQueueStorageQueueResource resource = new(name, queueName, parentBuilder.Resource); 658builder.Resource.Queues.Add(resource); 798var resource = new AzureBlobStorageResource(name, builder.Resource); 824var resource = new AzureDataLakeStorageResource(name, builder.Resource); 833var resource = new AzureTableStorageResource(name, builder.Resource); 840var resource = new AzureQueueStorageResource(name, builder.Resource);
src\Shared\AzureRoleAssignmentUtils.cs (1)
15return builder.WithAnnotation(new RoleAssignmentAnnotation(target.Resource, CreateRoleDefinitions(roles, getName)));
Aspire.Hosting.Azure.Tests (1609)
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"; 95var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(serviceA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 112var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource); 127var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(appInsights.Resource);
AzureAppServiceEnvironmentExtensionsTests.cs (11)
42_ = appServiceEnvironment.Resource.AddAsExistingResource(infra); 45var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 59var registry = appServiceEnvironment.Resource.ContainerRegistry; 74var registry = appServiceEnvironment.Resource.ContainerRegistry; 75Assert.Same(acr.Resource, registry); 97var exception = Assert.Throws<InvalidOperationException>(() => appServiceEnvironment.Resource.ContainerRegistry); 126Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 128var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 175Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 211Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 212Assert.Same(registry.Resource, rolesWest.TargetAzureResource);
AzureAppServiceTests.cs (35)
49Assert.Same(env.Resource, target.ComputeEnvironment); 102var target = project.Resource.GetDeploymentTargetAnnotation(); 106var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 142var target = project.Resource.GetDeploymentTargetAnnotation(); 146var (_, virtualNetworkBicep) = await GetManifestWithBicep(vnet.Resource); 184var target = project.Resource.GetDeploymentTargetAnnotation(); 330project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 374SetFoundryProjectOutputs(project.Resource); 376web.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 505Assert.NotNull(env.Resource.NameOutputReference); 506Assert.Equal("name", env.Resource.NameOutputReference.Name); 507Assert.Same(env.Resource, env.Resource.NameOutputReference.Resource); 597var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 617var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 648var (manifest, bicep) = await GetManifestWithBicep(env.Resource); 666var steps = await CreateStepsAsync(app, env.Resource); 678Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 679Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 842project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 878project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 914project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 952project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 987project2.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1063project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1094container.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1118var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 1124Assert.Equal(env.Resource, output.Resource); 1142env.Resource.Outputs["webSiteSuffix"] = "website123"; 1143env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 1150var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 1280project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1311project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1343project.Resource.TryGetLastAnnotation<DeploymentTargetAnnotation>(out var target); 1372featureFlag.Resource,
AzureBicepProvisionerTests.cs (1)
78if (resourceEvent.Resource == entries.Resource)
AzureBicepResourceTests.cs (11)
27Assert.Equal("content", bicepResource.Resource.TemplateString); 28Assert.Equal("value1", bicepResource.Resource.Parameters["param1"]); 29Assert.Equal("value2", bicepResource.Resource.Parameters["param2"]); 92if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 113if (azureResourceBuilder.Resource is not AzureProvisioningResource bicepResource) 131bicepResource.Resource.Outputs["resourceEndpoint"] = "https://myendpoint"; 143bicepResource.Resource.SecretOutputs["connectionString"] = "https://myendpoint;Key=43"; 189bicepResource.Resource.TempDirectory = Environment.CurrentDirectory; 191var manifest = await ManifestUtils.GetManifest(bicepResource.Resource); 224var annotation = bicepResource.Resource.Annotations.OfType<Aspire.Hosting.Pipelines.PipelineStepAnnotation>().FirstOrDefault(); 233Resource = bicepResource.Resource
AzureContainerAppEnvironmentExtensionsTests.cs (27)
45_ = containerAppEnvironment.Resource.AddAsExistingResource(infra); 48var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 75Assert.True(logAnalyticsWorkspace.Resource.TryGetLastAnnotation<ExistingAzureResourceAnnotation>(out var existingAnnotation)); 76Assert.Equal(lawName.Resource, existingAnnotation.Name); 77Assert.Equal(lawResourceGroup.Resource, existingAnnotation.ResourceGroup); 80Assert.True(containerAppEnvironment.Resource.TryGetLastAnnotation<AzureLogAnalyticsWorkspaceReferenceAnnotation>(out var workspaceRef)); 81Assert.Same(logAnalyticsWorkspace.Resource, workspaceRef.Workspace); 84var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 98var registry = containerAppEnvironment.Resource.ContainerRegistry; 113var registry = containerAppEnvironment.Resource.ContainerRegistry; 114Assert.Same(acr.Resource, registry); 136var exception = Assert.Throws<InvalidOperationException>(() => containerAppEnvironment.Resource.ContainerRegistry); 152var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(containerAppEnvironment.Resource); 153var (_, vnetBicep) = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 174var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 199var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 219var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 250var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource); 279Assert.Same(finalRegistry.Resource, roles.TargetAzureResource); 281var (_, envBicep) = await AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true); 421Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 456Assert.Same(registry.Resource, rolesEast.TargetAzureResource); 457Assert.Same(registry.Resource, rolesWest.TargetAzureResource); 475() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 504() => AzureManifestUtils.GetManifestWithBicep(env.Resource, skipPreparer: true)); 528() => AzureManifestUtils.GetManifestWithBicep(env.Resource)); 601Assert.Same(environment.Resource, api.GetDeploymentTargetAnnotation()!.ComputeEnvironment);
AzureContainerAppsTests.cs (35)
113Assert.Same(env.Resource, target.ComputeEnvironment); 156SetFoundryProjectOutputs(project.Resource); 158var target = web.Resource.GetDeploymentTargetAnnotation(); 208Assert.Same(infra.Resource, target.ComputeEnvironment); 239Assert.Same(env.Resource, target?.ComputeEnvironment); 358.WithEnvironment("DATABASE_URL", pgContainer.Resource.UriExpression); 890var target = container.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget as AzureBicepResource; 1558var (manifest, bicep) = await GetManifestWithBicep(sql.Resource); 1675var managedEnvironment = (ContainerAppManagedEnvironment)env.Resource.AddAsExistingResource(infra); 1687var (manifest, bicep) = await GetManifestWithBicep(azResource.Resource); 1777Assert.IsAssignableFrom<IAzureComputeEnvironmentResource>(env.Resource); 1778Assert.IsAssignableFrom<IComputeEnvironmentResource>(env.Resource); 2692var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 2756var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 2762Assert.Equal(env.Resource, output.Resource); 2780env.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"] = "example.azurecontainerapps.io"; 2781env.Resource.ProvisioningTaskCompletionSource?.TrySetResult(); 2788var expression = env.Resource.GetEndpointPropertyExpression(project.GetEndpoint("http").Property(property)); 2873var containerRegistryInterface = env.Resource as IContainerRegistry; 2951var webappAcaTarget = webappAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 2953Assert.Same(aca.Resource, webappAcaTarget.ComputeEnvironment); 2957var webappServiceTarget = webappServiceResource.GetDeploymentTargetAnnotation(appService.Resource); 2959Assert.Same(appService.Resource, webappServiceTarget.ComputeEnvironment); 2963var containerAcaTarget = containerAcaResource.GetDeploymentTargetAnnotation(aca.Resource); 2965Assert.Same(aca.Resource, containerAcaTarget.ComputeEnvironment); 2971var containerAppServiceAcaTarget = containerAppServiceResource.GetDeploymentTargetAnnotation(aca.Resource); 2975Assert.Null(webappAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 2976Assert.Null(webappServiceResource.GetDeploymentTargetAnnotation(aca.Resource)); 2977Assert.Null(containerAcaResource.GetDeploymentTargetAnnotation(appService.Resource)); 3055featureFlag.Resource, 3096featureFlag.Resource, 3098ReferenceExpression.Create($"prefix-{connectionPrefix.Resource}-enabled"), 3137innerFlag.Resource, 3143outerFlag.Resource, 3181var steps = await CreateStepsAsync(app, env.Resource);
AzureContainerRegistryTests.cs (20)
55Assert.Same(registryBuilder.Resource, annotation!.Registry); 65var (manifest, bicep) = await GetManifestWithBicep(acr.Resource); 124_ = acr.Resource.AddAsExistingResource(infra); 127var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 143var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 149Resource = acr.Resource 173var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 178Resource = acr.Resource 202var pipelineStepAnnotations = acr.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 207Resource = acr.Resource 228var configAnnotations = acr.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 240var (_, bicep) = await GetManifestWithBicep(acr.Resource); 254var (_, bicep) = await GetManifestWithBicep(acr.Resource); 267var (_, bicep) = await GetManifestWithBicep(acr.Resource); 329await Assert.ThrowsAsync<ArgumentException>(async () => await GetManifestWithBicep(acr.Resource)); 340var (_, bicep) = await GetManifestWithBicep(acr.Resource); 356Assert.Same(acr.Resource, registryBuilder.Resource); 368Assert.NotNull(registryBuilder.Resource); 369Assert.IsType<AzureContainerRegistryResource>(registryBuilder.Resource);
AzureCosmosDBEmulatorFunctionalTests.cs (21)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 54await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 94await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 98hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 99hb.AddAzureCosmosClient(db.Resource.Name); 100hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName); 175await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token); 183[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default) 186hb.AddAzureCosmosClient(cosmos1.Resource.Name); 223await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token); 232[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default) 235hb.AddAzureCosmosClient(cosmos2.Resource.Name); 293await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token); 297hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 298hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (101)
38var endpointAnnotation = cosmos.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(); 59var containerImageAnnotation = cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 107Assert.Equal("{cosmos.outputs.connectionString}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 110Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 111Assert.Equal("AccountEndpoint={cosmos.outputs.connectionString};Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 137Assert.DoesNotContain(";Database=db1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 138Assert.DoesNotContain(";Database=db1;Container=container1", cosmos.Resource.ConnectionStringExpression.ValueExpression); 139Assert.Contains(";Database=db1", db1.Resource.ConnectionStringExpression.ValueExpression); 140Assert.Contains(";Database=db1;Container=container1", container1.Resource.ConnectionStringExpression.ValueExpression); 142Assert.Contains(";Database=db", db2.Resource.ConnectionStringExpression.ValueExpression); 143Assert.Contains(";Database=db;Container=container", container2.Resource.ConnectionStringExpression.ValueExpression); 156((IResourceWithAzureFunctionsConfig)cosmos.Resource).ApplyAzureFunctionsConfiguration(target, "cosmos"); 163((IResourceWithAzureFunctionsConfig)db1.Resource).ApplyAzureFunctionsConfiguration(target, "db1"); 172((IResourceWithAzureFunctionsConfig)container1.Resource).ApplyAzureFunctionsConfiguration(target, "container1"); 207var manifest = await GetManifestWithBicep(model, cosmos.Resource); 257Assert.Equal("{cosmos-kv.secrets.connectionstrings--cosmos}", cosmos.Resource.ConnectionStringExpression.ValueExpression); 258Assert.Equal("{cosmos-kv.secrets.connectionstrings--db1}", database.Resource.ConnectionStringExpression.ValueExpression); 259Assert.Equal("{cosmos-kv.secrets.connectionstrings--container1}", container.Resource.ConnectionStringExpression.ValueExpression); 261var manifest = await GetManifestWithBicep(cosmos.Resource); 276Assert.True(cosmos.Resource.IsContainer()); 278var csExpr = cosmos.Resource.ConnectionStringExpression; 284Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 297Assert.True(cosmos.Resource.IsContainer()); 299var csExpr = cosmos.Resource.ConnectionStringExpression; 305Assert.Equal(cs, await ((IResourceWithConnectionString)cosmos.Resource).GetConnectionStringAsync()); 375var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 386var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 388Assert.Equal("cosmos", cosmos.Resource.Name); 406cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 408var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 429var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 431Assert.Equal("cosmos", cosmos.Resource.Name); 469kv.Resource.SecretResolver = (secretRef, _) => 479var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 490var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 492Assert.Equal("cosmos", cosmos.Resource.Name); 510cosmos.Resource.Outputs["connectionString"] = "mycosmosconnectionstring"; 512var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 531var connectionStringResource = (IResourceWithConnectionString)cosmos.Resource; 533Assert.Equal("cosmos", cosmos.Resource.Name); 544var manifest = await AzureManifestUtils.GetManifestWithBicep(cosmos.Resource); 556Assert.True(cosmos.Resource.IsEmulator()); 557Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 568Assert.True(cosmos.Resource.IsEmulator()); 569Assert.Contains(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 599_ = cosmosdb.Resource.AddAsExistingResource(infra); 602var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 629Assert.NotNull(cosmos.Resource.ConnectionStringSecretOutput); 630Assert.Same(cosmos.Resource, cosmos.Resource.ConnectionStringSecretOutput.SecretOwner); 632Assert.NotNull(cosmos.Resource.PrimaryAccessKeySecretOutput); 633Assert.Same(cosmos.Resource, cosmos.Resource.PrimaryAccessKeySecretOutput.SecretOwner); 636var references = ((IValueWithReferences)cosmos.Resource.ConnectionStringSecretOutput).References.ToList(); 637Assert.Contains(cosmos.Resource, references); 638Assert.Contains(cosmos.Resource.ConnectionStringSecretOutput.Resource, references); 649Assert.Contains(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 660Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is HttpsCertificateConfigurationCallbackAnnotation); 671cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 679Resource = cosmos.Resource, 706cosmos.Resource.Annotations.OfType<CertificateTrustConfigurationCallbackAnnotation>()); 714Resource = cosmos.Resource, 738cosmos.Resource.Annotations.OfType<HttpsCertificateConfigurationCallbackAnnotation>()); 747Resource = cosmos.Resource, 793var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 825var emulatorEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulator"); 854var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 884var dataExplorerEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 895var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 910var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 923var image = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerImageAnnotation>()); 937var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 944var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 956var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 961var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 996var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1001var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1015var csExpr = cosmos.Resource.ConnectionStringExpression; 1030var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1043var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1054var healthEndpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "emulatorhealth"); 1059Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation); 1069Assert.Contains(cosmos.Resource.Annotations, a => a is HealthCheckAnnotation hc && hc.Key == "cosmos_check"); 1080var mount = Assert.Single(cosmos.Resource.Annotations.OfType<ContainerMountAnnotation>()); 1093var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1105var endpoint = Assert.Single(cosmos.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "data-explorer"); 1122() => builder.Eventing.PublishAsync(new ResourceReadyEvent(cosmos.Resource, app.Services))); 1139await builder.Eventing.PublishAsync(new ConnectionStringAvailableEvent(cosmos.Resource, app.Services)); 1182Assert.False(cosmos.Resource.IsEmulator); 1183Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1184Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1185Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1195Assert.False(cosmos.Resource.IsEmulator); 1196Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerImageAnnotation); 1197Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1198Assert.DoesNotContain(cosmos.Resource.Annotations, a => a is ContainerMountAnnotation); 1233cosmos.Resource, 1236foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()) 1258cosmos.Resource, 1261foreach (var callback in cosmos.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>())
AzureDeployerTests.cs (52)
174var dockerFileAnnotation = c.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 297Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 298Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 299Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 300Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 301Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 357Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 358Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 359Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 360Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 361Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 423Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 424Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 425Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 426Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 427Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 491var (containerAppSubscriptionId, containerAppResourceGroupName) = GetSubscriptionAndResourceGroup((string)containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]!); 551var webSiteSuffix = Assert.IsType<string>(appServiceEnv.Resource.Outputs["webSiteSuffix"]); 553var (planSubscriptionId, planResourceGroupName) = GetSubscriptionAndResourceGroup((string)appServiceEnv.Resource.Outputs["planId"]!); 646Assert.Equal("acaregistry", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 647Assert.Equal("acaregistry.azurecr.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 648Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aca-identity"), acaEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 649Assert.Equal("aca.westus.azurecontainerapps.io", acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 650Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/acaenv"), acaEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 653Assert.Equal("aasregistry", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 654Assert.Equal("aasregistry.azurecr.io", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 655Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aas-identity"), aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 656Assert.Equal(GetTestResourceId("/providers/Microsoft.Web/serverfarms/aasplan"), aasEnv.Resource.Outputs["planId"]); 657Assert.Equal("aas-client-id", aasEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_CLIENT_ID"]); 773var setValue = await param.Resource.GetValueAsync(default); 847var setValue = await param.Resource.GetValueAsync(default); 897Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 898Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 899Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 900Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 901Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 959Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 960Assert.Equal(GetTestResourceId("/providers/Microsoft.App/managedEnvironments/testenv"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1169Assert.Equal("testregistry", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_NAME"]); 1170Assert.Equal("testregistry.azurecr.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_ENDPOINT"]); 1171Assert.Equal(GetTestResourceId("/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity"), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID"]); 1172Assert.Equal("test.westus.azurecontainerapps.io", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1173Assert.Equal($"/subscriptions/{TestSubscriptionId}/resourceGroups/{TestResourceGroupName}/providers/Microsoft.App/managedEnvironments/testenv", containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1176var funcAppDeployment = Assert.IsAssignableFrom<AzureProvisioningResource>(funcApp.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 1178Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_default_domain"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN"]); 1179Assert.Equal(await ((BicepOutputReference)funcAppDeployment.Parameters["env_outputs_azure_container_apps_environment_id"]!).GetValueAsync(), containerAppEnv.Resource.Outputs["AZURE_CONTAINER_APPS_ENVIRONMENT_ID"]); 1868Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1869Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1870Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default)); 1923Assert.Equal("secret-key-12345", await regularParam.Resource.GetValueAsync(default)); 1924Assert.Equal("Server=localhost;Database=mydb", await connectionStringParam.Resource.GetValueAsync(default)); 1925Assert.Equal("custom-value-xyz", await customKeyParam.Resource.GetValueAsync(default));
AzureEnvironmentResourceExtensionsTests.cs (228)
61Assert.Same(firstBuilder.Resource, secondBuilder.Resource); 328storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 339await notifications.PublishUpdateAsync(storage.Resource, state => state with 378Assert.Empty(storage.Resource.Outputs); 384Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 496Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 498Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 515storage.Resource.ProvisioningTaskCompletionSource = existingTcs; 525Assert.Same(existingTcs, storage.Resource.ProvisioningTaskCompletionSource); 559Assert.Empty(storage.Resource.Outputs); 569Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 571Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 607Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 636Assert.Equal("https://storage.blob.core.windows.net/", storage.Resource.Outputs["blobEndpoint"]); 657Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 658var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 675Assert.Contains(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 676var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 677var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 678var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 682Assert.DoesNotContain(blobs.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => 706await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 708Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 741await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 743Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent)); 746var changeLocationCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 751ResourceName = postgres.Resource.Name, 827var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 832ResourceName = storage.Resource.Name, 911var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 916ResourceName = storage.Resource.Name, 1180var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1185ResourceName = storage.Resource.Name, 1244var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1249ResourceName = storage.Resource.Name, 1305var getResourceCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.GetAzureResourceCommandName); 1310ResourceName = storage.Resource.Name, 1364await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Waiting for Deployment", KnownResourceStateStyles.Info) }); 1366var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1371ResourceName = storage.Resource.Name, 1385Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1419await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Creating ARM Deployment", KnownResourceStateStyles.Info) }); 1421Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1496await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new(AzureProvisioningController.WaitingForDeploymentState, KnownResourceStateStyles.Info) }); 1498Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1501var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1506ResourceName = storage.Resource.Name, 1546var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None); 1559var command = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == commandName); 1564ResourceName = storage.Resource.Name, 1575Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources); 1605var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None); 1611var queuedReprovisionCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 1615ResourceName = storage2.Resource.Name, 1623var conflictingCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1627ResourceName = storage2.Resource.Name, 1666await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1668Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1704await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1706var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 1711ResourceName = storage.Resource.Name, 1723Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1784storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 1785storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 1787await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 1788await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 1790var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1795ResourceName = storage.Resource.Name, 1823Assert.Empty(storage.Resource.Outputs); 1824Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 1826Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1829Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 1882await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 1884var deleteCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1889ResourceName = keyVault.Resource.Name, 1908Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 1952await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 1953await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 1955var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 1960ResourceName = storage.Resource.Name, 1974Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1978Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2030await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2032var deleteCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.DeleteAzureResourceCommandName); 2033var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2038ResourceName = storage.Resource.Name, 2052ResourceName = storage.Resource.Name, 2062Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2095storage.Resource.Outputs["blobEndpoint"] = "https://storage.blob.core.windows.net/"; 2096storage2.Resource.Outputs["blobEndpoint"] = "https://storage2.blob.core.windows.net/"; 2098await notifications.PublishUpdateAsync(storage.Resource, state => state with 2105await notifications.PublishUpdateAsync(storage2.Resource, state => state with 2112var forgetCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ForgetStateCommandName); 2117ResourceName = storage.Resource.Name, 2132Assert.Empty(storage.Resource.Outputs); 2133Assert.Equal("https://storage2.blob.core.windows.net/", storage2.Resource.Outputs["blobEndpoint"]); 2135Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2140Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2173await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2174await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2176var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2181ResourceName = storage.Resource.Name, 2189Assert.Contains(storage.Resource.Outputs, output => output.Key == "blobEndpoint"); 2197Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2200Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2227await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2228await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2230var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2235ResourceName = storage.Resource.Name, 2249Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2252Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2263Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2288await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2290var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2295ResourceName = storage.Resource.Name, 2309Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2321Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2366var reprovisionStorageCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2367var reprovisionStorage2Command = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2372ResourceName = storage.Resource.Name, 2386ResourceName = storage2.Resource.Name, 2443var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2444var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2449ResourceName = storage.Resource.Name, 2460Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2466ResourceName = storage.Resource.Name, 2477Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2480Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent)); 2489Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2538await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running"); 2539Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event)); 2542var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2547ResourceName = storage.Resource.Name, 2555Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2559Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2564Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event)); 2588var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2593ResourceName = storage.Resource.Name, 2640var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 2641var cancelCommand = Assert.Single(storage2.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 2646ResourceName = storage.Resource.Name, 2660ResourceName = storage2.Resource.Name, 2705await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2706await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2708var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2713ResourceName = storage.Resource.Name, 2729Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2738Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2778await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = new("Failed to Provision", KnownResourceStateStyles.Error) }); 2779await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 2781var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2786ResourceName = storage.Resource.Name, 2832await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2834var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2839ResourceName = storage.Resource.Name, 2947await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 2949var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 2960ResourceName = storage.Resource.Name, 3020await notifications.PublishUpdateAsync(storage.Resource, state => state with 3026var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3030ResourceName = storage.Resource.Name, 3039Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3080await notifications.PublishUpdateAsync(storage.Resource, state => state with 3086var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3091ResourceName = storage.Resource.Name, 3153await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3155var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3160ResourceName = storage.Resource.Name, 3206await notifications.PublishUpdateAsync(storage.Resource, state => state with 3212var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3217ResourceName = storage.Resource.Name, 3269await notifications.PublishUpdateAsync(storage.Resource, state => state with 3275var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3280ResourceName = storage.Resource.Name, 3341await notifications.PublishUpdateAsync(storage.Resource, state => state with 3347var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 3351ResourceName = storage.Resource.Name, 3398await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3399await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 3613await notifications.PublishUpdateAsync(storage.Resource, state => state with 3843await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 3845var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 3850ResourceName = storage.Resource.Name, 3915await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 3917var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 3922ResourceName = keyVault.Resource.Name, 3935Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 3995await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = new("Canceled", KnownResourceStateStyles.Info) }); 3997var reprovisionCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4002ResourceName = keyVault.Resource.Name, 4039Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4069await notifications.PublishUpdateAsync(postgres.Resource, state => state with { State = KnownResourceStates.Running }); 4071var reprovisionCommand = Assert.Single(postgres.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4076ResourceName = postgres.Resource.Name, 4121await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4123var changeLocationCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4128ResourceName = storage.Resource.Name, 4167await notifications.PublishUpdateAsync(keyVault.Resource, state => state with { State = KnownResourceStates.Running }); 4169var changeLocationCommand = Assert.Single(keyVault.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ChangeResourceLocationCommandName); 4174ResourceName = keyVault.Resource.Name, 4213await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4215var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4220ResourceName = storage.Resource.Name, 4246Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4281var reprovisionCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.ReprovisionResourceCommandName); 4288ResourceName = storage.Resource.Name, 4328await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4341Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4381await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4388Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4439await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4440await notifications.PublishUpdateAsync(storage2.Resource, state => state with { State = KnownResourceStates.Running }); 4447Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4450Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 4483await notifications.PublishUpdateAsync(storage.Resource, state => state with { State = KnownResourceStates.Running }); 4490Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4547Assert.Empty(storage.Resource.Outputs); 4592Assert.Empty(storage.Resource.Outputs); 4638Assert.Empty(storage.Resource.Outputs); 4808var cancelCommand = Assert.Single(storage.Resource.Annotations.OfType<ResourceCommandAnnotation>(), c => c.Name == AzureProvisioningController.CancelCommandName); 4812ResourceName = storage.Resource.Name, 4822Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4828Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 4858Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value)); 4931Assert.Equal(expectedLocation.Resource, resource.Location); 4947Assert.Equal(expectedResourceGroup.Resource, resource.ResourceGroupName);
AzureEnvironmentResourceTests.cs (11)
113.WithParameter("pgdb", pgdb.Resource.ConnectionStringExpression); 161["kvUri"] = kv.Resource.VaultUri, 162["blob"] = blobs.Resource.ConnectionStringExpression, 192roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalId] = null; 193roles.Resource.Parameters[AzureBicepResource.KnownParameters.PrincipalType] = null; 218resourceGroupScoped.Resource.Scope = new(resourceGroup.Resource, subscription.Resource); 228subscriptionScoped.Resource.Scope = AzureBicepResourceScope.CreateForSubscription(subscription.Resource); 238tenantScoped.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); 529Assert.Same(eventHubs.Resource.Annotations, sourceResource.Annotations); 531var persistenceAnnotation = Assert.Single(eventHubs.Resource.Annotations.OfType<PersistenceAnnotation>()); 580Assert.Equal("{eh.outputs.eventHubsEndpoint}", eventHubs.Resource.ConnectionStringExpression.ValueExpression); 581Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1", eventHub.Resource.ConnectionStringExpression.ValueExpression); 582Assert.Equal("Endpoint={eh.outputs.eventHubsEndpoint};EntityPath=hub1;ConsumerGroup=cg1", consumerGroup.Resource.ConnectionStringExpression.ValueExpression); 595((IResourceWithAzureFunctionsConfig)eventHubs.Resource).ApplyAzureFunctionsConfiguration(target, "eh"); 605((IResourceWithAzureFunctionsConfig)eventHub.Resource).ApplyAzureFunctionsConfiguration(target, "hub1"); 621((IResourceWithAzureFunctionsConfig)consumerGroup.Resource).ApplyAzureFunctionsConfiguration(target, "cg1"); 651Assert.True(eventHubs.Resource.IsEmulator()); 652Assert.Contains(eventHubs.Resource.Annotations, a => a is EmulatorResourceAnnotation); 682_ = eventHubs.Resource.AddAsExistingResource(infra); 685var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureFrontDoorTests.cs (11)
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"); 181var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 204var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource); 229var (_, bicep) = await GetManifestWithBicep(frontDoor.Resource);
AzureFunctionsTests.cs (10)
45Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 176Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 179Assert.Equal(storage.Resource, rel.Resource); 293Assert.True(funcApp.Resource.TryGetAnnotationsOfType<EnvironmentCallbackAnnotation>(out var envAnnotations)); 354var (_, bicep) = await GetManifestWithBicep(funcApp.Resource.GetDeploymentTargetAnnotation()!.DeploymentTarget); 663Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 683Assert.True(funcApp.Resource.TryGetLastAnnotation<IProjectMetadata>(out var projectMetadata)); 767Assert.True(funcApp.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relAnnotations)); 770Assert.Equal(customStorage.Resource, rel.Resource); 801var annotation = funcApp.Resource.Annotations.OfType<RequiredCommandAnnotation>().SingleOrDefault();
AzureInfrastructureExtensionsTests.cs (3)
27var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 52var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource); 91var manifest = await ManifestUtils.GetManifest(infrastructure1.Resource);
AzureKeyVaultConnectionPropertiesTests.cs (1)
17var properties = ((IResourceWithConnectionString)keyVault.Resource).GetConnectionProperties().ToArray();
AzureKeyVaultTests.cs (47)
21var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(mykv.Resource); 37var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, mykv.Resource); 57kv.Resource.SecretResolver = (s, ct) => 63var secretReference = kv.Resource.GetSecret("mySecret"); 72containerBuilder.Resource, 77containerBuilder.Resource, 98var secretReference = kv.Resource.GetSecret("mySecret"); 99var secretReference2 = kv.Resource.GetSecret("mySecret2"); 120var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 136var secretReference = kv.Resource.GetSecret("mySecret"); 137var secretReference2 = kv.Resource.GetSecret("mySecret2"); 158module2.Resource.Scope = new(existingRg.Resource); 160var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 161var (manifest2, bicep2) = await AzureManifestUtils.GetManifestWithBicep(module2.Resource, skipPreparer: true); 176var secretReference = kv.Resource.GetSecret("mySecret"); 177var secretReference2 = kv.Resource.GetSecret("mySecret2"); 189var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 206Assert.Same(kv.Resource, secret.Resource); 220Assert.IsType<AzureKeyVaultSecretResource>(secretResource.Resource); 221Assert.Equal("mySecret", secretResource.Resource.Name); 222Assert.Equal("mySecret", secretResource.Resource.SecretName); 223Assert.Same(kv.Resource, secretResource.Resource.Parent); 224Assert.Single(kv.Resource.Secrets); 225Assert.Same(secretResource.Resource, kv.Resource.Secrets[0]); 237var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 252var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 267Assert.True(secretResource.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 286var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(kv.Resource); 381_ = keyVault.Resource.AddAsExistingResource(infra); 384var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 397Assert.False(keyVault.Resource.IsEmulator); 408keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 413Assert.True(keyVault.Resource.IsEmulator); 424keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 432var connectionString = keyVault.Resource.ConnectionStringExpression; 434Assert.True(keyVault.Resource.IsEmulator); 445var connectionString = keyVault.Resource.ConnectionStringExpression; 447Assert.False(keyVault.Resource.IsEmulator); 463keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget)); 465var connectionString = keyVault.Resource.ConnectionStringExpression; 466var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default); 484keyVault.Resource.Annotations.Add(new ContainerImageAnnotation 493keyVault.Resource.Annotations.Add(new ConnectionStringRedirectAnnotation(redirectTarget)); 495var connectionStringValue = await keyVault.Resource.GetConnectionStringAsync(default);
AzureKustoExtensionsTests.cs (9)
20kusto.Resource.Outputs["clusterUri"] = "https://kusto-cluster.eastus.kusto.windows.net"; 21Assert.Equal("https://kusto-cluster.eastus.kusto.windows.net", await kusto.Resource.ConnectionStringExpression.GetValueAsync(default)); 25var manifest = await GetManifestWithBicep(model, kusto.Resource); 27var connectionStringResource = (IResourceWithConnectionString)kusto.Resource; 64_ = kusto.Resource.AddAsExistingResource(infra); 67var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 91Assert.True(kusto.Resource.TryGetLastAnnotation<EmulatorResourceAnnotation>(out _)); 94var connectionStringExpr = kusto.Resource.ConnectionStringExpression; 98Assert.True(kusto.Resource.IsEmulator);
AzureLogAnalyticsWorkspaceExtensionsTests.cs (5)
17Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name); 18Assert.Equal("{logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId}", logAnalyticsWorkspace.Resource.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)
48var manifest = await AzureManifestUtils.GetManifestWithBicep(resource1.Resource);
AzureProvisioningResourceTests.cs (6)
29Assert.Same(apiProject.Resource, containerAppResource.TargetResource); 45Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 63Assert.Same(apiProject.Resource, webSiteResource.TargetResource); 79Assert.Same(apiProject.Resource, provisioningResource.TargetResource); 96Assert.Same(container.Resource, containerAppResource.TargetResource); 111Assert.Same(container.Resource, provisioningResource.TargetResource);
AzureRedisExtensionsTests.cs (32)
40var (manifest, bicep) = await GetManifestWithBicep(model, redis.Resource); 83var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 99redisResource = c.Resource; 104Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 108Assert.Equal($"localhost:12455,password={redisResource.PasswordParameter.Value}", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 122redisResource = c.Resource; 140Assert.True(redis.Resource.IsContainer(), "The resource should now be a container resource."); 143Assert.Equal($"localhost:12455,password=p@ssw0rd1", await redis.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None)); 146Assert.NotNull(redis.Resource.HostName); 147Assert.Equal("localhost:12455", await redis.Resource.HostName.GetValueAsync(CancellationToken.None)); 149Assert.NotNull(redis.Resource.Password); 150Assert.Equal("p@ssw0rd1", await redis.Resource.Password.GetValueAsync(CancellationToken.None)); 198Assert.NotNull(redis.Resource.HostName); 199Assert.NotNull(redis.Resource.Password); 202var hostValue = await redis.Resource.HostName.GetValueAsync(CancellationToken.None); 205var passwordValue = await redis.Resource.Password.GetValueAsync(CancellationToken.None); 218Assert.Null(redis.Resource.Password); 221Assert.NotNull(redis.Resource.HostName); 222Assert.Equal("{redis-data.outputs.hostName}", redis.Resource.HostName.ValueExpression); 244Assert.True(redis.Resource.IsContainer()); 245Assert.NotNull(redis.Resource.PasswordParameter); 248Assert.Equal($"localhost:12455,password={redis.Resource.PasswordParameter.Value}", await redis.Resource.GetConnectionStringAsync()); 251var manifest = await AzureManifestUtils.GetManifestWithBicep(redis.Resource); 295_ = redis.Resource.AddAsExistingResource(infra); 298var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 325Assert.NotNull(redis.Resource.ConnectionStringSecretOutput); 326Assert.Same(redis.Resource, redis.Resource.ConnectionStringSecretOutput.SecretOwner); 329var references = ((IValueWithReferences)redis.Resource.ConnectionStringSecretOutput).References.ToList(); 330Assert.Contains(redis.Resource, references); 331Assert.Contains(redis.Resource.ConnectionStringSecretOutput.Resource, references);
AzureResourcePreparerTests.cs (56)
87Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 94Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 106Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 107Assert.Equal(storage.Resource, apiRoleAssignments.Target); 140Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 150Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 151Assert.Equal(storage.Resource, apiRoleAssignments.Target); 156Assert.True(api2.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var api2RoleAssignments)); 157Assert.Equal(storage.Resource, api2RoleAssignments.Target); 199context.Args.Add(blobs.Resource.ConnectionStringExpression); 205Assert.True(storage.Resource.TryGetLastAnnotation<DefaultRoleAssignmentsAnnotation>(out var defaultAssignments)); 207Assert.True(api.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var apiRoleAssignments)); 208Assert.Equal(storage.Resource, apiRoleAssignments.Target); 237var deploymentTarget = Assert.IsAssignableFrom<AzureBicepResource>(api.Resource.GetDeploymentTargetAnnotation()?.DeploymentTarget); 239Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 240Assert.Same(api.Resource, roleAssignmentResource.OwnerResource); 242Assert.Contains(blobPE.Resource, deploymentTarget.References); 243Assert.Contains(queuesPE.Resource, deploymentTarget.References); 272.Where(resource => resource.TargetAzureResource == keyVault.Resource) 287Assert.Same(keyVault.Resource, resource.TargetAzureResource); 288Assert.Same(api.Resource, resource.OwnerResource); 293Assert.Same(keyVault.Resource, resource.TargetAzureResource); 294Assert.Same(worker.Resource, resource.OwnerResource); 299resource => resource.TargetAzureResource == storage.Resource); 300Assert.Same(api.Resource, storageRoleAssignment.OwnerResource); 329.Where(resource => resource.TargetAzureResource == signalR.Resource) 344Assert.Same(signalR.Resource, resource.TargetAzureResource); 345Assert.Same(serviceA.Resource, resource.OwnerResource); 350Assert.Same(signalR.Resource, resource.TargetAzureResource); 351Assert.Same(serviceB.Resource, resource.OwnerResource); 381Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 383Assert.Single(storage.Resource.Annotations.OfType<RoleAssignmentResourceAnnotation>()); 554agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 555storage.Resource, 564Assert.True(consumer.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out var consumerRoleAssignments)); 565Assert.Equal(storage.Resource, consumerRoleAssignments.Target); 579agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 580storage.Resource, 591Assert.Same(storage.Resource, storageRoles.TargetAzureResource); 604agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 605storage.Resource, 615Assert.False(bystander.Resource.TryGetLastAnnotation<RoleAssignmentAnnotation>(out _)); 633agent1.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 636agent2.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation(storage.Resource, role)); 647Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 648Assert.Same(consumer.Resource, roleAssignmentResource.OwnerResource); 667agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 668storage.Resource, 683var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 684.Where(a => a.Target == storage.Resource) 710agent.Resource.Annotations.Add(new ReferenceRoleAssignmentAnnotation( 711storage.Resource, 724var roleIds = consumer.Resource.Annotations.OfType<RoleAssignmentAnnotation>() 725.Where(a => a.Target == storage.Resource)
AzureRunAsEmulatorModeTests.cs (8)
13{ "Azure App Configuration", (builder, configure) => builder.AddAzureAppConfiguration("appconfig").RunAsEmulator(_ => configure()).Resource }, 14{ "Azure Cosmos DB", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsEmulator(_ => configure()).Resource }, 15{ "Azure Cosmos DB classic", (builder, configure) => builder.AddAzureCosmosDB("cosmos").RunAsClassicEmulator(_ => configure()).Resource }, 16{ "Azure Event Hubs", (builder, configure) => builder.AddAzureEventHubs("eventhubs").RunAsEmulator(_ => configure()).Resource }, 17{ "Azure Kusto", (builder, configure) => builder.AddAzureKustoCluster("kusto").RunAsEmulator(_ => configure()).Resource }, 18{ "Azure Service Bus", (builder, configure) => builder.AddAzureServiceBus("servicebus").RunAsEmulator(_ => configure()).Resource }, 19{ "Azure SignalR", (builder, configure) => builder.AddAzureSignalR("signalr").RunAsEmulator(_ => configure()).Resource }, 20{ "Azure Storage", (builder, configure) => builder.AddAzureStorage("storage").RunAsEmulator(_ => configure()).Resource },
AzureSandboxesTests.cs (99)
37Assert.Equal("{sandboxes.outputs.id}", sandboxGroup.Resource.IdOutputReference.ValueExpression); 38Assert.Equal("{sandboxes.outputs.name}", sandboxGroup.Resource.NameOutputReference.ValueExpression); 47sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 48sandboxGroup.Resource.Outputs["location"] = "eastus2"; 50var scope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 71var (hostGroupManifest, hostGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, hostGroup.Resource); 72var (workerGroupManifest, workerGroupBicep) = await AzureManifestUtils.GetManifestWithBicep(model, workerGroup.Resource); 108var (_, sandbox1Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox1.Resource); 109var (_, sandbox2Bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandbox2.Resource); 134Assert.Equal(ManagedServiceIdentityType.SystemAssignedUserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 135Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 146var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 159var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 175.WithAnnotation(new AppIdentityAnnotation(computeIdentity.Resource)) 181Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 182Assert.Equal(computeIdentity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 184var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 197.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 202Assert.Equal(ManagedServiceIdentityType.UserAssigned, sandboxGroup.Resource.WorkloadManagedIdentityType); 203Assert.Equal(identity.Resource, Assert.Single(sandboxGroup.Resource.WorkloadUserAssignedIdentities)); 204Assert.Empty(otherGroup.Resource.WorkloadUserAssignedIdentities); 205var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 222.WithAnnotation(new AppIdentityAnnotation(identity.Resource)) 247var (_, bicep) = await AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource); 249var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 250Assert.Same(pullIdentity.Resource, annotation.Identity); 271() => AzureManifestUtils.GetManifestWithBicep(model, sandboxGroup.Resource)); 329var annotation = Assert.Single(sandboxGroup.Resource.Annotations.OfType<AzureSandboxGroupAcrPullIdentityAnnotation>()); 331Assert.Same(registry.Resource, roles.TargetAzureResource); 333Assert.Contains(identity, sandboxGroup.Resource.References); 335var (_, sandboxBicep) = await AzureManifestUtils.GetManifestWithBicep(sandboxGroup.Resource, skipPreparer: true); 374var buildOptionsCallbackCount = container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 388Assert.Null(computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)); 390Assert.Equal(buildOptionsCallbackCount, container.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count()); 495sandboxGroup.Resource.ContainerRegistry!.Outputs["loginServer"] = "example.azurecr.io"; 496sandboxGroup.Resource.Outputs[AzureSandboxGroupResource.ImagePullIdentityClientIdOutputName] = 500sandboxGroup.Resource, 504sandboxGroup.Resource, 1083sandboxGroup.Resource.Outputs["id"] = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/existing-rg/providers/Microsoft.App/sandboxGroups/existing-group"; 1084sandboxGroup.Resource.Outputs["location"] = "eastus2"; 1085var existingScope = AzureSandboxContainerDeployment.CreateDataPlaneScope(sandboxGroup.Resource); 1088var targetResource = builder.AddContainer("frontend", "example/image").Resource; 1092sandboxGroup.Resource); 1829var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 1905defaultResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 1907disabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 1909enabledResource.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2004var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2030Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http"), sandboxGroup.Resource, out var urlExpression)); 2035Assert.True(AzureSandboxContainerDeployment.TryResolveEndpointReferenceValue(api.GetEndpoint("http").Property(EndpointProperty.TargetPort), sandboxGroup.Resource, out var targetPortExpression)); 2066var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2105var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2129var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2162var frontendCallbackCount = frontend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2163var backendCallbackCount = backend.Resource.Annotations.OfType<ContainerBuildOptionsCallbackAnnotation>().Count(); 2173Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2174Assert.Same(sandboxGroup.Resource, explicitComputeResource.GetComputeEnvironment()); 2214var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2216Assert.Same(sandboxGroup.Resource.ContainerRegistry, deploymentTarget.ContainerRegistry); 2217Assert.Same(sandboxGroup.Resource, deploymentTarget.ComputeEnvironment); 2221Assert.Same(sandboxGroup.Resource, sandboxContainer.Parent); 2252Resource = sandboxGroup.Resource.ContainerRegistry, 2305foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>() 2350Assert.Same(sandboxGroup.Resource, computeResource.GetComputeEnvironment()); 2352var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2375var deploymentTarget = computeResource.GetDeploymentTargetAnnotation(sandboxGroup.Resource); 2396container.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2398var registry = Assert.IsType<AzureContainerRegistryResource>(sandboxGroup.Resource.ContainerRegistry); 2418Assert.Empty(context.GetSteps(container.Resource, WellKnownPipelineTags.PushContainerImage)); 2440api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2467var value = await AzureSandboxContainerDeployment.ResolveValueWithEgressHostsAsync(stepContext, web.Resource, endpointExpression); 2468var environment = await AzureSandboxContainerDeployment.ResolveEnvironmentVariablesAsync(stepContext, web.Resource); 2493var dependencies = await web.Resource.GetResourceDependenciesAsync( 2496Assert.Contains(api.Resource, dependencies); 2497var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 2504foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 2531var steps = await CreateStepsAsync(app, consumerGroup.Resource); 2541foreach (var annotation in consumerGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 2571var firstDependencies = await first.Resource.GetResourceDependenciesAsync( 2574var secondDependencies = await second.Resource.GetResourceDependenciesAsync( 2577Assert.Contains(second.Resource, firstDependencies); 2578Assert.Contains(first.Resource, secondDependencies); 2579var steps = await CreateStepsAsync(app, sandboxGroup.Resource); 2588foreach (var annotation in sandboxGroup.Resource.Annotations.OfType<PipelineConfigurationAnnotation>()) 2621project.Resource); 2625Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(project.Resource)); 2629Assert.True(AzureSandboxContainerDeployment.HasModeledCommandConfiguration(container.Resource)); 2650api.Resource.GetDeploymentTargetAnnotation(sandboxGroup.Resource)?.DeploymentTarget); 2674var command = await AzureSandboxContainerDeployment.ResolveModeledCommandAsync(stepContext, worker.Resource); 2709worker.Resource);
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 (45)
41var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 66var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 98await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 100await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 104await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 106await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 132hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 139await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 140await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 144await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 147await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 167serviceBus.Resource.Annotations.OfType<EndpointAnnotation>(), 190var containerImageAnnotation = serviceBus.Resource.Annotations.OfType<ContainerImageAnnotation>().FirstOrDefault(); 268var manifest = await AzureManifestUtils.GetManifestWithBicep(serviceBus.Resource); 626Assert.Same(serviceBus.Resource.Annotations, sourceResource.Annotations); 628var persistenceAnnotation = Assert.Single(serviceBus.Resource.Annotations.OfType<PersistenceAnnotation>()); 679Assert.Equal("{sb.outputs.serviceBusEndpoint}", serviceBus.Resource.ConnectionStringExpression.ValueExpression); 680Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=queue", queue.Resource.ConnectionStringExpression.ValueExpression); 681Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic", topic.Resource.ConnectionStringExpression.ValueExpression); 682Assert.Equal("Endpoint={sb.outputs.serviceBusEndpoint};EntityPath=topic/Subscriptions/sub", subscription.Resource.ConnectionStringExpression.ValueExpression); 696((IResourceWithAzureFunctionsConfig)serviceBus.Resource).ApplyAzureFunctionsConfiguration(target, "sb"); 702((IResourceWithAzureFunctionsConfig)queue.Resource).ApplyAzureFunctionsConfiguration(target, "queue"); 709((IResourceWithAzureFunctionsConfig)topic.Resource).ApplyAzureFunctionsConfiguration(target, "topic"); 716((IResourceWithAzureFunctionsConfig)subscription.Resource).ApplyAzureFunctionsConfiguration(target, "sub"); 752serviceBus.Resource.Outputs["serviceBusEndpoint"] = "mynamespaceEndpoint"; 754var connectionStringResource = (IResourceWithConnectionString)serviceBus.Resource; 756Assert.Equal("sb", serviceBus.Resource.Name); 762var manifest = await GetManifestWithBicep(model, serviceBus.Resource); 845hb.Configuration["ConnectionStrings:servicebusns"] = await serviceBus.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None); 848await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 849await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 856await using var sender = serviceBusClient.CreateSender(queueResource.Resource.QueueName); 859await using var receiver = serviceBusClient.CreateReceiver(queueResource.Resource.QueueName); 923Assert.True(serviceBus.Resource.IsEmulator()); 924Assert.Contains(serviceBus.Resource.Annotations, a => a is EmulatorResourceAnnotation); 954_ = serviceBus.Resource.AddAsExistingResource(infra); 957var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 976_ = serviceBus.Resource.AddAsExistingResource(infra); 979var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 995_ = serviceBus.Resource.AddAsExistingResource(infra); 998var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1016_ = serviceBus.Resource.AddAsExistingResource(infra); 1019var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true); 1036_ = serviceBus.Resource.AddAsExistingResource(infra); 1039var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
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)
201var 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 (114)
36var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 62var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 88var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 114var volumeAnnotation = storage.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 133storage.Resource.Annotations.OfType<EndpointAnnotation>(), 147var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); 167var args = await ArgumentEvaluator.GetArgumentListAsync(storage.Resource); 187Assert.True(storage.Resource.IsContainer()); 191Assert.Equal(expected, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default)); 203storage.Resource.Outputs["blobEndpoint"] = blobsConnectionString; 207Assert.Equal(blobsConnectionString, await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default)); 218Assert.Equal("{storage.outputs.blobEndpoint}", blobs.Resource.ConnectionStringExpression.ValueExpression); 235Assert.True(storage.Resource.IsContainer()); 240string? blobConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default); 241string? blobContainerConnectionString = await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default); 257storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 262string? blobsConnectionString = await ((IResourceWithConnectionString)blobs.Resource).ConnectionStringExpression.GetValueAsync(default); 265Assert.Equal(expected, await ((IResourceWithConnectionString)blobContainer.Resource).ConnectionStringExpression.GetValueAsync(default)); 276Assert.Equal("Endpoint={storage.outputs.blobEndpoint};ContainerName=myContainer", blobContainer.Resource.ConnectionStringExpression.ValueExpression); 293Assert.True(storage.Resource.IsContainer()); 297Assert.Equal(expected, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync()); 309storage.Resource.Outputs["queueEndpoint"] = connectionString; 313Assert.Equal(connectionString, await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync()); 324Assert.Equal("{storage.outputs.queueEndpoint}", queues.Resource.ConnectionStringExpression.ValueExpression); 341Assert.True(storage.Resource.IsContainer()); 346string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync(); 349Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 361storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 366string? connectionString = await ((IResourceWithConnectionString)queues.Resource).GetConnectionStringAsync(); 369Assert.Equal(expected, await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 381Assert.Equal("Endpoint={storage.outputs.queueEndpoint};QueueName=myqueue", queue.Resource.ConnectionStringExpression.ValueExpression); 396var manifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 413Assert.True(storage.Resource.IsContainer()); 420=> new(storage.Resource, new EndpointAnnotation(ProtocolType.Tcp, name: name, targetPort: port)); 426Assert.Equal(blobqs, blob.Resource.ConnectionStringExpression.ValueExpression); 427Assert.Equal(queueqs, queue.Resource.ConnectionStringExpression.ValueExpression); 428Assert.Equal(tableqs, table.Resource.ConnectionStringExpression.ValueExpression); 435Assert.Equal(Resolve(blobqs, "blob", 10000), await ((IResourceWithConnectionString)blob.Resource).GetConnectionStringAsync()); 436Assert.Equal(Resolve(queueqs, "queue", 10001), await ((IResourceWithConnectionString)queue.Resource).GetConnectionStringAsync()); 437Assert.Equal(Resolve(tableqs, "table", 10002), await ((IResourceWithConnectionString)table.Resource).GetConnectionStringAsync()); 456storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 457storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 458storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 461Assert.Equal("storage", storage.Resource.Name); 463var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 481var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 490var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 496var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 505var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 511var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 520var tableManifest = await ManifestUtils.GetManifest(table.Resource); 541storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 542storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 543storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 546Assert.Equal("storage", storage.Resource.Name); 548var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 566var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 575var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 581var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 590var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 596var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 605var tableManifest = await ManifestUtils.GetManifest(table.Resource); 629storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 630storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 631storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 634Assert.Equal("storage", storage.Resource.Name); 638var storageManifest = await GetManifestWithBicep(model, storage.Resource); 704var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 713var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 717var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 726var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 730var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 739var tableManifest = await ManifestUtils.GetManifest(table.Resource); 760storage.Resource.Outputs["blobEndpoint"] = "https://myblob"; 761storage.Resource.Outputs["queueEndpoint"] = "https://myqueue"; 762storage.Resource.Outputs["tableEndpoint"] = "https://mytable"; 765Assert.Equal("storage", storage.Resource.Name); 767var storageManifest = await AzureManifestUtils.GetManifestWithBicep(storage.Resource); 786var connectionStringBlobResource = (IResourceWithConnectionString)blob.Resource; 795var blobManifest = await ManifestUtils.GetManifest(blob.Resource); 801var connectionStringQueueResource = (IResourceWithConnectionString)queue.Resource; 810var queueManifest = await ManifestUtils.GetManifest(queue.Resource); 816var connectionStringTableResource = (IResourceWithConnectionString)table.Resource; 825var tableManifest = await ManifestUtils.GetManifest(table.Resource); 852Assert.Equal("storage-blobs", blobService.Resource.Name); 853Assert.Equal(blobService.Resource, blobStorageResource); 879Assert.Equal("storage-queues", queueService.Resource.Name); 880Assert.Equal(queueService.Resource, queueStorageResource); 897Assert.Same(blobs.Resource, container1.Resource.Parent); 898Assert.Same(blobs.Resource, container2.Resource.Parent); 914Assert.Same(queues.Resource, q1.Resource.Parent); 915Assert.Same(queues.Resource, q2.Resource.Parent); 931Assert.Same(dataLake.Resource, fs1.Resource.Parent); 932Assert.Same(dataLake.Resource, fs2.Resource.Parent); 957Assert.Equal("blobs", customBlobs.Resource.Name); 958Assert.Same(customBlobService, customBlobs.Resource); 960Assert.Same(defaultBlobService, originals.Resource.Parent); 961Assert.Same(defaultBlobService, derived.Resource.Parent); 977Assert.NotSame(customBlobs.Resource, defaultBlobs.Resource); 978Assert.Equal("blobs", customBlobs.Resource.Name); 979Assert.Equal("storage-blobs", defaultBlobs.Resource.Name); 994Assert.Same(first.Resource, container.Resource.Parent); 1005Assert.True(storage.Resource.IsEmulator()); 1006Assert.Contains(storage.Resource.Annotations, a => a is EmulatorResourceAnnotation); 1036_ = storage.Resource.AddAsExistingResource(infra); 1039var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
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 (11)
127Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 174Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 179Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 232Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 237Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 315Assert.Same(identity.Resource, identityAnnotation.IdentityResource); 316Assert.Same(identity.Resource, identityAnnotation2.IdentityResource); 323Assert.Same(storage.Resource, roleAssignmentResource.TargetAzureResource); 325Assert.Same(storage.Resource, roleAssignmentResource2.TargetAzureResource); 373_ = userAssignedIdentity.Resource.AddAsExistingResource(infra); 376var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
AzureVirtualNetworkExtensionsTests.cs (80)
22Assert.Equal("myvnet", vnet.Resource.Name); 23Assert.IsType<AzureVirtualNetworkResource>(vnet.Resource); 34Assert.Equal("myvnet", vnet.Resource.Name); 35Assert.Equal("10.1.0.0/16", vnet.Resource.AddressPrefix); 36Assert.Null(vnet.Resource.AddressPrefixParameter); 48Assert.Equal("myvnet", vnet.Resource.Name); 49Assert.Null(vnet.Resource.AddressPrefix); 50Assert.Same(vnetPrefixParam.Resource, vnet.Resource.AddressPrefixParameter); 61var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 76Assert.Equal("mysubnet", subnet.Resource.Name); 77Assert.Equal("mysubnet", subnet.Resource.SubnetName); 78Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 79Assert.Same(vnet.Resource, subnet.Resource.Parent); 90Assert.Equal("mysubnet", subnet.Resource.Name); 91Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 92Assert.Equal("10.0.1.0/24", subnet.Resource.AddressPrefix); 105Assert.Same(vnet.Resource, subnet1.Resource.Parent); 106Assert.Same(vnet.Resource, subnet2.Resource.Parent); 108Assert.NotSame(subnet1.Resource, subnet2.Resource); 121var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 135Assert.DoesNotContain(vnet.Resource, builder.Resources); 137Assert.DoesNotContain(subnet.Resource, builder.Resources); 152var subnetAnnotation = env.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 157var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 171var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 186var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 201var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 226var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().Single(); 245var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 283var subnetAnnotation = environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>().SingleOrDefault(); 287var delegationAnnotation = subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>().SingleOrDefault(); 304var subnetAnnotation = Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 307var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 323Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 324var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 341Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 342var delegationAnnotation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 364Assert.Single(environment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 365Assert.Single(firstSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 366Assert.Empty(secondSubnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 386Assert.Empty(appServiceEnvironment.Resource.Annotations.OfType<DelegatedSubnetAnnotation>()); 388var delegation = Assert.Single(subnet.Resource.Annotations.OfType<AzureSubnetServiceDelegationAnnotation>()); 402Assert.Equal("mysubnet", subnet.Resource.Name); 403Assert.Equal("mysubnet", subnet.Resource.SubnetName); 404Assert.Null(subnet.Resource.AddressPrefix); 405Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 406Assert.Same(vnet.Resource, subnet.Resource.Parent); 418Assert.Equal("mysubnet", subnet.Resource.Name); 419Assert.Equal("custom-subnet-name", subnet.Resource.SubnetName); 420Assert.Null(subnet.Resource.AddressPrefix); 421Assert.Same(addressPrefixParam.Resource, subnet.Resource.AddressPrefixParameter); 433var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 448var manifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 462Assert.NotNull(subnet.Resource.NetworkSecurityGroup); 463Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name); 464Assert.Single(subnet.Resource.NetworkSecurityGroup.SecurityRules); 478Assert.Same(nsg.Resource, subnet.Resource.NetworkSecurityGroup); 479Assert.Single(nsg.Resource.SecurityRules); 493var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 510var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 527var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 543var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 557var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 572var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 587var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 603var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 616var rule = Assert.Single(subnet.Resource.NetworkSecurityGroup!.SecurityRules); 634var vnetManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource); 635var nsgManifest = await AzureManifestUtils.GetManifestWithBicep(vnet.Resource.Subnets[0].NetworkSecurityGroup!); 653var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules; 713var rules = subnet.Resource.NetworkSecurityGroup!.SecurityRules;
AzureWebPubSubExtensionsTests.cs (43)
35Assert.Equal(hubName, hub.Resource.Name); 36var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 57var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 63Assert.Equal("wps1", wps.Resource.Name); 76Assert.Equal("{wps1.outputs.endpoint}", wps.Resource.ConnectionStringExpression.ValueExpression); 77Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=abc", hub.Resource.ConnectionStringExpression.ValueExpression); 79Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hij", otherHub.Resource.ConnectionStringExpression.ValueExpression); 102var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 108Assert.Equal("wps1", wps.Resource.Name); 132var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 138Assert.Equal("wps1", wps.Resource.Name); 158wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 159var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 164Assert.Equal("wps1", wps.Resource.Name); 193wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 208var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 211var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 218Assert.Equal("wps1", wps.Resource.Name); 234Assert.Equal("hub1", hub1.Resource.Name); 235Assert.Equal("resource2", hub2.Resource.Name); 236Assert.Equal("hub3", hub3.Resource.Name); 237Assert.Equal("hub4", hub4.Resource.Name); 239Assert.Equal("hub1", hub1.Resource.HubName); 240Assert.Equal("hub2", hub2.Resource.HubName); 241Assert.Equal("hub3", hub3.Resource.HubName); 242Assert.Equal("hub4", hub4.Resource.HubName); 244Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub1", hub1.Resource.ConnectionStringExpression.ValueExpression); 245Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub2", hub2.Resource.ConnectionStringExpression.ValueExpression); 246Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub3", hub3.Resource.ConnectionStringExpression.ValueExpression); 247Assert.Equal("Endpoint={wps1.outputs.endpoint};Hub=hub4", hub4.Resource.ConnectionStringExpression.ValueExpression); 261Assert.Same(hub1.Resource, hub2.Resource); 262Assert.Equal("resource1", hub1.Resource.Name); 263Assert.Equal("same-hub", hub1.Resource.HubName); 272wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 282var connectionStringResource = (IResourceWithConnectionString)wps.Resource; 288var manifest = await GetManifestWithBicep(model, wps.Resource); 292Assert.Equal("wps1", wps.Resource.Name); 332wps.Resource.Outputs["endpoint"] = "https://mywebpubsubendpoint"; 345var manifest = await AzureManifestUtils.GetManifestWithBicep(wps.Resource); 348Assert.Equal("wps1", wps.Resource.Name); 380_ = webPubSub.Resource.AddAsExistingResource(infra); 383var (manifest, bicep) = await AzureManifestUtils.GetManifestWithBicep(module.Resource, skipPreparer: true);
BicepUtilitiesTests.cs (48)
23await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource); 55.WithParameter("expr", ReferenceExpression.Create($"{param.Resource}/1")) 59await BicepUtilities.SetParametersAsync(parameters, bicep0.Resource); 73Assert.True(bicep0.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 78Assert.Equal(connectionStringResource.Resource, r.Resource); 83Assert.Equal(param.Resource, r.Resource); 88Assert.Equal(container.Resource, r.Resource); 110await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 111var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 114await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 115var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 137await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 138var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, null); 141await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 142var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, null); 154bicep0.Resource.Scope = new("rg0"); 158bicep1.Resource.Scope = new("rg1"); 162await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 163await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 164var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 168await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 169await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 170var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 182bicep0.Resource.Scope = new("rg0"); 186bicep1.Resource.Scope = new("rg0"); 190await BicepUtilities.SetParametersAsync(parameters0, bicep0.Resource); 191await BicepUtilities.SetScopeAsync(scope0, bicep0.Resource); 192var checkSum0 = BicepUtilities.GetChecksum(bicep0.Resource, parameters0, scope0); 196await BicepUtilities.SetParametersAsync(parameters1, bicep1.Resource); 197await BicepUtilities.SetScopeAsync(scope1, bicep1.Resource); 198var checkSum1 = BicepUtilities.GetChecksum(bicep1.Resource, parameters1, scope1); 208var bicep1 = builder.AddBicepTemplateString("test1", "param name string").Resource; 209var bicep2 = builder.AddBicepTemplateString("test2", "param name string").Resource; 229var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 254var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 282var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 314var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 335var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 350var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 366var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 381var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 400var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 415var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 429var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 441var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 459var bicep = builder.AddBicepTemplateString("test", "param name string").Resource; 486.Resource; 523var bicep = builder.AddBicepTemplateString("test", "param name string").Resource;
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 (4)
21deployment.Resource.Parent.EmulatorServiceUri = new Uri("http://localhost:8080"); 22deployment.Resource.Parent.ApiKey = "OPENAI_KEY"; 24var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray(); 67var properties = ((IResourceWithConnectionString)deployment.Resource).GetConnectionProperties().ToArray();
FoundryExtensionsTests.cs (20)
157Assert.Equal("{myAIFoundry.connectionString};Model=gpt-4", deployment.Resource.ConnectionStringExpression.ValueExpression); 168deployment.Resource.ModelId = "custom-model-id"; 170Assert.Equal("{myAIFoundry.connectionString};Model=custom-model-id", deployment.Resource.ConnectionStringExpression.ValueExpression); 183Assert.Equal("{myAIFoundry.connectionString};Deployment=deployment1", deployment.Resource.ConnectionStringExpression.ValueExpression); 199var manifest = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 217Assert.Same(foundry.Resource, project.Resource.Parent); 230Assert.Null(project.Resource.ContainerRegistry); 245var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 265var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, project.Resource); 283var (_, bicepText) = await AzureManifestUtils.GetManifestWithBicep(model, foundry.Resource); 330SetFoundryProjectOutputs(project.Resource); 336advisorAgent.Resource, 359SetFoundryProjectOutputs(project.Resource); 365advisorAgent.Resource, 400SetFoundryProjectOutputs(project.Resource); 406advisorAgent.Resource, 441SetFoundryProjectOutputs(project.Resource); 447advisorAgent.Resource, 483advisorAgent.Resource,
PublicApiTests\CosmosDBPublicApiTests.cs (10)
21var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 41var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 61var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 81var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 101var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 119var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 135var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 153var parent = new AzureCosmosDBDatabaseResource("database", "cosmos-db", resource.Resource); 199var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource); 217var action = () => new AzureCosmosDBDatabaseResource(name, databaseName, parent.Resource);
PublicApiTests\EventHubsPublicApiTests.cs (2)
21var parent = new AzureEventHubResource("hub", "event-hub", resource.Resource); 40var parent = new AzureEventHubResource("hub", "event-hub", resource.Resource);
ResourceWithAzureFunctionsConfigTests.cs (36)
16var storageResource = builder.AddAzureStorage("storage").Resource; 28var blobResource = storageResource.AddBlobs("blobs").Resource; 40var queueResource = storageResource.AddQueues("queues").Resource; 51var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource; 63var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 76var containerResource = dbResource.AddContainer("container", "/id").Resource; 87var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource; 98var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource; 109var storage = builder.AddAzureStorage("storage").RunAsEmulator().Resource; 127var storage = builder.AddAzureStorage("storage").Resource; 148var blobResource = storage.AddBlobs("blobs").Resource; 165var tableResource = storage.AddTables("tables").Resource; 182var queueResource = storage.AddQueues("queues").Resource; 198var cosmosResource = builder.AddAzureCosmosDB("cosmos").RunAsEmulator().Resource; 214var cosmosResource = builder.AddAzureCosmosDB("cosmos").WithAccessKeyAuthentication().Resource; 230var cosmosResource = builder.AddAzureCosmosDB("cosmos").Resource; 247var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 256Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression); 259Assert.Equal(cosmosResource.Resource.ConnectionStringExpression.ValueExpression, targetReferenceExpression.ValueExpression); 272var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource; 281Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 284Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 300var dbResource = cosmosResource.AddCosmosDatabase("database").Resource; 309Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 322var containerResource = cosmosResource.AddCosmosDatabase("database").AddContainer("container", "/partitionKey").Resource; 331Assert.Equal(targetReferenceExpression.ValueExpression, cosmosResource.Resource.ConnectionStringExpression.ValueExpression); 342var eventHubsResource = builder.AddAzureEventHubs("eventhubs").RunAsEmulator().Resource; 362var eventHubsResource = builder.AddAzureEventHubs("eventhubs").Resource; 382var serviceBusResource = builder.AddAzureServiceBus("servicebus").Resource; 399var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource; 418var queueResource = serviceBusResource.AddServiceBusQueue("ordersqueue").Resource; 438var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource; 457var topicResource = serviceBusResource.AddServiceBusTopic("notificationstopic").Resource; 478var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource; 500var subscriptionResource = topicResource.AddServiceBusSubscription("usersubscription").Resource; 515Assert.Equal(serviceBusResource.Resource.ConnectionStringExpression.ValueExpression, connectionStringExpression.ValueExpression);
Aspire.Hosting.Azure.WebPubSub (5)
AzureWebPubSubExtensions.cs (4)
190if (!builder.Resource.Hubs.TryGetValue(hubName, out hubResource)) 192hubResource = new AzureWebPubSubHubResource(name, hubName, builder.Resource); 193builder.Resource.Hubs[hubName] = hubResource; 250builder.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 (40)
BlazorGatewayExtensions.cs (22)
233var pathPrefix = wasmApp.Resource.Name; 238var referencedServices = GetServiceDiscoveryReferences(wasmApp.Resource); 244var existingGatewayRefs = GetReferencedResourceNames(gateway.Resource); 256wasmApp.Resource.Parent = gateway.Resource; 269gateway.Resource, 271wasmApp.Resource.ProjectPath, 273browser: wasmApp.Resource.DebuggerBrowser); 293wasmApp.Resource.DebuggerBrowser = browser; 317var annotation = GetOrAddGatewayAppsAnnotation(gateway.Resource); 320GetBlazorStorePath(gateway.ApplicationBuilder), "gateways", gateway.Resource.Name); 329var registeredApps = GetRegisteredApps(gateway.Resource); 330var httpsGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "https"); 331var httpGatewayEndpoint = GetEndpointIfDefined(gateway.Resource, "http"); 333?? throw new InvalidOperationException($"The gateway '{gateway.Resource.Name}' must define an HTTP or HTTPS endpoint."); 410gateway.ApplicationBuilder.Eventing.Subscribe<InitializeResourceEvent>(gateway.Resource, (e, ct) => 413_ = Task.Run(() => WatchGatewayStateAsync(gateway.Resource, notificationService, ct), ct); 442await notificationService.PublishUpdateAsync(reg.AppBuilder.Resource, snapshot => snapshot with 535var publishResourceName = $"{wasmApp.Resource.Name}publish"; 536var project = GetProjectInfo(wasmApp.Resource.ProjectPath, gateway.ApplicationBuilder.AppHostDirectory); 538project.SolutionRoot, wasmApp.Resource.ProjectPath).Replace('\\', '/'); 574Source = companion.Resource,
BlazorHostedExtensions.cs (13)
36var annotation = GetOrAddHostedClientAnnotation(host.Resource); 37annotation.Services.Add(new HostedClientService(service.Resource.Name, apiPrefix)); 40var existingRefs = GetReferencedResourceNames(host.Resource); 41if (!existingRefs.Contains(service.Resource.Name)) 64var annotation = GetOrAddHostedClientAnnotation(host.Resource); 85var annotation = GetOrAddHostedClientAnnotation(host.Resource); 105var debuggerName = $"{host.Resource.Name}-wasm-debugger"; 108var projectMetadata = host.Resource.GetProjectMetadata(); 136var httpsHostEndpoint = GetEndpointIfDefined(host.Resource, "https"); 137var httpHostEndpoint = GetEndpointIfDefined(host.Resource, "http"); 139?? throw new InvalidOperationException($"The host '{host.Resource.Name}' must define an HTTP or HTTPS endpoint."); 156$"{host.Resource.Name} (client)", 291host.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 (37)
AddDotnetProjectBlazorGatewayTests.cs (4)
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
BlazorHostedExtensionsTests.cs (10)
179Assert.Same(host.Resource, parentRelationship.Resource); 181var commands = host.Resource.Annotations 214host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 240host.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 250ResourceName = host.Resource.Name, 338var endpointRef = host.Resource.Annotations 389var weatherRefs = host.Resource.Annotations 411var referencedNames = host.Resource.Annotations 469var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder); 490var (_, sink) = await GetEnvironmentVariablesWithLogs(gateway.Resource, builder);
WithBlazorAppTests.cs (23)
28var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 50var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 74var annotations = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().ToList(); 97var gatewayRefs = gateway.Resource.Annotations 124var weatherRefs = gateway.Resource.Annotations 152var refs = gateway.Resource.Annotations 173var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 202Assert.Same(gateway.Resource, parentRelationship.Resource); 208var commandNames = wasmApp.Resource.Annotations 214Assert.DoesNotContain(gateway.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 231Assert.DoesNotContain(wasmApp.Resource.Annotations, annotation => annotation is ResourceCommandAnnotation); 232Assert.Single(gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>()); 249var commands = wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToDictionary(annotation => annotation.Name); 289wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 316wasmApp.Resource.Annotations.OfType<ResourceCommandAnnotation>(), 323ResourceName = wasmApp.Resource.Name, 355Assert.Equal(wasmApp.Resource.ProjectPath, launchConfiguration.WebRoot); 372var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().SingleOrDefault(); 397var endpointRef = gateway.Resource.Annotations 426var endpointRef = gateway.Resource.Annotations 437var annotation = gateway.Resource.Annotations.OfType<GatewayAppsAnnotation>().Single(); 467var endpointRef = gateway.Resource.Annotations 478var 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)
49Assert.Equal(web.Resource.Name, browserLogsResource.ParentResource.Name); 56Assert.Equal(web.Resource.Name, parentRelationship.Resource.Name); 1353await app.ResourceNotifications.PublishUpdateAsync(web.Resource, snapshot => snapshot with 1359await 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)
106Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 110Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 131Assert.True(dockerFile.Resource.TryGetLastAnnotation<ContainerImageAnnotation>(out var containerImageAnnotation)); 135Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation)); 139Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 154Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 158Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 176Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation1)); 180Assert.True(dockerFile.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var buildAnnotation2)); 187Assert.True(dockerFile.Resource.TryGetContainerImageName(out var imageName)); 282var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 331var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 379var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 426var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 656var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 672var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 689var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 705var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 722var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 738var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 755var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 771var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 796var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 800var stepsAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 805Resource = container.Resource 823Resource = container.Resource, 848var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 856Resource = container.Resource, 882var manifest = await ManifestUtils.GetManifest(container.Resource, manifestDirectory: tempContextPath); 901var annotation = Assert.Single(container.Resource.Annotations.OfType<DockerfileBuildAnnotation>());
Aspire.Hosting.DevTunnels (11)
DevTunnelResourceBuilderExtensions.cs (11)
295foreach (var endpoint in resourceBuilder.Resource.GetEndpoints()) 365tunnelBuilder.Resource.Options.AllowAnonymous = true; 389return tunnelBuilder.GetEndpoint(resourceBuilder.Resource, endpointName); 409var portResource = tunnelBuilder.Resource.Ports 414return CreateEndpointReferenceWithError(tunnelBuilder.Resource, resource, endpointName); 432var portResource = tunnelBuilder.Resource.Ports 438return CreateEndpointReferenceWithError(tunnelBuilder.Resource, targetEndpointReference.Resource, targetEndpointReference.EndpointName); 491foreach (var port in tunnelResource.Resource.Ports.Where(p => p.TargetEndpoint.Resource == targetResource.Resource)) 493var serviceName = targetResource.Resource.Name; 537var tunnel = tunnelBuilder.Resource;
Aspire.Hosting.DevTunnels.Tests (34)
DevTunnelResourceBuilderExtensionsTests.cs (34)
33var tunnelPort = tunnel.Resource.Ports.FirstOrDefault(); 38var values = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, serviceProvider: builder.Services.BuildServiceProvider()).DefaultTimeout(); 52Assert.True(tunnel.Resource.Options.AllowAnonymous); 62Assert.Equal("custom-id", tunnel.Resource.TunnelId); 73var annotation = Assert.Single(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 84Assert.Empty(tunnel.Resource.Annotations.OfType<PersistenceAnnotation>()); 97Assert.Single(tunnel.Resource.Ports); 98var port = tunnel.Resource.Ports.First(); 112var tunnelPort = Assert.Single(tunnel.Resource.Ports); 127var tunnelPort = Assert.Single(tunnel.Resource.Ports); 146var tunnelPort = Assert.Single(tunnel.Resource.Ports); 166var tunnelPort = Assert.Single(tunnel.Resource.Ports); 186var args = await tunnel.Resource.GetArgumentValuesAsync().DefaultTimeout(); 216var tunnelPort = Assert.Single(tunnel.Resource.Ports); 224await builder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnel.Resource, app.Services)).DefaultTimeout(); 263tunnel.Resource, 285var tunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 288Assert.Equal(target.Resource, tunnelEndpoint.Resource); 305Assert.Equal(target.Resource, tunnelEndpoint.Resource); 323Assert.Equal(target.Resource, tunnelEndpoint.Resource); 337var endpointRef = tunnel.GetEndpoint(target.Resource, "nonexistent"); 377var endpointRef = tunnel.GetEndpoint(target.Resource, "https"); 397var httpTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "http"); 398var httpsTunnelEndpoint = tunnel.GetEndpoint(target.Resource, "https"); 420var port = Assert.Single(tunnel.Resource.Ports); 510var port = Assert.Single(tunnel.Resource.Ports); 555var contextualTargetEndpoint = new EndpointReference(target.Resource, targetEndpoint.EndpointAnnotation, containerNetwork); 558var port = Assert.Single(tunnel.Resource.Ports); 618var tunnelPort = Assert.Single(tunnel.Resource.Ports); 619foreach (var annotation in tunnel.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>().ToArray()) 621tunnel.Resource.Annotations.Remove(annotation); 652var port = Assert.Single(tunnel.Resource.Ports); 655tunnel.Resource.LastKnownStatus = new("tunnel", HostConnections: 1, ClientConnections: 0, Description: "", Labels: []); 662await builder.Eventing.PublishAsync(new ResourceReadyEvent(tunnel.Resource, app.Services)).DefaultTimeout();
Aspire.Hosting.Docker (12)
DockerComposeEnvironmentExtensions.cs (6)
117configure(builder.Resource); 139builder.Resource.ConfigureComposeFile += configure; 162builder.Resource.ConfigureEnvFile += configure; 178builder.Resource.DashboardEnabled = enabled; 197builder.Resource.DashboardEnabled = true; 199configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized"));
DockerComposeEnvironmentResource.cs (4)
87var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 212var resources = DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard 309if (DashboardEnabled && Dashboard?.Resource is DockerComposeAspireDashboardResource dashboard && !IsAlreadyTargeted(dashboard)) 342if (DashboardEnabled && Dashboard?.Resource.OtlpGrpcEndpoint is EndpointReference otlpGrpcEndpoint)
DockerComposePublishingContext.cs (1)
77IEnumerable<IResource> resources = environment.Dashboard?.Resource is IResource r
DockerComposeServiceExtensions.cs (1)
87return builder.Resource.AsEnvironmentPlaceholder(dockerComposeService);
Aspire.Hosting.Docker.Tests (29)
DockerComposePublisherTests.cs (3)
82.WithArgs("--cs", cs.Resource) 298var parmeters = paramNames.Select(name => builder.AddParameter(name).Resource).ToArray(); 1130enableTls.Resource,
DockerComposeTests.cs (26)
44Assert.Same(composeEnv.Resource, container.Resource.GetDeploymentTargetAnnotation()?.ComputeEnvironment); 278var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 520var containerImageReference = new ContainerImageReference(project.Resource); 545var containerImageReference = new ContainerImageReference(project.Resource); 568var containerImageReference = new ContainerImageReference(project.Resource); 592var containerImageReference = new ContainerImageReference(project.Resource); 620var containerImageReference = new ContainerImageReference(project.Resource); 645var containerImageReference = new ContainerImageReference(container.Resource); 670acr.Resource.Outputs["loginServer"] = "myacr.azurecr.io"; 671Assert.NotNull(acr.Resource.ProvisioningTaskCompletionSource); 672acr.Resource.ProvisioningTaskCompletionSource.TrySetResult(); 675var containerImageReference = new ContainerImageReference(project.Resource); 889var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 891Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 895var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 897Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 901var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 903Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 907var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 909Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 912Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 913Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 914Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 915Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 945Assert.Same(dockerCompose.Resource, target.ComputeEnvironment);
Aspire.Hosting.Dotnet.Tests (33)
DotnetProjectResourceTests.cs (33)
46var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 64var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 82Assert.Equal("dotnet", app.Resource.Command); 83Assert.Equal(Path.GetDirectoryName(projectPath), app.Resource.WorkingDirectory); 93Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 94Assert.IsAssignableFrom<ExecutableResource>(app.Resource); 95Assert.IsAssignableFrom<IComputeResource>(app.Resource); 106Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 129() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 373var manifest = await ManifestUtils.GetManifestOrNull(resource.Resource, workspace.Path); 389var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 407var manifest = await ManifestUtils.GetManifest(resource.Resource, workspace.Path); 439Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 457Assert.True(app.Resource.TryGetLastAnnotation<IProjectMetadata>(out var metadata)); 467var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 495var endpoint = Assert.Single(app.Resource.Annotations.OfType<EndpointAnnotation>()); 509var resource = builder.AddDotnetProject("testapp", projectPath, o => o.ExcludeLaunchProfile = true).Resource; 544Assert.True(app.Resource.TryGetLastAnnotation<SupportsDebuggingAnnotation>(out var supportsDebugging)); 548app.Resource, 551await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 583app.Resource, 586await app.Resource.CreateLaunchConfigurationAsync(callbackContext)); 604var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 620Assert.Empty(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 622var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 666var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 693var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 719var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 752var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 784var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 814var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 857var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 885var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services);
Aspire.Hosting.DotnetTool.Tests (31)
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 (23)
EFMigrationResourceBuilderExtensions.cs (15)
38var migrationResource = builder.Resource; 103builder.Resource.PublishAsMigrationScript = true; 104builder.Resource.ScriptIdempotent = idempotent; 105builder.Resource.ScriptNoTransactions = noTransactions; 163builder.Resource.PublishAsMigrationBundle = true; 164builder.Resource.BundleSelfContained = selfContained; 165builder.Resource.PublishBundleContainer = publishContainer; 166builder.Resource.BundleBaseImage = baseImage; 170builder.Resource.BundleTargetRuntime = targetRuntime ?? (publishContainer ? "linux-x64" : null); 201builder.Resource.MigrationOutputDirectory = outputDirectory; 219builder.Resource.MigrationNamespace = @namespace; 243builder.Resource.MigrationsProjectPath = projectPath; 265builder.Resource.MigrationsProjectPath = new TProject().ProjectPath; 283IResourceBuilder<ProjectResource> projectBuilder => builder.WithMigrationsProject(projectBuilder.Resource.GetProjectMetadata().ProjectPath), 309var migrationResource = builder.Resource;
EFResourceBuilderExtensions.cs (8)
150.Where(r => r.ProjectResource == builder.Resource) 158$"The DbContext type '{GetShortTypeName(dbContextTypeName)}' has already been registered for EF migrations on resource '{builder.Resource.Name}'."); 164$"Cannot register a specific DbContext type for migrations when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 172$"Cannot register migrations without a context type when they have already been registered without a context type on resource '{builder.Resource.Name}'."); 176$"Cannot register migrations without a context type when they have already been registered for specific DbContext types on resource '{builder.Resource.Name}'."); 179var migrationResource = new EFMigrationResource(name, builder.Resource, dbContextTypeName) 655var toolResource = toolBuilder.Resource; 689migrationResource.ToolResource = toolBuilder.Resource;
Aspire.Hosting.EntityFrameworkCore.Tests (168)
AddEFMigrationsTests.cs (29)
23Assert.Equal("mymigrations", migrations.Resource.Name); 24Assert.Equal(project.Resource, migrations.Resource.ProjectResource); 25Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 37Assert.Equal("mymigrations", migrations.Resource.Name); 38Assert.Equal(project.Resource, migrations.Resource.ProjectResource); 39Assert.Null(migrations.Resource.DbContextTypeName); 51Assert.Equal("mymigrations", migrations.Resource.Name); 52Assert.Equal(project.Resource, migrations.Resource.ProjectResource); 53Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 66Assert.Equal("mymigrations", migrations.Resource.Name); 67Assert.Equal(project.Resource, migrations.Resource.ProjectResource); 68Assert.Equal(contextTypeName, migrations.Resource.DbContextTypeName); 95Assert.NotEqual(migrations1.Resource, migrations2.Resource); 96Assert.Equal(typeof(TestDbContext).FullName, migrations1.Resource.DbContextTypeName); 97Assert.Equal(typeof(AnotherDbContext).FullName, migrations2.Resource.DbContextTypeName); 109Assert.NotEqual(migrations1.Resource, migrations2.Resource); 110Assert.Equal("MyApp.Data.AppDbContext", migrations1.Resource.DbContextTypeName); 111Assert.Equal("MyApp.Data.LoggingDbContext", migrations2.Resource.DbContextTypeName); 191var snapshotAnnotation = migrations.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().FirstOrDefault(); 204var iconAnnotation = migrations.Resource.Annotations.OfType<ResourceIconAnnotation>().FirstOrDefault(); 216Assert.IsAssignableFrom<IResourceWithWaitSupport>(migrations.Resource); 226Assert.False(migrations.Resource.PublishAsMigrationScript); 227Assert.False(migrations.Resource.PublishAsMigrationBundle);
EFCoreOperationExecutorTests.cs (7)
144project.Resource, 167project.Resource, 191tool.Resource.Annotations.Add(firstCommand); 194tool.Resource, 199tool.Resource.Annotations.Remove(firstCommand); 200tool.Resource.Annotations.Add(new CommandLineArgsCallbackAnnotation(args => args.Add("second"))); 203tool.Resource,
EFMigrationCommandsTests.cs (18)
20var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 34var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 49var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 64var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 82var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 96var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 110var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 124var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 139Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 149var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 164var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 180var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 196var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 224migrations.Resource.IsExecutingCommand = true; 226var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 254migrations.Resource.IsExecutingCommand = true; 256var commands = migrations.Resource.Annotations.OfType<ResourceCommandAnnotation>().ToList(); 277migrations.Resource.IsExecutingCommand = false;
EFMigrationConfigurationTests.cs (33)
32Assert.True(migrations.Resource.PublishAsMigrationScript); 43Assert.True(migrations.Resource.PublishAsMigrationBundle); 54Assert.Equal("Data/Migrations", migrations.Resource.MigrationOutputDirectory); 65Assert.Equal("MyApp.Data.Migrations", migrations.Resource.MigrationNamespace); 97Assert.True(migrations.Resource.PublishAsMigrationScript); 112Assert.True(migrations.Resource.PublishAsMigrationScript); 113Assert.True(migrations.Resource.PublishAsMigrationBundle); 114Assert.Equal("CustomDir", migrations.Resource.MigrationOutputDirectory); 115Assert.Equal("MyApp.Migrations", migrations.Resource.MigrationNamespace); 129Assert.Equal(typeof(TestDbContext).FullName, migrations.Resource.DbContextTypeName); 161Assert.False(migrations.Resource.PublishAsMigrationScript); 162Assert.False(migrations.Resource.PublishAsMigrationBundle); 163Assert.Null(migrations.Resource.MigrationOutputDirectory); 164Assert.Null(migrations.Resource.MigrationNamespace); 165Assert.Null(migrations.Resource.MigrationsProjectPath); 176Assert.NotNull(migrations.Resource.MigrationsProjectPath); 178Assert.EndsWith("Target.csproj", migrations.Resource.MigrationsProjectPath); 209Assert.True(migrations.Resource.PublishAsMigrationScript); 210Assert.True(migrations.Resource.ScriptIdempotent); 221Assert.True(migrations.Resource.PublishAsMigrationScript); 222Assert.False(migrations.Resource.ScriptIdempotent); 233Assert.True(migrations.Resource.PublishAsMigrationScript); 234Assert.True(migrations.Resource.ScriptNoTransactions); 245Assert.True(migrations.Resource.PublishAsMigrationBundle); 246Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 257Assert.True(migrations.Resource.PublishAsMigrationBundle); 258Assert.True(migrations.Resource.BundleSelfContained); 270Assert.True(migrations.Resource.PublishAsMigrationScript); 271Assert.True(migrations.Resource.ScriptIdempotent); 272Assert.True(migrations.Resource.ScriptNoTransactions); 273Assert.True(migrations.Resource.PublishAsMigrationBundle); 274Assert.Equal("win-x64", migrations.Resource.BundleTargetRuntime); 275Assert.True(migrations.Resource.BundleSelfContained);
EFMigrationPipelineTests.cs (69)
25var steps = await CreateStepsAsync(builder, migrations.Resource); 42var steps = await CreateStepsAsync(builder, migrations.Resource); 58var steps = await CreateStepsAsync(builder, migrations.Resource); 76var steps = await CreateStepsAsync(builder, migrations.Resource); 94var m1Steps = await CreateStepsAsync(builder, m1.Resource); 95var m2Steps = await CreateStepsAsync(builder, m2.Resource); 120var m1Steps = await CreateStepsAsync(builder, m1.Resource); 121var m2Steps = await CreateStepsAsync(builder, m2.Resource); 150var m1Steps = await CreateStepsAsync(builder, m1.Resource); 151var m2Steps = await CreateStepsAsync(builder, m2.Resource); 172var m1Steps = await CreateStepsAsync(builder, m1.Resource); 173var m2Steps = await CreateStepsAsync(builder, m2.Resource); 198var m1Steps = await CreateStepsAsync(builder, m1.Resource); 199var m3Steps = await CreateStepsAsync(builder, m3.Resource); 221var steps = await CreateStepsAsync(builder, migrations.Resource); 224Assert.True(migrations.Resource.PublishAsMigrationBundle); 225Assert.True(migrations.Resource.PublishBundleContainer); 237var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 257var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 269var waitAnnotations = migrations.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 280var startCommand = migrations.Resource.ToolResource.Annotations 297Assert.True(migrations.Resource.PublishAsMigrationBundle); 298Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 299Assert.True(migrations.Resource.BundleSelfContained); 300Assert.True(migrations.Resource.PublishBundleContainer); 311Assert.True(migrations.Resource.PublishAsMigrationBundle); 312Assert.False(migrations.Resource.PublishBundleContainer); 323Assert.True(migrations.Resource.PublishAsMigrationScript); 324Assert.True(migrations.Resource.ScriptIdempotent); 325Assert.True(migrations.Resource.ScriptNoTransactions); 326Assert.False(migrations.Resource.PublishAsMigrationBundle); 339Assert.Equal("linux-x64", migrations.Resource.BundleTargetRuntime); 352Assert.Equal("linux-arm64", migrations.Resource.BundleTargetRuntime); 365Assert.False(migrations.Resource.BundleSelfContained); 376Assert.Null(migrations.Resource.BundleTargetRuntime); 389Assert.IsAssignableFrom<ContainerResource>(migrations.Resource); 390Assert.IsAssignableFrom<IComputeResource>(migrations.Resource); 391Assert.False(migrations.Resource.IsContainer()); 404var dockerfileAnnotation = Assert.Single(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 410Assert.True(migrations.Resource.IsContainer()); 426Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 427Assert.False(migrations.Resource.IsContainer()); 430Assert.True(migrations.Resource.PublishBundleContainer); 441Assert.Empty(migrations.Resource.Annotations.OfType<DockerfileBuildAnnotation>()); 442Assert.False(migrations.Resource.IsContainer()); 455var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 474var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 494migrations.Resource.ResolvedFramework = resolvedFramework; 496var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 511migrations.Resource.ResolvedFramework = "net11.0"; 513var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 527var baseImage = EFMigrationResourceBuilderExtensions.ResolveBaseImage(migrations.Resource); 541var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 560EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 577EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 595var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 615var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 634EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource)); 648var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 655var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 669var database = builder.AddResource(new TestChildDatabaseResource("sqldata", server.Resource)); 676var waitedResources = migrations.Resource.Annotations.OfType<WaitAnnotation>().Select(w => w.Resource).ToList(); 677Assert.Contains(server.Resource, waitedResources); 678Assert.Contains((IResource)database.Resource, waitedResources); 681var dockerfile = EFMigrationResourceBuilderExtensions.GenerateDockerfile(migrations.Resource); 693Assert.Equal("mymigrations.exe", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 704Assert.Equal("mymigrations", EFResourceBuilderExtensions.GetBundleFileName(migrations.Resource)); 717var steps = await CreateStepsAsync(builder, migrations.Resource); 725Assert.Contains($"build-{migrations.Resource.Name}", generateStep.RequiredBySteps);
EFMigrationWaitForTests.cs (12)
24var waitAnnotation = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 26Assert.Equal(migrations.Resource, waitAnnotation.Resource); 41var wait1 = project1.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 42var wait2 = project2.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(w => w.Resource == migrations.Resource); 60var waitAnnotations = anotherProject.Resource.Annotations.OfType<WaitAnnotation>().ToList(); 62Assert.Contains(waitAnnotations, w => w.Resource == migrations1.Resource); 63Assert.Contains(waitAnnotations, w => w.Resource == migrations2.Resource); 77Assert.NotNull(anotherProject.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault()); 90var waitAnnotation = container.Resource.Annotations.OfType<WaitAnnotation>().FirstOrDefault(); 92Assert.Equal(migrations.Resource, waitAnnotation.Resource);
Aspire.Hosting.Foundry (85)
FoundryExtensions.cs (6)
69var deployment = new FoundryDeploymentResource(name, modelName, modelVersion, format, builder.Resource); 73builder.Resource.AddDeployment(deployment); 78if (builder.Resource.IsEmulator) 155configure(builder.Resource); 175var resource = builder.Resource; 338var foundryResource = builder.Resource.Parent;
HostedAgent\HostedAgentBuilderExtension.cs (10)
266if (project.Resource.DefaultContainerRegistry is { } defaultRegistry) 269project.Resource.DefaultContainerRegistry = null; 282.AddFoundry($"{builder.Resource.Name}-proj-foundry") 283.AddProject($"{builder.Resource.Name}-proj"); 293var existingHttpEndpoint = builder.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault(e => e.Name == "http"); 446var resource = builder.Resource; 447var projectResource = project.Resource; 462existingHostedAgent.Resource.Configure = configureHostedAgent; 474target = containerResourceBuilder.Resource; 485target = 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 (9)
74var connectionResource = new AzureCognitiveServicesProjectConnectionResource(name, configureInfrastructure, builder.Resource); 112return builder.AddConnection(db.Resource); 152return builder.AddConnection(storage.Resource); 196return builder.AddConnection(registry.Resource); 238return builder.AddConnection(search.Resource); 256if (keyVault.Resource.IsEmulator()) 264return builder.AddConnection($"{keyVault.Resource.Name}-{Guid.NewGuid():N}", (infra) => 266var vault = (KeyVaultService)keyVault.Resource.AddAsExistingResource(infra); 460var 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)));
Aspire.Hosting.Foundry.Tests (133)
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);
HostedAgentExtensionTests.cs (15)
33Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 48Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 65Assert.True(app.Resource.TryGetEndpoints(out var endpoints)); 169var endpoint = Assert.Single(agent.Resource.Annotations.OfType<EndpointAnnotation>()); 183var result = await app.ResourceCommands.ExecuteCommandAsync(agent.Resource, "send-message", arguments); 371ReferenceEquals(r.Resource, project.Resource)); 384ReferenceEquals(r.Resource, project.Resource)); 421SetFoundryProjectOutputs(project.Resource); 569var hostedAgent = new AzureHostedAgentResource("agent-ha", agent.Resource); 574agent.Resource, 658Assert.Contains(app.Resource.Annotations.OfType<WaitAnnotation>(), w => ReferenceEquals(w.Resource, project.Resource)); 673Assert.Null(project.Resource.DefaultContainerRegistry); 707var registryTargets = container.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 709Assert.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 (72)
32Assert.NotNull(agent.Resource); 33Assert.Equal("my-agent", agent.Resource.Name); 34Assert.IsType<AzurePromptAgentResource>(agent.Resource); 47Assert.Equal("gpt41", agent.Resource.Model); 48Assert.Equal("You tell jokes.", agent.Resource.Instructions); 61Assert.Same(project.Resource, agent.Resource.Project); 92project.Resource.Outputs["endpoint"] = "https://account.services.ai.azure.com/api/projects/my-project"; 98var command = Assert.Single(agent.Resource.Annotations.OfType<ResourceCommandAnnotation>()); 102ResourceName = agent.Resource.Name, 151Assert.Null(agent.Resource.Instructions); 170Assert.Equal(2, agent.Resource.Tools.Count); 171Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 172Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 185Assert.Equal("code-interp", tool.Resource.Name); 186Assert.IsType<CodeInterpreterToolResource>(tool.Resource); 187Assert.Same(project.Resource, tool.Resource.Project); 200Assert.IsType<FileSearchToolResource>(tool.Resource); 201Assert.Equal(["store-1", "store-2"], tool.Resource.VectorStoreIds); 214Assert.IsType<WebSearchToolResource>(tool.Resource); 227Assert.IsType<AzureAISearchToolResource>(tool.Resource); 228Assert.Same(project.Resource, tool.Resource.Project); 229Assert.Null(tool.Resource.SearchResource); 242Assert.NotNull(tool.Resource.SearchResource); 243Assert.Same(search.Resource, tool.Resource.SearchResource); 244Assert.NotNull(tool.Resource.Connection); 271Assert.IsType<BingGroundingToolResource>(tool.Resource); 272Assert.Null(tool.Resource.Connection); 286Assert.NotNull(tool.Resource.Connection); 287Assert.Same(connection.Resource, tool.Resource.Connection); 315Assert.NotNull(tool.Resource.Connection); 342Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 355Assert.NotNull(tool.Resource.Connection); 369Assert.IsType<BingGroundingConnectionResource>(connection.Resource); 382Assert.IsType<SharePointToolResource>(tool.Resource); 383Assert.Equal(["conn-1", "conn-2"], tool.Resource.ProjectConnectionIds); 396Assert.IsType<FabricToolResource>(tool.Resource); 397Assert.Equal(["fab-conn-1"], tool.Resource.ProjectConnectionIds); 418Assert.IsType<AzureFunctionToolResource>(tool.Resource); 419Assert.Equal("myFunc", tool.Resource.FunctionName); 436Assert.IsType<FunctionToolResource>(tool.Resource); 437Assert.Equal("get_weather", tool.Resource.FunctionName); 438Assert.Equal("Gets the current weather", tool.Resource.Description); 462Assert.Equal(4, agent.Resource.Tools.Count); 463Assert.IsType<CodeInterpreterToolResource>(agent.Resource.Tools[0]); 464Assert.IsType<WebSearchToolResource>(agent.Resource.Tools[1]); 465Assert.IsType<AzureAISearchToolResource>(agent.Resource.Tools[2]); 466Assert.IsType<SharePointToolResource>(agent.Resource.Tools[3]); 482Assert.Single(agent1.Resource.Tools); 483Assert.Single(agent2.Resource.Tools); 484Assert.Same(codeInterp.Resource, agent1.Resource.Tools[0]); 485Assert.Same(codeInterp.Resource, agent2.Resource.Tools[0]); 517pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 531Assert.IsAssignableFrom<IResourceWithConnectionString>(agent.Resource); 532Assert.IsAssignableFrom<IResourceWithEnvironment>(agent.Resource); 533Assert.IsNotAssignableFrom<IComputeResource>(agent.Resource); 546Assert.IsType<ImageGenerationToolResource>(tool.Resource); 559var computerTool = Assert.IsType<ComputerToolResource>(tool.Resource); 576Assert.Same(project.Resource, ci.Resource.Project); 577Assert.Same(project.Resource, fs.Resource.Project); 578Assert.Same(project.Resource, ws.Resource.Project); 593var annotations = agent.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 610Resource = agent.Resource
Aspire.Hosting.Garnet (1)
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.GitHub.Models (12)
GitHubModelsExtensions.cs (12)
43defaultApiKeyParameter.Resource.Description = """ 48defaultApiKeyParameter.Resource.EnableDescriptionMarkdown = true; 49var resource = new GitHubModelResource(name, model, organization?.Resource, defaultApiKeyParameter.Resource); 160if (!apiKey.Resource.Secret) 166if (builder.Resource.DefaultKeyParameter == builder.Resource.Key) 168builder.ApplicationBuilder.Resources.Remove(builder.Resource.Key); 171builder.Resource.Key = apiKey.Resource; 204var healthCheckKey = $"{builder.Resource.Name}_check"; 226var resource = builder.Resource;
Aspire.Hosting.GitHub.Models.Tests (37)
GitHubModelsExtensionTests.cs (33)
20Assert.Equal("github", github.Resource.Name); 21Assert.Equal("openai/gpt-4o-mini", github.Resource.Model); 32Assert.NotNull(github.Resource.Key); 33Assert.Equal("mymodel-gh-apikey", github.Resource.Key.Name); 34Assert.True(github.Resource.Key.Secret); 45var connectionString = github.Resource.ConnectionStringExpression.ValueExpression; 57var connectionString = github.Resource.ConnectionStringExpression.ValueExpression; 78var connectionString = await github.Resource.ConnectionStringExpression.GetValueAsync(default); 80Assert.Equal(apiKeyParameter.Resource, github.Resource.Key); 91Assert.NotNull(github.Resource.Key); 92Assert.Equal("github-gh-apikey", github.Resource.Key.Name); 93Assert.True(github.Resource.Key.Secret); 104Assert.Null(github.Resource.Organization); 118Assert.NotNull(github.Resource.Organization); 119Assert.Equal("github-org", github.Resource.Organization.Name); 120Assert.Equal(orgParameter.Resource, github.Resource.Organization); 134var connectionString = github.Resource.ConnectionStringExpression.ValueExpression; 154var connectionString = await github.Resource.ConnectionStringExpression.GetValueAsync(default); 169var connectionString = github.Resource.ConnectionStringExpression.ValueExpression; 188var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", orgParameter.Resource, apiKeyParameter.Resource); 192Assert.Equal(orgParameter.Resource, resource.Organization); 193Assert.Equal(apiKeyParameter.Resource, resource.Key); 204var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", null, apiKeyParameter.Resource); 209Assert.Equal(apiKeyParameter.Resource, resource.Key); 223var resource = new GitHubModelResource("test", "openai/gpt-4o-mini", null, apiKeyParameter.Resource); 226resource.Organization = orgParameter.Resource; 227Assert.Equal(orgParameter.Resource, resource.Organization); 255Assert.Equal(apiKey.Resource, github.Resource.Key); 287var healthCheckAnnotations = github.Resource.Annotations.OfType<HealthCheckAnnotation>().ToList();
GitHubModelsFunctionalTests.cs (4)
41await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 43await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 47await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Go (22)
GoHostingExtensions.cs (22)
316if (rb.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>( 319var buildSteps = context.GetSteps(rb.Resource, WellKnownPipelineTags.BuildCompute); 363if (builder.Resource.TryGetLastAnnotation<GoModTidyAnnotation>(out _)) 374$"{builder.Resource.Name}-mod-tidy", "go", builder.Resource.WorkingDirectory); 387if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var existingVendor)) 413if (builder.Resource.TryGetLastAnnotation<GoModVendorAnnotation>(out _)) 423$"{builder.Resource.Name}-mod-vendor", "go", builder.Resource.WorkingDirectory); 431if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 459if (builder.Resource.TryGetLastAnnotation<GoModDownloadAnnotation>(out _)) 469$"{builder.Resource.Name}-mod-download", "go", builder.Resource.WorkingDirectory); 478if (builder.Resource.TryGetLastAnnotation<GoModVendorBuilderAnnotation>(out var vendorBuilder)) 482else if (builder.Resource.TryGetLastAnnotation<GoModTidyBuilderAnnotation>(out var tidyBuilder)) 507if (builder.Resource.TryGetLastAnnotation<GoVetToolAnnotation>(out _)) 517$"{builder.Resource.Name}-vet-tool", "go", builder.Resource.WorkingDirectory); 705var debuggingAnnotation = builder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 708builder.Resource.Annotations.Remove(debuggingAnnotation); 715new ExecutableAnnotation { Command = "dlv", WorkingDirectory = builder.Resource.WorkingDirectory }, 735var resource = builder.Resource;
Aspire.Hosting.Go.Tests (59)
AddGoAppTests.cs (36)
28var manifest = await ManifestUtils.GetManifest(app.Resource); 65var manifest = await ManifestUtils.GetManifest(app.Resource); 109var manifest = await ManifestUtils.GetManifest(app.Resource); 133var manifest = await ManifestUtils.GetManifest(app.Resource); 157var manifest = await ManifestUtils.GetManifest(app.Resource); 181var manifest = await ManifestUtils.GetManifest(app.Resource); 209var manifest = await ManifestUtils.GetManifest(app.Resource); 239var manifest = await ManifestUtils.GetManifest(app.Resource); 267var manifest = await ManifestUtils.GetManifest(app.Resource); 292var manifest = await ManifestUtils.GetManifest(app.Resource); 317var manifest = await ManifestUtils.GetManifest(app.Resource); 343var manifest = await ManifestUtils.GetManifest(app.Resource); 370var manifest = await ManifestUtils.GetManifest(app.Resource); 398var manifest = await ManifestUtils.GetManifest(app.Resource); 426var manifest = await ManifestUtils.GetManifest(app.Resource); 458var manifest = await ManifestUtils.GetManifest(app.Resource); 495var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 497Assert.Equal("dlv", app.Resource.Command); 517var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 535var launchConfig = await CreateLaunchConfigurationAsync(app.Resource); 569var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 582var debugAnnotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Last(); 583Assert.True(app.Resource.HasLaunchToolArgsOwnedBy(debugAnnotation)); 601var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 634var commandArguments = await ArgumentEvaluator.GetArgumentListAsync(app.Resource, application.Services); 657var manifest = await ManifestUtils.GetManifest(app.Resource); 687var manifest = await ManifestUtils.GetManifest(app.Resource); 717var manifest = await ManifestUtils.GetManifest(app.Resource); 748var manifest = await ManifestUtils.GetManifest(app.Resource); 869Assert.False(app.Resource.TryGetLastAnnotation<DockerfileBuilderCallbackAnnotation>(out _), 943Assert.IsType<GoAppResource>(app.Resource, exactMatch: false); 944Assert.True(app.Resource is IContainerFilesDestinationResource); 963api.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var annotations), 967Assert.Same(source.Resource, annotation.Source); 1055app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations), 1067app.Resource.TryGetAnnotationsOfType<RequiredCommandAnnotation>(out var annotations));
GoPublicApiTests.cs (23)
97Assert.Equal("go", app.Resource.Command); 106var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 119var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 130var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 142var 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); 200var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 215var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 241var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 254.WithAppArgs("--db", param.Resource); 258Assert.True(app.Resource.TryGetLastAnnotation<GoAppArgsAnnotation>(out var annotation)); 261Assert.Same(param.Resource, annotation.Args[1]); 272var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 435var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 457Assert.Equal("dlv", app.Resource.Command); 467var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 481var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 501var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 528var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 542var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource);
Aspire.Hosting.Java (40)
JavaHostingExtensions.cs (40)
691if (builder.Resource.HasAnnotationOfType<JavaJarPathAnnotation>()) 698if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var existing) && existing.Tool != tool) 705if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) && buildStep.Tool != tool) 729.WithCommand(ResolveWrapperInvocation(builder.Resource, tool).Command) 762buildResourceName: $"{builder.Resource.Name}-maven-build", 795buildResourceName: $"{builder.Resource.Name}-gradle-build", 808if (builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var existing) && existing.Tool != tool) 811$"Resource '{builder.Resource.Name}' is already configured to build with {existing.Tool}. " + 815if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var launchTool) && launchTool.Tool != tool) 818$"Resource '{builder.Resource.Name}' is already configured to launch with {launchTool.Tool}. " + 827|| launchTool is null && !builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>()); 858var resource = builder.Resource; 918foreach (var annotation in builder.Resource.Annotations 925builder.Resource.Annotations.Remove(annotation); 956Path.Combine(builder.Resource.WorkingDirectory, wrapperPath)); 962if (builder.Resource.TryGetLastAnnotation<JavaBuildToolAnnotation>(out var buildTool)) 964builder.WithCommand(ResolveWrapperInvocation(builder.Resource, buildTool.Tool).Command); 967foreach (var buildStep in builder.Resource.Annotations.OfType<JavaBuildStepAnnotation>()) 982.WithCommand(ResolveWrapperInvocation(builder.Resource, buildStep.Tool).Command); 1218var isFirstCall = !builder.Resource.HasAnnotationOfType<JavaOtelAgentAnnotation>(); 1233if (!builder.Resource.TryGetLastAnnotation<JavaOtelAgentAnnotation>(out var agent)) 1238var authored = ResolveOtelAgentPath(builder.Resource, agent); 1244resolved = Path.GetFullPath(Path.Combine(builder.Resource.WorkingDirectory, authored)); 1246else if (JavaDockerfileGenerator.TryGetBuildProducedAgentPath(builder.Resource, out _)) 1252if (builder.Resource.HasAnnotationOfType<JavaAuthoredDockerfileAnnotation>()) 1255$"Java application '{builder.Resource.Name}' cannot be published because it uses " + 1256$"the Dockerfile in '{builder.Resource.WorkingDirectory}' and its OpenTelemetry " + 1309if (!TryResolveConfiguredBuildTool(builder.Resource, out var tool)) 1314var buildArgs = builder.Resource.TryGetLastAnnotation<JavaBuildStepAnnotation>(out var buildStep) 1316: builder.Resource.HasAnnotationOfType<JavaDetectedBuildToolAnnotation>() 1317? ResolveDetectedBuildTool(builder.Resource).Configuration.BuildArgs 1322buildResourceName: $"{builder.Resource.Name}-{(tool is JavaBuildTool.Gradle ? "gradle" : "maven")}-build", 1339=> HasBuildProducedOtelAgent(builder.Resource) 1359=> builder.Resource.HasAnnotationOfType<JavaQuarkusAnnotation>() 1360&& builder.Resource.SupportsDebugging(builder.ApplicationBuilder.Configuration, out _); 1561if (builder.Resource.Annotations.OfType<JavaWrapperValidationAnnotation>().Any(a => a.Tool == tool)) 1758var (mainClass, classPaths) = ResolveEntryPointForIde(builder.Resource); 1763WorkingDirectory = builder.Resource.WorkingDirectory, 1782: TryResolveIdeProjectName(builder.Resource), 1783BuildTool = TryResolveConfiguredBuildTool(builder.Resource, out var buildTool)
Aspire.Hosting.Java.Tests (168)
AddJavaAppPublishTests.cs (21)
157() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 207() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 243() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 290() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 781() => JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path)); 804var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 822var (tool, args) = JavaDockerfileGenerator.ResolveBuildTool(app.Resource, appDirectory.Path); 869() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 890() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 913() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out _)); 936() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 955Assert.True(JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out var resolved)); 1021() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1048() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1615() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, tempDir.Path, out _)); 1632() => JavaDockerfileGenerator.TryGetBuildProducedAgentPath(app.Resource, out _)); 1750() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName)); 1899() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 1920() => JavaDockerfileGenerator.TryGetBuildOutputJarPath(app.Resource, out _)); 1937() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path)); 1952() => JavaDockerfileGenerator.JavaContainerBuild.Resolve(app.Resource, appDirectory.Path));
AddJavaAppTests.cs (78)
45Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 46Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultMavenWrapper), tempDir.Path, "spring-boot:run"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 58Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 59Assert.Equal(ExpectedWrapperInvocation.Args(Path.Combine(tempDir.Path, JavaHostingExtensions.s_defaultGradleWrapper), tempDir.Path, "bootRun", "--no-daemon"), await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 69var manifest = await ManifestUtils.GetManifest(app.Resource); 92var manifest = await ManifestUtils.GetManifest(app.Resource); 118Assert.Equal("myapi", app.Resource.Name); 128Assert.Equal("java", app.Resource.Command); 140Assert.Equal(expectedPath, app.Resource.WorkingDirectory); 150Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 160Assert.IsAssignableFrom<IContainerFilesDestinationResource>(app.Resource); 173async () => await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 187var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 199var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 243var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 257var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 302var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 317var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 321Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 335var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 339Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 357var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 360Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 377var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 380Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 396var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 441var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 550var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 554Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 568var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 572Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 610app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 624app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 639app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 677app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 695app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 712app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 727app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 747new BeforeResourceStartedEvent(app.Resource, built.Services), 766new BeforeResourceStartedEvent(app.Resource, built.Services), 793new BeforeResourceStartedEvent(app.Resource, built.Services), 800Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 803await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 824var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 826using var process = Process.Start(new ProcessStartInfo(app.Resource.Command) 854new BeforeResourceStartedEvent(app.Resource, built.Services), 875Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 878await ArgumentEvaluator.GetArgumentListAsync(app.Resource)); 893Assert.True(app.Resource.TryGetLastAnnotation<CertificateAuthorityCollectionAnnotation>(out var certAnnotation)); 906Assert.True(javaApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 916Resource = javaApp.Resource, 944app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 961app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 977app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 984Path.Combine(app.Resource.WorkingDirectory, "target", "agent", "opentelemetry-javaagent.jar")); 999app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1016app.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 1139Assert.Same(app.Resource, Assert.Single(builder.Resources)); 1140Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1154Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1168Assert.Contains(relationships, r => r.Type == "Parent" && r.Resource == app.Resource); 1182var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1184Assert.Equal("java", app.Resource.Command); 1197var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1209var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 1225app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1261Assert.Empty(app.Resource.Annotations.OfType<WaitAnnotation>()); 1262Assert.Null(Assert.Single(app.Resource.Annotations.OfType<JavaBuildStepAnnotation>()).ResourceName); 1275var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1279app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1293var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1297app.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1311var args = await ArgumentEvaluator.GetArgumentListAsync(app.Resource); 1315Assert.Equal(ExpectedWrapperInvocation.Command(), app.Resource.Command); 1330var manifest = await ManifestUtils.GetManifest(app.Resource); 1347var manifest = await ManifestUtils.GetManifest(app.Resource); 1356var annotation = Assert.Single(app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 1361app.Resource,
AddJavaContainerTests.cs (9)
63var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 75var image = Assert.Single(app.Resource.Annotations.OfType<ContainerImageAnnotation>()); 87Assert.IsAssignableFrom<IResourceWithServiceDiscovery>(app.Resource); 88Assert.IsAssignableFrom<IJavaAppResource>(app.Resource); 89var icon = Assert.Single(app.Resource.Annotations.OfType<ResourceIconAnnotation>()); 102Assert.Empty(app.Resource.Annotations.OfType<EndpointAnnotation>()); 118app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 135app.Resource, serviceProvider: built.Services.GetRequiredService<IServiceProvider>()); 149var 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 (44)
JavaScriptHostingExtensions.cs (44)
270if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 272var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 294if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 295resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 353var resource = builder.Resource; 695if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 697var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 721if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptRunScriptAnnotation>(out _) && 722resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 956? apiTarget.Resource.GetEndpoint(options.TargetEndpointName) 957: (object)BuildServiceDiscoveryUrl(apiTarget.Resource); 975if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1035if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1098if (builder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1179if (c.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1209if (c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 1220if (c.Resource.TryGetLastAnnotation<JavaScriptBuildScriptAnnotation>(out var buildCommand)) 1286var installAnnotation = c.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCmd) ? installCmd : null; 1365ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1366return context.WriteContainerAsync(containerBuilder.Resource); 1376Resource = containerBuilder.Resource, 1379ValidateExistingDockerfileRunScript(resource, containerBuilder.Resource); 1392if (resourceBuilder.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager)) 1707if (resourceBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var dockerfileBuildAnnotation)) 1724Resource = resourceBuilder.Resource, 1727if (!resourceBuilder.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out var suppress)) 1781builder.Resource.ViteConfigPath = configPath; 1849var workingDirectory = resource.Resource.WorkingDirectory; 1878if (!resource.Resource.TryGetLastAnnotation<DockerfileBaseImageAnnotation>(out _)) 1900File.Exists(Path.Combine(resource.Resource.WorkingDirectory, "package-lock.json")) 1917var workingDirectory = resource.Resource.WorkingDirectory; 1996var workingDirectory = resource.Resource.WorkingDirectory; 2163var resource = builder.Resource; 2192var resource = builder.Resource; 2261var parentResource = builder.Resource; 2335var installerName = $"{resource.Resource.Name}-installer"; 2344resource.Resource.Annotations.OfType<WaitAnnotation>() 2345.Where(w => w.Resource == existingResource.Resource) 2347.ForEach(w => resource.Resource.Annotations.Remove(w)); 2355var installer = new JavaScriptInstallerResource(installerName, resource.Resource.WorkingDirectory); 2358.WithParentRelationship(resource.Resource) 2366if (!resource.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var packageManager) || 2367!resource.Resource.TryGetLastAnnotation<JavaScriptInstallCommandAnnotation>(out var installCommand)) 2374.WithWorkingDirectory(resource.Resource.WorkingDirectory)
Aspire.Hosting.JavaScript.Tests (114)
AddBunAppTests.cs (20)
23var manifest = await ManifestUtils.GetManifest(bunApp.Resource); 46await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 52var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 55Assert.Empty(bunApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 73await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 90await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 104var dockerBuildAnnotation = bunApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 121await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 133await ManifestUtils.GetManifest(bunApp.Resource, workspace.Path); 221Assert.Equal("bun", bunApp.Resource.Command); 251Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 259Resource = bunApp.Resource, 281Assert.True(bunApp.Resource.TryGetLastAnnotation<CertificateTrustConfigurationCallbackAnnotation>(out var annotation)); 287Resource = bunApp.Resource, 313var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 326var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 339var annotation = bunApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 356Assert.True(bunApp.Resource.TryGetLastAnnotation<JavaScriptPackageManagerAnnotation>(out var pmAnnotation)); 368var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource); 389var launchConfig = await CreateLaunchConfigurationAsync(bunApp.Resource);
AddJavaScriptAppTests.cs (21)
34await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 39var dockerBuildAnnotation = yarnApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 57await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 77await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 97await ManifestUtils.GetManifest(yarnApp.Resource, workspace.Path); 124await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 145await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 185await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 203var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 240var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 284var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 302var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 321var manifest = await ManifestUtils.GetManifest(app.Resource, workspace.Path); 337var exception = await Assert.ThrowsAsync<DistributedApplicationException>(() => ManifestUtils.GetManifest(app.Resource, workspace.Path)); 359await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 395await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 430await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 461await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 490await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 562await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path); 658await ManifestUtils.GetManifest(pnpmApp.Resource, workspace.Path);
AddNodeAppTests.cs (14)
32var manifest = await ManifestUtils.GetManifest(nodeApp.Resource); 64manifest = await ManifestUtils.GetManifest(npmApp.Resource); 112await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 157var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 160Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 181await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 226await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 444var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 457var annotation = nodeApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 469var annotation = viteApp.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 493Assert.Same(viteApp.Resource, parentRelationship.Resource); 575var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 602var launchConfig = await CreateLaunchConfigurationAsync(nodeApp.Resource); 618var launchConfig = await CreateLaunchConfigurationAsync(viteApp.Resource);
AddViteAppTests.cs (29)
37var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 76var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 79var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 97await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 102var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 105var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 130await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 150var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 178var env = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(nodeApp.Resource, DistributedApplicationOperation.Publish); 201await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 206var dockerBuildAnnotation = nodeApp.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 209var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 227await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 232var containerFilesSource = nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>().Single(); 249await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 254Assert.Empty(nodeApp.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 270await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 290await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 310await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 328var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 348var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 373var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 399var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 425var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 442var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 466var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 484var manifest = await ManifestUtils.GetManifest(nodeApp.Resource, workspace.Path); 1056var stepAnnotations = nodeApp.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 1073Assert.True(nodeApp.Resource.TryGetLastAnnotation<SuppressPublishValidationAnnotation>(out _));
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");
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 (15)
31Assert.Equal(["node"], await GetRequiredCommandsAsync(builder, app.Resource)); 44Assert.Equal(["bun", "node"], await GetRequiredCommandsAsync(builder, app.Resource)); 56Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 70Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 80Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 91Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource)); 102Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 113Assert.Equal(["node", "yarn"], await GetRequiredCommandsAsync(builder, vite.Resource)); 124Assert.Equal(["node", "pnpm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 135Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 145Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 161Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, app.Resource)); 173Assert.Equal(["bun", "node", "npm"], await GetRequiredCommandsAsync(builder, app.Resource)); 185Assert.Equal(["node", "npm"], await GetRequiredCommandsAsync(builder, vite.Resource)); 197Assert.Equal(["bun"], await GetRequiredCommandsAsync(builder, vite.Resource));
Aspire.Hosting.Kafka.Tests (17)
AddKafkaTests.cs (7)
82var manifest = await ManifestUtils.GetManifest(kafka.Resource); 122var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 124var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 140var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 142var volumeAnnotation = kafka.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 191var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource); 192var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(kafka.Resource);
KafkaFunctionalTests.cs (10)
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 (99)
CertManagerExtensions.cs (14)
121var resource = new CertManagerResource(name, builder.Resource, chartBuilder.Resource); 162var issuer = new CertManagerIssuerResource(name, builder.Resource); 163builder.Resource.Issuers.Add(issuer); 256builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 281builder.Resource.Spec = new CertManagerAcmeIssuerSpec( 283ReferenceExpression.Create($"{email.Resource}")); 308builder.Resource.Solvers.Add(new CertManagerHttp01SolverConfig()); 338var gatewayEnvironment = builder.Resource.Parent; 339var issuerEnvironment = issuer.Resource.Parent.Parent; 344$"Gateway '{builder.Resource.Name}' is in Kubernetes environment '{gatewayEnvironment.Name}' but issuer " + 345$"'{issuer.Resource.Name}' belongs to cert-manager installation '{issuer.Resource.Parent.Name}' in environment " + 352.WithGatewayAnnotation(ClusterIssuerAnnotationKey, issuer.Resource.Name);
Deployment\HelmDeploymentEngine.cs (3)
550if (environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource) 552var dashboardServiceName = environment.Dashboard.Resource.Name.ToKubernetesResourceName() + "-service"; 557var 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)
380builder.Resource.DeploymentEngineStepsFactory = HelmDeploymentEngine.CreateStepsAsync; 404configure(builder.Resource); 426builder.Resource.DashboardEnabled = enabled; 448builder.Resource.DashboardEnabled = true; 450configure(builder.Resource.Dashboard ?? throw new InvalidOperationException("Dashboard resource is not initialized")); 486var nodePool = new KubernetesNodePoolResource(name, builder.Resource); 527builder.WithAnnotation(new KubernetesNodePoolAnnotation(nodePool.Resource)); 533builder.Resource.DeploymentEngineStepsFactory ??= HelmDeploymentEngine.CreateStepsAsync;
KubernetesEnvironmentResource.cs (4)
328var resources = environment.DashboardEnabled && environment.Dashboard?.Resource is KubernetesAspireDashboardResource dashboard 365var resources = DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboardRes 441if (DashboardEnabled && Dashboard?.Resource is KubernetesAspireDashboardResource dashboard && 496if (DashboardEnabled && Dashboard?.Resource.OtlpGrpcEndpoint is EndpointReference otlpGrpcEndpoint)
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)
73var environment = builder.Resource; 154builder.Resource.Values[key] = value; 175builder.Resource.Namespace = @namespace; 196builder.Resource.ReleaseName = releaseName; 226builder.Resource.DestroyOnUninstall = true; 282builder.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 (23)
53var volume = new KubernetesPersistentVolumeResource(name, builder.Resource); 84builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName}"); 105builder.Resource.StorageClassName = ReferenceExpression.Create($"{storageClassName.Resource}"); 126builder.Resource.Capacity = ReferenceExpression.Create($"{capacity}"); 146builder.Resource.Capacity = ReferenceExpression.Create($"{capacity.Resource}"); 167if (!builder.Resource.AccessModes.Contains(accessMode)) 169builder.Resource.AccessModes.Add(accessMode); 198builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value}"); 221builder.Resource.VolumeAnnotations[key] = ReferenceExpression.Create($"{value.Resource}"); 269builder.WithAnnotation(new VolumeMountBindingAnnotation(volume.Resource.Name) 274return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 285volume.Resource, 418if (builder.Resource is not IResourceWithEnvironment) 421$"Resource '{builder.Resource.Name}' does not support environment variables and cannot use the '{env}' volume path variable."); 431var binding = new VolumeMountBindingAnnotation(volume.Resource.Name) 438return KubernetesPersistentVolumeLocalStorage.GetOrCreatePath(store, volume.Resource); 443volume.Resource.Name, 459volume.Resource, 476if (!builder.ApplicationBuilder.ExecutionContext.IsRunMode || builder.Resource is not ContainerResource) 483var environmentName = volume.Resource.Parent.Name.ToKubernetesResourceName();
KubernetesPublishingContext.cs (1)
74IEnumerable<IResource> resources = environment.DashboardEnabled && environment.Dashboard?.Resource is IResource dashboardResource
Aspire.Hosting.Kubernetes.Tests (153)
CertManagerTests.cs (20)
23Assert.Equal("cert-manager", certManager.Resource.Name); 24Assert.Same(k8s.Resource, certManager.Resource.Parent); 28Assert.Equal("cert-manager-chart", certManager.Resource.HelmChart.Name); 29Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", certManager.Resource.HelmChart.ChartReference); 30Assert.StartsWith("v", certManager.Resource.HelmChart.ChartVersion); 34Assert.Equal("true", certManager.Resource.HelmChart.Values["crds.enabled"]); 35Assert.Equal("true", certManager.Resource.HelmChart.Values["config.enableGatewayAPI"]); 54Assert.Equal("letsencrypt-prod", issuer.Resource.Name); 55Assert.Same(certManager.Resource, issuer.Resource.Parent); 56Assert.Contains(issuer.Resource, certManager.Resource.Issuers); 58var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 62var solver = Assert.Single(issuer.Resource.Solvers); 75var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 88var spec = Assert.IsType<CertManagerAcmeIssuerSpec>(issuer.Resource.Spec); 108Assert.Single(gateway.Resource.TlsConfigs); 109Assert.True(gateway.Resource.GatewayAnnotations.TryGetValue( 271Assert.NotNull(certManager.Resource);
KubernetesDeployTests.cs (29)
960var container = containerBuilder.Resource; 1179var env = envBuilder.Resource; 1210var env = envBuilder.Resource; 1230var envResource = env.Resource; 1233var k8sResource = new KubernetesResource("api-k8s", project.Resource, envResource); 1234var imageName = k8sResource.GetContainerImageName(project.Resource); 1242Assert.Same(project.Resource, imageParam.ImageResource); 1253var envResource = env.Resource; 1256var k8sResource = new KubernetesResource("cache-k8s", container.Resource, envResource); 1257var imageName = k8sResource.GetContainerImageName(container.Resource); 1299"parameters", "api", "api_image", project.Resource)); 1364var env = envBuilder.Resource; 1436context.EnvironmentVariables["CACHE_PASSWORD"] = ReferenceExpression.Create($"{cachePassword.Resource}"); 1440var env = envBuilder.Resource; 1554var env = envBuilder.Resource; 1605var env = envBuilder.Resource; 1612captured.Parameter == host.Resource); 1617captured.Parameter == token.Resource); 1648enableTls.Resource, 1655var env = envBuilder.Resource; 1662captured.Parameter == enableTls.Resource); 1695var env = envBuilder.Resource; 1721var env = envBuilder.Resource; 1725Assert.IsType<KubernetesAspireDashboardResource>(env.Dashboard.Resource); 1735var env = envBuilder.Resource; 1747var env = envBuilder.Resource; 1753var httpEndpoint = env.Dashboard.Resource.PrimaryEndpoint; 1830var dashboard = envBuilder.Resource.Dashboard!.Resource;
KubernetesEnvironmentResourceTests.cs (15)
127var endpointReferenceEx = env.Resource.GetHostAddressExpression(project.GetEndpoint("http")); 170var containerK8sTarget = containerK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 172Assert.Same(kubernetes.Resource, containerK8sTarget.ComputeEnvironment); 176var containerDockerTarget = containerDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 178Assert.Same(dockerCompose.Resource, containerDockerTarget.ComputeEnvironment); 182var projectK8sTarget = projectK8sResource.GetDeploymentTargetAnnotation(kubernetes.Resource); 184Assert.Same(kubernetes.Resource, projectK8sTarget.ComputeEnvironment); 188var projectDockerTarget = projectDockerResource.GetDeploymentTargetAnnotation(dockerCompose.Resource); 190Assert.Same(dockerCompose.Resource, projectDockerTarget.ComputeEnvironment); 193Assert.Null(containerK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 194Assert.Null(containerDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 195Assert.Null(projectK8sResource.GetDeploymentTargetAnnotation(dockerCompose.Resource)); 196Assert.Null(projectDockerResource.GetDeploymentTargetAnnotation(kubernetes.Resource)); 254Assert.Same(kubernetes.Resource, containerK8sResource.GetDeploymentTargetAnnotation()!.ComputeEnvironment); 255Assert.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)
24Assert.Equal("cert-manager", chart.Resource.Name); 25Assert.Equal("oci://quay.io/jetstack/charts/cert-manager", chart.Resource.ChartReference); 26Assert.Equal("1.17.0", chart.Resource.ChartVersion); 27Assert.Equal("env", chart.Resource.Parent.Name); 40Assert.Equal(2, chart.Resource.Values.Count); 41Assert.Equal("true", chart.Resource.Values["crds.enabled"]); 42Assert.Equal("true", chart.Resource.Values["config.enableGatewayAPI"]); 54Assert.Equal("ingress-nginx", chart.Resource.Namespace); 66Assert.Equal("my-nginx", chart.Resource.ReleaseName); 77Assert.Null(chart.Resource.Namespace); 78Assert.Null(chart.Resource.ReleaseName); 90chart.Resource.TryGetAnnotationsOfType<PipelineStepAnnotation>(out var annotations), 104Assert.NotEqual(chart1.Resource.Name, chart2.Resource.Name); 105Assert.Equal("env", chart1.Resource.Parent.Name); 106Assert.Equal("env", chart2.Resource.Parent.Name); 175Assert.Equal(chartReference, chart.Resource.ChartReference); 203Assert.Equal(chartVersion, chart.Resource.ChartVersion); 291Assert.Equal("hello world!", chart.Resource.Values["config.greeting"]); 292Assert.Equal("a,b,c", chart.Resource.Values["config.list"]); 304Assert.Equal("--foo", chart.Resource.Values["args[0]"]); 315Assert.False(chart.Resource.DestroyOnUninstall); 327Assert.True(chart.Resource.DestroyOnUninstall); 357Assert.False(chart.Resource.ForceConflicts); 369Assert.True(chart.Resource.ForceConflicts); 398var steps = await CreateStepsAsync(builder, chart.Resource); 412var steps = await CreateStepsAsync(builder, chart.Resource); 437var steps = await CreateStepsAsync(builder, chart.Resource); 454Assert.Null(chart.Resource.Namespace); 456var steps = await CreateStepsAsync(builder, chart.Resource); 471var steps = await CreateStepsAsync(builder, chart.Resource); 488var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateStepsAsync(builder, chart.Resource)); 504var steps = await CreateStepsAsync(builder, chart.Resource); 543Assert.Single(chart.Resource.Values); 544Assert.Equal("value2", chart.Resource.Values["key"]);
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)
30var expectedPath = KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource); 35project.Resource, 42executable.Resource, 63firstProject.Resource, 66secondProject.Resource, 88firstProject.Resource, 91secondProject.Resource, 174var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 175var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 181firstContainer.Resource, 203var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 221var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 253var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 257container.Resource, 287project.Resource, 291KubernetesPersistentVolumeLocalStorage.GetPath(store, volume.Resource), 312var firstMount = Assert.Single(firstContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 313var secondMount = Assert.Single(secondContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 333var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 347var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>());
KubernetesPublisherTests.cs (8)
43.WithArgs("--cs", cs.Resource); 1230mode.Resource, 1280enableTls.Resource, 1291Assert.Contains(environment.Resource.CapturedHelmValues, captured => 1295captured.Parameter == enableTls.Resource); 1345enableTls.Resource, 1347ReferenceExpression.Create($"{tlsSuffix.Resource}"), 1726var 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)
62var platformResource = builder.Resource; 67if (!parentBuilder.Resource.TryGetLastAnnotation<OtlpDevTunnelConfigurationAnnotation>(out var tunnelConfig)) 71parentBuilder.Resource.Annotations.Add(tunnelConfig); 99var tunnelName = parentBuilder.Resource.Name; 126throw 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."); 129throw new DistributedApplicationException($"The Aspire dashboard resource '{KnownResourceNames.AspireDashboard}' does not have an allocated OTLP endpoint named '{KnownEndpointNames.OtlpGrpcEndpointName}' or '{KnownEndpointNames.OtlpHttpEndpointName}', 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; 186var resource = resourceBuilder.Resource;
MauiWindowsExtensions.cs (2)
47var name = $"{builder.Resource.Name}-windows"; 89var windowsResource = new MauiWindowsPlatformResource(name, builder.Resource);
Aspire.Hosting.Maui.Tests (90)
MauiiOSValidationTests.cs (6)
35.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None); 60.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None); 84.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None); 104.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None); 122.PublishAsync(new BeforeResourceStartedEvent(device.Resource, app.Services), CancellationToken.None); 140.PublishAsync(new BeforeResourceStartedEvent(simulator.Resource, app.Services), CancellationToken.None);
MauiOtlpTemplateTests.cs (3)
33platformResource.Resource, 60platformResource.Resource, 83androidDevice.Resource,
MauiPlatformExtensionsTests.cs (61)
105Assert.Equal(config.ExpectedDefaultName, platform.Resource.Name); 106var resourceWithParent = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform.Resource); 107Assert.Same(maui.Resource, resourceWithParent.Parent); 108Assert.IsType(config.ExpectedResourceType, platform.Resource); 128Assert.Equal(customName, platform.Resource.Name); 164var debugSupport = Assert.Single(platform.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 167var launchConfiguration = await DeserializeLaunchConfigurationAsync(platform.Resource); 195var resource = platform.Resource; 243Assert.IsAssignableFrom<IMauiPlatformResource>(platform.Resource); 263Assert.NotEqual(platform1.Resource.Name, platform2.Resource.Name); 264var parent1 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform1.Resource); 265var parent2 = Assert.IsAssignableFrom<IResourceWithParent<MauiProjectResource>>(platform2.Resource); 267Assert.Same(maui.Resource, parent1.Parent); 293.PublishAsync(new BeforeResourceStartedEvent(platform.Resource, app.Services), CancellationToken.None); 317androidEmulator.Resource, 343Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name); 344Assert.IsType<MauiAndroidDeviceResource>(androidDevice.Resource); 345Assert.IsType<MauiAndroidEmulatorResource>(androidEmulator.Resource); 364Assert.Equal("my-device", device.Resource.Name); 365Assert.IsType<MauiAndroidDeviceResource>(device.Resource); 366var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 387Assert.Equal("my-emulator", emulator.Resource.Name); 388Assert.IsType<MauiAndroidEmulatorResource>(emulator.Resource); 389var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(emulator.Resource); 410Assert.Equal("my-device", device.Resource.Name); 411Assert.IsType<MauiiOSDeviceResource>(device.Resource); 412var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(device.Resource); 438Assert.Equal("my-simulator", simulator.Resource.Name); 439Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 440var launchConfiguration = await GetSingleMauiLaunchConfigurationAsync(simulator.Resource); 459var debugSupport = Assert.Single(simulator.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 463var argsContext = new CommandLineArgsCallbackContext(args, simulator.Resource); 464foreach (var argsAnnotation in simulator.Resource.Annotations.OfType<CommandLineArgsCallbackAnnotation>()) 494Assert.NotEqual(device.Resource.Name, simulator.Resource.Name); 495Assert.IsType<MauiiOSDeviceResource>(device.Resource); 496Assert.IsType<MauiiOSSimulatorResource>(simulator.Resource); 516resource = maui.AddiOSDevice().Resource; 520resource = maui.AddiOSSimulator().Resource; 546iosSimulator.Resource, 571resource = maui.AddAndroidDevice().Resource; 575resource = maui.AddAndroidEmulator().Resource; 603var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().FirstOrDefault(); 628var annotations = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().ToList(); 656platform.Resource, 666var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 683dashboard.Resource.Annotations.Add(new EndpointAnnotation( 694var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 703var dashboardEndpoint = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 705await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None); 716iosSimulator.Resource, 744dashboard.Resource.Annotations.Add(dashboardEndpoint); 746var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 770await appBuilder.Eventing.PublishAsync(new ResourceEndpointsAllocatedEvent(dashboard.Resource, app.Services), CancellationToken.None); 781androidEmulator.Resource, 802var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 807appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None)); 827var tunnelConfig = maui.Resource.Annotations.OfType<OtlpDevTunnelConfigurationAnnotation>().Single(); 832appBuilder.Eventing.PublishAsync(new BeforeResourceStartedEvent(tunnelConfig.DevTunnel.Resource, app.Services), CancellationToken.None));
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)
27var args = await ArgumentEvaluator.GetArgumentListAsync(windows.Resource); 45var args = await ArgumentEvaluator.GetArgumentListAsync(macCatalyst.Resource); 64var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource); 84var args = await ArgumentEvaluator.GetArgumentListAsync(androidDevice.Resource); 101var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource); 121var args = await ArgumentEvaluator.GetArgumentListAsync(emulator.Resource); 138var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource); 157var args = await ArgumentEvaluator.GetArgumentListAsync(device.Resource); 174var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource); 194var args = await ArgumentEvaluator.GetArgumentListAsync(simulator.Resource); 233var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 234Assert.True(args.Count > 0, $"Expected args for {builder.Resource.Name}");
Aspire.Hosting.Milvus (5)
MilvusBuilderExtensions.cs (5)
52var apiKeyParameter = apiKey?.Resource ?? 110builder.Resource.AddDatabase(name, databaseName); 111var milvusDatabaseResource = new MilvusDatabaseResource(name, databaseName, builder.Resource); 146containerName ??= $"{builder.Resource.Name}-attu"; 154.WithEnvironment(context => ConfigureAttuContainer(context, builder.Resource))
Aspire.Hosting.Milvus.Tests (18)
AddMilvusTests.cs (5)
85var connectionStringResource = milvus.Resource as IResourceWithConnectionString; 109var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 120var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 136var serverManifest = await ManifestUtils.GetManifest(milvus.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 137var dbManifest = await ManifestUtils.GetManifest(db1.Resource);
MilvusFunctionalTests.cs (13)
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 (6)
MongoDBBuilderExtensions.cs (6)
61var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 63var mongoDBContainer = new MongoDBServerResource(name, userName?.Resource, passwordParameter); 116builder.Resource.AddDatabase(name, databaseName); 117var mongoDBDatabase = new MongoDBDatabaseResource(name, databaseName, builder.Resource); 164containerName ??= $"{builder.Resource.Name}-mongoexpress"; 171.WithEnvironment(context => ConfigureMongoExpressContainer(context, builder.Resource))
Aspire.Hosting.MongoDB.Tests (33)
AddMongoDBTests.cs (12)
19Assert.Single(mongo.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mongodb_check"); 27Assert.Single(db.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "mydb_check"); 215var mongoManifest = await ManifestUtils.GetManifest(mongo.Resource); 216var dbManifest = await ManifestUtils.GetManifest(db.Resource); 281Assert.Equal("customers1", db1.Resource.DatabaseName); 282Assert.Equal("customers2", db2.Resource.DatabaseName); 284Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers1?authSource=admin&authMechanism=SCRAM-SHA-256", db1.Resource.ConnectionStringExpression.ValueExpression); 285Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/customers2?authSource=admin&authMechanism=SCRAM-SHA-256", db2.Resource.ConnectionStringExpression.ValueExpression); 299Assert.Equal("imports", db1.Resource.DatabaseName); 300Assert.Equal("imports", db2.Resource.DatabaseName); 302Assert.Equal("mongodb://admin:{mongo1-password.value}@{mongo1.bindings.tcp.host}:{mongo1.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", db1.Resource.ConnectionStringExpression.ValueExpression); 303Assert.Equal("mongodb://admin:{mongo2-password.value}@{mongo2.bindings.tcp.host}:{mongo2.bindings.tcp.port}/imports?authSource=admin&authMechanism=SCRAM-SHA-256", db2.Resource.ConnectionStringExpression.ValueExpression);
ConnectionPropertiesTests.cs (1)
105var manifest = await ManifestUtils.GetManifest(app.Resource);
MongoDbFunctionalTests.cs (20)
54await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 60await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 62await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 88hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 90hb.AddMongoDBClient(db.Resource.Name); 124var password = mongodb1.Resource.PasswordParameter!.Value; 152hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 154hb.AddMongoDBClient(db1.Resource.Name); 197hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 199hb.AddMongoDBClient(db2.Resource.Name); 318hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 320hb.AddMongoDBClient(db.Resource.Name); 408hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 410hb.AddMongoDBClient(db.Resource.Name);
Aspire.Hosting.MySql (6)
MySqlBuilderExtensions.cs (6)
41var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 124var mySqlDatabase = new MySqlDatabaseResource(name, databaseName, builder.Resource); 126builder.Resource.AddDatabase(mySqlDatabase); 226builder.Resource.PasswordParameter = password.Resource; 296var configStoreFilename = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-config.user.inc.php", tempConfigFile);
Aspire.Hosting.MySql.Tests (63)
AddMySqlTests.cs (21)
23Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 33Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", mysql.Resource.PasswordParameter.Default?.GetType().FullName); 160var mySqlManifest = await ManifestUtils.GetManifest(mysql.Resource); 161var dbManifest = await ManifestUtils.GetManifest(db.Resource); 199var serverManifest = await ManifestUtils.GetManifest(mysql.Resource); 251Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); 283string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';"; 284string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';"; 324Assert.Equal(["db1", "db2"], mysql1.Resource.Databases.Keys); 325Assert.Equal(["customers1", "customers2"], mysql1.Resource.Databases.Values); 327Assert.Equal("customers1", db1.Resource.DatabaseName); 328Assert.Equal("customers2", db2.Resource.DatabaseName); 330Assert.Equal("{mysql1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 331Assert.Equal("{mysql1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 345Assert.Equal("imports", db1.Resource.DatabaseName); 346Assert.Equal("imports", db2.Resource.DatabaseName); 348Assert.Equal("{mysql1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 349Assert.Equal("{mysql2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
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);
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 (14)
PostgresBuilderExtensions.cs (14)
57var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password"); 59var postgresServer = new PostgresServerResource(name, userName?.Resource, passwordParameter); 156var postgresDatabase = new PostgresDatabaseResource(name, databaseName, builder.Resource); 158builder.Resource.AddDatabase(postgresDatabase.Name, postgresDatabase.DatabaseName); 236pgAdminContainerBuilder.WithRelationship(builder.Resource, "PgAdmin"); 331pgwebContainerBuilder.WithRelationship(builder.Resource, "PgWeb"); 383containerName ??= $"{builder.Resource.Name}-mcp"; 401context.EnvironmentVariables[PostgresMcpDatabaseUriEnvVarName] = builder.Resource.UriExpression; 409mcpContainerBuilder.WithParentRelationship(builder.Resource); 571builder.Resource.PasswordParameter = password.Resource; 588builder.Resource.UserNameParameter = userName.Resource; 693if (builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault() is { } imageAnnotation)
Aspire.Hosting.PostgreSQL.Tests (86)
AddPostgresTests.cs (37)
22Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "postgres_check"); 32Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 42Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", pg.Resource.PasswordParameter.Default?.GetType().FullName); 158var connectionStringResource = postgres.Resource as IResourceWithConnectionString; 163Assert.Equal($"Host=localhost;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 208Assert.Equal($"Host=postgres.dev.internal;Port=2000;Username=postgres;Password={postgres.Resource.PasswordParameter.Value};Database=db", config["ConnectionStrings__db"]); 274var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 275var dbManifest = await ManifestUtils.GetManifest(db.Resource); 318var serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 344serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 370serverManifest = await ManifestUtils.GetManifest(pgServer.Resource); 513Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString()); 521Assert.Equal($"echo '{pg1.Resource.PasswordParameter.Value}'", servers.GetProperty("1").GetProperty("PasswordExecCommand").GetString()); 525Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString()); 533Assert.Equal($"echo '{pg2.Resource.PasswordParameter.Value}'", servers.GetProperty("2").GetProperty("PasswordExecCommand").GetString()); 581Assert.Equal(CreatePgWebBookmarkfileContent(db1.Resource), file.Contents); 588Assert.Equal(CreatePgWebBookmarkfileContent(db2.Resource), file.Contents); 625Assert.Equal("customers1", db1.Resource.DatabaseName); 626Assert.Equal("customers2", db2.Resource.DatabaseName); 628Assert.Equal("{postgres1.connectionString};Database=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 629Assert.Equal("{postgres1.connectionString};Database=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 643Assert.Equal("imports", db1.Resource.DatabaseName); 644Assert.Equal("imports", db2.Resource.DatabaseName); 646Assert.Equal("{postgres1.connectionString};Database=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 647Assert.Equal("{postgres2.connectionString};Database=imports", db2.Resource.ConnectionStringExpression.ValueExpression); 692var connectionString = await postgres.Resource.GetConnectionStringAsync(); 706var connectionString = await postgres.Resource.GetConnectionStringAsync(); 708Assert.Equal($"Host=localhost;Port=2000;Username=user1;Password={postgres.Resource.PasswordParameter.Value}", connectionString); 721var config1 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 722var config2 = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(postgres.Resource); 803var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 830var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 846var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 859var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 884var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 911var volumeAnnotation = postgres.Resource.Annotations.OfType<ContainerMountAnnotation>().Single();
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);
Aspire.Hosting.Python (31)
PythonAppResourceBuilderExtensions.cs (31)
482if (resourceBuilder.Resource.TryGetAnnotationsOfType<ContainerFilesDestinationAnnotation>(out var containerFilesAnnotations)) 484var buildSteps = context.GetSteps(resourceBuilder.Resource, WellKnownPipelineTags.BuildCompute); 499var resourceToSetup = resourceBuilder.Resource; 872: Path.GetFullPath(virtualEnvironmentPath, builder.Resource.WorkingDirectory); 877if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 933if (!builder.Resource.TryGetLastAnnotation<PythonEntrypointAnnotation>(out var entrypointAnnotation)) 945var workingDirectory = builder.Resource.WorkingDirectory; 967if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var annotation) || annotation.VirtualEnvironment is null) 1043if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1142if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1147pythonEnv = builder.Resource.Annotations.OfType<PythonEnvironmentAnnotation>().Last(); 1154var workingDirectory = builder.Resource.WorkingDirectory; 1300var installerName = $"{builder.Resource.Name}-installer"; 1317var installer = new PythonInstallerResource(installerName, builder.Resource); 1320.WithParentRelationship(builder.Resource) 1335if (!builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager) || 1336!builder.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installCommand)) 1345.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1370if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1378: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1381var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1391var venvCreator = new PythonVenvCreatorResource(venvCreatorName, builder.Resource, venvPath); 1410.WithWorkingDirectory(builder.Resource.WorkingDirectory) 1411.WithParentRelationship(builder.Resource) 1420var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1425builder.ApplicationBuilder.Resources.Remove(venvCreatorBuilder.Resource); 1451var shouldSkipInstallerWait = installerBuilder?.Resource.TryGetLastAnnotation<ExplicitStartupAnnotation>(out _) ?? false; 1490var isUsingUv = builder.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var pkgMgr) && 1500if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var pythonEnv) || 1514: Path.GetFullPath(pythonEnv.VirtualEnvironment.VirtualEnvironmentPath, builder.Resource.WorkingDirectory); 1530if (!builder.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var existing))
Aspire.Hosting.Python.Tests (41)
AddPythonAppTests.cs (39)
39var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 77var manifest = await ManifestUtils.GetManifest(pyproj.Resource, manifestDirectory: projectDirectory); 137var environmentVariables = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(pyproj.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 746Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 750Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 770Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 877Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 881Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 908Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 912Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 1184var initialCommand = pythonBuilder.Resource.Command; 1189var newCommand = pythonBuilder.Resource.Command; 1409var resource = pythonApp.Resource; 1453var resource = pythonApp.Resource; 1493var resource = pythonApp.Resource; 1524var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1545var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1570var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1597var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1623var launchConfig = await CreateLaunchConfigurationAsync(pythonApp.Resource); 1665var resource = pythonApp.Resource; 1696var resource = pythonApp.Resource; 1719pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1741pythonApp.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 1759pythonApp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); 2020Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2024Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2054Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2058Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2091Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2095Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonInstallCommandAnnotation>(out var installAnnotation)); 2115Assert.False(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out _)); 2221Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2256Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2260Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2296Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2326Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonEnvironmentAnnotation>(out var envAnnotation)); 2427Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager)); 2459Assert.True(pythonApp.Resource.TryGetLastAnnotation<PythonPackageManagerAnnotation>(out var packageManager));
AddUvicornAppTests.cs (2)
24Assert.IsType<UvicornAppResource>(uvicornApp.Resource); 25Assert.Equal("uvicorn-app", uvicornApp.Resource.Name);
Aspire.Hosting.Qdrant (5)
QdrantBuilderExtensions.cs (5)
48var apiKeyParameter = apiKey?.Resource ?? 170var resource = (IResourceWithConnectionString)qdrantResource.Resource; 176var injectionAnnotation = builder.Resource.TryGetLastAnnotation<ReferenceEnvironmentInjectionAnnotation>(out var annotation) ? annotation : null; 184context.EnvironmentVariables[$"{connectionStringName}"] = qdrantResource.Resource.ConnectionStringExpression; 187context.EnvironmentVariables[$"{connectionStringName}_{QdrantServerResource.HttpEndpointName}"] = qdrantResource.Resource.HttpConnectionStringExpression;
Aspire.Hosting.Qdrant.Tests (22)
AddQdrantTests.cs (8)
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; 194var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 206var containerConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container1.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 237var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 249var serverManifest = await ManifestUtils.GetManifest(qdrant.Resource); // using this method does not get any ExecutionContext.IsPublishMode changes 287var 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(); 233throw 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."); 287var 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)
232AwsRadiusCredential.AccessKey ak => $"access-key|{ak.AccessKeyId.Resource.Name}", 246return await parameter.Resource.GetValueAsync(cancellationToken).ConfigureAwait(false) ?? string.Empty;
Publishing\RadiusInfrastructureBuilder.cs (2)
1203parts.Add(EnvPart.FromParameter(GetOrAddEnvParameter(paramBuilder.Resource))); 1728return ParameterReference(GetOrAddRecipeParameter(parameterBuilder.Resource));
RadiusExtensions.cs (5)
80builder.Resource.Namespace = kubernetesNamespace; 99builder.Resource.Annotations.Add(new RadiusInfrastructureConfigureAnnotation(configure)); 144var existing = builder.Resource.Annotations.OfType<ContainerImageAnnotation>().LastOrDefault(); 147builder.Resource.Annotations.Remove(existing); 150builder.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)
115OwningEnvironment = radius.Resource, 143EnsureNotAlreadyPopulated(store.Resource); 151var population = store.Resource.Population; 213EnsureNotAlreadyPopulated(store.Resource); 215var population = store.Resource.Population; 243EnsureNotAlreadyPopulated(store.Resource); 245var population = store.Resource.Population; 292store.Resource.MaterializationTimeout = timeout; 293store.Resource.MaterializationTimeoutWasSet = true; 440if (!_population.Data.TryAdd(key, new RadiusSecretKeyBinding(parameter.Resource, encoding?.ToRadiusEncodingString())))
Aspire.Hosting.Radius.Tests (65)
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();
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\BicepGenerationSimpleTests.cs (3)
168RadiusTestHelper.AttachDeploymentTargets(env.Resource, model); 169var context = new RadiusBicepPublishingContext(env.Resource); 182var 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 (1)
40Assert.Same(secret.Resource, binding.Value);
Publishing\SealedSecretPublishTests.cs (1)
77var resolved = store.Resource.Population.SealedManifestPath;
RadiusExtensionsTests.cs (10)
21Assert.Equal("radius", resourceBuilder.Resource.Name); 22Assert.Equal("default", resourceBuilder.Resource.Namespace); 32Assert.Equal("staging", resourceBuilder.Resource.Name); 59Assert.Equal("staging-ns", resourceBuilder.Resource.Namespace); 116Assert.Equal("a", resourceBuilder.Resource.Namespace); 120Assert.Equal("my-ns", resourceBuilder.Resource.Namespace); 124Assert.Equal("123", resourceBuilder.Resource.Namespace); 129Assert.Equal(maxName, resourceBuilder.Resource.Namespace); 168var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single(); 185var annotation = project.Resource.Annotations.OfType<ContainerImageAnnotation>().Single();
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)
24Assert.Equal("db-creds", store.Resource.Name); 25Assert.Equal(RadiusSecretStoreType.BasicAuthentication, store.Resource.Type); 48Assert.Same(env.Resource, store.OwningEnvironment); 112Assert.Equal(valid, store.Resource.Name); 124Assert.True(store.Resource.Population.HasInlineData); 125Assert.True(store.Resource.Population.Data.ContainsKey("password")); 188Assert.Equal(reference, store.Resource.Population.ResourceReference); 232Assert.Equal(["k1", "k2", "k3"], store.Resource.Population.Keys); 246Assert.Equal(["ok"], store.Resource.Population.Keys); 260Assert.Equal("app/s", store.Resource.Population.ResourceReference); 261Assert.Equal(["ok"], store.Resource.Population.Keys); 315Assert.Equal([key], store.Resource.Population.Keys); 363Assert.Equal(max, store.Resource.MaterializationTimeout);
Secrets\SecretStoreConsumerTests.cs (2)
28var annotation = env.Resource.Annotations.OfType<RadiusSecretStoresAnnotation>().Single(); 33Assert.Same(store.Resource, registry.Store);
Secrets\SecretStoreDefaultPathTests.cs (1)
57Assert.True(pass.Resource.Secret);
Secrets\SecretStoreValidationTests.cs (2)
125var annotation = Assert.Single(store.Resource.Annotations.OfType<PipelineStepAnnotation>()); 129Resource = store.Resource,
Aspire.Hosting.Redis (5)
RedisBuilderExtensions.cs (5)
76var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false); 288resourceBuilder.WithRelationship(builder.Resource, "RedisCommander"); 356.WithRelationship(builder.Resource, "RedisInsight") 619builder.Resource.SetPassword(password?.Resource);
Aspire.Hosting.Redis.Tests (90)
AddRedisTests.cs (41)
27Assert.Single(redis.Resource.Annotations, a => a is HealthCheckAnnotation hca && hca.Key == "redis_check"); 302Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value); 307Assert.Equal($"{redis1.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 312Assert.Equal(redis1.Resource.Name, item.Value); 318Assert.Equal(redis1.Resource.PasswordParameter!.Value, item.Value); 324Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value); 329Assert.Equal($"{redis2.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 334Assert.Equal(redis2.Resource.Name, item.Value); 340Assert.Equal(redis2.Resource.PasswordParameter!.Value, item.Value); 346Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value); 351Assert.Equal($"{redis3.Resource.PrimaryEndpoint.TargetPort!.Value}", item.Value); 356Assert.Equal(redis3.Resource.Name, item.Value); 498Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 520Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]); 545Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 566var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 591var volumeAnnotation = redis.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 704var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource); 712var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource); 723Assert.True(redis.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 788var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 801var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 815var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 818Assert.Equal(password.Resource, annotation.Password); 830var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 846var annotation = Assert.Single(redis.Resource.Annotations.OfType<HttpsCertificateAnnotation>()); 849Assert.Equal(password.Resource, annotation.Password); 867Assert.True(redis.Resource.TlsEnabled); 870var connectionStringExpression = redis.Resource.ConnectionStringExpression; 880var endpoint = Assert.Single(redis.Resource.Annotations.OfType<EndpointAnnotation>(), e => e.Name == "tcp"); 885var uriExpression = redis.Resource.UriExpression; 904var args = await ArgumentEvaluator.GetArgumentListAsync(redis.Resource, app.Services).AsTask().WaitAsync(TimeSpan.FromSeconds(60)); 921Assert.False(redis.Resource.TlsEnabled); 924var expressionBeforeTls = redis.Resource.ConnectionStringExpression; 941Assert.True(redis.Resource.TlsEnabled); 950var expressionAfterTls = redis.Resource.ConnectionStringExpression; 966Assert.False(redis.Resource.TlsEnabled); 969var connectionStringExpression = redis.Resource.ConnectionStringExpression;
RedisFunctionalTests.cs (49)
53await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 82await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name); 84var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http"); 87if (redis.Resource.TlsEnabled) 93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info"; 115[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync() 118hb.AddRedisClient(redis.Resource.Name); 148await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token); 155[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true" 158hb.AddRedisClient(redis.Resource.Name); 189await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 191var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http"); 207Assert.Equal(redis1.Resource.Name, db.Name); 208Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host); 209Assert.Equal(redis1.Resource.PrimaryEndpoint.TargetPort, db.Port); 213Assert.Equal(redis2.Resource.Name, db.Name); 214Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host); 215Assert.Equal(redis2.Resource.PrimaryEndpoint.TargetPort, db.Port); 219Assert.Equal(redis3.Resource.Name, db.Name); 220Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host); 221Assert.Equal(redis3.Resource.PrimaryEndpoint.TargetPort, db.Port); 257[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 260hb.AddRedisClient(redis1.Resource.Name); 294[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 297hb.AddRedisClient(redis2.Resource.Name); 340[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 343hb.AddRedisClient(redis1.Resource.Name); 375[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 378hb.AddRedisClient(redis2.Resource.Name); 425[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 428hb.AddRedisClient(redis1.Resource.Name); 456[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 459hb.AddRedisClient(redis2.Resource.Name); 524await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 528var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http"); 559await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 563var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http"); 680await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token);
Aspire.Hosting.RemoteHost.Tests (1)
CapabilityDispatcherTests.cs (1)
2251$"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)
151|| !containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var provisionalDockerfile)) 486if (!builder.Resource.TryGetLastAnnotation<RustCargoOptionsAnnotation>(out var options)) 732var annotations = containerBuilder.Resource.Annotations; 733if (!containerBuilder.Resource.TryGetLastAnnotation<DockerfileBuildAnnotation>(out var activeDockerfile) 762targetPlatform = ResolveContainerTargetPlatform(resource, containerBuilder.Resource);
Aspire.Hosting.Rust.Tests (44)
AddRustAppPublishTests.cs (4)
318var rustBuildStep = CreateBuildComputeStep("build-api", rust.Resource); 319var frontendBuildStep = CreateBuildComputeStep("build-frontend", frontend.Resource); 320var assetsBuildStep = CreateBuildComputeStep("build-assets", assets.Resource); 1110configuredResource = 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 (5)
SqlServerBuilderExtensions.cs (5)
44var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", minLower: 1, minUpper: 1, minNumeric: 1); 127var sqlServerDatabase = new SqlServerDatabaseResource(name, databaseName, builder.Resource); 129builder.Resource.AddDatabase(sqlServerDatabase); 240builder.Resource.SetPassword(password.Resource);
Aspire.Hosting.SqlServer.Tests (48)
AddSqlServerTests.cs (13)
21Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 31Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName); 129var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 130var dbManifest = await ManifestUtils.GetManifest(db.Resource); 170var serverManifest = await ManifestUtils.GetManifest(sqlServer.Resource); 227Assert.Equal("customers1", db1.Resource.DatabaseName); 228Assert.Equal("customers2", db2.Resource.DatabaseName); 230Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers1", db1.Resource.ConnectionStringExpression.ValueExpression); 231Assert.Equal("{sqlserver1.connectionString};Initial Catalog=customers2", db2.Resource.ConnectionStringExpression.ValueExpression); 245Assert.Equal("imports", db1.Resource.DatabaseName); 246Assert.Equal("imports", db2.Resource.DatabaseName); 248Assert.Equal("{sqlserver1.connectionString};Initial Catalog=imports", db1.Resource.ConnectionStringExpression.ValueExpression); 249Assert.Equal("{sqlserver2.connectionString};Initial Catalog=imports", db2.Resource.ConnectionStringExpression.ValueExpression);
SqlServerFunctionalTests.cs (35)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 52await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 84hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 86hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name); 87hb.AddSqlServerClient(newDb.Resource.Name); 146var password = sqlserver1.Resource.PasswordParameter.Value; 182await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 191[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default), 194hb1.AddSqlServerClient(db1.Resource.Name); 268await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 277[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default), 280hb2.AddSqlServerClient(db2.Resource.Name); 374hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 376hb.AddSqlServerClient(newDb.Resource.Name); 382await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 388resourceName: sqlserver.Resource.Name, 435hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 437hb.AddSqlServerClient(newDb.Resource.Name); 443await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 508hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 510hb.AddSqlServerClient(newDb.Resource.Name); 516await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token); 569hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 570hb.AddKeyedSqlServerClient(db.Resource.Name); 579await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 581var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
Aspire.Hosting.Testing.Tests (2)
TestingBuilderTests.cs (1)
535redis1.Resource.ShellExecution = false;
tests\Aspire.Hosting.TestUtilities\Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Aspire.Hosting.Tests (1470)
AddConnectionStringTests.cs (3)
82cs.Resource.TryGetAnnotationsOfType<WaitAnnotation>(out var waitAnnotations); 89Assert.Same(redis.Resource, wa.Resource); 94Assert.Same(key.Resource, wa.Resource);
AddParameterTests.cs (23)
55parameter.Resource.Default = new TestParameterDefault("DefaultValue"); 275Assert.IsType<UserSecretsParameterDefault>(parameter1.Resource.Default); 279Assert.IsType<GenerateParameterDefault>(parameter2.Resource.Default); 375Assert.Equal("This is a test parameter", parameter.Resource.Description); 376Assert.False(parameter.Resource.EnableDescriptionMarkdown); 390Assert.Equal("This is a **markdown** description", parameter.Resource.Description); 391Assert.True(parameter.Resource.EnableDescriptionMarkdown); 413Assert.Equal("Custom input parameter", parameter.Resource.Description); 414Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 426var input = parameter.Resource.CreateInput(); 445var input = parameter.Resource.CreateInput("value"); 465var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 479var input = parameter.Resource.CreateInput(); 507var input = parameter.Resource.CreateInput(); 534var input = parameter.Resource.CreateInput("value"); 562var input = parameter.Resource.CreateInput(dynamicLoading: dynamicLoading); 576var input = parameter.Resource.CreateInput(); 601Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 603var input = parameter.Resource.CreateInput(); 632Assert.True(parameter.Resource.Annotations.OfType<InputGeneratorAnnotation>().Any()); 634var input = parameter.Resource.CreateInput("value", required: true); 665var input = parameter.Resource.CreateInput(); 688var input = parameter.Resource.CreateInput();
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (26)
27var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 51var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 70var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 91var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 98Resource = container.Resource, 143var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 149Resource = container.Resource, 179var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 185Resource = container.Resource, 213var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 219Resource = container.Resource, 254var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 260Resource = container.Resource, 289Assert.Equal("mycontainer", container.Resource.Name); 290var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 310Assert.Equal("mycontainer", container.Resource.Name); 311var callbackAnnotation = container.Resource.Annotations.OfType<DockerfileBuilderCallbackAnnotation>().LastOrDefault(); 333var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 340Resource = container.Resource, 369var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 376Resource = container.Resource, 401var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 435var buildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().LastOrDefault(); 441Resource = container.Resource, 471var envAnnotation = container.Resource.Annotations.OfType<EnvironmentAnnotation>().FirstOrDefault(); 473var endpointAnnotation = container.Resource.Annotations.OfType<EndpointAnnotation>().FirstOrDefault();
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>();
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (54)
134await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 138await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-def456", s => s with 181await notificationService.PublishUpdateAsync(custom.Resource, s => s with 346await notificationService.PublishUpdateAsync(custom.Resource, s => s with 400await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 403await notificationService.PublishUpdateAsync(owner.Resource, s => s with 443topLevelParameter.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); 444topLevelParameter.Resource.WaitForValueTcs.SetResult("top-level-secret"); 449await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 452await notificationService.PublishUpdateAsync(owner.Resource, s => s with 511await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 514await notificationService.PublishUpdateAsync(owner.Resource, s => s with 539var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 541await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 543await notificationService.PublishUpdateAsync(owner.Resource, s => s with 587await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 590await notificationService.PublishUpdateAsync(owner.Resource, s => s with 613var environmentCallback = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 615await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 617await notificationService.PublishUpdateAsync(owner.Resource, s => s with 657await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 660await notificationService.PublishUpdateAsync(owner.Resource, s => s with 688await notificationService.PublishUpdateAsync(owner.Resource, s => s with 728await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 731await notificationService.PublishUpdateAsync(owner.Resource, s => s with 756await notificationService.PublishUpdateAsync(owner.Resource, s => s with 817await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 820await notificationService.PublishUpdateAsync(mcpResource.Resource, s => s with 824await notificationService.PublishUpdateAsync(owner.Resource, s => s with 863.WithEnvironment(context => context.EnvironmentVariables["SECRET"] = coldSecret.Resource); 871await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 876coldSecret.Resource.WaitForValueTcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); 877coldSecret.Resource.WaitForValueTcs.SetResult("value-b"); 880await notificationService.PublishUpdateAsync(owner.Resource, s => s with 937var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 944.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 992var annotation = owner.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 1001.EvaluateOnceAsync(new EnvironmentCallbackContext(executionContext, owner.Resource, new Dictionary<string, object>())) 1030await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1033await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1081await PrimeEnvironmentCallbackCacheAsync(owner.Resource, app.Services).DefaultTimeout(); 1096await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1112await notificationService.PublishUpdateAsync(owner.Resource, s => s with 1149await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1221await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1234ResourceName = custom.Resource.Name, 1257await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1297await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1350AddSyntheticTerminalAnnotation(custom.Resource, replicaCount: 1); 1356await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1392await notificationService.PublishUpdateAsync(custom.Resource, s => s with 1438await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1477await notificationService.PublishUpdateAsync(resourceWithReplicas.Resource, "myresource-abc123", s => s with 1945await notificationService.PublishUpdateAsync(hidden.Resource, snapshot => snapshot with
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)
23Assert.Equal("docker-hub", registry.Resource.Name); 25var containerRegistry = registry.Resource as IContainerRegistry; 39Assert.Equal("acr", registry.Resource.Name); 41var containerRegistry = registry.Resource as IContainerRegistry; 57Assert.Equal("my-registry", registry.Resource.Name); 59var containerRegistry = registry.Resource as IContainerRegistry; 74Assert.Equal("my-registry", registry.Resource.Name); 76var containerRegistry = registry.Resource as IContainerRegistry; 200var containerRegistry = registry.Resource as IContainerRegistry; 214var containerRegistry = registry.Resource as IContainerRegistry; 229var containerRegistry = registry.Resource as IContainerRegistry; 245var containerRegistry = registry.Resource as IContainerRegistry; 263var containerRegistry = registry.Resource as IContainerRegistry; 278Assert.IsAssignableFrom<IContainerRegistry>(registry.Resource); 309var annotation = container.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().SingleOrDefault(); 311Assert.Same(registry.Resource, annotation.Registry); 344var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 345var pipelineConfigAnnotations = container.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 359var pipelineStepAnnotations = project.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 360var pipelineConfigAnnotations = project.Resource.Annotations.OfType<PipelineConfigurationAnnotation>().ToList(); 374var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 379Resource = project.Resource 398var pipelineStepAnnotation = Assert.Single(container.Resource.Annotations.OfType<PipelineStepAnnotation>()); 403Resource = container.Resource 422var pipelineStepAnnotations = container.Resource.Annotations.OfType<PipelineStepAnnotation>().ToList(); 429Resource = container.Resource 446var pipelineStepAnnotation = Assert.Single(project.Resource.Annotations.OfType<PipelineStepAnnotation>()); 451Resource = project.Resource 474var annotation = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().FirstOrDefault(); 476Assert.Same(registry.Resource, annotation.Registry); 490var annotations = project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>().ToList(); 492Assert.Same(registry1.Resource, annotations[0].Registry); 502var annotation = new ContainerRegistryReferenceAnnotation(registry.Resource); 504Assert.Same(registry.Resource, annotation.Registry); 519Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 526var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 527Assert.Same(registry.Resource, registryTargetAnnotation.Registry); 547var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 551Assert.Contains(registry1.Resource, registryResources); 552Assert.Contains(registry2.Resource, registryResources); 571var containerRegistry = project.Resource.GetContainerRegistry(); 572Assert.Same(registry.Resource, containerRegistry); 594var containerRegistry = project.Resource.GetContainerRegistry(); 595Assert.Same(registry2.Resource, containerRegistry); 616var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 630var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetContainerRegistry); 652Assert.Single(project1.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 653Assert.Single(project2.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 654Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 676var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 679var containerRegistryRefAnnotation = Assert.Single(project.Resource.Annotations.OfType<ContainerRegistryReferenceAnnotation>()); 680Assert.Same(specificRegistry.Resource, containerRegistryRefAnnotation.Registry); 683var containerRegistry = project.Resource.GetContainerRegistry(); 684Assert.Same(specificRegistry.Resource, containerRegistry); 699Assert.Empty(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 706var registryTargetAnnotation = Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 707Assert.Same(acr.Resource, registryTargetAnnotation.Registry); 727Assert.Single(project.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 728Assert.Single(container.Resource.Annotations.OfType<RegistryTargetAnnotation>()); 747var containerRegistry = project.Resource.GetContainerRegistry(); 748Assert.Same(acr.Resource, containerRegistry); 768var containerRegistry = env.Resource.GetContainerRegistry(); 769Assert.Same(acr.Resource, containerRegistry); 789var registryTargetAnnotations = project.Resource.Annotations.OfType<RegistryTargetAnnotation>().ToList(); 793Assert.Contains(acr.Resource, registryResources); 794Assert.Contains(dockerHub.Resource, registryResources);
ContainerTunnelTests.cs (6)
37using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 76using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 114await app.ResourceNotifications.WaitForResourceAsync(c.Resource.Name, KnownResourceStates.Running) 146foreach (var resourceName in new[] { upstreamService.Resource.Name, tunnelDependentContainer.Resource.Name, downstreamService.Resource.Name })
Dashboard\DashboardResourceTests.cs (1)
117Assert.Same(container.Resource, dashboard);
Dcp\DcpExecutorTests.cs (137)
124.WithReplicas(2).Resource; 558}).Resource; 1129Assert.IsNotAssignableFrom<IComputeResource>(emulator.Resource); 1130Assert.True(emulator.Resource.IsContainer()); 1134Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name); 3800Assert.Same(database.Resource, connectionStringAvailableResource); 3848Assert.Same(database.Resource, connectionStringAvailableResource); 3908if (ReferenceEquals(context.Resource, client.Resource)) 3954if (ReferenceEquals(context.Resource, client.Resource)) 4165HasKnownCommandAnnotations(exe.Resource); 4166HasKnownCommandAnnotations(container.Resource); 4167HasKnownProjectCommandAnnotations(project.Resource); 4321var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 4324projectBuilder.Resource.Annotations.Remove(annotationToRemove); 4843var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 4846projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 4882var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 4885projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 4923var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 4926projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 4967var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 4970projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5014var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 5017projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 5053Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 5519var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 5532resource.Resource.Annotations.Add( 5553var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 5566Assert.Same(resource.Resource, failure.Resource); 6083var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6086projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6123var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6126projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6173var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6176projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6233var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6236projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6285var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6288projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6329var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6332projectBuilder.Resource.Annotations.Remove(annotationToRemove); 6411var projectResource = projectBuilder.Resource; 6412var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6415projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 6419projectBuilder.Resource.Annotations.Add( 6546var defaultDebugSupport = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6549projectBuilder.Resource.Annotations.Remove(defaultDebugSupport); 6553projectBuilder.Resource.Annotations.Add( 6656await foreach (var lines in resourceLoggerService.GetAllAsync(projectBuilder.Resource).DefaultTimeout()) 6674var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6677projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 6761var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6764projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 6869var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6872projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 6936var defaultAnnotation = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6939projectBuilder.Resource.Annotations.Remove(defaultAnnotation); 6980var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 6983projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7046var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7049projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7073var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7076projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7120var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7123customProject.Resource.Annotations.Remove(annotationToRemove); 7170var annotationToRemove = customProject.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7173customProject.Resource.Annotations.Remove(annotationToRemove); 7216var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7219projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7298var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7301projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7503projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 7550projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 7587projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 7623projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 7658projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"], leadingResourceArgumentToRemove: "run")); 7703projectBuilder.Resource.Annotations.Add(new ProjectLaunchArgsOverrideAnnotation(["build", "/t:Run"])); 7744var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7747projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7772var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7775projectBuilder.Resource.Annotations.Remove(annotationToRemove); 7811var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 7814projectBuilder.Resource.Annotations.Remove(annotationToRemove); 8860await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 8861await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 8865await AssertTunneledPort(executable.Resource, "proxied", 5678); 8866await AssertTunneledPort(executable.Resource, "notProxied", 8765); 8880await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, port); 8882await AssertEndpoint(executable.Resource, endpointName, KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, hostPort); 8886.Where(c => c.AppModelResourceName == container.Resource.Name) 8894await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 5678); 8895await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 8765); 8896await AssertEndpoint(executable.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 5678); 8897await AssertEndpoint(executable.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, expectedContainerHost, 8765); 8900await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 15678); 8901await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 18765); 8903await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234); 8904await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765); 8906await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 25678); 8907await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.LocalhostNetwork, KnownHostNames.Localhost, 28765); 8909await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234); 8910await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765); 8994s => s.AppModelResourceName == executable.Resource.Name 9146var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9191var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9248var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9301var reference = appExecutor.GetResource(DcpExecutor.GetDcpInstance(resource.Resource, instanceIndex: 0).Name); 9417if (context.Resource == waiting.Resource || context.Resource == waitingConsumingEndpoint.Resource) 9419while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name)) 9435Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name); 9436Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name); 9437var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name); 9444Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name); 9445var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name); 9478if (context.Resource == tunnelDependentContainer.Resource) 9480while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name)) 9486if (context.Resource == downstreamExecutable.Resource) 9488while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name)) 9504var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name); 9505var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name); 9506var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name); 9517var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name); 9693var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 9696projectBuilder.Resource.Annotations.Remove(annotationToRemove); 9735var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 9738projectBuilder.Resource.Annotations.Remove(annotationToRemove); 9773Assert.Same(projectBuilder.Resource, Assert.Single(failedResources)); 9785var annotationToRemove = projectBuilder.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().FirstOrDefault(); 9788projectBuilder.Resource.Annotations.Remove(annotationToRemove); 9849.Resource; 9923.Resource; 9969.Resource;
DebugSupportExtensionsTests.cs (29)
88await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 91Assert.Same(executable.Resource, observedContext.Resource); 104var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 107Assert.Equal(GetProjectPath(project.Resource), launchConfiguration.ProjectPath); 121var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.Debug)); 133var debugSupport = Assert.Single(project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 152var launchConfiguration = Assert.IsType<ProjectLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(project.Resource, ExecutableLaunchMode.NoDebug)); 166var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.NoDebug)); 186var launchConfiguration = Assert.IsType<TestGoLaunchConfiguration>(await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 206await CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug, cts.Token); 230await executable.Resource.CreateLaunchConfigurationAsync(ExecutableLaunchMode.NoDebug, cts.Token)); 236Assert.Same(executable.Resource, actualContext.Resource); 249() => executable.Resource.CreateLaunchConfigurationAsync(null!, CancellationToken.None)); 270executable.Resource, 276await executable.Resource.CreateLaunchConfigurationAsync(callbackContext)); 291var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 304mode => ProjectLaunchConfigurationFactory.Create(executable.Resource, mode), 307var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 319var exception = await Assert.ThrowsAsync<InvalidOperationException>(() => CreateLaunchConfigurationForTestAsync(executable.Resource, ExecutableLaunchMode.Debug)); 332Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 343Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(debugSessionPort: null), out _)); 354Assert.True(project.Resource.SupportsDebugging(CreateConfiguration(), out var annotation)); 367Assert.False(executable.Resource.SupportsDebugging(CreateConfiguration(), out _)); 383Assert.Equal(expected, executable.Resource.SupportsDebugging(configuration, out _)); 397Assert.False(project.Resource.SupportsDebugging(configuration, out _)); 407Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 417Assert.False(project.Resource.SupportsDebugging(CreateConfiguration(), out _)); 432Assert.True(project.Resource.SupportsDebugging(configuration, out _)); 433Assert.False(executable.Resource.SupportsDebugging(configuration, out _));
DistributedApplicationBuilderExtensionsTests.cs (8)
34Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 43Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 75Assert.Same(originalRedis.Resource, newRedisBuilder.Resource); 86Assert.Same(originalRedis.Resource, newRedisBuilder.Resource);
DistributedApplicationModelExtensionsTests.cs (8)
32item => Assert.Equal(container1.Resource, item), 33item => Assert.Equal(container2.Resource, item), 34item => Assert.Equal(project.Resource, item), 35item => Assert.Equal(emulator.Resource, item)); 51containerWithDockerfile.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null)); 55buildOnlyContainer.Resource.Annotations.Add(new DockerfileBuildAnnotation("/context", "/Dockerfile", null) { HasEntrypoint = false }); 67item => Assert.Equal(project.Resource, item), 68item => Assert.Equal(containerWithDockerfile.Resource, item));
DistributedApplicationTests.cs (30)
780using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http"); 781using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http"); 788var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http"); 1106var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 1700var endpoint = testProgram.ServiceABuilder.Resource.GetEndpoint("http"); 1772await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration); 1775var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http"); 1793var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https"); 1843using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1851var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1853Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter?.Value}{sslVal}", env.Value); 1858if (redis.Resource.TlsEnabled) 1868var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1872sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1874Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter?.Value}{sslVal}", otherRedisEnv.Value); 1877if (redisNoPort.Resource.TlsEnabled) 1917using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1929var sslVal = redis.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1931Assert.Equal($"localhost:{port},password={redis.Resource.PasswordParameter!.Value}{sslVal}", env.Value); 1936if (redis.Resource.TlsEnabled) 1946var otherRedisService = await WaitForAllocatedProxylessServiceAsync(s, redisNoPort.Resource, redisNoPort.Resource.PrimaryEndpoint) 1950sslVal = redisNoPort.Resource.TlsEnabled ? ",ssl=true" : string.Empty; 1952Assert.Equal($"localhost:{otherRedisPort},password={redisNoPort.Resource.PasswordParameter!.Value}{sslVal}", otherRedisEnv.Value); 1956if (redisNoPort.Resource.TlsEnabled) 2046await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token) 2048await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token) 2054var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name); 2063var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name);
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)
28var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 39var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 54var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 75var annotation = executable.Resource.Annotations.OfType<ExecutableAnnotation>().Single(); 86var annotation = executable.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 98var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 102executable.Resource, 104executable.Resource, 119var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 138syncExecutable.Resource, 139LaunchConfigurationTestHelpers.CreateCallbackContext(syncExecutable.Resource))); 142asyncExecutable.Resource, 143LaunchConfigurationTestHelpers.CreateCallbackContext(asyncExecutable.Resource))); 190var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 208await executable.Resource.ProcessArgumentValuesAsync( 255var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 279var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 305var args = await ArgumentEvaluator.GetArgumentListAsync(executable.Resource); 324var annotations = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().ToList(); 326annotation => Assert.True(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)), 327annotation => Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation))); 345var annotation = executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().Single(); 346Assert.False(executable.Resource.HasLaunchToolArgsOwnedBy(annotation)); 361Assert.Empty(executable.Resource.Annotations.OfType<SupportsDebuggingAnnotation>()); 363var 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 (30)
31.Resource; 54.Resource; 74var resource = builder.AddExecutable("test", "test.exe", ".").Resource; 98.Resource; 124.Resource; 147.Resource; 167var resource = builder.AddContainer("test", "image").Resource; 191.Resource; 212.Resource; 216.Resource; 247.Resource; 251.Resource; 287.Resource; 315.Resource; 345.Resource; 373.Resource; 395var resource = builder.AddContainer("test", "image").Resource; 421.Resource; 456.Resource; 486.Resource; 522.Resource; 582.Resource; 645.Resource; 679.Resource; 711Password = password.Resource 713.Resource; 743.Resource; 763var resource = builder.AddContainer("test", "image").Resource; 786.Resource; 830.Resource;
ExpressionResolverTests.cs (9)
128var csRef = new ConnectionStringReference(target.Resource, false); 144var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(source.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 182var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 219var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(test.Resource, DistributedApplicationOperation.Run, testServiceProvider).DefaultTimeout(); 270var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 289var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(dep.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 307var endpointAnnotation = dependency.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 312_ = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(consumer.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).AsTask().TimeoutAfter(TimeSpan.FromSeconds(2));
ExternalServiceTests.cs (42)
22Assert.Equal("nuget", externalService.Resource.Name); 23Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 24Assert.Null(externalService.Resource.UrlParameter); 35Assert.Equal("nuget", externalService.Resource.Name); 36Assert.Equal("https://nuget.org/", externalService.Resource.Uri?.ToString()); 37Assert.Null(externalService.Resource.UrlParameter); 48Assert.Equal("nuget", externalService.Resource.Name); 49Assert.Null(externalService.Resource.Uri); 50Assert.NotNull(externalService.Resource.UrlParameter); 51Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name); 86Assert.Equal("nuget", externalService.Resource.Name); 87Assert.Equal(uriWithPath, externalService.Resource.Uri); 102Assert.Equal("nuget", externalService.Resource.Name); 103Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 116var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 133var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 152var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 172var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Publish, app.Services).DefaultTimeout(); 177Assert.Equal(urlParam.Resource.ValueExpression, urlValue); 195await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 214await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 232Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 233Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 248Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 249Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 271Assert.True(externalService.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var snapshotAnnotations)); 285Assert.True(externalService.Resource.TryGetAnnotationsOfType<ManifestPublishingCallbackAnnotation>(out var manifestAnnotations)); 341externalService.Resource.Name, 368externalService.Resource.Name, 395externalService.Resource.Name, 419Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 420var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 440Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 441var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 465Assert.True(externalService.Resource.TryGetAnnotationsOfType<HealthCheckAnnotation>(out var healthCheckAnnotations)); 466var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 490var manifest = await ManifestUtils.GetManifest(project.Resource); 507Assert.Equal("service", externalService.Resource.Name); 508Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 522Assert.Equal("service", externalService.Resource.Name); 523Assert.Equal(validUrl, externalService.Resource.Uri?.ToString()); 560var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
Health\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)
104var 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 (99)
34var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 51if (item.Resource == parentResource.Resource) 55else if (item.Resource == childResource.Resource) 99if (item.Resource == parentResource.Resource) 103else if (item.Resource == childResource.Resource) 146applicationEventing.Subscribe<InitializeResourceEvent>(resource.Resource, (@event, ct) => 164Assert.Equal(resource.Resource, initEvent.Resource); 199if (item.Resource == parent.Resource) 203else if (item.Resource == child.Resource) 208else if (item.Resource == nestedChild.Resource) 212else if (item.Resource == child2.Resource) 265if (item.Resource == firstParent.Resource) 269else if (item.Resource == secondParent.Resource) 273else if (item.Resource == child.Resource) 317if (item.Resource == projectA.Resource) 321else if (item.Resource == projectB.Resource) 367new ChildResourceWithConnectionString("child", new Dictionary<string, string> { { "Namespace", "ns" } }, parentResource.Resource) 370new ChildResourceWithConnectionString("grand-child", new Dictionary<string, string> { { "Database", "db" } }, childResource.Resource) 387applicationEventing.Subscribe<ConnectionStringAvailableEvent>(parentResource.Resource, (_, _) => 392applicationEventing.Subscribe<ConnectionStringAvailableEvent>(childResource.Resource, (_, _) => 397applicationEventing.Subscribe<ConnectionStringAvailableEvent>(grandChildResource.Resource, (_, _) => 403await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, parentResource.Resource)); 426applicationEventing.Subscribe<ConnectionStringAvailableEvent>(resource.Resource, (_, _) => 431applicationEventing.Subscribe<BeforeResourceStartedEvent>(resource.Resource, (_, _) => 440await events.PublishAsync(new OnConnectionStringAvailableContext(CancellationToken.None, resource.Resource)); 441await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, "test-resource-dcp")); 468await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 469await applicationEventing.PublishAsync(new ConnectionStringAvailableEvent(resource.Resource, app.Services), CancellationToken.None); 471Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState)); 514container.Resource, 543container.Resource, 568await events.PublishAsync(new OnResourceStartingContext(CancellationToken.None, KnownResourceTypes.Tool, resource.Resource, "tool-dcp")); 599await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 602Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent)); 607await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 608await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 639CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name)); 641await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 643Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent)); 648await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 665waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 682await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 688CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 691waiter.Resource.Name, 697await resourceNotificationService.PublishUpdateAsync(waiter.Resource, "waiter-def456", s => s with 725waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 742await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 746CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 749waiter.Resource.Name, 774waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 786dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 787dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 794await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 797CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 800waiter.Resource.Name, 827waiter.Resource.Annotations.Add(new DcpInstancesAnnotation([ 839dcpExecutor.AddResource(waiter.Resource, "waiter-abc123"); 840dcpExecutor.AddResource(waiter.Resource, "waiter-def456"); 847await PublishReplicaStatesAsync(resourceNotificationService, waiter.Resource, KnownResourceStates.NotStarted); 851CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-abc123")); 854waiter.Resource.Name, 859CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, "waiter-def456")); 862waiter.Resource.Name, 909await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 912await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }).DefaultTimeout(); 914await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 916Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 961waiter.Resource.Name, 965while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent) 972await resourceNotificationService.PublishUpdateAsync(waiter.Resource, s => s with { State = KnownResourceStates.Starting }); 980await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout(); 982Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1000var connectionString = builder.AddConnectionString("cs", ReferenceExpression.Create($"Endpoint={referenced.Resource}")); 1013await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 1017await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1018await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1049waiter.Resource.Name, 1054Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor)); 1060await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1061await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1293var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1311parentContainer.Resource, 1318var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null; 1319var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1340var customChild = builder.AddResource(new CustomChildResource("custom-child", parentContainer.Resource)); 1358parentContainer.Resource, 1365var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null; 1366var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1407if (item.Resource == parent.Resource) 1411else if (item.Resource == child.Resource) 1415else if (item.Resource == child2.Resource) 1445parent.WithChildRelationship(child.Resource) 1446.WithChildRelationship(child2.Resource); 1464if (item.Resource == parent.Resource) 1468else if (item.Resource == child.Resource) 1472else if (item.Resource == child2.Resource) 1518if (item.Resource == parentProject.Resource) 1522else if (item.Resource == childProject.Resource)
Orchestrator\RelationshipEvaluatorTests.cs (29)
18var childResource = builder.AddResource(new CustomChildResource("child", parentResource.Resource)); 19var grandChildResource = builder.AddResource(new CustomChildResource("grandchild", childResource.Resource)); 20var greatGrandChildResource = builder.AddResource(new CustomChildResource("greatgrandchild", grandChildResource.Resource)); 34Assert.Collection(parentChildLookup[parentResource.Resource], 35x => Assert.Equal(childResource.Resource, x), 36x => Assert.Equal(childWithAnnotationsResource.Resource, x)); 38Assert.Single(parentChildLookup[childResource.Resource], grandChildResource.Resource); 39Assert.Single(parentChildLookup[grandChildResource.Resource], greatGrandChildResource.Resource); 41Assert.Empty(parentChildLookup[greatGrandChildResource.Resource]); 43Assert.Single(parentChildLookup[childWithAnnotationsResource.Resource], grandChildWithAnnotationsResource.Resource); 45Assert.Empty(parentChildLookup[grandChildWithAnnotationsResource.Resource]); 66Assert.Collection(parentChildLookup[parentResource.Resource], 67x => Assert.Equal(child1Resource.Resource, x), 68x => Assert.Equal(child2Resource.Resource, x)); 80parentResource.WithChildRelationship(child1Resource.Resource) 81.WithChildRelationship(child2Resource.Resource); 89Assert.Collection(parentChildLookup[parentResource.Resource], 90x => Assert.Equal(child1Resource.Resource, x), 91x => Assert.Equal(child2Resource.Resource, x)); 112Assert.Collection(parentChildLookup[parentResource.Resource], 113x => Assert.Equal(child1Resource.Resource, x), 114x => Assert.Equal(child2Resource.Resource, x)); 135Assert.Single(parentChildLookup[grandParentResource.Resource], parentResource.Resource); 136Assert.Single(parentChildLookup[parentResource.Resource], childResource.Resource);
ProjectResourceBuilderExtensionTests.cs (11)
52var annotation = project.Resource.Annotations.OfType<PersistenceAnnotation>().Single(); 72Assert.Contains(executable.Resource.Name, exception.Message); 92Assert.Contains(project.Resource.Name, exception.Message); 106Assert.Single(project.Resource.Annotations.OfType<ProjectLaunchDefaultsAnnotation>()); 121Assert.Contains(project.Resource.Name, exception.Message); 136var exception = Assert.Throws<InvalidOperationException>(project.Resource.GetProjectMetadata); 138Assert.Contains(project.Resource.Name, exception.Message); 153.Resource; 163Assert.Same(password.Resource, context.EnvironmentVariables[KnownAspNetCoreConfigNames.KestrelCertificatesDefaultPassword]); 181.Resource; 204.Resource;
ProjectResourceTests.cs (6)
709var args = await ArgumentEvaluator.GetArgumentListAsync(project.Resource).DefaultTimeout(); 717Assert.False(project.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 899Assert.Equal(sourceContainer.Resource, containerFilesAnnotation.Source); 972var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 983var annotation = project.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault(); 994var annotation = app.Resource.Annotations.OfType<SupportsDebuggingAnnotation>().SingleOrDefault();
PublishAsConnectionStringTests.cs (2)
22Assert.True(redis.Resource.TryGetLastAnnotation<ManifestPublishingCallbackAnnotation>(out _)); 24var manifest = await ManifestUtils.GetManifest(redis.Resource).DefaultTimeout();
PublishAsDockerfileTests.cs (5)
31var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 77var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 126var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 175var manifest = await ManifestUtils.GetManifest(frontend.Resource, manifestDirectory: path).DefaultTimeout(); 235var manifest = await ManifestUtils.GetManifest(project.Resource, manifestDirectory: path).DefaultTimeout();
Publishing\PodmanSaveArgumentsTests.cs (1)
113IValueProvider imageReference = new ContainerImageReference(container.Resource);
Publishing\ResourceContainerImageManagerTests.cs (45)
39await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 71await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 104await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 141await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 175await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 205await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 243await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 255AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 287await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 300AssertImageArchiveWasWritten(container.Resource, tempOutputPath); 324await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 356await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 387await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 438await imageBuilder.BuildImageAsync(servicea.Resource, cts.Token); 467await imageBuilder.PushImageAsync(testResource.Resource, cts.Token); 472resource => Assert.Equal(testResource.Resource, resource)); 492imageBuilder.PushImageAsync(testResource.Resource, cts.Token)); 527await imageBuilder.BuildImagesAsync([servicea.Resource], cts.Token); 558await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 591await imageBuilder.BuildImagesAsync([dockerfileResource.Resource], cts.Token); 630imageBuilder.BuildImagesAsync([container.Resource], cts.Token)); 669imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 707imageBuilder.BuildImageAsync(project.Resource, cts.Token)); 750await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 824await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 920await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 966var annotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 973await imageBuilder.BuildImageAsync(container.Resource, cts.Token); 1067var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1106var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1133var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1164var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1170var dockerfileBuildAnnotation = container.Resource.Annotations.OfType<DockerfileBuildAnnotation>().Single(); 1196var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1244var context = await container.Resource.ProcessContainerBuildOptionsCallbackAsync( 1275var context = await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1308await servicea.Resource.ProcessContainerBuildOptionsCallbackAsync( 1314Assert.Equal(servicea.Resource, capturedResource); 1355await imageManager.BuildImagesAsync([servicea.Resource], cts.Token); 1399() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 1434() => imageManager.BuildImageAsync(container.Resource, cts.Token)); 1477() => imageManager.BuildImagesAsync([servicea.Resource, serviceb.Resource], cts.Token)); 1510() => imageManager.BuildImagesAsync([servicea.Resource], cts.Token)); 1545() => imageBuilder.BuildImageAsync(container.Resource, cts.Token));
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)
54resourceBuilder.Resource.AddLifeCycleCommands(); 56var startCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == commandName); 80resourceBuilder.Resource.AddLifeCycleCommands(); 83var restartCommand = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(a => a.Name == KnownResourceCommands.RestartCommand); 159containerResource.Resource.AddLifeCycleCommands(); 164Assert.DoesNotContain(containerResource.Resource.Annotations.OfType<ResourceCommandAnnotation>(), a => a.Name == KnownResourceCommands.RebuildCommand);
ResourceCommandServiceTests.cs (23)
82var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 102var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 123var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "NotFound"); 160var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 192var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 198var resolvedResourceNames = custom.Resource.GetResolvedResourceNames().ToList(); 231var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 236var resourceNames = custom.Resource.GetResolvedResourceNames(); 266var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 296var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 334var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 340var resourceNames = custom.Resource.GetResolvedResourceNames(); 377var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 400var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 422var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "resource-start"); 464var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, legacyCommandName); 482var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 503var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "mycommand"); 598custom.Resource, 638custom.Resource, 1626var result = await app.ResourceCommands.ExecuteCommandAsync(custom.Resource, "generate-token"); 1650await resourceNotificationService.WaitForResourceAsync(project.Resource.Name, e => KnownResourceStates.BuildableStates.Contains(e.Snapshot.State?.Text), cts.Token).DefaultTimeout(TimeSpan.FromMinutes(2)); 1652var result = await app.ResourceCommands.ExecuteCommandAsync(project.Resource, KnownResourceCommands.RebuildCommand).DefaultTimeout(TimeSpan.FromMinutes(2));
ResourceDependencyTests.cs (172)
24var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 26Assert.Contains(redis.Resource, dependencies); 41var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 43Assert.Contains(api.Resource, dependencies); 58var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 60Assert.Contains(api.Resource, dependencies); 97var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 99Assert.Contains(host.Resource, dependencies); 100Assert.DoesNotContain(nonHost.Resource, dependencies); 115var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 117Assert.Contains(db.Resource, dependencies); 118Assert.Contains(postgres.Resource, dependencies); // Parent of db 128.WithConnectionStringRedirection(redis.Resource); 134var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 136Assert.Contains(redirect.Resource, dependencies); 137Assert.Contains(redis.Resource, dependencies); // The redirect target 149var dependencies = await db.Resource.GetResourceDependenciesAsync(executionContext); 151Assert.Contains(postgres.Resource, dependencies); 164var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 166Assert.Contains(redis.Resource, dependencies); 179var dependencies = await mainContainer.Resource.GetResourceDependenciesAsync(executionContext); 181Assert.Contains(initContainer.Resource, dependencies); 194var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 196Assert.Contains(param.Resource, dependencies); 209var dependencies = await exe.Resource.GetResourceDependenciesAsync(executionContext); 211Assert.Contains(param.Resource, dependencies); 226var dependencies = await executable.Resource.GetResourceDependenciesAsync( 234Assert.Collection(dependencies, dependency => Assert.Same(param.Resource, dependency)); 248context.EnvironmentVariables["CONFIG"] = param.Resource; 260var beforePriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 265var annotation = executable.Resource.Annotations.OfType<EnvironmentCallbackAnnotation>().Single(); 267new EnvironmentCallbackContext(executionContext, executable.Resource, new Dictionary<string, object>())); 271var afterPriming = await executable.Resource.GetResourceDependenciesAsync(executionContext, peekOptions); 273Assert.Contains(param.Resource, afterPriming); 288var dependencies = await executable.Resource.GetResourceDependenciesAsync( 292Assert.Collection(dependencies, dependency => Assert.Same(active.Resource, dependency)); 305var dependencies = await container.Resource.GetResourceDependenciesAsync( 325var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 327Assert.Contains(host.Resource, dependencies); 328Assert.Contains(port.Resource, dependencies); 329Assert.Contains(password.Resource, dependencies); 345var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 347Assert.Contains(b.Resource, dependencies); 348Assert.Contains(c.Resource, dependencies); 364var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 366Assert.Contains(b.Resource, dependencies); 367Assert.Contains(c.Resource, dependencies); 385var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 387Assert.Contains(b.Resource, dependencies); 388Assert.Contains(c.Resource, dependencies); 405var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 407Assert.Contains(b.Resource, dependencies); 408Assert.Contains(c.Resource, dependencies); 409Assert.Contains(d.Resource, dependencies); 426var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 428Assert.Contains(b.Resource, dependencies); 429Assert.Contains(c.Resource, dependencies); 430Assert.Contains(d.Resource, dependencies); 431Assert.Contains(e.Resource, dependencies); 449var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 450Assert.Contains(b.Resource, dependencies); 451Assert.Contains(c.Resource, dependencies); 452Assert.Contains(d.Resource, dependencies); 470var dependencies = await frontend.Resource.GetResourceDependenciesAsync(executionContext); 472Assert.Contains(backend.Resource, dependencies); 488var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 490Assert.Contains(db.Resource, dependencies); 491Assert.Contains(postgres.Resource, dependencies); // Parent included due to transitive dependency 505var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 507Assert.DoesNotContain(unrelatedResource.Resource, dependencies); 518var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 520Assert.DoesNotContain(container.Resource, dependencies); 534var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 536Assert.DoesNotContain(dependentContainer.Resource, dependencies); 549var dependencies = await db1.Resource.GetResourceDependenciesAsync(executionContext); 551Assert.DoesNotContain(db2.Resource, dependencies); 552Assert.Contains(postgres.Resource, dependencies); // Parent IS included 567var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 569Assert.Contains(b.Resource, dependencies); 570Assert.DoesNotContain(c.Resource, dependencies); 571Assert.DoesNotContain(d.Resource, dependencies); 582var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 598var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 600Assert.Contains(redis.Resource, dependencies); 618var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 620Assert.Contains(b.Resource, dependencies); 621Assert.DoesNotContain(c.Resource, dependencies); 638var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.Recursive); 640Assert.Contains(b.Resource, dependencies); 641Assert.Contains(c.Resource, dependencies); 664var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 667Assert.Contains(b.Resource, dependencies); 682var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 686Assert.Contains(db.Resource, dependencies); 687Assert.Contains(postgres.Resource, dependencies); 707var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext, ResourceDependencyDiscoveryMode.DirectOnly); 710Assert.Contains(b.Resource, dependencies); 712Assert.DoesNotContain(c.Resource, dependencies); 731var dependencies = await a.Resource.GetResourceDependenciesAsync(executionContext); 733Assert.Contains(b.Resource, dependencies); 734Assert.Contains(c.Resource, dependencies); 754[a.Resource, b.Resource], executionContext); 756Assert.Contains(x.Resource, dependencies); 757Assert.Contains(y.Resource, dependencies); 774[a.Resource, b.Resource], executionContext); 776Assert.Contains(x.Resource, dependencies); 793[a.Resource, b.Resource], executionContext); 796Assert.DoesNotContain(a.Resource, dependencies); 797Assert.DoesNotContain(b.Resource, dependencies); 816[a.Resource, b.Resource], executionContext); 819Assert.Contains(c.Resource, dependencies); 821Assert.DoesNotContain(a.Resource, dependencies); 822Assert.DoesNotContain(b.Resource, dependencies); 846[a.Resource, b.Resource, c.Resource], executionContext); 872[a.Resource, c.Resource], executionContext); 874Assert.Contains(b.Resource, dependencies); 875Assert.Contains(d.Resource, dependencies); 876Assert.DoesNotContain(a.Resource, dependencies); 877Assert.DoesNotContain(c.Resource, dependencies); 903[a.Resource, d.Resource], executionContext, new ResourceDependencyDiscoveryOptions 909Assert.Contains(b.Resource, dependencies); 910Assert.Contains(e.Resource, dependencies); 911Assert.DoesNotContain(c.Resource, dependencies); 912Assert.DoesNotContain(f.Resource, dependencies); 938[a.Resource, b.Resource, c.Resource], executionContext); 941Assert.Contains(d.Resource, dependencies); 942Assert.DoesNotContain(a.Resource, dependencies); 943Assert.DoesNotContain(b.Resource, dependencies); 944Assert.DoesNotContain(c.Resource, dependencies); 961[parent.Resource, child.Resource], executionContext); 964Assert.DoesNotContain(parent.Resource, dependencies); 965Assert.DoesNotContain(child.Resource, dependencies); 989[a.Resource, b.Resource, c.Resource], executionContext); 991Assert.Contains(x.Resource, dependencies); 992Assert.Contains(y.Resource, dependencies); 993Assert.Contains(z.Resource, dependencies); 1013var singleDeps = await a.Resource.GetResourceDependenciesAsync(executionContext); 1014var multiDeps = await ResourceExtensions.GetDependenciesAsync([a.Resource], executionContext); 1034enableTls.Resource, 1043var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1045Assert.Contains(enableTls.Resource, dependencies); 1046Assert.Contains(tlsSuffix.Resource, dependencies); 1061flag.Resource, 1070var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1072Assert.Contains(flag.Resource, dependencies); 1073Assert.Contains(primary.Resource, dependencies); 1074Assert.Contains(secondary.Resource, dependencies); 1089innerFlag.Resource, 1095outerFlag.Resource, 1104var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1106Assert.Contains(outerFlag.Resource, dependencies); 1107Assert.Contains(innerFlag.Resource, dependencies); 1108Assert.Contains(paramA.Resource, dependencies); 1109Assert.Contains(paramB.Resource, dependencies); 1110Assert.Contains(paramC.Resource, dependencies); 1122flag.Resource, 1132var dependencies = await container.Resource.GetResourceDependenciesAsync(executionContext); 1135Assert.Contains(flag.Resource, dependencies); 1136Assert.Contains(param.Resource, dependencies);
ResourceExtensionsTests.cs (56)
43Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 44Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 55Assert.False(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 56Assert.False(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 67Assert.True(parent.Resource.HasAnnotationOfType<DummyAnnotation>()); 68Assert.True(parent.Resource.TryGetAnnotationsOfType<DummyAnnotation>(out var annotations)); 79Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 80Assert.True(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 90Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 91Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 102Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 103Assert.False(parent.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 114var child = builder.AddResource(new ChildResource("child", parent.Resource)) 117Assert.False(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 118Assert.False(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 129var child = builder.AddResource(new ChildResource("child", parent.Resource)); 131Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 132Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 143var child = builder.AddResource(new ChildResource("child", parent.Resource)) 146Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 147Assert.True(child.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 158var child = builder.AddResource(new ChildResource("child", parent: parent.Resource)) 161var grandchild = builder.AddResource(new ChildResource("grandchild", parent: child.Resource)) 164Assert.True(parent.Resource.HasAnnotationIncludingAncestorsOfType<DummyAnnotation>()); 165Assert.True(grandchild.Resource.TryGetAnnotationsIncludingAncestorsOfType<DummyAnnotation>(out var annotations)); 178.WithAnnotation(new DeploymentTargetAnnotation(deploymentTarget.Resource) 180ComputeEnvironment = annotationEnvironment.Resource 183var annotation = resource.Resource.GetDeploymentTargetAnnotation(requestedEnvironment.Resource); 194Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 204Assert.True(container.Resource.TryGetContainerImageName(out var imageName)); 223var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 258var env = await container.Resource.GetEnvironmentVariableValuesAsync().DefaultTimeout(); 293var env = await container.Resource.GetEnvironmentVariableValuesAsync(DistributedApplicationOperation.Publish).DefaultTimeout(); 327.Resource.GetArgumentValuesAsync().DefaultTimeout(); 339.Resource.GetArgumentValuesAsync().DefaultTimeout(); 357var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 366Resource = containerResource.Resource, 404var annotations = containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>().ToList(); 414Resource = containerResource.Resource, 434Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 438Assert.Single(projectResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 442Assert.Single(executableResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 459var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 469Resource = containerResource.Resource, 486var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 498var annotation = Assert.Single(containerResource.Resource.Annotations.OfType<ContainerImagePushOptionsCallbackAnnotation>()); 510Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 518var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>()); 522Assert.Collection(resource.Resource.Annotations.OfType<ContainerFilesSourceAnnotation>(), 540var annotation = Assert.Single(resource.Resource.Annotations.OfType<ContainerFileSystemCallbackAnnotation>()); 616var result = resource.Resource.TryGetInstances(out var instances); 632var result = resource.Resource.TryGetInstances(out var instances); 653var result = resource.Resource.GetResolvedResourceNames(); 668var result = resource.Resource.GetResolvedResourceNames(); 682var endpoint = Assert.Single(resource.Resource.ResolveEndpoints());
ResourceFailureLoggingTests.cs (3)
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); 76var category = $"{builder.ApplicationBuilder.Environment.ApplicationName}.Resources.{builder.Resource.Name}";
ResourceNotificationTests.cs (3)
37var annotation = custom.Resource.Annotations.OfType<ResourceSnapshotAnnotation>().SingleOrDefault(); 1414await notificationService.PublishUpdateAsync(resourceBuilder.Resource, snapshot => snapshot with { State = state, ExitCode = exitCode }).DefaultTimeout(); 1415Assert.True(notificationService.TryGetCurrentState(resourceBuilder.Resource.Name, out var resourceEvent));
ResourceWithProbeTests.cs (3)
19var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 33var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray(); 53var annotations = resource.Resource.Annotations.OfType<ProbeAnnotation>().ToArray();
SlimTestProgramTests.cs (5)
36using var clientA = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 39using var clientB = app.CreateHttpClientWithResilience(testProgram.ServiceBBuilder.Resource.Name, "http"); 42using var clientC = app.CreateHttpClientWithResilience(testProgram.ServiceCBuilder.Resource.Name, "http"); 59var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 78var endpoint = projectBuilders.Resource.Annotations.OfType<EndpointAnnotation>().Single();
TestProgramFixture.cs (3)
68using var clientA = App.CreateHttpClientWithResilience(TestProgram.ServiceABuilder.Resource.Name, "http"); 72using var clientB = App.CreateHttpClientWithResilience(TestProgram.ServiceBBuilder.Resource.Name, "http"); 76using var clientC = App.CreateHttpClientWithResilience(TestProgram.ServiceCBuilder.Resource.Name, "http");
Utils\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)
142var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 155var endpoint = Assert.Single(container.Resource.Annotations.OfType<EndpointAnnotation>()); 172var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 211var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 246var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 284Assert.False(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out var annotations)); 301Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 318Assert.True(projectA.Resource.TryGetAnnotationsOfType<EndpointAnnotation>(out _)); 329var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 345var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>() 450var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 478var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 505var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 532var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 559var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 586var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 613var manifest = await ManifestUtils.GetManifest(container.Resource).DefaultTimeout(); 644var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 712var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout(); 737var manifests = await ManifestUtils.GetManifests([container0.Resource, container1.Resource]).DefaultTimeout(); 782var endpoint = projectA.Resource.Annotations.OfType<EndpointAnnotation>() 813var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 818EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 847var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 852EndpointAnnotation endpoint = Assert.Single(projectA.Resource.Annotations.OfType<EndpointAnnotation>()); 867var manifest = await ManifestUtils.GetManifest(project.Resource).DefaultTimeout();
WithEnvironmentTests.cs (37)
33container.Resource, 55var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 59Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 64Assert.Same(projectA.Resource, r.Resource); 76var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 92var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(project.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 108var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 125var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 129Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 134Assert.Same(parameter.Resource, r.Resource); 148var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, 165projectA.Resource, 191var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 215var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 242.WithEnvironment("HOST", $"{test.Resource};name=1"); 244var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 245var manifestConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 259Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 264Assert.Same(container.Resource, r.Resource); 269Assert.Same(test.Resource, r.Resource); 290Assert.True(containerB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 295Assert.Same(container.Resource, r.Resource); 323var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(containerB.Resource).DefaultTimeout(); 347var runConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Run).DefaultTimeout(); 353var publishConfig = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(targetBuilder.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 358Assert.True(targetBuilder.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 363Assert.Same(sourceBuilder.Resource, r.Resource); 378projectA.Resource, 386projectA.Resource, 399var testValue = new TestValueWithReferences("test-value", resourceA.Resource); 405Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 408Assert.Same(resourceA.Resource, relationship.Resource); 412projectA.Resource, 459projectA.Resource, 467projectA.Resource, 474Assert.True(projectA.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 477Assert.Same(container.Resource, relationship.Resource);
WithHttpCommandTests.cs (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(); 76Assert.Single(container.Resource.Annotations.OfType<ResourceIconAnnotation>()); 77Assert.Single(parameter.Resource.Annotations.OfType<ResourceIconAnnotation>()); 78Assert.Single(project.Resource.Annotations.OfType<ResourceIconAnnotation>()); 91var iconAnnotations = container.Resource.Annotations.OfType<ResourceIconAnnotation>().ToList(); 99Assert.True(container.Resource.TryGetLastAnnotation<ResourceIconAnnotation>(out var lastAnnotation));
WithOtlpExporterTests.cs (19)
46container.Resource, 72container.Resource, 91dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: endpointName, uriScheme: "http", port: 18889, isProxied: true, transport: transport)); 107var annotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == endpointName); 111container.Resource, 128dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 129dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpHttpEndpointName, uriScheme: "http", port: 18890, isProxied: true)); 137var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 140var httpAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpHttpEndpointName); 144container.Resource, 167container.Resource, 183dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 192var grpcAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 196executable.Resource, 213dashboard.Resource.Annotations.Add(new EndpointAnnotation(ProtocolType.Tcp, name: KnownEndpointNames.OtlpGrpcEndpointName, uriScheme: "http", port: 18889, isProxied: true, transport: "http2")); 227var collectorEndpoint = collector.Resource.GetEndpoint("otlp-grpc"); 249var dashboardAnnotation = dashboard.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == KnownEndpointNames.OtlpGrpcEndpointName); 252var collectorAnnotation = collector.Resource.Annotations.OfType<EndpointAnnotation>().Single(e => e.Name == "otlp-grpc"); 260container.Resource,
WithProcessCommandTests.cs (47)
71var command = resourceBuilder.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 111var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 124var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-command").DefaultTimeout(); 190var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "options-callback-command", arguments).DefaultTimeout(); 251var command = resource.Resource.Annotations.OfType<ResourceCommandAnnotation>().Single(); 269var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-command", arguments).DefaultTimeout(); 276Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 313var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-accepted-exit-code").DefaultTimeout(); 334var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 384var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "echo-argument", arguments).DefaultTimeout(); 390Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 444ResourceName = resource.Resource.Name, 488var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "async-factory").DefaultTimeout(); 522var firstResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 523var secondResult = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "repeat").DefaultTimeout(); 566var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "many-lines").DefaultTimeout(); 599var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "display-immediately").DefaultTimeout(); 623var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "no-output").DefaultTimeout(); 645var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail-no-output").DefaultTimeout(); 673var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "accepted-exit-code").DefaultTimeout(); 711var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "failure-display-immediately").DefaultTimeout(); 735var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "log-output").DefaultTimeout(); 742var logs = await ConsoleLoggingTestHelpers.WatchForLogsAsync(loggerService, 4, resource.Resource).DefaultTimeout(); 791var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "custom-result").DefaultTimeout(); 800Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 833var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "ordered-output").DefaultTimeout(); 862var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "fail").DefaultTimeout(); 898var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "argument-fidelity").DefaultTimeout(); 922var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "stdin").DefaultTimeout(); 945var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "path-executable").DefaultTimeout(); 969var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "working-directory").DefaultTimeout(); 997var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment").DefaultTimeout(); 1023var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "invalid-environment-name").DefaultTimeout(); 1049var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-environment-value").DefaultTimeout(); 1087var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-options").DefaultTimeout(); 1125var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-accepted-exit-code").DefaultTimeout(); 1150var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "export-default-options").DefaultTimeout(); 1213var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, $"invalid-export-{i}").DefaultTimeout(); 1260var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "default-success-exit-codes").DefaultTimeout(); 1284var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "environment-inheritance").DefaultTimeout(); 1307var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "missing").DefaultTimeout(); 1331var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "process-task-failure").DefaultTimeout(); 1354var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-process-spec").DefaultTimeout(); 1380var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "factory-exception").DefaultTimeout(); 1404var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "null-argument").DefaultTimeout(); 1442var result = await app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "validation-failure").DefaultTimeout(); 1472var commandTask = app.ResourceCommands.ExecuteCommandAsync(resource.Resource, "wait", cts.Token);
WithReferenceTests.cs (52)
29var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 34Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 37Assert.Same(projectA.Resource, r.Resource); 52var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 72var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 102var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 151var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 179var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 205var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 213Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 216Assert.Same(projectA.Resource, r.Resource); 234var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 242Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 245Assert.Same(projectA.Resource, r.Resource); 264var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 286var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 305await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 322var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 341await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); 361var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 377var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 393var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Publish).DefaultTimeout(); 412var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 442var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 448Assert.True(projectB.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var relationships)); 451Assert.Same(resource.Resource, r.Resource); 452Assert.True(resource.Resource.TryGetAnnotationsOfType<ResourceRelationshipAnnotation>(out var csRelationships)); 457Assert.Same(endpoint.Resource, r.Resource); 462Assert.Same(key.Resource, r.Resource); 467Assert.Same(endpoint.Resource, r.Resource); 472Assert.Same(key.Resource, r.Resource); 494var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 516var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 540var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 557var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectA.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 580var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 605var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 630var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 657var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(executable.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 682var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 709var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(container.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 738var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 761var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 783var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 831var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 861var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 891var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 908var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 921var endpoint = container.Resource.Annotations.OfType<EndpointAnnotation>().Single(); 954var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 974var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout(); 994var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(projectB.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance).DefaultTimeout();
WithTerminalTests.cs (20)
44var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 78var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 146Assert.Same(resource.Resource, single.Parent); 160var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 175var waitAnnotations = resource.Resource.Annotations.OfType<WaitAnnotation>() 201var annotation = container.Resource.Annotations.OfType<TerminalAnnotation>().SingleOrDefault(); 299.Select(resource => resource.Resource.Annotations.OfType<TerminalAnnotation>().Single()) 376var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single(); 930Assert.False(resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().IsInitialized); 1005var annotation = resource.Resource.Annotations.OfType<TerminalAnnotation>().FirstOrDefault(); 1064var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1083var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1113var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1134var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1163firstResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1169secondResource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts).Layout.ReplicaId; 1181resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts); 1211var hosts = resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts; 1251foreach (var host in resource.Resource.Annotations.OfType<TerminalAnnotation>().Single().TerminalHosts) 1308Assert.True(resource.Resource.HasAnnotationOfType<ForceProcessExecutionAnnotation>());
WithUrlsTests.cs (30)
27var urlsCallback = projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>() 40Assert.Empty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 44Assert.NotEmpty(projectA.Resource.Annotations.OfType<ResourceUrlsCallbackAnnotation>()); 152var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 176var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 191projectA.WithUrl($"{projectA.Resource.GetEndpoint("https")}/test", "Example") 202var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 230var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 263var urls = projectB.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 267Assert.StartsWith($"http://{projectB.Resource.Name.ToLowerInvariant()}{expectedHostSuffix}", u.Url); 306var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 329var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 360var urls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 379var httpEndpoint = servicea.Resource.GetEndpoint("http"); 388servicea.Resource.Name, 402var httpEndpoint = servicea.Resource.GetEndpoint("http"); 413servicea.Resource.Name, 446servicea.Resource.Name, 480if (notification.Resource == servicea.Resource && notification.Snapshot.Urls.Length > 0) 496await rns.WaitForResourceAsync(servicea.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 596if (notification.Resource == custom.Resource && notification.Snapshot.Urls.Length > 0) 612await rns.WaitForResourceAsync(custom.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 765var allUrls = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>(); 826var endpointUrl = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test"); 865var launchProfileUrls = project.Resource.Annotations.OfType<ResourceUrlAnnotation>().Where(u => u.Endpoint?.EndpointName == "http"); 906var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 936var endpointUrl = projectA.Resource.Annotations.OfType<ResourceUrlAnnotation>().FirstOrDefault(u => u.Endpoint?.EndpointName == "test" && u.Url.EndsWith("/sub-path")); 962Endpoint = resourceA.Resource.GetEndpoint("api") 973resourceB.Resource.Name, 975&& e.Snapshot.Urls.Length == resourceB.Resource.GetEndpoints().ToArray().Length + 1
WithVolumeTests.cs (18)
27container.Resource, 33var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 50var expectedProjectPath = VolumeMountPathResolver.GetLocalPath(store, project.Resource, "data"); 51var expectedExecutablePath = VolumeMountPathResolver.GetLocalPath(store, executable.Resource, "data"); 57project.Resource, 60executable.Resource, 80project.Resource, 84executable.Resource, 127var mount = Assert.Single(container.Resource.Annotations.OfType<ContainerMountAnnotation>()); 142executable.Resource, 186executable.Resource, 205var sessionMount = Assert.Single(sessionContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 206var persistentMount = Assert.Single(persistentContainer.Resource.Annotations.OfType<ContainerMountAnnotation>()); 223var expectedPath = VolumeMountPathResolver.GetLocalPath(store, custom.Resource, "data"); 226custom.Resource, 259project.Resource, 280project.Resource, 298project.Resource,
Aspire.Hosting.TestUtilities (1)
Utils\LoggerNotificationExtensions.cs (1)
36await rns.WaitForResourceHealthyAsync(resource.Resource.Name, cancellationToken);
Aspire.Hosting.Valkey (1)
ValkeyBuilderExtensions.cs (1)
124var passwordParameter = password?.Resource ?? ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder, $"{name}-password", special: false);
Aspire.Hosting.Valkey.Tests (22)
AddValkeyTests.cs (9)
127var manifest = await ManifestUtils.GetManifest(valkey.Resource); 165var manifest = await ManifestUtils.GetManifest(valkey.Resource); 210var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 235var volumeAnnotation = valkey.Resource.Annotations.OfType<ContainerMountAnnotation>().Single(); 250Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 274Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 299Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsCallbacks)); 316Assert.True(valkey.Resource.TryGetAnnotationsOfType<CommandLineArgsCallbackAnnotation>(out var argsAnnotations)); 345var args = await ArgumentEvaluator.GetArgumentListAsync(builder.Resource);
ValkeyFunctionalTests.cs (13)
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);
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)
97YarpEnvConfigGenerator.PopulateEnvVariables(ctx.EnvironmentVariables, yarpBuilder.Resource.Routes, yarpBuilder.Resource.Clusters); 144builder.Resource.HostHttpsPort = port; 243if (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)
27var cs = builder.AddConnectionString("cs", ReferenceExpression.Create($"sql={db.Resource.Parent.PrimaryEndpoint};rows={insertionrows}"));
Pipelines.AppHost (1)
AppHost.cs (1)
243var resource = withBindMount.Resource;
Stress.AppHost (9)
AppHost.cs (2)
44IResource parent = rb.Resource; 50parent = nestedRb.Resource;
CommandResources.cs (7)
37var iconCommands = builder.AddCommandGroup("icon-commands", serviceBuilder.Resource); 117var argumentCommands = builder.AddCommandGroup("argument-commands", serviceBuilder.Resource); 499var processCommands = builder.AddCommandGroup("process-commands", serviceBuilder.Resource); 920var largeTelemetryCommands = builder.AddHttpCommandGroup("large-telemetry-commands", serviceBuilder.Resource); 1092var interactionCommands = builder.AddCommandGroup("interaction-commands", telemetryBuilder.Resource); 1095var lifecycleCommands = builder.AddCommandGroup("lifecycle-commands", telemetryBuilder.Resource); 1124var resultCommands = builder.AddCommandGroup("result-commands", telemetryBuilder.Resource);
Testing.Tests (17)
WaitFailures.cs (17)
34await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(pwsh.Resource.Name, cancellationToken: cts.Token); 68await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token); 72await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.TerminalStates, cancellationToken: cts.Token); 87await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "StateThatIsNeverUsed", cts.Token); 102await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, ["States", "That", "Are", "Never", "Used"], cts.Token); 117await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => false, cts.Token); 136await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 156await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthReports.All(x => x.Status.HasValue), cts.Token); 159await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthStatus == HealthStatus.Healthy, cts.Token); 180await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 206await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token); 228await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token); 232await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cts.Token); 252await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token); 256await app.ResourceNotifications.WaitForDependenciesAsync(consumer.Resource, cancellationToken: cts.Token);