1059 writes to
aspire (84)
Agents\AspireSkills\AspireSkillsRemoteConfiguration.cs (4)
210selectedSource["ref"] = skillSource.Ref; 217targetMarketplaces[marketplaceName] = new JsonObject 230targetPlugins[pluginName] = true; 268parent[key] = value;
Agents\ClaudeCode\ClaudeCodeAgentClient.cs (2)
159settings["hooks"] = hooks; 174hooks["PostToolUse"] = postToolUse;
Agents\McpConfigFileHelper.cs (5)
84config["$schema"] = schema; 90config[configuration.ServersPropertyName] = servers; 97servers["aspire"] = serverConfiguration.DeepClone(); 128aspire["args"] = new JsonArray("agent", "mcp"); 134aspire["command"] = new JsonArray("aspire", "agent", "mcp");
Agents\OpenCode\OpenCodeAgentClient.cs (1)
188config["$schema"] = s_mcp.Schema;
Commands\InitCommand.cs (5)
603settings["appHost"] = appHost; 607appHost["path"] = appHostPath; 612appHost["language"] = language; 622settings["channel"] = channel; 657settings["profiles"] = new JsonObject
Commands\ResourceCommand.cs (5)
337arguments[argument.Name] = parseResult.GetValue(boolOption).ToString().ToLowerInvariant(); 342arguments[argument.Name] = value?.ToString(CultureInfo.InvariantCulture); 346arguments[argument.Name] = parseResult.GetValue(stringOption); 355arguments[unmatchedToken] = null; 376arguments[token] = null;
Commands\SecretListCommand.cs (3)
85obj[key] = value; 137obj[key] = value; 140root[environment.EnvironmentName] = obj;
Commands\TemplateManagementCommand.cs (2)
52source[field] = value; 118result[name] = source?.DeepClone();
Configuration\ConfigSourceService.cs (2)
261configuration[GetKey(configuration, ConfigSource.SectionName)] = new JsonObject { ["optOut"] = true }; 374configuration[GetKey(configuration, ConfigSource.SectionName)] = JsonSerializer.SerializeToNode(binding, JsonSourceGenerationContext.Default.ConfigSource);
Mcp\Tools\ExecuteResourceCommandTool.cs (1)
186arguments[property.Name] = property.Value.ValueKind switch
Migrations\TypeScriptAppHostMigration.cs (3)
217appHost["path"] = string.Concat( 269root["include"] = rewritten; 304scripts[script.Key] = (JsonNode?)JsonValue.Create(rewritten);
Projects\FallbackProjectParser.cs (11)
195packageObj["Identity"] = JsonValue.Create(pkg.Identity); 196packageObj["Version"] = JsonValue.Create(pkg.Version); 199itemsObject["PackageReference"] = packageRefArray; 206projectObj["Identity"] = JsonValue.Create(proj.Identity); 207projectObj["FullPath"] = JsonValue.Create(proj.FullPath); 210itemsObject["ProjectReference"] = projectRefArray; 212rootObject["Items"] = itemsObject; 216propertiesObject["AspireHostingSDKVersion"] = JsonValue.Create(aspireHostingSdkVersion); 217propertiesObject["_UsingAspireAppHostSdk"] = JsonValue.Create(usesAppHostSdk ? "true" : "false"); 218rootObject["Properties"] = propertiesObject; 221rootObject["Fallback"] = JsonValue.Create(true);
Projects\RepositoryToolUpdater.cs (1)
201currentReference.Properties[currentReference.Key] = version;
Scaffolding\PackageJsonMerger.cs (12)
128existing[key] = sourceValue.DeepClone(); 162existingScripts[name] ??= command; 167existingScripts[$"{AspirePrefix}{name}"] = command; 172existingScripts[name] = command; 209scripts[unprefixed] = $"{runCommand} {prefixed}"; 248existingDeps[packageName] = desiredVersion; 256existingDeps[packageName] = desiredVersion; 279existingDeps[packageName] = desiredVersion; 311existingEngines[key] = value.DeepClone(); 315existingEngines[key] = value.DeepClone(); 338target[key] = sourceValue.DeepClone(); 363parent[propertyName] = obj;
Scaffolding\ScaffoldingService.cs (3)
393parent[propertyName] = obj; 429scripts[scriptName] = delegateScript; 680existing[key] = scaffoldValue?.DeepClone();
src\Shared\ConsoleLogs\SharedAIHelpers.cs (5)
226attributesObj[attr.Key!] = context.AddValue(attrValue, id => $@"Duplicate of attribute ""{id.Key}"" for span {OtlpHelpers.ToShortenedId(id.SpanId)}", (SpanId: spanId, attr.Key)); 274spanObj["dashboardUrl"] = DashboardUrls.CombineUrl(dashboardBaseUrl, DashboardUrls.TraceDetailUrl(traceId, spanId: spanId)); 412traceData["dashboardUrl"] = DashboardUrls.CombineUrl(dashboardBaseUrl, DashboardUrls.TraceDetailUrl(traceId)); 726attributesObject[attr.Key!] = context.AddValue(attrValue, id => $@"Duplicate of attribute ""{id.Key}"" for log entry {id.LogId}", (LogId: logId, attr.Key)); 745log["dashboardUrl"] = DashboardUrls.CombineUrl(dashboardBaseUrl, DashboardUrls.StructuredLogsUrl(logEntryId: logId));
src\Shared\Json\JsonFlattener.cs (4)
41current[key] = newObject; 50current[keys[^1]] = kvp.Value?.DeepClone(); 81result[arrayKey] = array[i]?.DeepClone(); 87result[key] = kvp.Value?.DeepClone();
src\Shared\UserSecrets\SecretsStore.cs (1)
105obj[key] = value?.DeepClone();
Templating\TemplateSourceStore.cs (2)
49sources[name] = source.DeepClone(); 96settings[AspireConfigFile.TemplateSourcesSectionName] = sources;
Utils\ConfigurationHelper.cs (2)
776parent[key] = child; 796property.Parent[property.Key] = value;
Utils\EnvironmentChecker\AspireVersionCheck.cs (8)
429metadata["currentVersion"] = currentVersion; 434metadata["latestVersion"] = latestVersion; 439metadata["updateCommand"] = updateCommand; 444metadata["updateCheckError"] = updateCheckError; 449metadata["identityChannel"] = identityChannel; 454metadata["latestVersionChannel"] = latestVersionChannel; 469metadata["version"] = version; 474metadata["pinnedChannel"] = pinnedChannel;
Utils\EnvironmentChecker\GoAppHostToolingCheck.cs (1)
294metadata["version"] = version.ToString();
Utils\EnvironmentChecker\OperatingSystemCheck.cs (1)
153metadata["description"] = details.Description;
Aspire.Cli.EndToEnd.Tests (22)
AgentCommandTests.cs (1)
453expectedClaudeGlobalSettings["hooks"] = JsonNode.Parse($$"""
CustomTemplateTests.cs (2)
46greeting["isRequired"] = false; 47greeting["defaultValue"] = "Hello from template defaults";
Helpers\CliE2ETestHelpers.cs (2)
1167config["channel"] = "local"; 1168config["sdk"] = new JsonObject
Helpers\ConfigSourceTestContext.cs (3)
312original["skillSources"] = actual["skillSources"]!.DeepClone(); 313original["configSource"] = actual["configSource"]!.DeepClone(); 322original["skillSources"] = actual["skillSources"]!.DeepClone();
Helpers\IntegrationHostLifetimeTestHelper.cs (4)
103config["features"] ??= new JsonObject(); 105config["packages"] ??= new JsonObject(); 107packages["@e2e/lifetime"] = new JsonObject 120manifest["scripts"] = new JsonObject { ["postinstall"] = "node install-lifetime.mjs" };
Helpers\TypeScriptAppHostToolchainTestHelpers.cs (1)
40packageJson["packageManager"] = GetPackageManager(toolchain);
ProjectReferenceTests.cs (4)
80packages["MyIntegration"] = "./MyIntegration/MyIntegration.csproj"; 81config["packages"] = packages; 317packages["MyIntegration"] = "./MyIntegration/MyIntegration.csproj"; 318config["packages"] = packages;
TypeScriptEmptyAppHostTemplateTests.cs (1)
179config["packages"] = new JsonObject
TypeScriptLegacyAppHostTests.cs (1)
137appHost["path"] = "apphost.ts";
TypeScriptMigrateAppHostTests.cs (1)
125appHost["path"] = "apphost.ts";
TypeScriptPolyglotTests.cs (2)
354config["features"] = new JsonObject 455scripts["aspire:start"] = "custom-apphost-start";
Aspire.Cli.Tests (44)
Agents\OpenCodeAgentClientTests.cs (1)
218original["skills"] = JsonNode.Parse("""{"paths":["./team-skills"],"urls":[]}""");
Agents\SkillSourceTests.cs (2)
205configurations[client.Id] = AgentConfiguration.ReadObject(client.GetIntegrationConfigPath(scope, context.Project)); 415configurations[client.Id] = AgentConfiguration.ReadObject(
Commands\NewCommandLocalTemplateTests.NuGetValues.cs (4)
113metadata["createNuGetConfig"] = true; 310template["sources"] = JsonNode.Parse(""" 394host["symbolInfo"] = new JsonObject { [target] = source }; 484template["sources"] = JsonNode.Parse("""
Commands\NewCommandLocalTemplateTests.PromptDefaults.cs (10)
137symbols["normalizedName"] = JsonNode.Parse("""{"type":"generated","generator":"random","parameters":{"low":1,"high":10}}"""); 140symbols["normalizedName"] = JsonNode.Parse("""{"type":"bind","binding":"env:HOME"}"""); 177symbols["nestedName"] = JsonNode.Parse( 182symbols["nestedName"] = JsonNode.Parse( 187symbols["nestedName"] = JsonNode.Parse( 195symbols["nestedName"] = JsonNode.Parse( 200symbols["name"] = JsonNode.Parse( 204symbols["name"] = JsonNode.Parse( 208symbols["name"] = JsonNode.Parse( 262symbols["nestedName"] = JsonNode.Parse(
Configuration\ConfigSourceServiceTests.cs (7)
1114configuration["skillSources"] = JsonNode.Parse(""" 1117configuration["profiles"] = JsonNode.Parse(""" 1120configuration["custom:setting"] = "root-flat"; 1151configuration["skillSources"] = JsonNode.Parse("""{"team":{"repository":"example/local","custom:setting":"local"}}"""); 1173configuration["SKILLSOURCES"] = JsonNode.Parse(""" 1176configuration["skillSources"] = JsonNode.Parse(""" 1287tracking["comparedAppliedVersions"] = new JsonArray(s_appliedSource.AppliedVersion);
DotNet\DotNetRestoreConfigurationTests.cs (5)
36values["MSBuildProjectFullPath"] = identity; 37values["MSBuildToolsPath"] = toolsPath; 38values["NuGetRestoreTargets"] = Path.Combine(toolsPath, "NuGet.targets"); 66values["MSBuildToolsPath"] = workspace.WorkspaceRoot.FullName; 67values[propertyName] = Path.Combine(workspace.WorkspaceRoot.FullName, "custom");
Projects\ProjectUpdaterTests.cs (2)
3181itemsAndProperties["Items"] = items; 3269itemsAndProperties["Items"] = items;
Telemetry\ReportedLogExportTests.cs (9)
74envelope["time"] = "timestamp"; 75envelope["iKey"] = "instrumentation-key"; 76tags["ai.cloud.roleInstance"] = "instance-id"; 77tags["ai.application.ver"] = "cli-version"; 78tags["ai.internal.sdkVersion"] = "sdk-version"; 81tags["ai.operation.id"] = "trace-id"; 85tags["ai.operation.parentId"] = "span-id"; 97baseData["id"] = "span-id"; 98baseData["duration"] = "duration";
TestServices\TestConfigSourceServices.cs (1)
25configuration["configSource"] = JsonSerializer.SerializeToNode(source, JsonSourceGenerationContext.Default.ConfigSource);
TestServices\TestDotNetCliRunner.cs (3)
173values["MSBuildProjectFullPath"] = projectFile.Name.Equals("apphost.cs", StringComparison.OrdinalIgnoreCase) 176values["MSBuildToolsPath"] = AppContext.BaseDirectory; 177values["NuGetRestoreTargets"] = Path.Combine(AppContext.BaseDirectory, "NuGet.targets");
Aspire.Dashboard (3)
Model\GenAI\GenAIItemPartViewModel.cs (1)
144jsonObject[kvp.Key] = JsonNode.Parse(kvp.Value.GetRawText());
Model\TelemetryExportService.cs (1)
810jsonObject[field.Key] = ConvertPropertyValueToJsonNode(field.Value);
Otlp\Model\OtlpHelpers.cs (1)
227o[item.Key] = ConvertAnyValue(item.Value);
Aspire.Dashboard.Tests (5)
Model\DashboardDataSourceTests.cs (5)
205metadata["ApplicationName"] = applicationName; 760metadata["SchemaVersion"] = DashboardRunStore.SchemaVersion - 1; 801metadata["SchemaVersion"] = DashboardRunStore.SchemaVersion + 1; 802metadata["FutureMetadata"] = new JsonObject 845metadata["SchemaVersion"] = DashboardRunStore.SchemaVersion - 1;
Aspire.Hosting (25)
Backchannel\AuxiliaryBackchannelRpcTarget.cs (1)
1439jsonObject[property.Key] = property.Value;
Dcp\JsonPatch.cs (3)
115result["value"] = value?.DeepClone(); 242target[propertyName] = value?.DeepClone(); 255target[propertyName] = value?.DeepClone();
Devcontainers\DevcontainerSettingsWriter.cs (3)
177portAttributes["label"] = label; 178portAttributes["protocol"] = protocol; 179portAttributes["onAutoForward"] = openBrowser ? "openBrowser" : "silent";
Pipelines\DeploymentStateSection.cs (1)
56Data[RootValueKey] = JsonValue.Create(value);
Pipelines\Internal\DeploymentStateManagerBase.cs (2)
340current[segment] = nextObj; 351current[segments[^1]] = value;
Pipelines\Internal\FileDeploymentStateManager.cs (4)
445target[name] = sourceValue?.DeepClone(); 573result[propertyName] = updatedProperty.Value; 672current[segment] = nextObject; 684current[segments[^1]] = value;
Pipelines\Internal\JsonFlattener.cs (4)
47current[key] = newObject; 56current[keys[^1]] = kvp.Value?.DeepClone(); 87result[arrayKey] = array[i]?.DeepClone(); 93result[key] = kvp.Value?.DeepClone();
Publishing\ContainerImageArchiveRewriter.cs (2)
447annotations[OciReferenceNameAnnotation] = rewrittenReferenceName; 453annotations[ContainerdImageNameAnnotation] = rewrittenContainerdImageName;
src\Shared\Json\JsonFlattener.cs (4)
41current[key] = newObject; 50current[keys[^1]] = kvp.Value?.DeepClone(); 81result[arrayKey] = array[i]?.DeepClone(); 87result[key] = kvp.Value?.DeepClone();
src\Shared\UserSecrets\SecretsStore.cs (1)
105obj[key] = value?.DeepClone();
Aspire.Hosting.Azure (94)
AzureDeploymentOperationDetails.cs (12)
85json["operationId"] = OperationId; 90json["provisioningOperation"] = ProvisioningOperation; 95json["provisioningState"] = ProvisioningState; 100json["timestamp"] = timestamp; 105json["duration"] = duration.ToString(); 110json["statusCode"] = StatusCode; 115json["serviceRequestId"] = ServiceRequestId; 120json["targetResource"] = targetResource.ToJsonObject(); 125json["error"] = failureDetails.ToJsonObject(); 140json["id"] = Id; 145json["resourceType"] = ResourceType; 150json["resourceName"] = ResourceName;
AzureProvisioningController.cs (50)
2528json["resourceCount"] = GetProvisionableAzureResources(model).Count; 2531json["warning"] = "Local Azure provisioning state was reset without deleting live Azure resources. Existing Azure resources may be orphaned if a later reprovision uses a different Azure context."; 2532json["recommendedActions"] = AzureProvisioningFailureDetails.CreateRecommendedActionsJsonArray( 2549json["resourceCount"] = GetProvisionableAzureResources(model).Count; 2552json["remainingResources"] = new JsonArray([.. result.RemainingResources.Select(resource => (JsonNode)new JsonObject 2559json["warning"] = AzureProvisioningStrings.DeleteAzureResourcesRemainingResourcesWarning; 2574json["deletedResourceCount"] = result.ResourceIds.Count; 2575json["deletedResourceIds"] = deletedResourceIds; 2587json["resourceCount"] = targetResources.Count; 2588json["location"] = effectiveLocation; 2589json["effectiveLocation"] = effectiveLocation; 2604json["resourceCount"] = targetResources.Count; 2605json["location"] = effectiveLocation; 2606json["effectiveLocation"] = effectiveLocation; 2615json["deployment"] = deployment; 2616json["live"] = await CreateLiveResourceInfoAsync( 2653json["provisioningState"] = provisioningState; 2662json["deploymentPortalUrl"] = AzurePortalUrls.GetDeploymentUrl(deploymentResourceId); 2680json["reason"] = "missing-resource-id"; 2681json["source"] = "aspire"; 2682json["code"] = "missing-resource-id"; 2683json["message"] = "Live Azure resource existence cannot be checked because cached deployment state does not contain a resource ID. This can happen after state is forgotten, deleted, or before provisioning completes."; 2684json["recommendedActions"] = AzureProvisioningFailureDetails.CreateRecommendedActionsJsonArray( 2691json["reason"] = "invalid-subscription-id"; 2700json["checked"] = true; 2702json["exists"] = exists; 2706json["reason"] = AzureProvisioningFailureDetails.MissingLiveResourceReason; 2707json["source"] = "azure"; 2708json["code"] = AzureProvisioningFailureDetails.MissingLiveResourceReason; 2709json["message"] = "Cached deployment state points at an Azure resource ID, but the resource was not found in Azure. This can happen when resources are deleted outside Aspire or a resource group deletion is still in progress."; 2710json["recommendedActions"] = AzureProvisioningFailureDetails.CreateRecommendedActionsJsonArray( 2719json["reason"] = "credential-unavailable"; 2720json["message"] = ex.Message; 2728json["reason"] = "request-failed"; 2729json["source"] = "azure"; 2730json["status"] = ex.Status; 2731json["provider"] = failure.Provider; 2732json["httpStatus"] = failure.HttpStatus; 2733json["errorCode"] = failure.ErrorCode; 2734json["message"] = failure.ErrorMessage; 2735json["operation"] = failure.Operation; 2736json["requestId"] = failure.RequestId; 2737json["correlationId"] = failure.CorrelationId; 2740json["recommendedActions"] = AzureProvisioningFailureDetails.CreateRecommendedActionsJsonArray(failure.RecommendedActions); 2815json["tenantResourceSuffix"] = suffix; 2821json["resourceName"] = resourceName; 2879section.Data[LocationOverrideKey] = normalizedLocation; 2903section.Data[LocationOverrideKey] = location; 2976section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateCanceled; 3725section.Data[LocationOverrideKey] = locationOverride;
AzureProvisioningFailureDetails.cs (11)
464json["errorCode"] = ErrorCode; 469json["resourceType"] = ResourceType; 474json["resourceName"] = ResourceName; 479json["targetResourceId"] = TargetResourceId; 484json["currentLocation"] = CurrentLocation; 495json["supportedLocations"] = supportedLocations; 500json["httpStatus"] = httpStatus; 505json["operation"] = Operation; 510json["requestId"] = RequestId; 515json["correlationId"] = CorrelationId; 520json["recommendedActions"] = CreateRecommendedActionsJsonArray(RecommendedActions);
Provisioning\BicepUtilities.cs (4)
74parameters[parameter.Key] = new JsonObject() 104scope["resourceGroup"] = null; 115scope["tenant"] = "current"; 200scope[propertyName] = value switch
Provisioning\Internal\BaseProvisioningContextProvider.cs (8)
135azureStateSection.Data["ResourceGroup"] = resourceGroupName; 226azureSection["Location"] = _options.Location; 227azureSection["SubscriptionId"] = _options.SubscriptionId; 228azureSection["ResourceGroup"] = resourceGroupName; 232azureSection["TenantResourceSuffix"] = tenantResourceSuffix; 237azureSection["TenantId"] = tenantId; 246azureSection["Tenant"] = tenantDomain; 255azureSection["AllowResourceGroupCreation"] = _options.AllowResourceGroupCreation.Value;
Provisioning\Provisioners\BicepProvisioner.cs (9)
438stateSection.Data[DeploymentStateProvisioningStateKey] = provisioningState; 457stateSection.Data[AzureProvisioningController.LocationOverrideKey] = locationOverride; 1335stateSection.Data[AzureProvisioningController.LocationOverrideKey] = locationOverride; 1338stateSection.Data[BicepUtilities.DeploymentStateIdKey] = deploymentId.ToString(); 1339stateSection.Data[BicepUtilities.DeploymentStateParametersKey] = parameters.ToJsonString(); 1343stateSection.Data[BicepUtilities.DeploymentStateOutputsKey] = outputObj.ToJsonString(); 1348stateSection.Data[BicepUtilities.DeploymentStateScopeKey] = scope.ToJsonString(); 1351stateSection.Data[BicepUtilities.DeploymentStateChecksumKey] = checksum; 1355stateSection.Data[DeploymentStateProvisioningStateKey] = provisioningState;
Aspire.Hosting.Azure.Kubernetes.Tests (1)
AzureKubernetesInfrastructureTests.cs (1)
1831azureState["ResourceGroup"] = resourceGroup;
Aspire.Hosting.Azure.Sandboxes (25)
AzureSandboxContainerDeployment.cs (25)
277stateSection.Data["OwnerId"] = ownerId; 394stateSection.Data["OwnerId"] = ownerId; 397stateSection.Data["SandboxId"] = sandboxId; 398stateSection.Data["DiskImageId"] = diskImageId; 399stateSection.Data["SubscriptionId"] = dataPlaneScope.SubscriptionId; 400stateSection.Data["ResourceGroup"] = dataPlaneScope.ResourceGroupName; 401stateSection.Data["Location"] = dataPlaneScope.Region; 402stateSection.Data["SandboxGroup"] = dataPlaneScope.SandboxGroupName; 403stateSection.Data["ResourceName"] = resource.Name; 404stateSection.Data["SourceResourceName"] = targetResource.Name; 405stateSection.Data["DeployId"] = deployId; 406stateSection.Data["Ports"] = portStates; 407stateSection.Data["EndpointSecurityFingerprint"] = endpointSecurityFingerprint; 408stateSection.Data["HasRuntimeEnvironmentConfiguration"] = resolvedEnvironmentVariables.Values.Count > 0; 409stateSection.Data["HasRuntimeCommandConfiguration"] = hasModeledCommandConfiguration; 410stateSection.Data["PendingSecurityCleanup"] = securityConfigurationChanged; 474stateSection.Data["PendingSecurityCleanup"] = false; 1954stateSection.Data["PendingOwnerCleanupIds"] = new JsonArray( 1992stateSection.Data["PendingLegacyDeploymentCleanup"] = pendingDeploymentCleanup.DeepClone(); 2096stateSection.Data["SubscriptionId"] ??= scope.SubscriptionId; 2097stateSection.Data["ResourceGroup"] ??= scope.ResourceGroupName; 2098stateSection.Data["Location"] ??= scope.Region; 2099stateSection.Data["SandboxGroup"] ??= scope.SandboxGroupName; 2100stateSection.Data["ResourceName"] ??= resource.Name; 2101stateSection.Data["SourceResourceName"] ??= resource.TargetResource.Name;
Aspire.Hosting.Azure.Tests (195)
AzureBicepProvisionerTests.cs (35)
41cached.Data[BicepUtilities.DeploymentStateParametersKey] = parameters.ToJsonString(); 42cached.Data[BicepUtilities.DeploymentStateChecksumKey] = BicepUtilities.GetChecksum(registration.Resource, parameters, null); 43cached.Data[BicepUtilities.DeploymentStateOutputsKey] = """{"clientId":{"value":"original-client"}}"""; 52azureState.Data["TenantResourceSuffix"] = "dev-b"; 935section.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 969section.Data["Id"] = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Resources/deployments/storage2"; 970section.Data["Parameters"] = parameters.ToJsonString(); 971section.Data["Outputs"] = """{"name":{"value":"storage2"}}"""; 972section.Data["CheckSum"] = checksum; 973section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 1005azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 1006azureSection.Data["ResourceGroup"] = "test-rg"; 1007azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 1008azureSection.Data["Tenant"] = "microsoft.onmicrosoft.com"; 1009azureSection.Data["Location"] = "westus2"; 1013section.Data["Id"] = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Resources/deployments/storage2"; 1014section.Data["Parameters"] = parameters.ToJsonString(); 1015section.Data["Outputs"] = """{"name":{"value":"storage2"}}"""; 1016section.Data["CheckSum"] = checksum; 1056azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 1057azureSection.Data["ResourceGroup"] = "environment-rg"; 1058azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 1059azureSection.Data["Tenant"] = "microsoft.onmicrosoft.com"; 1060azureSection.Data["Location"] = "westus2"; 1064section.Data["Id"] = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/scoped-rg/providers/Microsoft.Resources/deployments/storage2"; 1065section.Data["Parameters"] = parameters.ToJsonString(); 1066section.Data["Outputs"] = """{"name":{"value":"storage2"}}"""; 1067section.Data["CheckSum"] = checksum; 1098section.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 1132section.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 1947section.Data[BicepUtilities.DeploymentStateIdKey] = deploymentId; 1948section.Data[BicepUtilities.DeploymentStateParametersKey] = parameters.ToJsonString(); 1949section.Data[BicepUtilities.DeploymentStateScopeKey] = scope.ToJsonString(); 1950section.Data[BicepUtilities.DeploymentStateChecksumKey] = BicepUtilities.GetChecksum(resource, parameters, scope); 1951section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning;
AzureEnvironmentResourceExtensionsTests.cs (134)
76azure.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 77azure.Data["ResourceGroup"] = "test-rg"; 78azure.Data["Location"] = "westus2"; 81directoryState.Data["Id"] = "directory-deployment"; 82directoryState.Data["Outputs"] = """ 95storageState.Data["Id"] = "storage-deployment"; 615azureSection.Data["SubscriptionId"] = "sub"; 616azureSection.Data["Location"] = "westus2"; 620storageSection.Data["Id"] = "/subscriptions/sub/resourceGroups/rg/providers/Microsoft.Resources/deployments/storage"; 621storageSection.Data["CheckSum"] = "checksum"; 886storageSection.Data["Outputs"] = """ 922storageSection.Data["Outputs"] = """{"id":{"value":"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/storage"}}"""; 1108azureSection.Data["SubscriptionId"] = subscriptionId; 1109azureSection.Data["Location"] = "westus2"; 1110azureSection.Data["ResourceGroup"] = resourceGroup; 1111azureSection.Data["TenantId"] = tenantId; 1115storageSection.Data["Id"] = deploymentId; 1116storageSection.Data["Parameters"] = """ 1123storageSection.Data["Outputs"] = $$""" 1135storageSection.Data["Scope"] = $$""" 1140storageSection.Data["CheckSum"] = "checksum"; 1141storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 1142storageSection.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 1220storageSection.Data["Outputs"] = $$""" 1495storageSection.Data["Outputs"] = """{"blobEndpoint":{"value":"https://storage.blob.core.windows.net/"}}"""; 1553storageSection.Data["Outputs"] = $$""" 1614storageSection.Data["Outputs"] = $$""" 1676storageSection.Data["Id"] = deploymentId; 1677storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 1804storageSection.Data[BicepUtilities.DeploymentStateIdKey] = deploymentId; 1805storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 1980storageSection.Data["Id"] = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Resources/deployments/storage"; 1981storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateSucceeded; 2018storageSection.Data["Id"] = deploymentId; 2019storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateSucceeded; 2085storageSection.Data["Id"] = deploymentId; 2086storageSection.Data["Outputs"] = new JsonObject 2094storageSection.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 2095storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 2099storage2Section.Data["Id"] = "storage2-deployment"; 2188keyVaultSection.Data["Id"] = deploymentId; 2189keyVaultSection.Data["Outputs"] = new JsonObject 2197keyVaultSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 2260storageSection.Data["Outputs"] = $$""" 2339storageSection.Data["Outputs"] = $$""" 2406storageSection.Data["Id"] = "storage-deployment"; 2410storage2Section.Data["Id"] = "storage2-deployment"; 2484storageSection.Data["Id"] = "storage-deployment"; 2488storage2Section.Data["Id"] = "storage2-deployment"; 3256azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3257azureSection.Data["Location"] = "eastus"; 3258azureSection.Data["ResourceGroup"] = "test-rg"; 3262storageSection.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 3328storageSection.Data["Outputs"] = new JsonObject 3395storageSection.Data["Outputs"] = """{"id":{"value":"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/storage26wmkwq4f4li52"}}"""; 3454storageSection.Data["Parameters"] = """ 3462storageSection.Data["Outputs"] = $$""" 3520storageSection.Data["LocationOverride"] = "westus2"; 3521storageSection.Data["Outputs"] = """{"id":{"value":"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/storage26wmkwq4f4li52"}}"""; 3584storageSection.Data["Outputs"] = """{"id":{"value":"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/storage26wmkwq4f4li52"}}"""; 3649storageSection.Data["Outputs"] = new JsonObject 3702azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3703azureSection.Data["Location"] = "westus2"; 3704azureSection.Data["ResourceGroup"] = "test-rg"; 3705azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 3709storageSection.Data["Id"] = "storage-deployment"; 3713storage2Section.Data["Id"] = "storage2-deployment"; 3827azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3828azureSection.Data["Location"] = "westus2"; 3829azureSection.Data["ResourceGroup"] = "test-rg"; 3830azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 3876azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3877azureSection.Data["Location"] = "westus2"; 3878azureSection.Data["ResourceGroup"] = "test-rg"; 3922azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3923azureSection.Data["Location"] = "westus2"; 3924azureSection.Data["ResourceGroup"] = "test-rg"; 3928storageSection.Data["Parameters"] = """{"location":{"value":"westus2"}}"""; 3982azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 3983azureSection.Data["Location"] = "westus2"; 3984azureSection.Data["ResourceGroup"] = "test-rg"; 3988storage2Section.Data[AzureProvisioningController.LocationOverrideKey] = "West US 3"; 4023azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4024azureSection.Data["Location"] = "westus2"; 4025azureSection.Data["ResourceGroup"] = "test-rg"; 4029storage2Section.Data["Parameters"] = """ 4068azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4069azureSection.Data["Location"] = "westus2"; 4070azureSection.Data["ResourceGroup"] = "test-rg"; 4128storageSection.Data["Id"] = "storage-deployment"; 4129storageSection.Data[AzureProvisioningController.LocationOverrideKey] = "westus3"; 4230keyVaultSection.Data[AzureProvisioningController.LocationOverrideKey] = "ukwest"; 4310keyVaultSection.Data[AzureProvisioningController.LocationOverrideKey] = "ukwest"; 4634azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4635azureSection.Data["Location"] = "westus2"; 4636azureSection.Data["ResourceGroup"] = "test-rg"; 4637azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 4638azureSection.Data["Tenant"] = "testdomain.onmicrosoft.com"; 4642storageSection.Data["Outputs"] = """{"id":{"value":"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/storage"}}"""; 4683azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4684azureSection.Data["Location"] = "westus2"; 4685azureSection.Data["ResourceGroup"] = "test-rg"; 4689storageSection.Data["Outputs"] = $$""" 4731azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4732azureSection.Data["Location"] = "westus2"; 4733azureSection.Data["ResourceGroup"] = "test-rg"; 4737storageSection.Data["Outputs"] = $$""" 4747storage2Section.Data["Outputs"] = $$""" 4791azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4792azureSection.Data["Location"] = "westus2"; 4793azureSection.Data["ResourceGroup"] = "test-rg"; 4797storageSection.Data["Outputs"] = """{"blobEndpoint":{"value":"https://storage.blob.core.windows.net/"}}"""; 4830azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4831azureSection.Data["Location"] = "westus2"; 4832azureSection.Data["ResourceGroup"] = "test-rg"; 4833azureSection.Data["TenantId"] = "87654321-4321-4321-4321-210987654321"; 4837storageSection.Data["Id"] = "storage-deployment"; 4889storageSection.Data["Id"] = "storage-deployment"; 4930azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4931azureSection.Data["Location"] = "westus2"; 4932azureSection.Data["ResourceGroup"] = "missing-rg"; 4936storageSection.Data["Id"] = "storage-deployment"; 4978azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 4979azureSection.Data["Location"] = "westus2"; 4980azureSection.Data["ResourceGroup"] = "test-rg"; 4984storageSection.Data["Id"] = "storage-deployment"; 5115storageSection.Data[BicepUtilities.DeploymentStateIdKey] = deploymentId; 5116storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateRunning; 5897azureSection.Data["SubscriptionId"] = options.SubscriptionId; 5898azureSection.Data["Location"] = options.Location; 5899azureSection.Data["ResourceGroup"] = options.ResourceGroup; 5902azureSection.Data["TenantResourceSuffix"] = options.TenantResourceSuffix; 5907azureSection.Data["TenantId"] = options.TenantId; 6035section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey] = BicepProvisioner.DeploymentStateProvisioningStateCanceled;
AzureEventHubsExtensionsTests.cs (1)
399document["Custom"] = JsonValue.Create(42);
AzureSandboxesTests.cs (15)
985previousState.Data["EndpointSecurityFingerprint"] = fingerprint; 993previousState.Data["EndpointSecurityFingerprint"] = "legacy-endpoint-only-fingerprint"; 995previousState.Data["EndpointSecurityFingerprint"] = fingerprint; 996previousState.Data["PendingSecurityCleanup"] = true; 998previousState.Data["PendingSecurityCleanup"] = false; 1010previousState.Data["HasRuntimeEnvironmentConfiguration"] = true; 1012previousState.Data["HasRuntimeEnvironmentConfiguration"] = false; 1018previousState.Data["HasRuntimeCommandConfiguration"] = true; 1020previousState.Data["HasRuntimeCommandConfiguration"] = false; 1156azureState.Data["SubscriptionId"] = "sub"; 1157azureState.Data["ResourceGroup"] = "rg"; 1158azureState.Data["Location"] = "westus3"; 2822state.Data["Ports"] = new JsonArray(new JsonObject 2955state.Data["Ports"] = new JsonArray 3241state.Data["Ports"] = new JsonArray(new JsonObject
AzureServiceBusExtensionsTests.cs (1)
508document["Custom"] = JsonValue.Create(42);
BicepUtilitiesTests.cs (3)
58cached.Data[BicepUtilities.DeploymentStateParametersKey] = parameters.ToJsonString(); 64azureState.Data["TenantResourceSuffix"] = "dev-b"; 72azureState.Data["TenantResourceSuffix"] = string.Empty;
ProvisioningContextProviderTests.cs (4)
328azureSection.Data["SubscriptionId"] = "12345678-1234-1234-1234-123456789012"; 329azureSection.Data["Location"] = "westus3"; 330azureSection.Data["ResourceGroup"] = "rehydrated-rg"; 331azureSection.Data["AllowResourceGroupCreation"] = "true";
ProvisioningContextTests.cs (1)
203azureSection.Data["SubscriptionId"] = "test-id";
ProvisioningTestHelpers.cs (1)
1070_state[section.SectionName] = section.Data;
Aspire.Hosting.Azure.WebPubSub (1)
AzureWebPubSubExtensions.cs (1)
243hubs[hub.HubName] = new JsonObject { ["EventHandlers"] = handlers };
Aspire.Hosting.Blazor (5)
GatewayConfigurationBuilder.cs (5)
228environment[$"services__{svc.ServiceName}__https__0"] = $"{OriginToken}{pathBase}/{svc.ApiPrefix}/{svc.ServiceName}"; 233environment[$"services__{svc.ServiceName}__http__0"] = $"{OriginToken}{pathBase}/{svc.ApiPrefix}/{svc.ServiceName}"; 239environment["OTEL_SERVICE_NAME"] = resourceName; 244environment["OTEL_EXPORTER_OTLP_ENDPOINT"] = $"{pathBase}/{otlpPrefix}"; 245environment["OTEL_EXPORTER_OTLP_PROTOCOL"] = "http/protobuf";
Aspire.Hosting.CodeGeneration.Go (10)
GoApiExportWriter.cs (10)
84json["items"] = items; 114json["members"] = members; 137json["errorModel"] = ToErrorModelString(errorModel); 151json["deprecated"] = member.DeprecationMessage; 156json["parameters"] = WriteParameters(member.Parameters); 165optionsJson["fields"] = WriteParameters(options.Fields); 168json["options"] = optionsJson; 229json[name] = value; 237json[name] = true; 254json[name] = array;
Aspire.Hosting.CodeGeneration.TypeScript (24)
TypeScriptApiExportWriter.cs (8)
82json["items"] = items; 104json["experimental"] = true; 115json["members"] = members; 138json["experimental"] = true; 142json["deprecated"] = member.DeprecationMessage; 161json["parameters"] = parameters; 185json[name] = value; 202json[name] = array;
TypeScriptLanguageSupport.cs (16)
136packageJson["name"] = packageName; 137packageJson["version"] = "1.0.0"; 138packageJson["private"] = true; 139packageJson["type"] = "module"; 147engines["node"] = "^20.19.0 || ^22.13.0 || >=24"; 150scripts["aspire:lint"] = "eslint apphost.mts"; 151scripts["aspire:start"] = "aspire run"; 152scripts["aspire:build"] = $"tsc -p {AppHostTsConfigFileName}"; 153scripts["aspire:dev"] = $"tsc --watch -p {AppHostTsConfigFileName}"; 159scripts["lint"] = "eslint apphost.mts"; 160scripts["dev"] = "eslint apphost.mts && aspire run"; 161scripts["build"] = $"eslint apphost.mts && tsc -p {AppHostTsConfigFileName}"; 162scripts["watch"] = $"tsc --watch -p {AppHostTsConfigFileName}"; 197section[packageName] = version; 203section[packageName] = version; 215parent[propertyName] = obj;
Aspire.Hosting.Docker (3)
DockerComposeEnvironmentResource.cs (3)
453stateSection.Data["OutputPath"] = outputPath; 454stateSection.Data["ProjectName"] = composeContext.ProjectName; 455stateSection.Data["ComposeFilePath"] = composeContext.ComposeFilePath;
Aspire.Hosting.Kubernetes (7)
Deployment\HelmDeploymentEngine.cs (2)
488stateSection.Data["ReleaseName"] = releaseName; 489stateSection.Data["Namespace"] = @namespace;
KubernetesEnvironmentResource.cs (3)
2131metadataNode["annotations"] = System.Text.Json.Nodes.JsonNode.Parse(annotations.GetRawText()); 2136metadataNode["labels"] = System.Text.Json.Nodes.JsonNode.Parse(labels.GetRawText()); 2150minimal["spec"] = System.Text.Json.Nodes.JsonNode.Parse(spec.GetRawText());
KubernetesHelmChartExtensions.cs (2)
370stateSection.Data["ReleaseName"] = releaseName; 371stateSection.Data["Namespace"] = @namespace;
Aspire.Hosting.Native.Core.Tests (22)
NativeCliControlTests.cs (2)
43identity["contractId"] = "contract-id"; 44identity["version"] = "server-version";
NativeComposeCSharpTests.cs (11)
34build["context"] = "/app/web"; 35build["dockerfile"] = "/app/web/Dockerfile"; 36first.Compose["name"] = "comparison-project"; 37first.Inputs["projectName"] = "comparison-project"; 92options["ports"] = new JsonArray(); 96cache["name"] = "Cache.With Space"; 104other["name"] = "other"; 107isolated["name"] = "isolated"; 108isolated["computeEnvironment"] = "other"; 439environment["name"] = "other"; 442cache["computeEnvironment"] = "other";
NativeLanguageCatalogTests.cs (1)
27spec["language"] = "mutated";
NativeProviderClientTests.cs (1)
221handle["$lifetime"] = JsonNode.Parse(arguments.GetProperty("composition").GetRawText());
NativeProviderLifecycleTests.cs (3)
237case "phase": phase["lifecyclePhase"] = "continuous-health"; break; 240phase["targetTypeId"] = "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"; 246duplicate["id"] = "example.lifecycle/duplicate";
NativePublishingTests.cs (2)
48application["executable"] = "/app/host"; 49application["workingDirectory"] = "/app";
NativeRpcTests.cs (2)
119forged["$handle"] = "not-issued"; 122retagged["$type"] = composition["$type"]!.DeepClone();
Aspire.Hosting.Native.Server (9)
Api\PublishingApi.cs (3)
41configuration["publish.computeEnvironment"] = names[environmentHandle]; 47environment[variable.Name] = Expression(SymbolicValue.Literal(snapshot.GenerationId, variable.Value)); 51environment[binding.Name] = Expression(symbolic[binding.ConfigurationKey]);
Rpc\NativeLanguageCatalog.cs (3)
57files[Path.GetFileName(path)] = File.ReadAllText(path); 106files[name[prefix.Length..]] = reader.ReadToEnd(); 117files["apphost-server.json"] = new JsonObject
Rpc\NativeProviderRegistry.cs (3)
225mapped[name] = lease.Id; 229mapped[name] = ToProvider(registration, caller, arguments[name], parameter.Type, out var resource); 373mapped[$"p{index}"] = ToCaller(registration, callback.Owner, arguments[$"p{index}"],
Aspire.Hosting.Radius (1)
Publishing\RadiusDeploymentPipelineStep.cs (1)
685parametersNode[identifier] = new JsonObject { ["value"] = value };
Aspire.Hosting.RemoteHost (8)
Ats\AtsCallbackProxyFactory.cs (2)
309args[$"p{ctParamIndex}"] = tokenId; 311args["$cancellationToken"] = tokenId;
Ats\AtsError.cs (5)
53obj["capability"] = Capability; 58obj["details"] = Details.ToJsonObject(); 100obj["parameter"] = Parameter; 105obj["expected"] = Expected; 110obj["actual"] = Actual;
Ats\ExternalCapabilityRegistry.cs (1)
662args[parameter.Name] = relayId;
Aspire.Hosting.RemoteHost.Tests (3)
CapabilityDispatcherTests.cs (1)
146args["configure"] = "configure-terminal";
ExternalCapabilityRegistryTests.cs (2)
106payload["protocolVersion"] = 2; 152invalidCapability[fieldName] = fieldValue;
Aspire.Hosting.Tests (63)
Orchestrator\ParameterProcessorTests.cs (1)
2586_unflattenedState[section.SectionName] = section.Data.DeepClone().AsObject();
Publishing\ContainerImageArchiveRewriterTests.cs (1)
456metadata[entryName] = JsonNode.Parse(TestContainerImageArchive.ReadEntryText(archivePath, entryName));
Publishing\DeploymentStateManagerTests.cs (61)
41section1.Data["key1"] = "value1"; 57section.Data["NullValue"] = null; 76section1.Data["key1"] = "value1"; 86section2.Data["key2"] = "value2"; 105parametersSection.Data["param1"] = "value1"; 106azureSection.Data["resource1"] = "azure-value1"; 134section.Data[$"key{sectionIndex}"] = $"value{sectionIndex}"; 157section1.Data["key1"] = "value1"; 178section1.Data["key1"] = "value1"; 191section2.Data["key2"] = "value2"; 250section.Data["key1"] = "value1"; 267section.Data["nestedKey"] = "nestedValue"; 285section1.Data["key1"] = "value1"; 286section2.Data["key2"] = "value2"; 321section1.Data["key1"] = "value1"; 330section2.Data["key2"] = "value2"; 362topLevel.Data["topKey"] = "topValue"; 363nested.Data["nestedKey"] = "nestedValue"; 382section.Data["key"] = "value"; 473legacySection.Data["legacy"] = true; 480migratedSection.Data["current"] = true; 510legacySection.Data["Value"] = "legacy"; 514migratedSection.Data["Claimed"] = true; 526sameManagerLegacySection.Data["Value"] = "legacy"; 549section.Data["Value"] = "committed"; 566legacySection.Data["Value"] = "legacy"; 675initialSection.Data["Leaf"] = "initial"; 682staleObjectSection.Data["Leaf"] = "updated"; 710firstSection.Data["Features"] = new JsonObject { ["A"] = true }; 711secondSection.Data["Features"] = new JsonObject { ["B"] = true }; 737firstLegacySection.Data["SandboxId"] = "first-sandbox"; 740secondLegacySection.Data["SandboxId"] = "second-sandbox"; 748firstSection.Data["Migrated"] = true; 794legacyAzureSection.Data["SubscriptionId"] = "legacy-subscription"; 795legacyAzureSection.Data["Sandboxes"] = new JsonObject 804azureSection.Data["SubscriptionId"] = "current-subscription"; 830legacyAzureSection.Data["SubscriptionId"] = "legacy-subscription"; 831legacyAzureSection.Data["Sandboxes"] = new JsonObject 841newSandboxSection.Data["SandboxId"] = "new-sandbox"; 871legacySandboxesSection.Data["first"] = new JsonObject 876legacySandboxesSection.Data["second"] = new JsonObject 886newChildSection.Data["SandboxId"] = "new-sandbox"; 915firstLegacySection.Data["SandboxId"] = "first-sandbox"; 918secondLegacySection.Data["SandboxId"] = "second-sandbox"; 925firstSection.Data["Updated"] = true; 926secondSection.Data["Updated"] = true; 951legacyAzureSection.Data["SubscriptionId"] = "legacy-subscription"; 952legacyAzureSection.Data["Location"] = "legacy-location"; 959firstAzureSection.Data["SubscriptionId"] = "current-subscription"; 960secondAzureSection.Data["Location"] = "current-location"; 983legacySection.Data["SubscriptionId"] = "sub"; 1013currentSection.Data["SubscriptionId"] = "current-sub"; 1044currentSection.Data["SubscriptionId"] = "current-sub"; 1061restartedSection.Data["Location"] = "westus"; 1074section.Data["SubscriptionId"] = "sub"; 1094legacySection.Data["SandboxId"] = "sandbox"; 1115firstLegacySection.Data["SandboxId"] = "first-sandbox"; 1118secondLegacySection.Data["SandboxId"] = "second-sandbox"; 1127azureSection.Data["SubscriptionId"] = "current-subscription"; 1150firstLegacySection.Data["SandboxId"] = "first"; 1153secondLegacySection.Data["SandboxId"] = "second";
Aspire.Hosting.Yarp (5)
YarpJsonConfigGeneratorBuilder.cs (5)
84var jsonProxyConfig = jsonObject["ReverseProxy"] = new JsonObject(); 85jsonProxyConfig["Clusters"] = AddClusters(); 86jsonProxyConfig["Routes"] = AddRoutes(); 102routesNode[route.RouteId] = node; 116routesNode[cluster.ClusterId] = node;
ConfigurationSchemaGenerator (21)
ConfigSchemaEmitter.cs (21)
63categoryNode["$ref"] = "#/definitions/logLevelThreshold"; 67parent["definitions"] = new JsonObject 120currentNode["type"] = "object"; 126currentNode[propertiesName] = propertiesNode; 241currentNode["type"] = "object"; 247currentNode["properties"] = propertiesNode; 318currentNode["type"] = typeName; 320currentNode[containerName] = containerNode; 445propertyNode["description"] = description; 459propertyNode["default"] = true; 463propertyNode["default"] = false; 591propertyNode["type"] = "string"; 592propertyNode["pattern"] = TimeSpanRegex; 608propertyNode["enum"] = enumNode; 612propertyNode["type"] = "string"; 613propertyNode["format"] = "uri"; 620propertyNode["type"] = new JsonArray { "number", "string" }; 624propertyNode["type"] = "string"; 625propertyNode["format"] = "uuid"; 630propertyNode["oneOf"] = new JsonArray 649propertyNode["type"] = GetParsableTypeName(parsable);
dotnet-aot (1)
parent\dotnet\Telemetry\TelemetryDiskLogger.cs (1)
62root["activities"] = activitiesArray;
dotnet-user-jwts (2)
Helpers\JwtAuthenticationSchemeSettings.cs (2)
34schemes[SchemeName] = settingsObject; 46config[AuthenticationKey] = new JsonObject
Infrastructure.Tests (140)
Pipelines\NpmCliPackageTests.cs (1)
264packageMap[rid.Rid] = $"{PackageName}-{rid.Rid}";
TemplateManifest\TemplateManifestNpmTests.cs (2)
48dependencies[name] = "^99.0.0"; 81lockfile["lockfileVersion"] = 2;
TemplateManifest\TemplateRestorePlanTests.cs (4)
74config["sources"] = JsonNode.Parse("""[{"modifiers":[{"condition":"(Mode == \"None\")","exclude":["*.csproj"]}]}]"""); 299config["identity"] = identity; 300config["name"] = identity; 301config["shortName"] = identity;
WorkflowScripts\AutoSecWorkflowTests.cs (133)
104request["failure"] = new JsonObject { ["endpoint"] = endpoint, ["status"] = status }; 123file["status"] = status; 135file["previous_filename"] = "extension/old yarn.lock"; 136contents["repos/microsoft/aspire/contents/extension/old%20yarn.lock?ref=base"] = 171request["failure"] = new JsonObject 205scenario["staged"] = true; 225scenario["files"] = new JsonArray(new JsonObject 232scenario["contentFailure"] = new JsonObject 252scenario["files"] = new JsonArray("extension/package.json", new JsonObject 282scenario["files"] = new JsonArray("extension/package.json", new JsonObject { ["filename"] = "extension/yarn.lock", ["status"] = status }); 303scenario["files"] = new JsonArray(new JsonObject 337scenario["approvalFailure"] = phase; 379comparison["status"] = state; 386comparison["status"] = "ahead"; 391comparison["status"] = "diverged"; 392scenario["comparisonResponses"] = new JsonArray(valid, comparison); 396scenario["liveBaseSha"] = new string('c', 40); 404scenario["comparisonResponses"] = new JsonArray(comparison); 496pr["user_login"] = "someone"; 499pr["head_sha"] = new string('b', 40); 503pr["base_ref"] = "release/13.3"; 506pr["head_ref"] = "dependabot/github_actions/actions/checkout-4.2.0"; 512scenario["commits"] = new JsonArray( 518scenario["commits"] = new JsonArray(new JsonObject { ["author_login"] = "dependabot[bot]", ["verified"] = false }); 538pr["head_ref"] = "dependabot/npm_and_yarn/npm_and_yarn-1a2b3c4d5e"; 539pr["title"] = "Bump the npm_and_yarn group across 2 directories with 2 updates"; 540pr["body"] = "Updates `lodash` from 4.17.20 to 4.17.21\nUpdates `lodash` from 3.10.1 to 4.17.21"; 543pr["title"] = "Bump lodash from 4.17.20 to 5.0.0 in /extension"; 544pr["body"] = "Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 5.0.0."; 588scenario["malwareNumbers"] = new JsonArray(9); 631scenario["liveHeadSha"] = new string('c', 40); 636scenario["liveBaseRef"] = "release/13.3"; 641scenario["liveDraft"] = true; 646scenario["liveCheckRuns"] = new JsonArray(new JsonObject { ["name"] = "tests", ["status"] = "in_progress", ["conclusion"] = null }); 651scenario["liveStatuses"] = new JsonArray(new JsonObject { ["context"] = "license/cla", ["state"] = "failure" }); 654scenario["malwareNumbers"] = new JsonArray(7); 660pr["head_ref"] = "dependabot/npm_and_yarn/npm_and_yarn-1a2b3c4d5e"; 661pr["title"] = "Bump the npm_and_yarn group across 2 directories with 2 updates"; 662pr["body"] = "Updates `lodash` from 4.17.20 to 4.17.21\nUpdates `minimist` from 1.2.5 to 1.2.8"; 676scenario["checkRuns"] = new JsonArray(); 682scenario["statuses"] = new JsonArray(new JsonObject { ["context"] = "license/cla", ["state"] = "pending" }); 693scenario["statuses"] = statuses; 697scenario["statuses"] = new JsonArray(new JsonObject { ["context"] = "license/cla", ["state"] = "success" }); 698scenario["combinedState"] = "failure"; 701scenario["reviews"] = new JsonArray(new JsonObject { ["user_login"] = "aspire-repo-bot[bot]", ["state"] = "APPROVED", ["commit_id"] = HeadSha }); 912workspaceFiles[path] = baseText; 915request["branchFiles"] = new JsonObject { [path] = baseText }; 920workspaceFiles[path] = baseText; 921request["branchFiles"] = new JsonObject { [path] = baseText + "{\"resolved\": \"https://evil.example/lodash/-/lodash-4.17.21.tgz\"}\n" }; 925workspaceFiles[path] = baseText + "\n"; 1050request["workspaceFiles"] = new JsonObject { ["extension/package-lock.json"] = baseText }; 1123output["body"] = PublicTextBody.ReplaceLineEndings("\n").Replace( 1170output["body"] = PublicTextBody.Replace("extension/package-lock.json", alias, StringComparison.Ordinal); 1194output["body"] = PublicTextBody.Replace("extension/package-lock.json", alias, StringComparison.Ordinal); 1474output["body"] = body; 1496output["body"] = PublicTextBody.Replace($"{lodash}\r\n{node}", $"{node}\r\n{lodash}", StringComparison.Ordinal) 1537output["message"] = field == "push" ? message : complete; 1673files[path] = text; 1674heads[path] = text.Replace("1.0.0", "1.0.2", StringComparison.Ordinal).Replace("1.0.1", "1.0.2", StringComparison.Ordinal); 1680heads["extension/package-lock.json"] = head.ToJsonString(new JsonSerializerOptions { WriteIndented = true }).ReplaceLineEndings("\n") + "\n"; 1686output["message"] = field == "push" ? message : complete; 1844output["body"] = PublicTextBody.Replace("\r\n", "\n").Replace("extension/package-lock.json", $"extension/{basename}", StringComparison.Ordinal); 1893baseline["metadata"] = new JsonArray(new JsonObject { ["version"] = "1.0.0" }); 1902head["alert-42"] = "1.2.3"; 1905package["alert-42"] = "1.2.3"; 1908head["dev"] = true; 1911package["lockfileVersion"] = 3; 1914head["node_modules/alert-42"] = new JsonObject { ["version"] = "1.2.3" }; 1917head["dependencies"] = new JsonObject { ["alert-42"] = "1.2.3" }; 1920head["requires"] = new JsonObject { ["alert-42"] = "1.2.3" }; 1923package["engines"] = new JsonObject { ["alert-42"] = "1.2.3" }; 1932head["lockfileVersion"] = 3; 1933head["requires"] = true; 1936package[scenario] = new JsonObject { ["@types/node"] = "^22.1.0" }; 1949output["body"] = output["body"]!.GetValue<string>().Replace("extension/package-lock.json", path, StringComparison.Ordinal); 1999baseline["dependencies"] = new JsonObject 2012baseline["packages"] = JsonNode.Parse(PublicTextBase)!["packages"]!.DeepClone(); 2016output["body"] = output["body"]!.GetValue<string>().Replace("extension/package-lock.json", path, StringComparison.Ordinal); 2057baseline["dependencies"] = new JsonObject 2109output["message"] = message; 2201output["message"] = message; 2271baseline["name"] = "public-app"; 2294head["name"] = "other"; 2305output["message"] = message; 2360output["message"] = message; 2429output["message"] = message; 2472output["message"] = message; 2511output["message"] = message; 2571output["body"] = output["body"]!.GetValue<string>().Replace( 2723output["base_commit"] = sha; 2900output["body"] = body; 3005output["body"] = PublicTextBody.Replace("\r\n", "\n").Replace("4.17.20", "4.17.19", StringComparison.Ordinal); 3037request[source == "workspace" ? "workspaceFiles" : "branchFiles"] = new JsonObject { ["extension/package-lock.json"] = PublicTextBase }; 3058input["private advisory property GHSA-xxxx"] = nested 3084expected["branch"] = "auto-sec/security-updates"; 3085expected["repo"] = "microsoft/aspire"; 3086expected["head_repo"] = "microsoft/aspire"; 3087expected["base"] = "main"; 3088expected["base_branch"] = "main"; 3089expected["base_commit"] = "0123456789abcdef0123456789abcdef01234567"; 3090expected["diff_size"] = 123; 3092input["repo_cwd"] = "/private/alert-42"; 3129input[field] = JsonNode.Parse(value); 3952scenario["malwareNumbers"] = new JsonArray(7); 3970pr["head_ref"] = "dependabot/npm_and_yarn/npm_and_yarn-1a2b3c4d5e"; 3971pr["title"] = "Bump the npm_and_yarn group across 2 directories with 1 update"; 3972pr["body"] = "Updates `lodash` from 4.17.20 to 4.17.21"; 4004overrides[number.ToString(System.Globalization.CultureInfo.InvariantCulture)] = new JsonObject { ["user_login"] = "someone" }; 4007scenario["agentItems"] = items; 4008scenario["prOverrides"] = overrides; 4025scenario["approvalFailure"] = "submission-after-accept"; 4031scenario["agentItems"] = items; 4306leaf["listed"] = listed.Value; 4450case "open-pr": scenario["openPrs"] = new JsonArray(new JsonObject { ["state"] = "open", ["user"] = new JsonObject { ["login"] = "someone" } }); break; 4451case "no-history": scenario["closedPrs"] = new JsonArray(); break; 4457case "missing-label": closed["labels"] = new JsonArray(); break; 4458case "wrong-title": closed["title"] = "Unrelated PR"; break; 4460case "open-api-failure": scenario["failure"] = "open"; break; 4461case "branch-api-failure": scenario["failure"] = "branch"; break; 4462case "closed-api-failure": scenario["failure"] = "closed"; break; 4464scenario["botLogin"] = "custom-auto-sec[bot]"; 4467case "configured-bot-mismatch": scenario["botLogin"] = "custom-auto-sec[bot]"; break; 4469case "not-closed": closed["state"] = "open"; break; 4502pr["head_ref"] = "feature/x"; 4505pr["head_repo"] = "contoso/aspire"; 4508pr["base_ref"] = "release/13.3"; 4511pr["user_login"] = "repository-writer"; 4514pr["user_login"] = ""; 4517pr["state"] = "closed"; 4520item["pull_request_number"] = "abc"; 4537scenario["botLogin"] = "custom-auto-sec[bot]"; 4646pr[key] = value?.DeepClone(); 4785request["baseFiles"] ??= new JsonObject
Microsoft.AspNetCore.JsonPatch.SystemTextJson (1)
Internal\JsonObjectAdapter.cs (1)
22obj[segment] = value != null ? JsonSerializer.SerializeToNode(value, serializerOptions) : GetJsonNull();
Microsoft.AspNetCore.OpenApi (60)
Extensions\JsonNodeSchemaExtensions.cs (51)
90schema[OpenApiSchemaKeywords.FormatKeyword] = "byte"; 125schema[rangeAttribute.MinimumIsExclusive ? OpenApiSchemaKeywords.ExclusiveMinimum : OpenApiSchemaKeywords.MinimumKeyword] = minValue; 129schema[rangeAttribute.MaximumIsExclusive ? OpenApiSchemaKeywords.ExclusiveMaximum : OpenApiSchemaKeywords.MaximumKeyword] = maxValue; 134schema[OpenApiSchemaKeywords.PatternKeyword] = regularExpressionAttribute.Pattern; 140schema[key] = maxLengthAttribute.Length; 146schema[key] = minLengthAttribute.Length; 152schema[$"min{targetKeySuffix}"] = lengthAttribute.MinimumLength; 153schema[$"max{targetKeySuffix}"] = lengthAttribute.MaximumLength; 157schema[OpenApiSchemaKeywords.FormatKeyword] = "uri"; 161schema[OpenApiSchemaKeywords.MinLengthKeyword] = stringLengthAttribute.MinimumLength; 162schema[OpenApiSchemaKeywords.MaxLengthKeyword] = stringLengthAttribute.MaximumLength; 186schema[schemaAttribute] = null; 190schema[schemaAttribute] = JsonSerializer.SerializeToNode(defaultValue, jsonTypeInfo); 213schema[OpenApiSchemaKeywords.FormatKeyword] = format; 230schema[OpenApiSchemaKeywords.MinimumKeyword] = minRouteConstraint.Min; 234schema[OpenApiSchemaKeywords.MaximumKeyword] = maxRouteConstraint.Max; 238schema[OpenApiSchemaKeywords.MinLengthKeyword] = minLengthRouteConstraint.MinLength; 242schema[OpenApiSchemaKeywords.MaxLengthKeyword] = maxLengthRouteConstraint.MaxLength; 246schema[OpenApiSchemaKeywords.MinimumKeyword] = rangeRouteConstraint.Min; 247schema[OpenApiSchemaKeywords.MaximumKeyword] = rangeRouteConstraint.Max; 251schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.String.ToString(); 252schema[OpenApiSchemaKeywords.FormatKeyword] = null; 253schema[OpenApiSchemaKeywords.PatternKeyword] = regexRouteConstraint.Constraint.ToString(); 257schema[OpenApiSchemaKeywords.MinLengthKeyword] = lengthRouteConstraint.MinLength; 258schema[OpenApiSchemaKeywords.MaxLengthKeyword] = lengthRouteConstraint.MaxLength; 262schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.Number.ToString(); 263schema[OpenApiSchemaKeywords.FormatKeyword] = constraint is FloatRouteConstraint ? "float" : "double"; 267schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.Integer.ToString(); 268schema[OpenApiSchemaKeywords.FormatKeyword] = constraint is LongRouteConstraint ? "int64" : "int32"; 272schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.String.ToString(); 273schema[OpenApiSchemaKeywords.FormatKeyword] = constraint is GuidRouteConstraint ? "uuid" : null; 277schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.Boolean.ToString(); 278schema[OpenApiSchemaKeywords.FormatKeyword] = null; 282schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.String.ToString(); 283schema[OpenApiSchemaKeywords.FormatKeyword] = null; 287schema[OpenApiSchemaKeywords.TypeKeyword] = JsonSchemaType.String.ToString(); 288schema[OpenApiSchemaKeywords.FormatKeyword] = "date-time"; 369schema[OpenApiSchemaKeywords.EnumKeyword] = enumArray; 390schema[defaultKey] = (JsonNode)memberName; 403schema[OpenApiSchemaKeywords.TypeKeyword] = (schemaTypes & ~JsonSchemaType.Null).ToString(); 455mappings[$"{discriminator}"] = $"{baseSchemaReferenceId}{createSchemaReferenceId(jsonDerivedType)}"; 458schema[OpenApiSchemaKeywords.DiscriminatorKeyword] = polymorphismOptions.TypeDiscriminatorPropertyName; 459schema[OpenApiSchemaKeywords.DiscriminatorMappingKeyword] = mappings; 462schema[OpenApiSchemaKeywords.DiscriminatorDefaultMappingKeyword] = baseSchemaReferenceId; 477schema[OpenApiConstants.SchemaId] = schemaReferenceId; 491schema[OpenApiConstants.SchemaIsUnion] = true; 497schema[OpenApiConstants.SchemaId] = "Base"; 561schema[OpenApiSchemaKeywords.TypeKeyword] = (schemaTypes | JsonSchemaType.Null).ToString(); 568schema[OpenApiSchemaKeywords.TypeKeyword] = nonNullableSchemaTypes.ToString(); 580schema[OpenApiConstants.NullableProperty] = true; 604schema[OpenApiSchemaKeywords.TypeKeyword] = typeArray[0]?.GetValue<string>();
Schemas\OpenApiJsonSchema.Helpers.cs (1)
168obj[key] = ReadJsonNode(ref reader);
Services\Schemas\OpenApiSchemaService.cs (8)
113schema[OpenApiSchemaKeywords.DescriptionKeyword] = typeDescriptionAttribute.Description; 117schema[OpenApiSchemaKeywords.DeprecatedKeyword] = true; 135schema[OpenApiSchemaKeywords.DescriptionKeyword] = descriptionAttribute.Description; 139schema[OpenApiSchemaKeywords.DeprecatedKeyword] = true; 146schema[OpenApiConstants.RefDescriptionAnnotation] = descriptionAttribute.Description; 150schema[OpenApiConstants.RefDeprecatedAnnotation] = true; 623newObject[property.Key] = processedValue?.DeepClone(); 627newObject[property.Key] = null;
Microsoft.Extensions.AI (6)
Realtime\LoggingRealtimeClientSession.cs (6)
196obj["content"] = s; 200obj["content"] = AsJson(message.RawRepresentation); 204obj["messageId"] = message.MessageId; 219obj["content"] = s; 223obj["content"] = AsJson(message.RawRepresentation); 227obj["messageId"] = message.MessageId;
Microsoft.Extensions.AI.Abstractions (45)
Utilities\AIJsonUtilities.Schema.Create.cs (36)
152schema[SchemaPropertyName] = SchemaKeywordUri; 157schema[TitlePropertyName] = title; 162schema[DescriptionPropertyName] = description; 165schema[TypePropertyName] = "object"; // Method schemas always hardcode the type as "object". 166schema[PropertiesPropertyName] = parameterSchemas; 170schema[RequiredPropertyName] = requiredProperties; 301objSchema[RefPropertyName] = (JsonNode)refUri; 328obj[TypePropertyName] = new JsonArray { (JsonNode)numericType, (JsonNode)"null" }; 332obj[TypePropertyName] = (JsonNode)numericType; 349objSchema[TypePropertyName] = new JsonArray { (JsonNode)typeValue, (JsonNode)"null" }; 370objSchema[TypePropertyName] = new JsonArray { (JsonNode)typeValue, (JsonNode)"null" }; 458obj[MinLengthStringPropertyName] ??= stringLengthAttribute.MinimumLength; 461obj[MaxLengthStringPropertyName] ??= stringLengthAttribute.MaximumLength; 470obj[MinLengthStringPropertyName] ??= minLengthAttribute.Length; 474obj[MinLengthCollectionPropertyName] ??= minLengthAttribute.Length; 484obj[MaxLengthStringPropertyName] ??= maxLengthAttribute.Length; 488obj[MaxLengthCollectionPropertyName] ??= maxLengthAttribute.Length; 538obj[MinExclusiveRangePropertyName] ??= minNode; 543obj[MinRangePropertyName] ??= minNode; 552obj[MaxExclusiveRangePropertyName] ??= maxNode; 557obj[MaxRangePropertyName] ??= maxNode; 576requiredArray ??= (JsonArray)(requiredSchemaObj[RequiredPropertyName] = new JsonArray()); 613obj[MinLengthStringPropertyName] ??= lengthAttribute.MinimumLength; 616obj[MaxLengthStringPropertyName] ??= lengthAttribute.MaximumLength; 622obj[MinLengthCollectionPropertyName] ??= lengthAttribute.MinimumLength; 625obj[MaxLengthCollectionPropertyName] ??= lengthAttribute.MaximumLength; 636obj[EnumPropertyName] = enumArray; 651(JsonObject)(obj[NotPropertyName] = new JsonObject()); 657notObj[EnumPropertyName] = enumArray; 670obj[FormatPropertyName] ??= "date-time"; 674obj[FormatPropertyName] ??= "date"; 678obj[FormatPropertyName] ??= "time"; 682obj[FormatPropertyName] ??= "email"; 686obj[FormatPropertyName] ??= "uri"; 690obj[FormatPropertyName] ??= "uri"; 691obj[ContentMediaTypePropertyName] ??= "image/*";
Utilities\AIJsonUtilities.Schema.Transform.cs (9)
75properties[prop.Key] = TransformSchemaCore(prop.Value, transformOptions, path); 85schemaObj[ItemsPropertyName] = TransformSchemaCore(itemsSchema, transformOptions, path); 93schemaObj[AdditionalPropertiesPropertyName] = TransformSchemaCore(additionalProps, transformOptions, path); 100schemaObj[NotPropertyName] = TransformSchemaCore(notSchema, transformOptions, path); 130schemaObj[AdditionalPropertiesPropertyName] = (JsonNode)false; 141schemaObj[RequiredPropertyName] = requiredProps; 172schemaObj["type"] = (JsonNode)foundType; 173schemaObj["nullable"] = (JsonNode)true; 185schemaObj[DescriptionPropertyName] = description;
Microsoft.Extensions.AI.Evaluation.Quality (1)
AIToolExtensions.cs (1)
34functionJsonNode["functionReturnValueSchema"] =
Microsoft.Extensions.AI.Evaluation.Safety (6)
ContentSafetyServicePayloadUtilities.cs (6)
157payload["MetricList"] = new JsonArray([.. metricNames]); 204item[questionPropertyName] = question.Text; 209item[answerPropertyName] = answer.Text; 214item[contextPropertyName] = normalizedPerTurnContext[index]; 239payload["MetricList"] = new JsonArray([.. metricNames]); 371payload["MetricList"] = new JsonArray([.. metricNames]);
Microsoft.Extensions.AI.OpenAI (1)
OpenAIClientExtensions.cs (1)
91schemaObj["description"] = schemaObj["description"] is { } descriptionNode && descriptionNode.GetValueKind() == JsonValueKind.String ?
Microsoft.ML.AutoML (9)
SweepableEstimator\Converter\MultiModelPipelineConverter.cs (2)
27jsonObject["schema"] = value.Schema.ToString(); 28jsonObject["estimators"] = JsonValue.Create(value.Estimators);
SweepableEstimator\Converter\SweepableEstimatorConverter.cs (2)
30jObject["estimatorType"] = JsonValue.Create(value.EstimatorType); 31jObject["parameter"] = JsonValue.Create(value.Parameter);
SweepableEstimator\Converter\SweepableEstimatorPipelineConverter.cs (2)
30jNode["parameter"] = JsonValue.Create(parameter); 31jNode["estimators"] = JsonValue.Create(estimators);
SweepableEstimator\Converter\SweepablePipelineConverter.cs (3)
28jsonObject["schema"] = value.Schema.ToString(); 29jsonObject["currentSchema"] = value.CurrentParameter["_SCHEMA_"].AsType<string>(); 30jsonObject["estimators"] = JsonValue.Create(value.Estimators);
Microsoft.NET.Build.Containers (13)
ImageConfig.cs (13)
94newConfig["ExposedPorts"] = CreatePortMap(); 98newConfig["Labels"] = CreateLabelMap(); 102newConfig["Env"] = CreateEnvironmentVariablesMapping(); 107newConfig["WorkingDir"] = _newWorkingDirectory; 112newConfig["Entrypoint"] = ToJsonArray(_newEntrypoint); 117newConfig["Cmd"] = ToJsonArray(_newCmd); 122newConfig["User"] = _user; 134newConfig[propertyName] = JsonNode.Parse(propertyValue.ToJsonString()); 177history["author"] = h.author; 181history["comment"] = h.comment; 185history["created"] = RFC3339Format(date); 189history["created_by"] = h.created_by; 193history["empty_layer"] = h.empty_layer;
Microsoft.NET.Build.Tasks (12)
GenerateRuntimeConfigurationFiles.cs (12)
316configProperties[hostConfigurationOption.ItemSpec] = GetConfigPropertyValue(hostConfigurationOption); 364configProperties["System.Reflection.Metadata.MetadataUpdater.IsSupported"] = true; 365configProperties["System.StartupHookProvider.IsSupported"] = true; 442json["tfm"] = runtimeOptions.Tfm; 447json["rollForward"] = runtimeOptions.RollForward; 452json["framework"] = SerializeFramework(runtimeOptions.Framework); 457json["frameworks"] = SerializeFrameworks(runtimeOptions.Frameworks); 462json["includedFrameworks"] = SerializeFrameworks(runtimeOptions.IncludedFrameworks); 475json["additionalProbingPaths"] = probingPaths; 483json[rawOption.Key] = rawOption.Value?.DeepClone(); 509json["name"] = framework.Name; 514json["version"] = framework.Version;
Microsoft.TemplateEngine.Cli (5)
Alias\AliasRegistry.cs (2)
158commandAliases[kvp.Key] = arr; 160root["CommandAliases"] = commandAliases;
PostActionProcessors\AddJsonPropertyPostActionProcessor.cs (3)
200parentProperty[newJsonPropertyName] = JsonNode.Parse(newJsonPropertyValue); 204parentProperty[newJsonPropertyName] = newJsonPropertyValue; 231node[property] = childNode = new JsonObject();
Microsoft.TemplateEngine.Edge (1)
parent\Shared\JExtensions.cs (1)
649target[property.Key] = property.Value != null
Microsoft.TemplateEngine.Orchestrator.RunnableProjects (1)
parent\Shared\JExtensions.cs (1)
649target[property.Key] = property.Value != null
Microsoft.TemplateEngine.Utils (1)
parent\Shared\JExtensions.cs (1)
649target[property.Key] = property.Value != null
Microsoft.TemplateSearch.Common (1)
parent\Shared\JExtensions.cs (1)
649target[property.Key] = property.Value != null
MSBuild (13)
JsonOutputFormatter.cs (12)
39propertiesNode[property] = getProperty(property); 42_topLevelNode["Properties"] = propertiesNode; 61jsonItem["Identity"] = item.GetMetadataValue("Identity"); 69jsonItem[metadatumName] = TryGetMetadataValue(item, metadatumName); 75itemsNode[itemName] = itemArray; 78_topLevelNode["Items"] = itemsNode; 95targetResults["Result"] = targetResult.ResultCode.ToString(); 100jsonItem["Identity"] = item.GetMetadata("Identity"); 108jsonItem[metadatumName] = TryGetMetadata(item, metadatumName); 114targetResults["Items"] = outputArray; 115targetResultsNode[targetName] = targetResults; 118_topLevelNode["TargetResults"] = targetResultsNode;
XMake.cs (1)
4819jsonNode[featureName] = Features.CheckFeatureAvailability(featureName).ToString();
NativeIntegrations.DockerCompose (47)
ComposeModels.cs (19)
28result["image"] = Image; 32result["build"] = new JsonObject { ["context"] = Build.Context, ["dockerfile"] = Build.Dockerfile }; 36result["healthcheck"] = ComposeJson.Healthcheck(Healthcheck); 40result["ports"] = new JsonArray(Ports.Select(port => 45exposure["published"] = published; 53result["exclude"] = true; 57result["replaceRunLifecycle"] = true; 145(Model["volumes"] ??= new JsonArray()).AsArray().Add(new JsonObject 159Model[key] = value; 176Model["name"] = value; 195service["environment"] = new JsonObject(environment.Select(pair => 209volume["driver"] = ComposeJson.Literal(driver); 213volume["labels"] = new JsonObject(labels.Select(pair => 224secret["name"] = ComposeJson.Literal(externalName); 231(Model[collection] ??= new JsonObject()).AsObject()[name] = value; 240set => model["description"] = value; 257model["defaultValue"] = ComposeJson.Text(value, allowEmpty: true); 333result[key] = duration; 339result["retries"] = retries;
DockerComposeBuilderExtensions.cs (1)
53plan.Inputs["parameters"] = new JsonArray(Objects(parameters).OrderBy(entry => Text(entry, "name"), StringComparer.Ordinal)
DockerComposeEnvironment.cs (2)
112plan.Inputs["projectName"] = file.Name; 148dependencies[dependency] = new JsonObject { ["condition"] = producer["healthcheck"] is null ? "service_started" : "service_healthy" };
DockerComposeGenerator.cs (25)
138service["build"] = ComposeJson.BuildPaths(new(Text(build, "context"), Text(build, "dockerfile")), context.ApplicationDirectory); 142service["entrypoint"] = new JsonArray(ComposeJson.Literal(ComposeJson.Text(Text(resource, "entrypoint")))); 147service["command"] = ComposeJson.Strings(arguments.Select(value => Render(Normalize(value)))); 181service["environment"] = new JsonObject(serviceEnvironment); 185service["expose"] = ComposeJson.Strings(endpoints.Select(endpoint => 195exposure["published"] = hostPort; 209service["ports"] = new JsonArray(exposed.Select(exposure => 214value["published"] = published.ToString(CultureInfo.InvariantCulture); 216value["host_ip"] = exposure.HostIp; 217value["protocol"] = exposure.Protocol; 225service["volumes"] = new JsonArray(mounts.Select((mount, index) => 234var captured = (inputs["environment"] ??= new JsonObject()).AsObject(); 239captured[variable] = new JsonObject 271service["depends_on"] = new JsonObject(dependencies.Select(dependency => 279service["healthcheck"] = ComposeJson.Healthcheck(ComposeJson.ReadHealthcheck(healthcheck), escape: true); 286compose["volumes"] = new JsonObject(volumes); 288inputs["parameters"] = new JsonArray(used.Select(parameter => (JsonNode)new JsonObject 408var captured = (plan.Inputs["environment"] ??= new JsonObject()).AsObject(); 417entry["defaultValue"] = defaultValue.DeepClone(); 419captured[variable] = entry; 451plan.Compose["networks"] = new JsonObject { ["default"] = new JsonObject 490dashboard["ports"] = new JsonArray(new JsonObject 495services[serviceName] = dashboard; 501var captured = (plan.Inputs["environment"] ??= new JsonObject()).AsObject(); 506captured[variable] = new JsonObject { ["description"] = description, ["secret"] = true };
NuGet.Protocol (7)
Plugins\Logging\AssemblyLogMessage.cs (2)
49message["file version"] = _fileVersion; 54message["informational version"] = _informationalVersion;
Plugins\Logging\EnvironmentVariablesLogMessage.cs (3)
38message["handshake timeout in seconds"] = _handshakeTimeout.Value; 43message["idle timeout in seconds"] = _idleTimeout.Value; 48message["request timeout in seconds"] = _requestTimeout.Value;
Plugins\Logging\PluginInstanceLogMessage.cs (1)
38message["process ID"] = _processId.Value;
Plugins\Logging\TaskLogMessage.cs (1)
40message["current task ID"] = _currentTaskId.Value;
sdk-tasks (2)
UpdateRuntimeConfig.cs (2)
61framework["version"] = MicrosoftNetCoreAppVersion; 65framework["version"] = MicrosoftAspNetCoreAppVersion;
SelectTests (1)
Program.cs (1)
595selection[name] = value;
System.Text.Json (1)
System\Text\Json\Serialization\Converters\Node\JsonObjectConverter.cs (1)
36jObject[propertyName] = jNodeValue;
TestProject.AppHost (2)
TestProgram.cs (2)
181root[project.Name] = projectJson; 184projectJson["Endpoints"] = endpointsJsonArray;
2570 references to
aspire (74)
Agents\AspireSkills\AspireSkillsRemoteConfiguration.cs (4)
56var catalog = root["skills"] is JsonArray 315return String(source["source"]) switch 317"github" => String(source["repo"]) is { } repository && 320"git" => String(source["url"]) is { } url &&
Agents\ClaudeCode\ClaudeCodeAgentClient.cs (4)
213|| group["hooks"] is not JsonArray hooks) 238if (hook["command"] is JsonValue commandValue 244if (hook["args"] is JsonArray args) 247var executable = hook["command"] is JsonValue executableValue && executableValue.TryGetValue<string>(out var executableText)
Agents\McpConfigFileHelper.cs (6)
104var serverContainer = config[serverContainerKey]; 116if (config[serverContainerKey] is not JsonObject servers || servers["aspire"] is not JsonObject aspire) 124if (MatchesArgument(aspire["command"], "aspire") && 125aspire["args"] is JsonArray { Count: 2 } args && 130else if (aspire["command"] is JsonArray { Count: 3 } command &&
Agents\OpenCode\OpenCodeAgentClient.cs (4)
166(aspire["type"] is JsonValue type && 182var root = native ? config["mcp"]!.AsObject() : config; 211(AspireSkillsRemoteConfiguration.String(server["type"]) is "local" or "remote" || 212server["enabled"] is JsonValue enabled && enabled.TryGetValue<bool>(out _));
Commands\InitCommand.cs (14)
600if (settings["appHost"] is not JsonObject appHost) 610if (language is not null && appHost["language"] is null) 620if (!string.IsNullOrEmpty(channel) && settings["channel"] is null) 635var existingProfilesObject = settings["profiles"] as JsonObject; 761if (profiles["https"] is not JsonObject https || profiles["http"] is not JsonObject http) 766var httpsEnv = https["environmentVariables"] as JsonObject; 767var httpEnv = http["environmentVariables"] as JsonObject; 773if (!TryParseHostPort(https["applicationUrl"]?.GetValue<string>(), "https", out var dashboardHttps) 774|| !TryParseHostPort(http["applicationUrl"]?.GetValue<string>(), "http", out var dashboardHttp) 775|| !TryParseHostPort(httpsEnv[KnownConfigNames.DashboardOtlpGrpcEndpointUrl]?.GetValue<string>(), "https", out var otlpHttps) 776|| !TryParseHostPort(httpEnv[KnownConfigNames.DashboardOtlpGrpcEndpointUrl]?.GetValue<string>(), "http", out var otlpHttp) 777|| !TryParseHostPort(httpsEnv[KnownConfigNames.ResourceServiceEndpointUrl]?.GetValue<string>(), "https", out var resourceServiceHttps) 778|| !TryParseHostPort(httpEnv[KnownConfigNames.ResourceServiceEndpointUrl]?.GetValue<string>(), "http", out var resourceServiceHttp))
Configuration\ConfigurationService.cs (1)
289if (settings.ContainsKey(partialKey) && settings[partialKey] is not JsonObject)
Migrations\TypeScriptAppHostMigration.cs (4)
201root["appHost"] is not JsonObject appHost || 202appHost["path"] is not JsonValue pathValue || 249root["include"] is not JsonArray include) 289root["scripts"] is not JsonObject scripts)
Npm\SigstoreNpmProvenanceChecker.cs (2)
211var predicateTypeNode = attestationObj["predicateType"]; 232var bundleNode = attestationObj["bundle"];
Projects\NativeProviderDescriptor.cs (5)
21descriptor["protocolVersion"] is not JsonValue version || !version.TryGetValue<int>(out var number) || number != 2 || 22descriptor["sdkFiles"] is not JsonObject { Count: <= 128 } files || 23descriptor["exports"] is not JsonArray { Count: <= 128 } exports) 29return new(ReadString(descriptor["packageName"]), ReadString(descriptor["metadata"]),
Projects\RepositoryToolUpdater.cs (5)
286var isRoot = !isNpm && content["isRoot"]?.GetValue<bool>() == true; 292if (content[section] is JsonObject dependencies && dependencies[NpmPackageId] is { } version) 298else if (content["tools"] is JsonObject tools) 304references.Add(new(properties, "version", properties["version"]?.GetValue<string>() ?? throw new JsonException("Missing tool version.")));
Scaffolding\PackageJsonMerger.cs (13)
97var scaffoldScripts = scaffold[ScriptsKey]?.AsObject(); 123var targetValue = existing[key]; 164else if (existingScripts[name] is not null) 207if (scripts[unprefixed] is null) 222var scaffoldDeps = scaffold[sectionName]?.AsObject(); 237var existingVersionNode = existingDeps[packageName]; 264if (existing[sectionName] is not JsonObject existingDeps) 269var existingVersionNode = existingDeps[packageName]; 293var scaffoldEngines = scaffold[EnginesKey]?.AsObject(); 313else if (existingEngines[key] is null) 334var targetValue = target[key]; 350if (parent[propertyName] is JsonObject obj) 355if (parent[propertyName] is not null)
Scaffolding\ScaffoldingService.cs (4)
387if (parent[propertyName] is JsonObject obj) 415if (scripts[scriptName] is JsonValue existingScriptValue && 422if (scripts[scriptName] is not null) 678if (existing[key] is not { } existingValue)
Templating\TemplateSourceConfiguration.cs (5)
160if (parts.Length > 1 && settings[parts[0]] is JsonObject sources) 163if (parts.Length > 2 && sources[parts[1]] is JsonObject source) 189if (settings[parts[0]] is { } templates && templates is not JsonObject) 193if (parts.Length == 3 && settings[parts[0]]?[parts[1]] is JsonValue) 209using var document = JsonDocument.Parse(settings[parts[0]]![parts[1]]!.ToJsonString());
Utils\ConfigurationHelper.cs (3)
749|| (existing.Parent[existing.Key] is null && property.Value is not null)) 772var child = parent[key]; 791if (ResolveProperty(key) is not { } property || property.Parent[property.Key] is not null)
Aspire.Cli.EndToEnd.Tests (74)
ConfigSourceTests.cs (1)
30Assert.Equal("""{"custom":"keep"}""", configuration["docs"]!.ToJsonString());
CSharpInitTests.cs (4)
128Assert.Equal("apphost.cs", config["appHost"]?["path"]?.GetValue<string>()); 143Assert.Empty(Assert.IsType<JsonArray>(description["resources"])); 198var appHostNode = config["appHost"]; 204var language = appHostNode["language"]?.GetValue<string>();
CustomTemplateTests.cs (5)
45var greeting = config["symbols"]!["Greeting"]!; 105Assert.Equal(sourceLocation, listed["company"]!["path"]!.GetValue<string>()); 106Assert.Equal("https://example.test/templates", listed["git-example"]!["repository"]!.GetValue<string>()); 107Assert.Equal("main", listed["git-example"]!["ref"]!.GetValue<string>()); 108Assert.Equal("templates", listed["git-example"]!["path"]!.GetValue<string>());
Helpers\ConfigSourceTestContext.cs (16)
74Assert.Null(configuration["configSource"]); 75Assert.Equal("https://local.example/llms.txt", configuration["docs"]!["llmsTxtUrl"]!.GetValue<string>()); 91Assert.Equal("SourceApp.AppHost.csproj", configuration["appHost"]!["path"]!.GetValue<string>()); 128Assert.True(configuration["configSource"]!["optOut"]!.GetValue<bool>()); 129Assert.Null(configuration["skillSources"]); 130Assert.Equal("""{"custom":"keep"}""", configuration["docs"]!.ToJsonString()); 170Assert.Equal(_repository, configuration["configSource"]!["repository"]!.GetValue<string>()); 171Assert.Equal("teams/platform.json", configuration["configSource"]!["path"]!.GetValue<string>()); 172Assert.Equal("main", configuration["configSource"]!["ref"]!.GetValue<string>()); 250var appHostPath = configuration["appHost"]!["path"]!.GetValue<string>(); 312original["skillSources"] = actual["skillSources"]!.DeepClone(); 313original["configSource"] = actual["configSource"]!.DeepClone(); 322original["skillSources"] = actual["skillSources"]!.DeepClone(); 323original["configSource"]!["appliedVersion"] = version; 427Assert.True(JsonNode.DeepEquals(expectedSources, config["skillSources"])); 428Assert.Equal(appliedVersion, config["configSource"]!["appliedVersion"]!.GetValue<string>());
Helpers\IntegrationHostLifetimeTestHelper.cs (2)
104config["features"]!.AsObject()["experimentalHostingIntegrations"] = true; 106var packages = config["packages"]!.AsObject();
ProjectReferenceTests.cs (2)
79var packages = config["packages"] as JsonObject ?? new JsonObject(); 316var packages = config["packages"] as JsonObject ?? new JsonObject();
RepositoryToolUpdateTests.cs (4)
198expectedDotnet["tools"]!["aspire.cli"]!["version"] = dotnetVersion; 203expectedNpm["dependencies"]!["@microsoft/aspire-cli"] = npmVersion; 204expectedNpm["devDependencies"]!["@microsoft/aspire-cli"] = "^" + npmVersion; 205expectedNpm["optionalDependencies"]!["@microsoft/aspire-cli"] = "~" + npmVersion;
SelfUpdateChannelPersistenceTests.cs (1)
113Assert.Equal("staging", updatedConfig["channel"]?.GetValue<string>());
SingleFileAppHostInitDotnetRunTests.cs (6)
89var httpsProfile = runJson["profiles"]?["https"]?.AsObject(); 91Assert.Equal("Project", httpsProfile["commandName"]?.GetValue<string>()); 92Assert.False(string.IsNullOrWhiteSpace(httpsProfile["applicationUrl"]?.GetValue<string>())); 93var httpsEnv = httpsProfile["environmentVariables"]?.AsObject(); 95Assert.False(string.IsNullOrWhiteSpace(httpsEnv["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]?.GetValue<string>())); 96Assert.False(string.IsNullOrWhiteSpace(httpsEnv["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]?.GetValue<string>()));
TypeScriptLegacyAppHostTests.cs (1)
136var appHost = configJson["appHost"]!.AsObject();
TypeScriptMigrateAppHostTests.cs (2)
124var appHost = configJson["appHost"]!.AsObject(); 216var includes = tsconfig["include"]!.AsArray().Select(n => n!.GetValue<string>()).ToArray();
TypeScriptPolyglotTests.cs (30)
449var scripts = packageJson["scripts"]!.AsObject(); 450originalDevScript = scripts["dev"]?.GetValue<string>(); 451originalBuildScript = scripts["build"]?.GetValue<string>(); 452originalPreviewScript = scripts["preview"]?.GetValue<string>(); 453originalPackageType = packageJson["type"]?.GetValue<string>(); 480scripts = packageJson["scripts"]!.AsObject(); 482Assert.Equal(originalDevScript, scripts["dev"]?.GetValue<string>()); 483Assert.Equal(originalBuildScript, scripts["build"]?.GetValue<string>()); 484Assert.Equal(originalPreviewScript, scripts["preview"]?.GetValue<string>()); 485Assert.Equal("custom-apphost-start", scripts["aspire:start"]?.GetValue<string>()); 486Assert.Equal("npm --prefix aspire-apphost run aspire:build", scripts["aspire:build"]?.GetValue<string>()); 487Assert.Equal("npm --prefix aspire-apphost run aspire:dev", scripts["aspire:dev"]?.GetValue<string>()); 488Assert.Equal(originalPackageType, packageJson["type"]?.GetValue<string>()); 490var rootDependencies = packageJson["dependencies"]?.AsObject(); 491var rootDevDependencies = packageJson["devDependencies"]?.AsObject(); 505var appHostScripts = appHostPackageJson["scripts"]!.AsObject(); 506var appHostDependencies = appHostPackageJson["dependencies"]!.AsObject(); 507var appHostDevDependencies = appHostPackageJson["devDependencies"]!.AsObject(); 508Assert.Equal("module", appHostPackageJson["type"]?.GetValue<string>()); 509Assert.Equal("aspire-apphost", appHostPackageJson["name"]?.GetValue<string>()); 510Assert.Equal("aspire run", appHostScripts["aspire:start"]?.GetValue<string>()); 511Assert.NotNull(appHostDependencies["vscode-jsonrpc"]); 512Assert.NotNull(appHostDevDependencies["@types/node"]); 513Assert.NotNull(appHostDevDependencies["nodemon"]); 514Assert.NotNull(appHostDevDependencies["tsx"]); 515Assert.NotNull(appHostDevDependencies["typescript"]); 521var appHost = config["appHost"]!.AsObject(); 522Assert.Equal("aspire-apphost/apphost.mts", appHost["path"]?.GetValue<string>()); 523var packagesNode = config["packages"]; 526Assert.NotNull(packages["Aspire.Hosting.JavaScript"]);
Aspire.Cli.Tests (464)
Agents\AgentConfigurationTests.cs (6)
42Assert.True((bool)inline["nested"]!["value"]!); 43Assert.Equal(["one"], inline["items"]!.AsArray().Select(value => (string)value!)); 315Assert.NotEqual(published["skills"] is not null, published["mcp"] is not null); 659Assert.True(JsonNode.DeepEquals(JsonNode.Parse(source), settings["extraKnownMarketplaces"]!["aspire-skills"]!["source"])); 660Assert.True(settings["enabledPlugins"]!["aspire@aspire-skills"]!.GetValue<bool>());
Agents\OpenCodeAgentClientTests.cs (7)
36config["skills"]!["urls"]!.AsArray().Select(value => (string)value!)); 226var skills = Assert.IsType<JsonObject>(configured["skills"]); 228skills["urls"]!.AsArray().Select(value => (string)value!)); 229Assert.True(JsonNode.DeepEquals(original["mcp"], configured["mcp"])); 230Assert.True(JsonNode.DeepEquals(original["skills"]?["paths"], skills["paths"]));
Agents\TelemetryHookConfiguratorTests.cs (20)
34Assert.Equal(1, (int)root["version"]!); 36var entry = root["hooks"]!["postToolUse"]!.AsArray()[0]!.AsObject(); 37Assert.Equal("command", (string)entry["type"]!); 39Assert.Equal(30, (int)entry["timeoutSec"]!); 41Assert.Equal(command, (string)entry["exec"]!); 42Assert.Equal(args, entry["args"]!.AsArray().Select(arg => (string)arg!)); 123Assert.Equal("command", (string)entry["type"]!); 124Assert.Equal(30, (int)entry["timeout"]!); 127Assert.Equal(command, (string)entry["command"]!); 128Assert.Equal(args, entry["args"]!.AsArray().Select(arg => (string)arg!)); 177Assert.Equal("claude-opus", (string)root["model"]!); 179var postToolUse = root["hooks"]!["PostToolUse"]!.AsArray(); 274&& hook["args"]!.AsArray().Select(arg => (string)arg!).SequenceEqual(args)); 336return root["hooks"]!["PostToolUse"]!.AsArray(); 344&& obj["hooks"] is JsonArray hooks 351&& (JsonValueHasTelemetryScript(ho["command"]) 352|| (ho["args"] is JsonArray args && args.Any(JsonValueHasTelemetryScript))); 359&& obj["hooks"] is JsonArray hooks 361&& ho["command"] is JsonValue v 368if (group is JsonObject obj && obj["hooks"] is JsonArray hooks)
Commands\AgentInitCommandTests.cs (18)
1057Assert.Null(openCodeConfig["mcp"]); 1093Assert.Null(openCodeConfig["mcp"]); 1546Assert.True(JsonNode.DeepEquals(original["mcp"], configured["mcp"])); 1549Assert.Equal(["./team-skills"], configured["skills"]!["paths"]!.AsArray().Select(value => (string)value!)); 1551var sources = array ? configured["skills"]!.AsArray() : configured["skills"]!["urls"]!.AsArray(); 1593var sources = array ? config["skills"]!.AsArray() : config["skills"]!["urls"]!.AsArray(); 1598Assert.Null(config["mcp"]); 1662Assert.Equal([true], config["skills"]!.AsArray().Select(value => (bool)value!)); 1663var server = config["mcp"]!["servers"]!["aspire"]!; 1664Assert.Equal(["aspire", "agent", "mcp"], server["command"]!.AsArray().Select(value => (string)value!)); 1665Assert.False((bool)server["disabled"]!); 1666Assert.Equal(["servers"], config["mcp"]!.AsObject().Select(property => property.Key)); 1671var server = config["mcpServers"]!["aspire"]!; 1672Assert.Equal("aspire", (string?)server["command"]); 1673Assert.Equal(["agent", "mcp"], server["args"]!.AsArray().Select(value => (string?)value));
Commands\ConfigCommandTests.cs (39)
147Assert.Equal("bar", settings["foo"]?.ToString()); 188Assert.True(settings["docs"] is JsonObject); 189var docsObject = settings["docs"]!.AsObject(); 190Assert.Equal("http://localhost:4321/llms-small.txt", docsObject["llmsTxtUrl"]?.ToString()); 191Assert.True(docsObject["api"] is JsonObject); 192Assert.Equal("http://localhost:4321/sitemap-0.xml", docsObject["api"]?["sitemapUrl"]?.ToString()); 220Assert.Equal("firefox=/profiles/firefox", settings["certificates"]?["nssDbPaths"]?.ToString()); 260Assert.Equal(image, settings["containerTunnel"]?["baseImage"]?.ToString()); 301Assert.True(settings["foo"] is JsonObject); 302var fooObject = settings["foo"]!.AsObject(); 303Assert.Equal("baz", fooObject["bar"]?.ToString()); 327Assert.True(settings["foo"] is JsonObject); 328var fooObject = settings["foo"]!.AsObject(); 329Assert.True(fooObject["bar"] is JsonObject); 330var barObject = fooObject["bar"]!.AsObject(); 331Assert.Equal("hello", barObject["baz"]?.ToString()); 359Assert.True(settings["foo"] is JsonObject); 360var fooObject = settings["foo"]!.AsObject(); 361Assert.Equal("nested", fooObject["bar"]?.ToString()); 869Assert.True(settings["features"] is JsonObject); 870var featuresObject = settings["features"]!.AsObject(); 871Assert.Equal("true", featuresObject["polyglotSupportEnabled"]?.ToString()); 895var features = Assert.IsType<JsonObject>(json["features"]); 949Assert.True(settings["features"] is JsonObject); 950var featuresObject = settings["features"]!.AsObject(); 951Assert.Equal("false", featuresObject["polyglotSupportEnabled"]?.ToString()); 980Assert.True(settings["features"] is JsonObject); 981var featuresObject = settings["features"]!.AsObject(); 982Assert.Equal("false", featuresObject["polyglotSupportEnabled"]?.ToString()); 1040Assert.True(settings["features"] is JsonObject); 1041var featuresObject = settings["features"]!.AsObject(); 1042Assert.Equal("false", featuresObject["polyglotSupportEnabled"]?.ToString()); 1073var featuresObject = settings["features"]!.AsObject(); 1074Assert.Equal("nested-value", featuresObject["polyglotSupportEnabled"]?.ToString()); 1099var appHost = settings["appHost"]?.AsObject(); 1101Assert.Equal("AppHost.csproj", appHost["path"]?.ToString()); 1129Assert.Equal("daily", settings["channel"]?.ToString()); 1130var appHost = settings["appHost"]?.AsObject(); 1132Assert.Equal("AppHost.csproj", appHost["path"]?.ToString());
Commands\ConfigSourceCommandTests.cs (8)
345var binding = configuration["configSource"]!.AsObject(); 670Assert.Equal("keep", configuration["custom"]!.GetValue<string>()); 671Assert.Equal(accepted ? "example/team" : null, configuration["skillSources"]?["team"]?["repository"]?.GetValue<string>()); 672Assert.Equal("https://local.example/llms.txt", configuration["docs"]!["llmsTxtUrl"]!.GetValue<string>()); 1035Assert.Equal(accepted ? "example/team" : null, configuration["skillSources"]?["team"]?["repository"]?.GetValue<string>()); 1053Assert.Equal(accepted ? "example/team" : null, configuration["skillSources"]?["team"]?["repository"]?.GetValue<string>()); 1080Assert.Equal("example/local", configuration["skillSources"]!["team"]!["repository"]!.GetValue<string>()); 1081Assert.Equivalent(s_source, configuration["configSource"]!.Deserialize(JsonSourceGenerationContext.Default.ConfigSource), strict: true);
Commands\GoAppHostToolingCheckTests.cs (8)
57Assert.Equal(KnownLanguageId.Go, result.Metadata["language"]?.GetValue<string>()); 58Assert.Equal(expectedVersion, result.Metadata["version"]?.GetValue<string>()); 59Assert.Equal(appHostFile.FullName, result.Metadata["appHostPath"]?.GetValue<string>()); 74Assert.Equal(appHostFile.FullName, result.Metadata["appHostPath"]?.GetValue<string>()); 137Assert.Equal(appHostFile.FullName, result.Metadata["appHostPath"]?.GetValue<string>()); 173Assert.Equal(KnownLanguageId.Go, result.Metadata["language"]?.GetValue<string>()); 191Assert.Equal("1.24.1", result.Metadata["version"]?.GetValue<string>()); 376Assert.Null(result.Metadata["version"]);
Commands\InitCommandTests.cs (50)
309Assert.Equal("apphost.cs", config["appHost"]!["path"]!.GetValue<string>()); 351var appHost = config["appHost"]!.AsObject(); 352Assert.Equal("apphost.cs", appHost["path"]!.GetValue<string>()); 353Assert.Null(appHost["language"]); 396var profiles = runJson["profiles"]!.AsObject(); 398var https = profiles["https"]!.AsObject(); 399Assert.Equal("Project", https["commandName"]!.GetValue<string>()); 400Assert.True(https["dotnetRunMessages"]!.GetValue<bool>()); 401var httpsUrls = https["applicationUrl"]!.GetValue<string>(); 403var httpsEnv = https["environmentVariables"]!.AsObject(); 404Assert.Equal("Development", httpsEnv[KnownAspNetCoreConfigNames.Environment]!.GetValue<string>()); 405Assert.Equal("Development", httpsEnv[KnownAspNetCoreConfigNames.DotNetEnvironment]!.GetValue<string>()); 406Assert.StartsWith("https://localhost:", httpsEnv["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 407Assert.StartsWith("https://localhost:", httpsEnv["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>()); 409var http = profiles["http"]!.AsObject(); 410Assert.Equal("Project", http["commandName"]!.GetValue<string>()); 411var httpEnv = http["environmentVariables"]!.AsObject(); 412Assert.Equal("Development", httpEnv[KnownAspNetCoreConfigNames.Environment]!.GetValue<string>()); 413Assert.StartsWith("http://localhost:", httpEnv["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 414Assert.StartsWith("http://localhost:", httpEnv["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>()); 415Assert.Equal("true", httpEnv["ASPIRE_ALLOW_UNSECURED_TRANSPORT"]!.GetValue<string>()); 420var aspireProfiles = aspireConfig["profiles"]!.AsObject(); 422aspireProfiles["https"]!["applicationUrl"]!.GetValue<string>(), 425aspireProfiles["http"]!["applicationUrl"]!.GetValue<string>(), 426http["applicationUrl"]!.GetValue<string>()); 474var profiles = runJson["profiles"]!.AsObject(); 475var https = profiles["https"]!.AsObject(); 476var http = profiles["http"]!.AsObject(); 478Assert.Equal("https://localhost:18000;http://localhost:18001", https["applicationUrl"]!.GetValue<string>()); 479Assert.Equal("https://localhost:18002", https["environmentVariables"]!["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 480Assert.Equal("https://localhost:18003", https["environmentVariables"]!["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>()); 481Assert.Equal("http://localhost:18001", http["applicationUrl"]!.GetValue<string>()); 482Assert.Equal("http://localhost:18005", http["environmentVariables"]!["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 483Assert.Equal("http://localhost:18006", http["environmentVariables"]!["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>()); 527var preservedProfiles = aspireConfig["profiles"]!.AsObject(); 529var preservedHttps = preservedProfiles["https"]!.AsObject(); 530Assert.Equal("https://localhost:18000", preservedHttps["applicationUrl"]!.GetValue<string>()); 531var preservedEnv = preservedHttps["environmentVariables"]!.AsObject(); 532Assert.Equal("custom-value", preservedEnv["MY_CUSTOM_VAR"]!.GetValue<string>()); 666var appHost = config["appHost"]!.AsObject(); 667Assert.Equal("apphost.mts", appHost["path"]!.GetValue<string>()); 668Assert.Equal("typescript/nodejs", appHost["language"]!.GetValue<string>()); 940Assert.Equal("apphost.cs", merged["appHost"]!.AsObject()["path"]!.GetValue<string>()); 942Assert.Equal("stable", merged["channel"]!.GetValue<string>()); 943Assert.True(merged["features"]!.AsObject()["polyglotSupportEnabled"]!.GetValue<bool>()); 1409Assert.Null(config["channel"]); 1413Assert.Equal(contextChannel, config["channel"]!.GetValue<string>()); 1446Assert.Equal("pr-99999", config["channel"]!.GetValue<string>()); 1478Assert.Null(config["channel"]); 1522Assert.Null(config["channel"]);
Commands\NewCommandLocalTemplateTests.NuGetValues.cs (8)
275template["symbols"]!["Dependent"] = new JsonObject 305template["symbols"]!["IncludeIntegration"] = new JsonObject 309template["symbols"]!["IntegrationVersion"]!["isEnabled"] = "(IncludeIntegration)"; 351definition["symbols"]!["IntegrationVersion"]!["isRequired"] = false; 393var source = host["symbolInfo"]!["IntegrationVersion"]!.DeepClone(); 398template["symbols"]!["IntegrationVersion"]!["datatype"] = datatype; 480template["symbols"]!["KubernetesVersion"] = new JsonObject 490host["symbolInfo"]!["KubernetesVersion"] = JsonNode.Parse("""
Commands\NewCommandLocalTemplateTests.PromptDefaults.cs (20)
128var symbols = template["symbols"]!; 134host["symbolInfo"]!["DisplayName"]!["defaultValueSource"] = "missing"; 143symbols["normalizedName"]!["parameters"]!["source"] = "DisplayName"; 146symbols["normalizedName"]!["parameters"]!["source"] = "shortNameValue"; 149symbols["DisplayName"]!["isRequired"] = true; 152symbols["DisplayName"]!["defaultValue"] = "Static"; 155symbols["displayNameValue"]!["parameters"]!["sourceVariableName"] = "ShortName"; 158symbols["DisplayName"]!["datatype"] = "bool"; 161host["symbolInfo"]!["DisplayName"]!["defaultValueSource"] = true; 164symbols["normalizedName"]!["parameters"]!["source"] = "missing"; 167host["symbolInfo"]!["ShortName"]!["defaultValueSource"] = "normalizedName"; 170symbols["normalizedName"]!["parameters"]!["steps"]![0]!["regex"] = "["; 173host["symbolInfo"]!["DisplayName"]!["valueSource"] = JsonNode.Parse( 179symbols["shortNameValue"]!["parameters"]!["fallbackVariableName"] = "nestedName"; 184symbols["shortNameValue"]!["parameters"]!["fallbackVariableName"] = "nestedName"; 189symbols["shortNameValue"]!["parameters"]!["fallbackVariableName"] = "nestedName"; 192symbols["normalizedName"]!["parameters"]!["source"] = "ShortName"; 197symbols["shortNameValue"]!["parameters"]!["fallbackVariableName"] = "nestedName"; 261var symbols = template["symbols"]!; 264symbols["shortNameValue"]!["parameters"]!["fallbackVariableName"] = "nestedName";
Commands\NewCommandLocalTemplateTests.SourceManagement.cs (13)
203var source = Assert.IsType<JsonObject>(settings["templateSources"]!["company"]); 207Assert.Equal(options[index + 1], source[options[index][2..]]!.GetValue<string>()); 209Assert.Equal("preserved", settings["unrelated"]!.GetValue<string>()); 210Assert.Equal(2, settings["templateSources"]!.AsObject().Count); 215Assert.Equal(["existing"], settings["templateSources"]!.AsObject().Select(entry => entry.Key)); 216Assert.Equal("preserved", settings["unrelated"]!.GetValue<string>()); 326Assert.Equal(["Company"], settings["TemplateSources"]!.AsObject().Select(entry => entry.Key)); 373Assert.True(JsonNode.DeepEquals(settings["templateSources"]!["company"]!["futureFeature"], edited["futureFeature"])); 374Assert.Equal("templates/api", edited[pathField]!.GetValue<string>()); 375Assert.Null(edited[refField]); 382Assert.True(JsonNode.DeepEquals(settings["templateSources"]!["company"]!["futureFeature"], deleted["futureFeature"]));
Commands\OperatingSystemCheckTests.cs (8)
28Assert.Equal("Linux", result.Metadata["osType"]!.GetValue<string>()); 29Assert.Equal("Linux Ubuntu", result.Metadata["displayName"]!.GetValue<string>()); 30Assert.Equal("24.04", result.Metadata["version"]!.GetValue<string>()); 31Assert.Equal("Ubuntu 24.04.2 LTS", result.Metadata["description"]!.GetValue<string>()); 50Assert.Equal("unknown", result.Metadata["osType"]!.GetValue<string>()); 51Assert.Equal("unknown", result.Metadata["displayName"]!.GetValue<string>()); 52Assert.Equal("1.2.3", result.Metadata["version"]!.GetValue<string>()); 53Assert.Equal("Unknown OS description", result.Metadata["description"]!.GetValue<string>());
Commands\ResourceCommandHelperTests.cs (1)
143Assert.Equal("#submit", connection.ExecuteResourceCommandArguments["selector"]!.GetValue<string>());
Commands\SecretCommandTests.cs (5)
378Assert.Equal(42, persisted["Resource:Count"]!.GetValue<int>()); 379Assert.True(persisted["Resource:Enabled"]!.GetValue<bool>()); 380Assert.Equal(1.25, persisted["Resource:Ratio"]!.GetValue<double>()); 382Assert.Null(persisted["Resource:Missing"]); 383Assert.Equal("value", persisted["Resource:Text"]!.GetValue<string>());
Commands\TelemetryTracesCommandTests.cs (2)
141Assert.Equal("abc1234567890def", item["traceId"]!.GetValue<string>()); 143var dashboardUrl = item["dashboardUrl"]!.GetValue<string>();
Commands\UpdateCommandRepositoryToolsTests.cs (5)
54Assert.Equal("^13.4.0", packageJson["devDependencies"]![RepositoryToolUpdater.NpmPackageId]!.GetValue<string>()); 88dotnet["tools"]!["aspire.cli"]!["version"] = "99.0.0"; 91npm["devDependencies"]![RepositoryToolUpdater.NpmPackageId] = "^99.0.0"; 550Assert.Equal(targetVersion, config["sdk"]!["version"]!.GetValue<string>()); 551Assert.Equal("daily", config["channel"]!.GetValue<string>());
Commands\VsCodeExtensionCheckTests.cs (6)
51Assert.True(result.Metadata["vsCodeInstalled"]!.GetValue<bool>()); 52Assert.False(result.Metadata["extensionInstalled"]!.GetValue<bool>()); 53Assert.Equal(VsCodeExtensionCheck.ExtensionId, result.Metadata["extensionId"]!.GetValue<string>()); 80Assert.True(result.Metadata["vsCodeInstalled"]!.GetValue<bool>()); 81Assert.True(result.Metadata["extensionInstalled"]!.GetValue<bool>()); 82Assert.Equal(VsCodeExtensionCheck.ExtensionId, result.Metadata["extensionId"]!.GetValue<string>());
Configuration\ConfigSourceServiceGitTests.cs (9)
392Assert.True(configuration["features"]!["test"]!.GetValue<bool>()); 393Assert.Equal(custom, configuration["custom"]!.GetValue<string>()); 394Assert.Equal("example/first", configuration["SKILLSOURCES"]!["first"]!["repository"]!.GetValue<string>()); 395Assert.Equal("example/second", configuration["SKILLSOURCES"]!["SECOND"]!["repository"]!.GetValue<string>()); 396Assert.Equal("preserved", configuration["SKILLSOURCES"]!["SECOND"]!["custom"]!.GetValue<string>()); 561Assert.Equal("preview", configuration["custom"]!.GetValue<string>()); 579Assert.Equal("pinned", configuration["custom"]!.GetValue<string>()); 703Assert.Equal("original", acquired.Configuration["custom"]!.GetValue<string>()); 717Assert.Equal(selector == "commit" ? "original" : "updated", refreshed.Configuration["custom"]!.GetValue<string>());
Configuration\ConfigSourceServiceTests.cs (12)
69Assert.Equal("template-preview", definition.Value["ref"]!.GetValue<string>()); 70Assert.Equal("templates", definition.Value["path"]!.GetValue<string>()); 274Assert.Equal("version-2", configuration["configSource"]!["appliedVersion"]!.GetValue<string>()); 275Assert.Equal(directory.Name, configuration["custom"]!.GetValue<string>()); 276Assert.Equal("example/updated", configuration["skillSources"]!["team"]!["repository"]!.GetValue<string>()); 608Assert.Equal("preserved", configuration["custom"]!.GetValue<string>()); 610configuration["skillSources"]!["team"]!["repository"]!.GetValue<string>()); 612configuration["configSource"]!["appliedVersion"]!.GetValue<string>()); 1080Assert.Equal(["team"], settings["skillSources"]!.AsObject().Select(p => p.Key)); 1081Assert.Equal(["repository", "arbitrary"], settings["skillSources"]!["team"]!.AsObject().Select(p => p.Key)); 1543Assert.Equal("intervening edit", configuration["custom"]!.GetValue<string>()); 1544Assert.Equal("example/team", configuration["skillSources"]!["team"]!["repository"]!.GetValue<string>());
Configuration\ConfigurationHelperTests.cs (20)
390Assert.Equal(JsonValueKind.True, normalized["features"]!["enabled"]!.GetValueKind()); 391Assert.Equal(JsonValueKind.False, normalized["features"]!["disabled"]!.GetValueKind()); 392Assert.Equal(JsonValueKind.Number, normalized["settings"]!["count"]!.GetValueKind()); 393Assert.Equal(JsonValueKind.Array, normalized["settings"]!["values"]!.GetValueKind()); 394Assert.Equal(JsonValueKind.Object, normalized["settings"]!["object"]!.GetValueKind()); 395Assert.Null(normalized["settings"]!["nullable"]); 667Assert.Equal("preserved", Assert.Single(settings["DOCS"]!.AsObject()).Value!.GetValue<string>()); 671Assert.Equal(i, nested[$"k{i}"]!.GetValue<int>()); 686var docs = settings["DOCS"]!.AsObject(); 688var api = docs["API"]!.AsObject(); 690Assert.Equal(expectedValue, api["SITEMAPURL"]!.GetValue<string>()); 691Assert.Equal("flat", api["other"]!.GetValue<string>()); 741var flatObject = settings["fresh:object"]; 745Assert.NotSame(flatObject, settings["fresh"]!["object"]); 771var retained = settings["keep"]; 772var docs = settings["DOCS"]; 776Assert.Same(retained, settings["keep"]); 777Assert.Same(docs, settings["DOCS"]); 818Assert.Equal(i, properties[$"k{i}"]!.GetValue<int>()); 821Assert.Equal(-i, properties[$"x{i}"]!.GetValue<int>());
Configuration\ConfigurationServiceTests.cs (5)
124Assert.Equal(mutation == "delete" ? null : mutation == "set" ? "updated" : "original", settings["custom"]?.GetValue<string>()); 130}, settings["templateSources"]?.AsObject().Select(source => source.Key).ToArray() ?? []); 196Assert.Equal("edited", settings["custom"]!.GetValue<string>()); 198Assert.Equal("https://updated.example/llms.txt", settings["docs"]!["llmsTxtUrl"]!.GetValue<string>()); 199Assert.Equal("version-2", settings["configSource"]!["appliedVersion"]!.GetValue<string>());
Mcp\ExecuteResourceCommandToolTests.cs (5)
92Assert.Equal("#submit", connection.ExecuteResourceCommandArguments["selector"]!.GetValue<string>()); 113Assert.Equal("3", connection.ExecuteResourceCommandArguments["count"]!.GetValue<string>()); 114Assert.Equal("true", connection.ExecuteResourceCommandArguments["urgent"]!.GetValue<string>()); 115Assert.Equal("1.5", connection.ExecuteResourceCommandArguments["ratio"]!.GetValue<string>()); 116Assert.Null(connection.ExecuteResourceCommandArguments["optional"]);
Mcp\ListStructuredLogsToolTests.cs (11)
311Assert.Equal("api-service-instance-1", firstLog["resourceName"]?.GetValue<string>()); 312Assert.Equal(42, firstLog["logId"]?.GetValue<long>()); 313var firstLogAttributes = firstLog["attributes"]?.AsObject(); 319Assert.Equal("http://localhost:18888/structuredlogs?logEntryId=42", firstLog["dashboardUrl"]?.GetValue<string>()); 324Assert.Equal("api-service-instance-2", secondLog["resourceName"]?.GetValue<string>()); 325Assert.Equal(43, secondLog["logId"]?.GetValue<long>()); 326var secondLogAttributes = secondLog["attributes"]?.AsObject(); 330Assert.Equal("http://localhost:18888/structuredlogs?logEntryId=43", secondLog["dashboardUrl"]?.GetValue<string>()); 335Assert.Equal("worker-service", thirdLog["resourceName"]?.GetValue<string>()); 336Assert.Equal(44, thirdLog["logId"]?.GetValue<long>()); 338Assert.Equal("http://localhost:18888/structuredlogs?logEntryId=44", thirdLog["dashboardUrl"]?.GetValue<string>());
Mcp\ListTracesToolTests.cs (13)
236Assert.Equal("abc123def456789012345678901234567890", firstTrace["traceId"]?.GetValue<string>()); 239var spans = firstTrace["spans"]?.AsArray(); 244Assert.Equal("http://localhost:18888/traces/detail/abc123def456789012345678901234567890", firstTrace["dashboardUrl"]?.GetValue<string>()); 249Assert.Equal("api-service-instance-1", serverSpan["source"]?.GetValue<string>()); 250Assert.Null(serverSpan["destination"]); 255Assert.Equal("api-service-instance-2", clientSpan["source"]?.GetValue<string>()); 256Assert.Equal("catalog-service", clientSpan["destination"]?.GetValue<string>()); 261Assert.Equal("xyz789abc123456789012345678901234567890", secondTrace["traceId"]?.GetValue<string>()); 263Assert.Equal("http://localhost:18888/traces/detail/xyz789abc123456789012345678901234567890", secondTrace["dashboardUrl"]?.GetValue<string>()); 266var secondTraceSpans = secondTrace["spans"]?.AsArray(); 273Assert.Equal("Internal", internalSpan["kind"]?.GetValue<string>()); 274Assert.Equal("worker-service", internalSpan["source"]?.GetValue<string>()); 275Assert.Null(internalSpan["destination"]);
Migrations\TypeScriptAppHostMigrationTests.cs (7)
62Assert.Equal(KnownLanguageId.TypeScript, descriptor.Metadata["language"]!.GetValue<string>()); 63Assert.Equal(appHostPath, descriptor.Metadata["appHostPath"]!.GetValue<string>()); 190Assert.Equal("apphost.mts", config["appHost"]!["path"]!.GetValue<string>()); 193var includes = tsconfig["include"]!.AsArray().Select(n => n!.GetValue<string>()).ToArray(); 197var scripts = packageJson["scripts"]!; 198Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]!.GetValue<string>()); 199Assert.Equal("eslint apphost.mts", scripts["aspire:lint"]!.GetValue<string>());
Projects\GuestAppHostProjectTests.cs (1)
1291expectedManifest["devDependencies"]!["@microsoft/aspire-cli"] = "2.0.0";
Projects\NativeAppHostServerProjectTests.cs (3)
88Assert.Equal(contract, request["coreContract"]!.GetValue<string>()); 89Directory.CreateDirectory(request["output"]!.GetValue<string>()); 475var output = request["output"]!.GetValue<string>();
Projects\ProjectUpdaterNuGetConfigurationTests.cs (3)
82json["Properties"]![overriddenProperty] = Path.Combine(workspace.WorkspaceRoot.FullName, "custom-policy"); 289json["Properties"]!["RestoreSources"] = "https://restricted.example/v3/index.json"; 673json["Properties"]!["RestoreAdditionalProjectSources"] = "https://additional.example/v3/index.json";
Projects\ProjectUpdaterTests.cs (13)
258document["Items"]!["PackageReference"]!.AsArray()[0]!["DefiningProjectFullPath"] = syntheticProject; 263document["Items"]!["PackageReference"]!.AsArray()[0]!["DefiningProjectFullPath"] = 1167itemsAndProperties["Items"]!["PackageReference"]!.AsArray().Clear(); // Then clear it 1174itemsAndProperties["Items"]!["PackageReference"]!.AsArray().Clear(); // Then clear it 4527properties = root["Properties"]!.AsObject(); 4542items = root["Items"]!.AsObject(); 4561var items = root["Items"]!.AsObject(); 4562var packageReferences = items["PackageReference"]!.AsArray(); 4577var items = root["Items"]!.AsObject(); 4578var packageReferences = items["PackageReference"]!.AsArray(); 4593var items = root["Items"]!.AsObject(); 4594var projectReferences = items["ProjectReference"]!.AsArray(); 4610properties = root["Properties"]!.AsObject();
Scaffolding\PackageJsonMergerTests.cs (100)
57Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 58Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 61Assert.Equal("aspire run", scripts["aspire:dev"]?.GetValue<string>()); 62Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 65Assert.Equal("eslint apphost.ts", scripts["lint"]?.GetValue<string>()); 94Assert.Equal("jest", scripts["test"]?.GetValue<string>()); 97Assert.Equal("aspire run", scripts["dev"]?.GetValue<string>()); 98Assert.Equal("tsc -p tsconfig.apphost.json", scripts["build"]?.GetValue<string>()); 99Assert.Equal("eslint apphost.ts", scripts["lint"]?.GetValue<string>()); 131Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 132Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 135Assert.Equal("custom start", scripts["aspire:start"]?.GetValue<string>()); 136Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 137Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["aspire:dev"]?.GetValue<string>()); 138Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 169Assert.Equal("npm run aspire:start", scripts["start"]?.GetValue<string>()); 170Assert.Equal("npm run aspire:lint", scripts["lint"]?.GetValue<string>()); 173Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 174Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 201Assert.Equal("yarn run aspire:start", scripts["start"]?.GetValue<string>()); 226Assert.Equal("deno task aspire:start", scripts["start"]?.GetValue<string>()); 227Assert.Equal("deno task aspire:dev", scripts["dev"]?.GetValue<string>()); 259Assert.Equal("node server.js", scripts["start"]?.GetValue<string>()); 260Assert.Equal("prettier --check .", scripts["lint"]?.GetValue<string>()); 261Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 262Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 265Assert.Equal("aspire run", scripts["aspire:start"]?.GetValue<string>()); 266Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 267Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 271Assert.Equal("node server.js", scripts["start"]?.GetValue<string>()); 272Assert.Equal("prettier --check .", scripts["lint"]?.GetValue<string>()); 302Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 303Assert.Equal("jest", scripts["test"]?.GetValue<string>()); 306Assert.Equal("aspire run", scripts["aspire:dev"]?.GetValue<string>()); 309Assert.Equal("tsc -p tsconfig.apphost.json", scripts["build"]?.GetValue<string>()); 312Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 313Assert.Equal("npm run aspire:lint", scripts["lint"]?.GetValue<string>()); 395Assert.Equal("my-existing-app", json["name"]?.GetValue<string>()); 396Assert.Equal("3.0.0", json["version"]?.GetValue<string>()); 397Assert.Equal("My cool app", json["description"]?.GetValue<string>()); 398Assert.True(json["private"]?.GetValue<bool>()); 399Assert.Equal("module", json["type"]?.GetValue<string>()); 402Assert.Equal("^20.19.0 || ^22.13.0 || >=24", json["engines"]?["node"]?.GetValue<string>()); 470Assert.Equal("my-app", json["name"]?.GetValue<string>()); 544Assert.Equal("aspire run", scripts["dev"]?.GetValue<string>()); 545Assert.Equal("tsc -p tsconfig.apphost.json", scripts["build"]?.GetValue<string>()); 546Assert.Equal("eslint apphost.ts", scripts["lint"]?.GetValue<string>()); 599var scripts = json["scripts"]!.AsObject(); 602Assert.Equal("vite-project", json["name"]?.GetValue<string>()); 603Assert.Equal("1.0.0", json["version"]?.GetValue<string>()); 606Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 607Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 608Assert.Equal("eslint . --ext .ts,.tsx", scripts["lint"]?.GetValue<string>()); 609Assert.Equal("vite preview", scripts["preview"]?.GetValue<string>()); 612Assert.Equal("aspire run", scripts["aspire:dev"]?.GetValue<string>()); 613Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 614Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 617Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["watch"]?.GetValue<string>()); 660Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 661Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 664Assert.Equal("aspire run", scripts["aspire:start"]?.GetValue<string>()); 665Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 666Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["aspire:dev"]?.GetValue<string>()); 667Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 670Assert.Equal("npm run aspire:start", scripts["start"]?.GetValue<string>()); 671Assert.Equal("npm run aspire:lint", scripts["lint"]?.GetValue<string>()); 674Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 675Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 724Assert.Equal("tsc && vite build", scripts["build"]?.GetValue<string>()); 725Assert.Equal("concurrently \"tsc -w\" \"vite\"", scripts["dev"]?.GetValue<string>()); 726Assert.Equal("vitest run && echo 'done'", scripts["test"]?.GetValue<string>()); 727Assert.Equal("eslint . --ext .ts,.tsx && prettier --check .", scripts["lint"]?.GetValue<string>()); 728Assert.Equal("rm -rf dist && rm -rf node_modules/.cache", scripts["clean"]?.GetValue<string>()); 729Assert.Equal("node server.js | tee output.log", scripts["start"]?.GetValue<string>()); 1173Assert.Equal("^20.19.0 || ^22.13.0 || >=24", engines["node"]?.GetValue<string>()); 1201Assert.Equal("^20.19.0 || ^22.13.0 || >=24", engines["node"]?.GetValue<string>()); 1203Assert.Equal(">=8", engines["npm"]?.GetValue<string>()); 1226Assert.Equal("^20.19.0 || ^22.13.0 || >=24", engines["node"]?.GetValue<string>()); 1250var keywords = doc["keywords"]!.AsArray(); 1255var files = doc["files"]!.AsArray(); 1304Assert.Equal("my-project", doc["name"]!.GetValue<string>()); 1305Assert.Equal("ISC", doc["license"]!.GetValue<string>()); 1308Assert.NotNull(doc["keywords"]); 1309Assert.IsAssignableFrom<JsonArray>(doc["keywords"]); 1312var scripts = doc["scripts"]!.AsObject(); 1318Assert.NotNull(doc["dependencies"]?["vscode-jsonrpc"]); 1319Assert.NotNull(doc["devDependencies"]?["typescript"]); 1322Assert.Contains(">=24", doc["engines"]?["node"]?.GetValue<string>()); 1489Assert.Equal("vite-brownfield", doc["name"]!.GetValue<string>()); 1490Assert.Equal("2.0.0", doc["version"]!.GetValue<string>()); 1491Assert.Equal("module", doc["type"]!.GetValue<string>()); 1494var scripts = doc["scripts"]!.AsObject(); 1495Assert.Equal("vite", scripts["dev"]?.GetValue<string>()); 1496Assert.Equal("vite build", scripts["build"]?.GetValue<string>()); 1497Assert.Equal("vite preview", scripts["preview"]?.GetValue<string>()); 1500Assert.Equal("aspire run", scripts["aspire:start"]?.GetValue<string>()); 1501Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 1502Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["aspire:dev"]?.GetValue<string>()); 1503Assert.Equal("eslint apphost.ts", scripts["aspire:lint"]?.GetValue<string>()); 1518Assert.Contains(">=24", doc["engines"]?["node"]?.GetValue<string>());
Scaffolding\ScaffoldingServiceTests.cs (19)
127Assert.Equal("vitest", scripts["test"]?.GetValue<string>()); 128Assert.Equal("pnpm --dir apps/web/aspire-apphost run aspire:start", scripts["aspire:start"]?.GetValue<string>()); 129Assert.Equal("pnpm --dir apps/web/aspire-apphost run aspire:build", scripts["aspire:build"]?.GetValue<string>()); 130Assert.Equal("pnpm --dir apps/web/aspire-apphost run aspire:dev", scripts["aspire:dev"]?.GetValue<string>()); 144Assert.Equal("deno task --cwd apps/web/aspire-apphost aspire:start", scripts["aspire:start"]?.GetValue<string>()); 145Assert.Equal("deno task --cwd apps/web/aspire-apphost aspire:build", scripts["aspire:build"]?.GetValue<string>()); 146Assert.Equal("deno task --cwd apps/web/aspire-apphost aspire:dev", scripts["aspire:dev"]?.GetValue<string>()); 169Assert.Equal("pnpm --dir aspire-apphost run aspire:start", scripts["aspire:start"]?.GetValue<string>()); 170Assert.Equal("pnpm --dir aspire-apphost run aspire:build", scripts["aspire:build"]?.GetValue<string>()); 171Assert.Equal("pnpm --dir aspire-apphost run aspire:dev", scripts["aspire:dev"]?.GetValue<string>()); 195Assert.Equal("custom-start", scripts["aspire:start"]?.GetValue<string>()); 196Assert.Equal("npm --prefix aspire-apphost run aspire:build", scripts["aspire:build"]?.GetValue<string>()); 197Assert.Equal("npm --prefix aspire-apphost run aspire:dev", scripts["aspire:dev"]?.GetValue<string>()); 324Assert.True(merged["editor.formatOnSave"]!.GetValue<bool>()); 326Assert.Equal("automatic", merged["java.compile.nullAnalysis.mode"]!.GetValue<string>()); 327Assert.Equal([".", ".aspire/modules"], merged["java.project.sourcePaths"]!.AsArray().Select(v => v!.GetValue<string>())); 349merged["java.project.sourcePaths"]!.AsArray().Select(v => v!.GetValue<string>())); 371Assert.Equal(4, merged["editor.tabSize"]!.GetValue<int>()); 372Assert.Equal(["."], merged["java.project.sourcePaths"]!.AsArray().Select(v => v!.GetValue<string>()));
Secrets\SecretStoreResolverTests.cs (7)
171Assert.Equal(42, persisted["Resource:Count"]!.GetValue<int>()); 172Assert.True(persisted["Resource:Enabled"]!.GetValue<bool>()); 173Assert.Equal(1.25, persisted["Resource:Ratio"]!.GetValue<double>()); 175Assert.Null(persisted["Resource:Missing"]); 176Assert.Equal(7, persisted["Canonical:Count"]!.GetValue<int>()); 177Assert.False(persisted["Canonical:Enabled"]!.GetValue<bool>()); 179Assert.Null(persisted["Canonical:Missing"]);
Telemetry\ReportedLogExportTests.cs (5)
88var data = envelope["data"]!; 89var baseData = data["baseData"]!; 90switch (data["baseType"]!.GetValue<string>()) 93baseData["properties"]!["service.instance.id"] = "instance-id"; 94baseData["properties"]!["service.version"] = "cli-version";
Utils\DevCertsCheckTests.cs (6)
305var certificates = devCertsResult.Metadata["certificates"]!.AsArray(); 309Assert.Equal("AAAA1111BBBB2222", certNode["thumbprint"]!.GetValue<string>()); 310Assert.Equal(MinVersion, certNode["version"]!.GetValue<int>()); 311Assert.Equal("full", certNode["trustLevel"]!.GetValue<string>()); 312Assert.NotNull(certNode["notBefore"]); 313Assert.NotNull(certNode["notAfter"]);
Utils\EnvironmentCheckerTests.cs (1)
62Assert.Equal(0.1, timeoutResult.Metadata["timeoutSeconds"]!.GetValue<double>());
Aspire.Dashboard (10)
Model\GenAI\GenAISchemaHelpers.cs (6)
22Type = ParseTypeValue(schemaObj["type"]), 23Description = schemaObj["description"]?.GetValue<string>() 27if (schemaObj["properties"] is JsonObject propsObj) 40if (schemaObj["items"] is JsonObject itemsObj) 46if (schemaObj["required"] is JsonArray requiredArray) 59if (schemaObj["enum"] is JsonArray enumArray)
Model\GenAI\GenAIVisualizerDialogViewModel.cs (4)
104Type = obj["type"]?.GetValue<string>() ?? "function", 105Name = obj["name"]?.GetValue<string>(), 106Description = obj["description"]?.GetValue<string>() 110if (obj["parameters"] is JsonObject paramsObj)
Aspire.Dashboard.Tests (6)
Model\GenAIMessageParsingHelperTests.cs (4)
138Assert.Equal("Seattle", toolCallPart.Arguments["location"]!.GetValue<string>()); 153Assert.Equal("Seattle", toolCallPart.Arguments["location"]!.GetValue<string>()); 246Assert.Equal("latest news", serverToolCallPart.ServerToolCall["query"]!.GetValue<string>()); 261Assert.Equal("web_search", serverToolCallResponsePart.ServerToolCallResponse["type"]!.GetValue<string>());
Model\TelemetryExportServiceTests.cs (2)
1436Assert.Equal("localhost", connectionPropertiesObject["Host"]?.GetValue<string>()); 1437Assert.Equal("catalogdb", connectionPropertiesObject["DatabaseName"]?.GetValue<string>());
Aspire.Hosting (18)
Dcp\JsonPatch.cs (2)
32operation["op"] is not JsonValue operationValue || 33operation["path"] is not JsonValue pathValue ||
Devcontainers\DevcontainerSettingsWriter.cs (1)
148let l = attrs["label"]?.ToString()
Pipelines\Internal\FileDeploymentStateManager.cs (5)
439target[name] is JsonObject targetObject) 745var legacyFallbackDisabled = migrationState[LegacyFallbackDisabledProperty]?.GetValue<bool>() ?? false; 746var legacyStateSnapshot = migrationState[LegacyStateProperty] switch 752var claimedSectionNames = migrationState[ClaimedSectionsProperty] switch 758var currentState = migrationState[CurrentStateProperty] switch
Publishing\ContainerImageArchiveRewriter.cs (1)
342if (index["manifests"] is not JsonArray manifests)
Publishing\ContainerRuntimeBase.cs (9)
195ReadStringArray(root["Entrypoint"]), 196ReadStringArray(root["Cmd"]), 197root["WorkingDir"]?.GetValue<string>()); 251if (TryCreateManifest(item["Descriptor"] as JsonObject, operatingSystem, architecture, out var manifest)) 265if (manifestObject["manifests"] is JsonArray manifests) 278var descriptor = manifestObject["Descriptor"] as JsonObject ?? 279manifestObject["descriptor"] as JsonObject ?? 307var platform = descriptor["platform"] as JsonObject; 310var digest = descriptor["digest"]?.GetValue<string>();
Aspire.Hosting.Azure (76)
AzureEnvironmentResource.cs (2)
247var resourceGroupName = azureStateSection.Data["ResourceGroup"]?.ToString(); 248var subscriptionId = azureStateSection.Data["SubscriptionId"]?.ToString();
AzureProvisioningController.cs (25)
1929var outputs = ParseDeploymentStateJson(resource.Name, "Outputs", section.Data["Outputs"]?.GetValue<string>()); 1951var subscriptionId = section.Data["SubscriptionId"]?.GetValue<string>(); 1952var resourceGroupName = section.Data["ResourceGroup"]?.GetValue<string>(); 2628var deploymentId = section.Data["Id"]?.GetValue<string>(); 2632var outputs = ParseDeploymentStateJson(resource.Name, "Outputs", section.Data["Outputs"]?.GetValue<string>()); 2642["locationOverride"] = section.Data[LocationOverrideKey]?.GetValue<string>(), 2643["checksum"] = section.Data["CheckSum"]?.GetValue<string>(), 2645["scope"] = ParseDeploymentStateJson(resource.Name, "Scope", section.Data["Scope"]?.GetValue<string>()) 2651if (section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>() is { Length: > 0 } provisioningState) 2816json["azureContext"]!.AsObject()["tenantResourceSuffix"] = suffix; 2871if (section.Data[LocationOverrideKey]?.GetValue<string>() is { Length: > 0 } locationOverride) 2890if (section.Data[LocationOverrideKey]?.GetValue<string>() is { Length: > 0 } locationOverride) 3218=> section.Data["Id"]?.GetValue<string>() is { Length: > 0 } deploymentId ? deploymentId : null; 3222section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>(), 3283if (section.Data["Parameters"]?.GetValue<string>() is not { Length: > 0 } parametersJson) 3314=> section.Data[LocationOverrideKey]?.GetValue<string>() is { Length: > 0 } locationOverride ? locationOverride : null; 3497section.Data["SubscriptionId"]?.GetValue<string>() ?? provisionerOptions.Value.SubscriptionId ?? configuration["Azure:SubscriptionId"], 3498section.Data["ResourceGroup"]?.GetValue<string>() ?? provisionerOptions.Value.ResourceGroup ?? configuration["Azure:ResourceGroup"], 3499section.Data["Location"]?.GetValue<string>() ?? provisionerOptions.Value.Location ?? configuration["Azure:Location"], 3500section.Data["TenantId"]?.GetValue<string>() ?? provisionerOptions.Value.TenantId ?? configuration["Azure:TenantId"], 3501section.Data["Tenant"]?.GetValue<string>()); 3519if (section.Data["Outputs"]?.GetValue<string>() is not { Length: > 0 } outputsJson) 3638if (section.Data[LocationOverrideKey]?.GetValue<string>() is { Length: > 0 } locationOverride) 3645if (section.Data["Parameters"]?.GetValue<string>() is not { Length: > 0 } parametersJson) 3946section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>(),
AzureProvisioningFailureDetails.cs (21)
592if (responseObj["error"] is JsonObject errorObj) 597if (responseObj["properties"] is JsonObject propertiesObj && 598propertiesObj["error"] is JsonObject deploymentErrorObj) 603if (responseObj["properties"] is JsonObject operationPropertiesObj && 604operationPropertiesObj["statusMessage"] is JsonObject statusMessageObj && 605statusMessageObj["error"] is JsonObject statusMessageErrorObj) 622if (errorObj["details"] is JsonArray detailsArray) 674var code = StringUtils.FirstNonEmpty(errorObj["code"]?.ToString(), errorObj["errorCode"]?.ToString()); 675var message = StringUtils.FirstNonEmpty(errorObj["message"]?.ToString(), errorObj["errorMessage"]?.ToString()); 676var operation = StringUtils.FirstNonEmpty(errorObj["operation"]?.ToString(), errorObj["target"]?.ToString()); 678errorObj["resourceType"]?.ToString(), 680var resourceName = StringUtils.FirstNonEmpty(errorObj["resourceName"]?.ToString(), targetResource?.ResourceName); 681var targetResourceId = StringUtils.FirstNonEmpty(errorObj["targetResourceId"]?.ToString(), targetResource?.Id); 712if (responseObj["properties"] is not JsonObject propertiesObj || 713propertiesObj["targetResource"] is not JsonObject targetResourceObj) 718var id = targetResourceObj["id"]?.ToString(); 719var resourceName = targetResourceObj["resourceName"]?.ToString(); 720var resourceType = targetResourceObj["resourceType"]?.ToString();
Provisioning\BicepUtilities.cs (2)
145if (section.Data[DeploymentStateParametersKey]?.GetValue<string>() is not { Length: > 0 } jsonString) 153var scope = section.Data[DeploymentStateScopeKey]?.GetValue<string>() is { Length: > 0 } scopeString
Provisioning\Internal\RunModeProvisioningContextProvider.cs (6)
244if (data["TenantResourceSuffix"]?.GetValue<string>() is { } tenantResourceSuffix) 248if (data["Location"]?.GetValue<string>() is { Length: > 0 } location) 253if (data["SubscriptionId"]?.GetValue<string>() is { Length: > 0 } subscriptionId) 258if (data["ResourceGroup"]?.GetValue<string>() is { Length: > 0 } resourceGroup) 263if (data["TenantId"]?.GetValue<string>() is { Length: > 0 } tenantId) 268if (TryGetBoolean(data["AllowResourceGroupCreation"]) is bool allowResourceGroupCreation)
Provisioning\JsonExtensions.cs (2)
15var node = jsonObj[key]; 26node = jsonObj[key];
Provisioning\Provisioners\BicepProvisioner.cs (18)
57if (stateSection.Data[DeploymentStateProvisioningStateKey]?.GetValue<string>() is { Length: > 0 } provisioningState && 65var configCheckSum = stateSection.Data[BicepUtilities.DeploymentStateChecksumKey]?.GetValue<string>(); 81if (stateSection.Data[BicepUtilities.DeploymentStateOutputsKey]?.GetValue<string>() is { Length: > 0 } outputJson) 116if (stateSection.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>() is { Length: > 0 } configuredDeploymentId && 184stateSection.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>() is not { Length: > 0 } deploymentId || 355stateSection.Data[BicepUtilities.DeploymentStateChecksumKey]?.GetValue<string>() is not { Length: > 0 } checksum) 372var locationOverride = stateSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>(); 452var locationOverride = stateSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>(); 473if (stateSection.Data[key]?.GetValue<string>() is not { Length: > 0 } json) 492stateSection.Data[DeploymentStateProvisioningStateKey]?.GetValue<string>(), 624var canceledLocationOverride = canceledStateSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>(); 681locationOverride = stateSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>(); 799locationOverride = stateSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>(); 857var cachedDeploymentId = stateSection.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>(); 858var cachedChecksum = stateSection.Data[BicepUtilities.DeploymentStateChecksumKey]?.GetValue<string>(); 1490section.Data[key]?.GetValue<string>() is { Length: > 0 } value ? value : null; 1494if (section.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>() is { Length: > 0 } locationOverride) 1499if (section.Data[BicepUtilities.DeploymentStateParametersKey]?.GetValue<string>() is { Length: > 0 } parametersJson)
Aspire.Hosting.Azure.Kubernetes (8)
AzureKubernetesEnvironmentResource.AksPipeline.cs (7)
407if (deploymentStateSection.Data["Scope"] is not null) 413var scopeJson = deploymentStateSection.Data["Scope"]!.GetValue<string>(); 416scopedSubscription = scope["subscription"]?.GetValue<string>(); 417scopedResourceGroup = scope["resourceGroup"]?.GetValue<string>(); 464var outputsJson = deploymentState["Outputs"]?.GetValue<string>(); 779return (azureState.Data["SubscriptionId"]?.ToString(), azureState.Data["ResourceGroup"]?.ToString());
AzureKubernetesEnvironmentResource.cs (1)
199return !string.IsNullOrEmpty(deploymentState["ReleaseName"]?.GetValue<string>());
Aspire.Hosting.Azure.Sandboxes (36)
AzureSandboxContainerDeployment.cs (32)
265var previousOwnerId = previousStateSection.Data["OwnerId"]?.GetValue<string>(); 390var pendingSecurityCleanup = previousStateSection.Data["PendingSecurityCleanup"]?.GetValue<bool>() == true; 494if (portStates.FirstOrDefault() is JsonObject firstPort && firstPort["Url"]?.GetValue<string>() is { } publicUrl) 1320var ownerId = stateSection.Data["OwnerId"]?.GetValue<string>(); 1436if (stateSection.Data["OwnerId"]?.GetValue<string>() is { Length: > 0 } ownerId && 1452stateSection.Data["OwnerId"]?.GetValue<string>())) 1592var sandboxId = stateSection.Data["SandboxId"]?.GetValue<string>(); 1605var diskImageId = stateSection.Data["DiskImageId"]?.GetValue<string>(); 1870if (stateSection.Data["ResourceName"]?.GetValue<string>() is { Length: > 0 } resourceName) 1930var ownerIds = stateSection.Data["PendingOwnerCleanupIds"] is JsonArray pendingOwnerIds 1933if (stateSection.Data["OwnerId"]?.GetValue<string>() is { Length: > 0 } previousOwnerId && 1967if (stateSection.Data["OwnerId"]?.GetValue<string>() is { Length: > 0 } previousOwnerId && 1980stateSection.Data["PendingLegacyDeploymentCleanup"]?.DeepClone() as JsonObject; 2070previousStateSection.Data["HasRuntimeEnvironmentConfiguration"]?.GetValue<bool>() == true || 2072previousStateSection.Data["HasRuntimeCommandConfiguration"]?.GetValue<bool>() == true) 2077if (previousStateSection.Data["PendingSecurityCleanup"]?.GetValue<bool>() == true) 2082var previousFingerprint = previousStateSection.Data["EndpointSecurityFingerprint"]?.GetValue<string>(); 2111var subscriptionId = stateSection.Data["SubscriptionId"]?.GetValue<string>(); 2112var resourceGroup = stateSection.Data["ResourceGroup"]?.GetValue<string>(); 2113var location = stateSection.Data["Location"]?.GetValue<string>(); 2114var sandboxGroup = stateSection.Data["SandboxGroup"]?.GetValue<string>(); 2135!string.IsNullOrWhiteSpace(stateSection.Data["OwnerId"]?.GetValue<string>()) || 2136!string.IsNullOrWhiteSpace(stateSection.Data["SandboxId"]?.GetValue<string>()) || 2137!string.IsNullOrWhiteSpace(stateSection.Data["DiskImageId"]?.GetValue<string>()); 2152if (stateSection.Data["Ports"] is not JsonArray ports) 2159if (port["Url"]?.GetValue<string>() is { Length: > 0 } url) 2175if (previousStateSection.Data["DeployId"]?.GetValue<string>() is { Length: > 0 } previousDeployId) 2190if (previousStateSection.Data[stateKey]?.GetValue<string>() is { Length: > 0 } previousId) 2200if (stateSection.Data["Ports"] is JsonArray ports) 2204if (port["Port"]?.GetValue<int>() is { } portNumber) 2213if (stateSection.Data["Port"]?.GetValue<int>() is { } legacyPort) 2302var value = section.Data[name]?.GetValue<string>();
AzureSandboxEndpointPropertyValueProvider.cs (4)
127if (stateSection.Data["Ports"] is not JsonArray ports) 135if (port["Port"]?.GetValue<int>() == sandboxEndpoint.TargetPort) 140if (string.Equals(port["Name"]?.GetValue<string>(), sandboxEndpoint.Name, StringComparison.Ordinal)) 151url = port["Url"]?.GetValue<string>();
Aspire.Hosting.Azure.Tests (223)
AzureBicepProvisionerTests.cs (21)
1119Assert.Equal("westus3", section.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 1181Assert.Equal("/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Resources/deployments/storage2", section.Data["Id"]?.GetValue<string>()); 1182Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateRunning, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1436Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1469Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1501Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1535Assert.Null(section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]); 1536Assert.Equal(deploymentId, section.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>()); 1594Assert.Equal(ResourcesProvisioningState.Failed.ToString(), section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1695Assert.Null(section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]); 1696Assert.Equal(deploymentId, section.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>()); 1697var outputs = JsonNode.Parse(section.Data[BicepUtilities.DeploymentStateOutputsKey]!.GetValue<string>())!.AsObject(); 1698Assert.Equal("https://storage.blob.core.windows.net/", outputs["blobEndpoint"]?["value"]?.GetValue<string>()); 1776Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateRunning, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1777Assert.Equal(deploymentId, section.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>()); 1805Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateRunning, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1806Assert.Equal(deploymentId, section.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>()); 1831Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateFailed, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1856Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1889Assert.Null(section.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]); 1890Assert.Equal(deploymentId, section.Data[BicepUtilities.DeploymentStateIdKey]?.GetValue<string>());
AzureDeployerTests.cs (1)
721Assert.Equal("salmonisland-e9e6a567.westus3.azurecontainerapps.io", parameters[reference.Key]!["value"]!.GetValue<string>());
AzureEnvironmentResourceExtensionsTests.cs (156)
129var remaining = json["remainingResources"]!.AsArray(); 139Assert.Equal("storage-deployment", (await deploymentState.AcquireSectionAsync("Azure:Deployments:storage", cts.Token)).Data["Id"]!.GetValue<string>()); 189var remaining = Assert.Single(json["remainingResources"]!.AsArray())!; 190Assert.Equal("directory", remaining["resourceName"]!.GetValue<string>()); 191Assert.Equal("Microsoft.Graph/applications", remaining["resourceType"]!.GetValue<string>()); 192Assert.Null(remaining["objectId"]); 321Assert.Equal("dev-a", saved.Data["TenantResourceSuffix"]!.GetValue<string>()); 323Assert.Equal("dev-a", json["tenantResourceSuffix"]!.GetValue<string>()); 324Assert.Equal("dev-a", json["azureContext"]!["tenantResourceSuffix"]!.GetValue<string>()); 664Assert.Contains("orphaned", resultData["warning"]?.GetValue<string>(), StringComparison.Ordinal); 665var recommendedActions = Assert.IsType<JsonArray>(resultData["recommendedActions"]); 1080Assert.Equal(1, data["resourceCount"]?.GetValue<int>()); 1160Assert.Equal(AzureProvisioningController.GetAzureResourceCommandName, data["command"]?.GetValue<string>()); 1161Assert.Equal("storage", data["resourceName"]?.GetValue<string>()); 1162Assert.Equal("westus2", data["azureLocation"]?.GetValue<string>()); 1163Assert.Equal("westus3", data["location"]?.GetValue<string>()); 1164Assert.Equal("westus3", data["effectiveLocation"]?.GetValue<string>()); 1168var azureContext = Assert.IsType<JsonObject>(data["azureContext"]); 1169Assert.Equal(subscriptionId, azureContext["subscriptionId"]?.GetValue<string>()); 1170Assert.Equal(tenantId, azureContext["tenantId"]?.GetValue<string>()); 1171Assert.Equal(resourceGroup, azureContext["resourceGroup"]?.GetValue<string>()); 1172Assert.Equal("westus2", azureContext["location"]?.GetValue<string>()); 1174var deployment = Assert.IsType<JsonObject>(data["deployment"]); 1175Assert.True(deployment["hasState"]?.GetValue<bool>()); 1176Assert.Equal(deploymentId, deployment["deploymentId"]?.GetValue<string>()); 1177Assert.Equal(resourceId, deployment["resourceId"]?.GetValue<string>()); 1178Assert.Equal("westus3", deployment["locationOverride"]?.GetValue<string>()); 1179Assert.Equal("checksum", deployment["checksum"]?.GetValue<string>()); 1180Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateRunning, deployment["provisioningState"]?.GetValue<string>()); 1181Assert.Contains("/DeploymentDetailsBlade/", deployment["deploymentPortalUrl"]?.GetValue<string>()); 1182Assert.Contains("/resource/subscriptions/", deployment["resourcePortalUrl"]?.GetValue<string>()); 1184var outputs = Assert.IsType<JsonObject>(deployment["outputs"]); 1185Assert.Equal("https://storage.blob.core.windows.net/", outputs["blobEndpoint"]?["value"]?.GetValue<string>()); 1187var scope = Assert.IsType<JsonObject>(deployment["scope"]); 1188Assert.Equal(resourceGroup, scope["resourceGroup"]?.GetValue<string>()); 1190var live = Assert.IsType<JsonObject>(data["live"]); 1191Assert.True(live["checked"]?.GetValue<bool>()); 1192Assert.True(live["exists"]?.GetValue<bool>()); 1243var live = Assert.IsType<JsonObject>(data["live"]); 1244Assert.True(live["checked"]?.GetValue<bool>()); 1245Assert.False(live["exists"]?.GetValue<bool>()); 1246Assert.Equal("missing-live-resource", live["reason"]?.GetValue<string>()); 1247Assert.Equal("azure", live["source"]?.GetValue<string>()); 1248Assert.Equal("missing-live-resource", live["code"]?.GetValue<string>()); 1249Assert.Contains("resource was not found in Azure", live["message"]?.GetValue<string>(), StringComparison.Ordinal); 1250var recommendedActions = Assert.IsType<JsonArray>(live["recommendedActions"]); 1305Assert.Equal("Microsoft.Storage/storageAccounts", json["resourceType"]?.GetValue<string>()); 1306Assert.Equal("storage", json["resourceName"]?.GetValue<string>()); 1307Assert.Equal(targetResourceId, json["targetResourceId"]?.GetValue<string>()); 1513var deployment = Assert.IsType<JsonObject>(data["deployment"]); 1514Assert.True(deployment["hasState"]?.GetValue<bool>()); 1515Assert.Null(deployment["resourceId"]); 1517var live = Assert.IsType<JsonObject>(data["live"]); 1518Assert.False(live["checked"]?.GetValue<bool>()); 1519Assert.Null(live["exists"]); 1520Assert.Equal("missing-resource-id", live["reason"]?.GetValue<string>()); 1521Assert.Equal("aspire", live["source"]?.GetValue<string>()); 1522Assert.Equal("missing-resource-id", live["code"]?.GetValue<string>()); 1523Assert.Contains("cached deployment state does not contain a resource ID", live["message"]?.GetValue<string>(), StringComparison.Ordinal); 1524var recommendedActions = Assert.IsType<JsonArray>(live["recommendedActions"]); 1576var live = Assert.IsType<JsonObject>(data["live"]); 1577Assert.True(live["checked"]?.GetValue<bool>()); 1578Assert.Null(live["exists"]); 1579Assert.Equal("request-failed", live["reason"]?.GetValue<string>()); 1580Assert.Equal("azure", live["source"]?.GetValue<string>()); 1581Assert.Equal(403, live["status"]?.GetValue<int>()); 1582Assert.Equal("Azure", live["provider"]?.GetValue<string>()); 1583Assert.Equal(403, live["httpStatus"]?.GetValue<int>()); 1584Assert.Equal("AuthorizationFailed", live["errorCode"]?.GetValue<string>()); 1585Assert.Equal("live-resource-check", live["operation"]?.GetValue<string>()); 1586Assert.Contains("Forbidden", live["message"]?.GetValue<string>(), StringComparison.Ordinal); 1637var live = Assert.IsType<JsonObject>(data["live"]); 1638Assert.True(live["checked"]?.GetValue<bool>()); 1639Assert.Null(live["exists"]); 1640Assert.Equal("credential-unavailable", live["reason"]?.GetValue<string>()); 1641Assert.Contains("Credential unavailable", live["message"]?.GetValue<string>(), StringComparison.Ordinal); 1701Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 1835Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateCanceled, storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 2039Assert.Equal(BicepProvisioner.DeploymentStateProvisioningStateSucceeded, storageSection.Data[BicepProvisioner.DeploymentStateProvisioningStateKey]?.GetValue<string>()); 2129Assert.Equal(2, resultData["deletedResourceCount"]?.GetValue<int>()); 2130var resultResourceIds = Assert.IsType<JsonArray>(resultData["deletedResourceIds"]); 2134Assert.Equal("westus3", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 2139Assert.Equal("storage2-deployment", storage2Section.Data["Id"]?.GetValue<string>()); 2220Assert.Equal(1, resultData["deletedResourceCount"]?.GetValue<int>()); 2448Assert.Equal("storage2-deployment", storage2Section.Data["Id"]?.GetValue<string>()); 2513Assert.Equal("storage2-deployment", storage2Section.Data["Id"]?.GetValue<string>()); 3122Assert.Equal("westus2", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3169Assert.Equal("westus3", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3172Assert.Equal(1, data["schemaVersion"]?.GetValue<int>()); 3173Assert.Equal(AzureProvisioningController.ChangeResourceLocationCommandName, data["command"]?.GetValue<string>()); 3174Assert.Equal("storage", data["resourceName"]?.GetValue<string>()); 3175Assert.Equal("westus3", data["location"]?.GetValue<string>()); 3176Assert.Equal("westus3", data["effectiveLocation"]?.GetValue<string>()); 3177Assert.Equal("eastus", data["azureLocation"]?.GetValue<string>()); 3178var azureContext = Assert.IsType<JsonObject>(data["azureContext"]); 3179Assert.Equal("eastus", azureContext["location"]?.GetValue<string>()); 3227Assert.Equal("westus3", bicepSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3553Assert.Equal("westus3", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3615Assert.Equal("westus3", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3680Assert.Equal("westus3", storageSection.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 3734Assert.Equal("12345678-1234-1234-1234-123456789012", azureSection.Data["SubscriptionId"]?.GetValue<string>()); 3735Assert.Equal("westus2", azureSection.Data["Location"]?.GetValue<string>()); 3736Assert.Equal("test-rg", azureSection.Data["ResourceGroup"]?.GetValue<string>()); 3737Assert.Equal("87654321-4321-4321-4321-210987654321", azureSection.Data["TenantId"]?.GetValue<string>()); 3780Assert.Equal("12345678-1234-1234-1234-123456789012", azureSection.Data["SubscriptionId"]?.GetValue<string>()); 3781Assert.Equal("westus3", azureSection.Data["Location"]?.GetValue<string>()); 3782Assert.Equal("cli-rg-é", azureSection.Data["ResourceGroup"]?.GetValue<string>()); 3783Assert.Equal("87654321-4321-4321-4321-210987654321", azureSection.Data["TenantId"]?.GetValue<string>()); 3786Assert.Equal(1, data["schemaVersion"]?.GetValue<int>()); 3787Assert.Equal(AzureProvisioningController.ChangeAzureContextCommandName, data["command"]?.GetValue<string>()); 3788Assert.Equal("12345678-1234-1234-1234-123456789012", data["subscriptionId"]?.GetValue<string>()); 3789Assert.Equal("87654321-4321-4321-4321-210987654321", data["tenantId"]?.GetValue<string>()); 3790Assert.Equal("cli-rg-é", data["resourceGroup"]?.GetValue<string>()); 3791Assert.Equal("westus3", data["azureLocation"]?.GetValue<string>()); 3792var azureContext = Assert.IsType<JsonObject>(data["azureContext"]); 3793Assert.Equal("12345678-1234-1234-1234-123456789012", azureContext["subscriptionId"]?.GetValue<string>()); 3794Assert.Equal("87654321-4321-4321-4321-210987654321", azureContext["tenantId"]?.GetValue<string>()); 3795Assert.Equal("cli-rg-é", azureContext["resourceGroup"]?.GetValue<string>()); 3796Assert.Equal("westus3", azureContext["location"]?.GetValue<string>()); 3800Assert.Equal(1, data["resourceCount"]?.GetValue<int>()); 3853Assert.Null(data["tenantId"]); 3901Assert.Equal("westus2", azureSection.Data["Location"]?.GetValue<string>()); 3996Assert.Equal("westus3", storage2Section.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 4042Assert.Equal("westus3", storage2Section.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 4101Assert.Equal("westus3", storage2Section.Data[AzureProvisioningController.LocationOverrideKey]?.GetValue<string>()); 4344Assert.False(data["success"]?.GetValue<bool>()); 4345var diagnostics = Assert.IsType<JsonArray>(data["diagnostics"]); 4347Assert.Equal("Microsoft.KeyVault", diagnostic["provider"]?.GetValue<string>()); 4348Assert.Equal("Microsoft.KeyVault/vaults", diagnostic["resourceType"]?.GetValue<string>()); 4349Assert.Equal("kv-test", diagnostic["resourceName"]?.GetValue<string>()); 4350Assert.Equal(keyVaultResourceId, diagnostic["targetResourceId"]?.GetValue<string>()); 4351Assert.Equal(AzureProvisioningFailureDetails.KeyVaultDeletedStateTombstoneNotFoundReason, diagnostic["errorCode"]?.GetValue<string>()); 4352Assert.Equal(409, diagnostic["httpStatus"]?.GetValue<int>()); 4353Assert.Contains("deleted vault was not found", diagnostic["errorMessage"]?.GetValue<string>(), StringComparison.Ordinal); 4354var recommendedActions = Assert.IsType<JsonArray>(diagnostic["recommendedActions"]); 4551Assert.False(data["success"]?.GetValue<bool>()); 4552Assert.Equal("failed", data["status"]?.GetValue<string>()); 4553var diagnostics = Assert.IsType<JsonArray>(data["diagnostics"]); 4555Assert.Equal("azure", diagnostic["source"]?.GetValue<string>()); 4556Assert.Equal("Microsoft.ManagedIdentity", diagnostic["provider"]?.GetValue<string>()); 4557Assert.Equal("Microsoft.ManagedIdentity/userAssignedIdentities", diagnostic["resourceType"]?.GetValue<string>()); 4558Assert.Equal(400, diagnostic["httpStatus"]?.GetValue<int>()); 4559Assert.Equal("LocationNotAvailableForResourceType", diagnostic["errorCode"]?.GetValue<string>()); 4560Assert.Equal("provision", diagnostic["operation"]?.GetValue<string>()); 4561var resultRecommendedActions = Assert.IsType<JsonArray>(diagnostic["recommendedActions"]); 4857Assert.Equal("12345678-1234-1234-1234-123456789012", azureSection.Data["SubscriptionId"]?.GetValue<string>()); 4858Assert.Equal("westus2", azureSection.Data["Location"]?.GetValue<string>()); 4859Assert.Equal("test-rg", azureSection.Data["ResourceGroup"]?.GetValue<string>()); 4860Assert.Equal("87654321-4321-4321-4321-210987654321", azureSection.Data["TenantId"]?.GetValue<string>()); 5006Assert.Equal("storage-deployment", storageSection.Data["Id"]?.GetValue<string>()); 5885azureSection.Data["SubscriptionId"]?.GetValue<string>(), 5886azureSection.Data["ResourceGroup"]?.GetValue<string>(), 5887azureSection.Data["Location"]?.GetValue<string>(), 5888azureSection.Data["TenantId"]?.GetValue<string>(), 5889azureSection.Data["TenantResourceSuffix"]?.GetValue<string>()); 5916azureSection.Data["TenantResourceSuffix"]?.GetValue<string>());
AzureEventHubsExtensionsTests.cs (1)
395document["UserConfig"]!["LoggingConfig"] = new JsonObject { ["Type"] = "Console" };
AzureFunctionsTests.cs (9)
485Assert.Equal("container.v1", manifest["type"]?.GetValue<string>()); 486Assert.Equal("functions", manifest["build"]?["context"]?.GetValue<string>()); 487Assert.Equal("funcapp.Dockerfile", manifest["build"]?["dockerfile"]?.GetValue<string>()); 488Assert.Equal("node", manifest["env"]?["FUNCTIONS_WORKER_RUNTIME"]?.GetValue<string>()); 489Assert.Equal("OpenTelemetry", manifest["env"]?["AzureFunctionsJobHost__telemetryMode"]?.GetValue<string>()); 490Assert.Equal(80, manifest["bindings"]?["http"]?["targetPort"]?.GetValue<int>()); 491Assert.Null(manifest["bindings"]?["debug"]); 572Assert.Equal("functions", manifest["build"]?["context"]?.GetValue<string>()); 573Assert.Equal("functions/Dockerfile", manifest["build"]?["dockerfile"]?.GetValue<string>());
AzureInfrastructureExtensionsTests.cs (2)
90Assert.Equal("azure.bicep.v0", manifest["type"]?.ToString()); 91Assert.Equal("infrastructure1.module.bicep", manifest["path"]?.ToString());
AzureSandboxesTests.cs (1)
441Assert.Equal("existing-rg", rolesManifest["scope"]?["resourceGroup"]?.GetValue<string>());
AzureServiceBusExtensionsTests.cs (1)
504document["UserConfig"]!["Logging"] = new JsonObject { ["Type"] = "Console" };
BicepUtilitiesTests.cs (21)
41Assert.Equal(expectedSuffix, parameters["tenantResourceSuffix"]!["value"]!.GetValue<string>()); 76Assert.Equal(string.Empty, parameters["tenantResourceSuffix"]!["value"]!.GetValue<string>()); 91Assert.Equal("david", parameters["name"]?["value"]?.ToString()); 127Assert.Equal("john", parameters["name"]?["value"]?.ToString()); 128Assert.Equal(20, parameters["age"]?["value"]?.GetValue<int>()); 129Assert.Equal(["a", "b", "c"], parameters["values"]?["value"]?.AsArray()?.Select(v => v?.ToString()) ?? []); 130Assert.Equal("connection string", parameters["conn"]?["value"]?.ToString()); 131Assert.Equal("value", parameters["jsonObj"]?["value"]?["key"]?.ToString()); 132Assert.Equal("paramValue", parameters["param"]?["value"]?.ToString()); 133Assert.Equal("paramValue/1", parameters["expr"]?["value"]?.ToString()); 134Assert.Equal("http://localhost:1023", parameters["endpoint"]?["value"]?.ToString()); 184Assert.Equal("context-value", parameters["value"]?["value"]?.GetValue<string>()); 185Assert.Equal("context-value", parameters["deferred"]?["value"]?.GetValue<string>()); 186Assert.Equal("context-value/suffix", parameters["expression"]?["value"]?.GetValue<string>()); 440Assert.Equal("test-rg", scope["resourceGroup"]?.ToString()); 455Assert.Equal("test-rg", scope["resourceGroup"]?.ToString()); 456Assert.Equal("12345678-1234-1234-1234-123456789012", scope["subscription"]?.ToString()); 471Assert.Equal("12345678-1234-1234-1234-123456789012", scope["subscription"]?.ToString()); 490Assert.Equal("12345678-1234-1234-1234-123456789012", scope["subscription"]?.ToString()); 505Assert.Equal("current", scope["tenant"]?.ToString()); 519Assert.Null(scope["resourceGroup"]?.AsValue().GetValue<object>());
JsonExtensionsTests.cs (7)
23Assert.Equal("TestValue", retrievedNode["TestProperty"]!.GetValue<string>()); 37Assert.Same(rootJson["NewProperty"], newNode); 53Assert.NotNull(rootJson["Level1"]); 54Assert.NotNull(rootJson["Level1"]!["Level2"]); 55Assert.NotNull(rootJson["Level1"]!["Level2"]!["Level3"]); 56Assert.NotNull(rootJson["Level1"]!["Level2"]!["Level3"]!["Level4"]); 57Assert.Same(deeply, rootJson["Level1"]!["Level2"]!["Level3"]!["Level4"]);
ProvisioningContextProviderTests.cs (2)
52Assert.Equal(selectedSuffix ?? string.Empty, saved.Data["TenantResourceSuffix"]!.GetValue<string>()); 177saved.Data["TenantResourceSuffix"]?.GetValue<string>());
ProvisioningContextTests.cs (1)
210Assert.Equal("test-id", loadedSection.Data["SubscriptionId"]?.ToString());
Aspire.Hosting.CodeGeneration.Go.Tests (14)
GoApiExportTests.cs (10)
87Assert.Equal(1, (int?)export["schemaVersion"]); 88Assert.Equal("go", (string?)export["language"]); 89Assert.Equal(assembly.GetName().Name, (string?)export["generator"]!["name"]); 90Assert.False(string.IsNullOrEmpty((string?)export["generator"]!["version"])); 91Assert.Equal(TestTypesAssemblyName, (string?)export["package"]!["name"]); 92Assert.Equal(PackageVersion, (string?)export["package"]!["version"]); 93Assert.Equal("apphost/modules/aspire", (string?)export["package"]!["importPath"]); 95var module = Assert.Single(export["modules"]!.AsArray()); 97Assert.NotEmpty(module["items"]!.AsArray()); 98Assert.NotEmpty(export["declarations"]!.AsArray());
GoScaffoldTests.cs (4)
112var environmentVariables = profile["environmentVariables"]!; 113var applicationUrls = profile["applicationUrl"]!.GetValue<string>().Split(';').Select(url => new Uri(url)).ToList(); 116var otlpHttps = new Uri(environmentVariables["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 117var resourceServiceHttps = new Uri(environmentVariables["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>());
Aspire.Hosting.CodeGeneration.TypeScript (2)
TypeScriptLanguageSupport.cs (2)
194var existingVersion = GetStringValue(section[packageName]); 209if (parent[propertyName] is JsonObject obj)
Aspire.Hosting.CodeGeneration.TypeScript.Tests (58)
AtsTypeScriptCodeGeneratorTests.cs (3)
53Assert.Equal("aspire-host", packageJson["name"]?.GetValue<string>()); 54Assert.Equal("module", packageJson["type"]?.GetValue<string>()); 55Assert.NotNull(packageJson["dependencies"]?["vscode-jsonrpc"]);
TypeScriptLanguageSupportTests.cs (55)
33var scripts = packageJson["scripts"]!.AsObject(); 34var devDependencies = packageJson["devDependencies"]!.AsObject(); 36Assert.Equal("brownfieldapp", packageJson["name"]?.GetValue<string>()); 37Assert.Equal("1.0.0", packageJson["version"]?.GetValue<string>()); 38Assert.True(packageJson["private"]?.GetValue<bool>()); 39Assert.Equal("module", packageJson["type"]?.GetValue<string>()); 40Assert.Equal("aspire run", scripts["aspire:start"]?.GetValue<string>()); 41Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 42Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["aspire:dev"]?.GetValue<string>()); 43Assert.Equal("eslint apphost.mts", scripts["aspire:lint"]?.GetValue<string>()); 44Assert.Equal("eslint apphost.mts", scripts["lint"]?.GetValue<string>()); 45Assert.Equal("eslint apphost.mts && aspire run", scripts["dev"]?.GetValue<string>()); 46Assert.Equal("eslint apphost.mts && tsc -p tsconfig.apphost.json", scripts["build"]?.GetValue<string>()); 47Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["watch"]?.GetValue<string>()); 48Assert.Equal("^4.21.0", devDependencies["tsx"]?.GetValue<string>()); 49Assert.Equal("^5.9.3", devDependencies["typescript"]?.GetValue<string>()); 50Assert.Equal("^10.0.3", devDependencies["eslint"]?.GetValue<string>()); 51Assert.Equal("^8.57.1", devDependencies["typescript-eslint"]?.GetValue<string>()); 53var engines = packageJson["engines"]!.AsObject(); 54Assert.Equal("^20.19.0 || ^22.13.0 || >=24", engines["node"]?.GetValue<string>()); 63Assert.Equal("./dist/apphost", tsConfig["compilerOptions"]?["outDir"]?.GetValue<string>()); 99var scripts = packageJson["scripts"]!.AsObject(); 100var dependencies = packageJson["dependencies"]!.AsObject(); 101var devDependencies = packageJson["devDependencies"]!.AsObject(); 105Assert.Null(packageJson["name"]); 106Assert.Null(packageJson["version"]); 107Assert.Null(packageJson["type"]); 108Assert.Null(packageJson["private"]); 111Assert.Equal("aspire run", scripts["aspire:start"]?.GetValue<string>()); 112Assert.Equal("tsc -p tsconfig.apphost.json", scripts["aspire:build"]?.GetValue<string>()); 113Assert.Equal("tsc --watch -p tsconfig.apphost.json", scripts["aspire:dev"]?.GetValue<string>()); 114Assert.Equal("eslint apphost.mts", scripts["aspire:lint"]?.GetValue<string>()); 120Assert.Equal("^8.2.0", dependencies["vscode-jsonrpc"]?.GetValue<string>()); 121Assert.Equal("^4.21.0", devDependencies["tsx"]?.GetValue<string>()); 122Assert.Equal("^22.0.0", devDependencies["@types/node"]?.GetValue<string>()); 123Assert.Equal("^3.1.14", devDependencies["nodemon"]?.GetValue<string>()); 124Assert.Equal("^5.9.3", devDependencies["typescript"]?.GetValue<string>()); 128var engines = packageJson["engines"]!.AsObject(); 129Assert.Equal("^20.19.0 || ^22.13.0 || >=24", engines["node"]?.GetValue<string>()); 147Assert.Equal("aspire-apphost", packageJson["name"]?.GetValue<string>()); 148Assert.Equal("1.0.0", packageJson["version"]?.GetValue<string>()); 149Assert.True(packageJson["private"]?.GetValue<bool>()); 150Assert.Equal("module", packageJson["type"]?.GetValue<string>()); 179var dependencies = packageJson["dependencies"]!.AsObject(); 180var devDependencies = packageJson["devDependencies"]!.AsObject(); 184Assert.Equal("^8.2.0", dependencies["vscode-jsonrpc"]?.GetValue<string>()); 185Assert.Equal("^22.0.0", devDependencies["@types/node"]?.GetValue<string>()); 186Assert.Equal("^3.1.14", devDependencies["nodemon"]?.GetValue<string>()); 187Assert.Equal("^4.21.0", devDependencies["tsx"]?.GetValue<string>()); 188Assert.Equal("^5.9.3", devDependencies["typescript"]?.GetValue<string>()); 235var httpsProfile = appHostRunJson["profiles"]!["https"]!.AsObject(); 236var applicationUrls = httpsProfile["applicationUrl"]!.GetValue<string>().Split(';', StringSplitOptions.RemoveEmptyEntries); 237var environmentVariables = httpsProfile["environmentVariables"]!.AsObject(); 243var otlpHttpsPort = GetPort(environmentVariables["ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL"]!.GetValue<string>()); 244var resourceServiceHttpsPort = GetPort(environmentVariables["ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL"]!.GetValue<string>());
Aspire.Hosting.Docker (3)
DockerComposeEnvironmentResource.cs (3)
145var savedComposeFilePath = stateSection.Data["ComposeFilePath"]?.ToString(); 161var savedOutputPath = stateSection.Data["OutputPath"]?.ToString() ?? Path.GetDirectoryName(savedComposeFilePath)!; 162var savedProjectName = stateSection.Data["ProjectName"]?.ToString() ?? GetDockerComposeProjectName(ctx, this);
Aspire.Hosting.Docker.Tests (2)
DockerComposeTests.cs (2)
1062Assert.NotNull(stateSection.Data["ComposeFilePath"]?.ToString()); 1063Assert.NotNull(stateSection.Data["ProjectName"]?.ToString());
Aspire.Hosting.Dotnet.Tests (3)
DotnetProjectResourceTests.cs (3)
177Assert.Equal("project.v0", manifest["type"]?.GetValue<string>()); 178Assert.Equal(expectedPath, manifest["path"]?.GetValue<string>()); 179Assert.Null(manifest["args"]);
Aspire.Hosting.Foundry.Tests (6)
HostedAgentConfigurationTests.cs (6)
89var definition = payload["definition"]!; 91var protocolVersion = Assert.Single(definition["protocol_versions"]!.AsArray()); 93Assert.Equal("2.0.0", protocolVersion["version"]!.GetValue<string>()); 94Assert.Equal("myregistry.azurecr.io/myagent:v1", definition["container_configuration"]!["image"]!.GetValue<string>()); 95Assert.Null(definition["container_protocol_versions"]); 96Assert.Null(definition["image"]);
Aspire.Hosting.Go.Tests (5)
AddGoAppTests.cs (5)
950Assert.Equal("container.v1", manifest["type"]?.ToString()); 1009Assert.Equal("container.v1", manifest["type"]?.ToString()); 1023Assert.Equal("container.v1", manifest["type"]?.ToString()); 1037Assert.Equal("container.v1", manifest["type"]?.ToString()); 1038Assert.Equal("/app/server", manifest["entrypoint"]?.ToString());
Aspire.Hosting.JavaScript.Tests (6)
AddDenoAppTests.cs (2)
51Assert.Null(manifest["env"]?["OTEL_DENO"]); 1092Assert.Equal(8000, manifest["bindings"]!["http"]!["targetPort"]!.GetValue<int>());
AddJavaScriptAppTests.cs (3)
285Assert.Equal("container.v1", manifest["type"]?.ToString()); 303Assert.Equal("bun", manifest["entrypoint"]?.ToString()); 322Assert.Equal("container.v1", manifest["type"]?.ToString());
AddViteAppTests.cs (1)
485Assert.Equal("container.v1", manifest["type"]?.ToString());
Aspire.Hosting.Kubernetes (4)
Deployment\HelmDeploymentEngine.cs (2)
201var savedReleaseName = stateSection.Data["ReleaseName"]?.ToString(); 202var savedNamespace = stateSection.Data["Namespace"]?.ToString();
KubernetesHelmChartExtensions.cs (2)
402var savedReleaseName = stateSection.Data["ReleaseName"]?.ToString(); 403var savedNamespace = stateSection.Data["Namespace"]?.ToString();
Aspire.Hosting.Kubernetes.Tests (2)
KubernetesDeployTests.cs (2)
2031Assert.Equal("my-release", stateSection.Data["ReleaseName"]?.ToString()); 2130Assert.Equal("podinfo", stateSection.Data["ReleaseName"]?.ToString());
Aspire.Hosting.Native.CodeGeneration (1)
NativeProviderProjection.cs (1)
37var capabilities = manifest["capabilities"]!.AsArray();
Aspire.Hosting.Native.Core.Tests (149)
ApplicationRevisionTests.cs (21)
31Assert.Equal(original["generationId"]!.GetValue<string>(), current["generationId"]!.GetValue<string>()); 32Assert.Equal(original["resources"]!.ToJsonString(), current["resources"]!.ToJsonString()); 37var resourceId = current["resources"]![0]!["resourceId"]; 40Assert.Equal("retained", logs["entries"]![0]!["message"]!.GetValue<string>()); 74("context", context.Writer), ("requestId", commands["commands"]![0]!["requestId"]), 77("context", context.Reader), ("requestId", confirmations["requests"]![0]!["requestId"]), 180Assert.Equal(2, change["revision"]!.GetValue<long>()); 181Assert.Equal(1, change["appliedRevision"]!.GetValue<long>()); 182Assert.Equal("pending", change["status"]!.GetValue<string>()); 183Assert.Equal("new-value", change["properties"]![0]!["value"]!.GetValue<string>()); 209Assert.Equal(database["resourceId"]!.GetValue<string>(), Assert.Single(configuration["dependencies"]!.AsArray())!.GetValue<string>()); 210Assert.Equal(2, configuration["revision"]!.GetValue<long>()); 211Assert.Equal("pending", configuration["status"]!.GetValue<string>()); 263Assert.Equal(2, configuration["revision"]!.GetValue<long>()); 264Assert.Equal("pending", configuration["status"]!.GetValue<string>()); 266Assert.Equal("cache", Assert.Single(dependencies["resources"]!.AsArray())!["name"]!.GetValue<string>()); 396response["error"]?["data"]?["code"]?.GetValue<string>() ?? 397response["result"]?["$error"]?["code"]?.GetValue<string>() ??
DcpWorkloadCleanupTests.cs (2)
302response["error"]?["data"]?["code"]?.GetValue<string>() ?? 303response["result"]?["$error"]?["code"]?.GetValue<string>() ??
DeclarativeApplicationTests.cs (1)
30configuration["properties"]!.AsArray().Select(entry => entry!["name"]!.GetValue<string>()).Order());
NativeCliControlTests.cs (6)
34var identity = JsonNode.Parse(sdk["apphost-server.json"]!.GetValue<string>())!; 39Assert.Equal(Convert.ToHexString(contractHash.GetCurrentHash()), identity["contractId"]!.GetValue<string>()); 41identity["version"]!.GetValue<string>()); 46foreach (var (name, content) in spec["migrationFiles"]!.AsObject().ToArray()) 48spec["migrationFiles"]![name] = content!.GetValue<string>().ReplaceLineEndings("\n"); 92private static string Error(JsonObject response) => response["error"]!["data"]!["code"]!.GetValue<string>();
NativeComposeCSharpDockerTests.cs (4)
39Assert.Equal(project, inputs["projectName"]!.GetValue<string>()); 124var web = state["services"]!.AsArray().Single(service => service!["resource"]!.GetValue<string>() == "web")!; 125var url = web["endpoints"]![0]!["url"]!.GetValue<string>(); 129return body["value"]!.GetValue<string>();
NativeComposeCSharpTests.cs (32)
29var actualProject = first.Compose["name"]!.GetValue<string>(); 31var build = first.Compose["services"]!["web"]!["build"]!; 32Assert.Equal(Path.Combine(root.FullName, "web"), build["context"]!.GetValue<string>()); 33Assert.Equal(Path.Combine(root.FullName, "web", "Dockerfile"), build["dockerfile"]!.GetValue<string>()); 70var cache = context.Model["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "cache")!; 71var web = context.Model["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "web")!; 72var target = context.Model["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "compose")!; 76target["configuration"]!["publish.dockerComposeEnvironment"] = 80cache["mounts"]!.AsArray().Add(new JsonObject 86context.Model["parameters"]!.AsArray().Add("message"); 87context.Model["parameterDefaults"]!.AsObject()["message"] = "literal $ configuration"; 88web["environment"]!.AsObject()["MESSAGE"] = new JsonObject { ["kind"] = "parameter", ["name"] = "message" }; 91var options = JsonNode.Parse(web["configuration"]!["publish.dockerCompose"]!.GetValue<string>())!; 93web["configuration"]!["publish.dockerCompose"] = options.ToJsonString(); 97cache["mounts"]![0]!["source"] = "RetainedData"; 98web["dependencies"]![0] = "Cache.With Space"; 99web["environment"]!["ConnectionStrings__cache"]!["parts"]!.AsArray() 105context.Model["resources"]!.AsArray().Add(other); 109isolated["configuration"]!["publish.computeEnvironment"] = "other"; 110context.Model["resources"]!.AsArray().Add(isolated); 113context.Model["resources"]!.AsArray().Add(new JsonObject 151Assert.True(JsonNode.DeepEquals(plan.Compose, typescript["compose"]), "C# and TypeScript Compose documents differ."); 152Assert.True(JsonNode.DeepEquals(plan.Inputs, typescript["inputs"]), "C# and TypeScript input contracts differ."); 156}), typescript["services"]), "C# and TypeScript expected deployment states differ."); 158Assert.Equal(typescript["resolved"]!.AsObject().OrderBy(pair => pair.Key, StringComparer.Ordinal) 375Assert.Equal(["cache"], model["resources"]!.AsArray().Select(resource => resource!["name"]!.GetValue<string>())); 417var resource = context.Model["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "web")!; 418resource["configuration"]!["publish.dockerCompose"] = options; 437var resources = context.Model["resources"]!.AsArray(); 443cache["configuration"]!["publish.computeEnvironment"] = "other"; 465var environment = context.Model["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "compose")!; 466environment["configuration"]!["publish.dockerComposeEnvironment"] = configuration;
NativeDashboardTests.cs (1)
104("requestId", pending["requestId"]), ("result", new JsonObject { ["status"] = "succeeded", ["message"] = "refreshed" })));
NativeLanguageCatalogTests.cs (1)
24Assert.Equal("custom", spec["execute"]!["command"]!.GetValue<string>());
NativeModelAlignmentTests.cs (5)
30var api = exported["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "api")!; 31Assert.Equal("second", api["computeEnvironment"]!.GetValue<string>()); 32Assert.Equal("second", api["configuration"]!["publish.computeEnvironment"]!.GetValue<string>()); 33Assert.Collection(api["endpoints"]!.AsArray(), 135Assert.Single(exported["resources"]!.AsArray());
NativeNamedPipeTests.cs (1)
27Assert.NotNull(unauthenticated["error"]);
NativeProviderClientTests.cs (5)
60Assert.Equal("getCapabilities", discovery["method"]!.GetValue<string>()); 65["id"] = discovery["id"]!.DeepClone(), 71Assert.Equal("PROVIDER_REGISTRATION_REJECTED", rejection["error"]!["data"]!["code"]!.GetValue<string>()); 131Assert.Equal("getCapabilities", request["method"]!.GetValue<string>()); 137["id"] = request["id"]!.DeepClone(),
NativeProviderLifecycleTests.cs (4)
233var methods = manifest["capabilities"]!.AsArray(); 238case "scope": phase["parameters"]![1]!["type"]!["typeId"] = "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"; break; 241phase["parameters"]![0]!["type"]!["typeId"] = "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"; 243case "result": phase["returnType"]!["typeId"] = "string"; break;
NativeProviderProtocolTests.cs (4)
52Assert.Equal("foreign/Resource", Assert.Single(manifest.Capabilities).Value.Metadata["extension"]!["typeId"]!.GetValue<string>()); 93metadata["capabilities"]![0]!["method"] = "changed"; 94Assert.Equal("attach", capability.Metadata["method"]!.GetValue<string>()); 146metadata["capabilities"]![0]!["parameters"]![0]![flag] = true;
NativePublishingTests.cs (3)
45var application = exported["resources"]!.AsArray().Single(resource => resource!["name"]!.GetValue<string>() == "web")!; 46Assert.Equal(Environment.ProcessPath, application["executable"]!.GetValue<string>()); 47Assert.Equal(AppContext.BaseDirectory, application["workingDirectory"]!.GetValue<string>());
NativeRpcTests.cs (10)
44Assert.Null(wait["error"]); 45Assert.Null(wait["result"]); 47Assert.Collection(snapshot["resources"]!.AsArray(), 51Assert.Empty(resource["dependencies"]!.AsArray()); 56Assert.Equal(snapshot["resources"]![0]!["resourceId"]!.GetValue<string>(), 57Assert.Single(resource["dependencies"]!.AsArray())!.GetValue<string>()); 122retagged["$type"] = composition["$type"]!.DeepClone(); 165Assert.Equal("The operation is not allowed in the current state.", duplicate["result"]!["$error"]!["message"]!.GetValue<string>()); 224(response["result"]?["$error"]?["code"] ?? response["error"]!["data"]!["code"])!.GetValue<string>();
NativeSocketIsolationTests.cs (9)
35Assert.Equal(-32000, error["code"]!.GetValue<int>()); 36Assert.Equal("Authenticate before using capabilities.", error["message"]!.GetValue<string>()); 70var error = response["error"]!.AsObject(); 72Assert.Equal(-32603, error["code"]!.GetValue<int>()); 73Assert.Equal("The backchannel request failed internally.", error["message"]!.GetValue<string>()); 152var error = response["result"]!["$error"]!.AsObject(); 154Assert.Equal("INTERNAL_ERROR", error["code"]!.GetValue<string>()); 155Assert.Equal("The request failed internally.", error["message"]!.GetValue<string>()); 195Assert.Equal(["baseline.v2"], response["result"]!.AsArray().Select(value => value!.GetValue<string>()));
ResourceWorkloadTests.cs (2)
40Assert.Equal(0, endpoint["port"]!.GetValue<int>()); 60Assert.Equal(5050, endpoint["port"]!.GetValue<int>());
RuntimeRpcTests.cs (28)
26Assert.Equal(["entry-2", "entry-3"], logs["entries"]!.AsArray().Select(entry => entry!["message"]!.GetValue<string>())); 39("context", context.Reader), ("version", initial["version"]), ("timeoutMilliseconds", JsonValue.Create(30000)))); 44Assert.True(updated["version"]!.GetValue<long>() > initial["version"]!.GetValue<long>()); 45var resource = Assert.Single(updated["resources"]!.AsArray())!; 46Assert.Equal("cache", resource["name"]!.GetValue<string>()); 47Assert.Equal("Running", resource["state"]!.GetValue<string>()); 48Assert.True(resource["healthy"]!.GetValue<bool>()); 49Assert.Equal("http://localhost:8000", Assert.Single(resource["urls"]!.AsArray())!.GetValue<string>()); 86Assert.True(logs["truncated"]!.GetValue<bool>()); 87Assert.Equal(300, logs["lastSequence"]!.GetValue<long>()); 89logs["entries"]!.AsArray().Select(entry => entry!["message"]!.GetValue<string>())); 92Assert.False(suffix["truncated"]!.GetValue<bool>()); 93Assert.Equal([299L, 300L], suffix["entries"]!.AsArray().Select(entry => entry!["sequence"]!.GetValue<long>())); 109Assert.Equal("refresh", pending["name"]!.GetValue<string>()); 111("requestId", pending["requestId"]), ("result", new JsonObject { ["status"] = "succeeded", ["message"] = "refreshed" }))); 113Assert.Equal("succeeded", result["status"]!.GetValue<string>()); 114Assert.Equal("refreshed", result["message"]!.GetValue<string>()); 119Assert.Equal("cache", prompt["resourceName"]!.GetValue<string>()); 120Assert.Equal("Continue?", prompt["message"]!.GetValue<string>()); 122("requestId", prompt["requestId"]), ("accepted", JsonValue.Create(true)))); 125("requestId", prompt["requestId"]), ("accepted", JsonValue.Create(true)))))); 141Assert.Equal("Failed", resource["state"]!.GetValue<string>()); 142Assert.False(resource["healthy"]!.GetValue<bool>()); 143Assert.Empty(resource["urls"]!.AsArray()); 144Assert.Empty(resource["commands"]!.AsArray()); 175(response["result"]?["$error"]?["code"] ?? response["error"]!["data"]!["code"])!.GetValue<string>();
TestServices\RpcTestClient.cs (1)
87public static JsonNode Result(JsonObject response) => response["result"]?.DeepClone()
TestServices\WorkspaceRpcTestContext.cs (2)
67if (response["error"] is not null || response["result"] is JsonObject result && result.ContainsKey("$error"))
WorkloadDefinitionTests.cs (7)
52var endpoints = launch["endpoints"]!.AsArray(); 61case "duplicate-mount": launch["mounts"]!.AsArray().Add(launch["mounts"]![0]!.DeepClone()); break; 63launch["mounts"]![0]!["type"] = "bind"; 64launch["mounts"]![0]!["source"] = "relative-path"; 66case "argument-null": launch["arguments"]!.AsArray().Add(null); break; 71Assert.Equal("INVALID_ARGUMENT", response["result"]!["$error"]!["code"]!.GetValue<string>());
Aspire.Hosting.Native.Server (307)
Api\ParameterApi.cs (3)
51var length = configuration["minLength"]?.GetValue<int>() ?? 22; 59var enabled = configuration[flags[index]]?.GetValue<bool>() ?? true; 60var minimum = configuration[minima[index]]?.GetValue<int>() ?? (enabled ? 1 : 0);
artifacts\obj\Aspire.Hosting.Native.Server\Debug\native-ats\NativeDispatch.g.cs (268)
21var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 22target.AbortRevision(handles.Get<Composition>(arguments["revision"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition")); 28var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 30var result = target.AddComputeEnvironment(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["typeId"])); 36var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 38var result = target.AddConfiguredParameter(RpcArguments.String(arguments["name"]), RpcArguments.Boolean(arguments["secret"]), RpcArguments.Boolean(arguments["publishing"])); 44var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 46var result = target.AddContainer(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["image"])); 52var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 54var result = target.AddExecutable(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["executablePath"]), RpcArguments.String(arguments["workingDirectory"])); 60var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 62var result = target.AddGeneratedParameter(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["options"]), RpcArguments.Boolean(arguments["secret"])); 68var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 70var result = target.AddGeneratedSecretParameter(RpcArguments.String(arguments["name"])); 76var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 78var result = target.AddParameterValue(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["value"]), RpcArguments.Boolean(arguments["secret"]), RpcArguments.Boolean(arguments["publishValueAsDefault"])); 84var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 86var result = target.AddResource(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["typeId"])); 92var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 94var result = target.AddSecretParameter(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["value"])); 100var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 101target.AppendResourceLog(RpcArguments.String(arguments["stream"]), RpcArguments.String(arguments["message"])); 107var target = handles.Get<RuntimeOperation>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.RuntimeOperation"); 114var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 115target.BeginPublishing(RpcArguments.String(arguments["target"])); 121var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 129var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 136var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 137await target.CommitRevision(handles.Get<Composition>(arguments["revision"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition")).ConfigureAwait(false); 143var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 144target.CompletePublishing(RpcArguments.Boolean(arguments["failed"])); 150var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 151target.CompleteResourceCommand(RpcArguments.String(arguments["requestId"]), RpcArguments.Dto(arguments["result"], NativeRpcJsonContext.Default.RuntimeOperationResult)); 157var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 158target.CompleteResourceConfiguration(RpcArguments.Int64(arguments["revision"]), RpcArguments.Dto(arguments["result"], NativeRpcJsonContext.Default.RuntimeOperationResult)); 164var target = handles.Get<DeclaredValue>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue"); 166var result = target.ConcatValue(handles.Get<DeclaredValue>(arguments["suffix"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue")); 172var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 173target.ConfigurePublishing(RpcArguments.String(arguments["graphJson"])); 179var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 187var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 195var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 197var result = target.CreateEndpointValue(handles.Get<DeclaredResource>(arguments["resource"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"), RpcArguments.String(arguments["endpointName"]), RpcArguments.String(arguments["property"])); 203var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 211var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 213var result = target.CreateLiteralValue(RpcArguments.String(arguments["value"])); 219var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 227var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 228target.DefineResourceCommand(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["displayName"])); 234var target = handles.Get<DeclaredValue>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue"); 242var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 249var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 257var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 264var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 271var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 278var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 285var target = handles.Get<ApplicationExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationExecution"); 292var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 299var target = handles.Get<ApplicationExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationExecution"); 300var result = target.InviteResourceExecution(handles.Get<DeclaredResource>(arguments["resource"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource")); 306var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 308var result = target.InvokeResourceCommand(RpcArguments.String(arguments["resourceName"]), RpcArguments.String(arguments["commandName"])); 314var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 316var result = target.JoinApplicationObserver(RpcArguments.String(arguments["invitation"])); 322var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 324var result = target.JoinApplicationWorkspace(RpcArguments.String(arguments["invitation"])); 330var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 332var result = target.JoinResourceExecution(RpcArguments.String(arguments["invitation"])); 338var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 346var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 347target.PublishObservation(RpcArguments.Dto(arguments["observation"], NativeRpcJsonContext.Default.ResourceObservation)); 353var target = handles.Get<ApplicationExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationExecution"); 360var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 367var target = handles.Get<ResourceLifecycleScope>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceLifecycleScope"); 374var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 381var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 388var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 395var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 396var result = target.ReadResourceLogs(RpcArguments.String(arguments["resourceId"]), RpcArguments.Int64(arguments["afterSequence"])); 402var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 409var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 410target.RemoveSymbolicConfiguration(RpcArguments.String(arguments["name"])); 416var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 417target.ReportPublishingActivity(RpcArguments.String(arguments["step"]), RpcArguments.String(arguments["status"]), RpcArguments.Boolean(arguments["complete"]), RpcArguments.Boolean(arguments["failed"])); 423var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 424target.ReportPublishingProgress(RpcArguments.String(arguments["step"]), RpcArguments.String(arguments["type"]), RpcArguments.String(arguments["id"]), RpcArguments.String(arguments["status"]), RpcArguments.Boolean(arguments["complete"]), RpcArguments.Boolean(arguments["failed"]), RpcArguments.Boolean(arguments["markdown"])); 430var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 432var result = target.RequestConfirmation(RpcArguments.String(arguments["message"])); 438var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 439target.RespondConfirmation(RpcArguments.String(arguments["requestId"]), RpcArguments.Boolean(arguments["accepted"])); 445var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 446var result = await target.RestartContainer(RpcArguments.Int64(arguments["revision"]), RpcArguments.Dto(arguments["container"], NativeRpcJsonContext.Default.ContainerLaunch)).ConfigureAwait(false); 452var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 453var result = await target.RestartContainerWithValues(RpcArguments.Int64(arguments["revision"]), RpcArguments.String(arguments["networkContext"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ContainerWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)).ConfigureAwait(false); 459var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 460var result = await target.RestartContainerWorkload(RpcArguments.Int64(arguments["revision"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ContainerWorkloadLaunch)).ConfigureAwait(false); 466var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 467var result = await target.RestartExecutable(RpcArguments.Int64(arguments["revision"]), RpcArguments.Dto(arguments["executable"], NativeRpcJsonContext.Default.ExecutableLaunch)).ConfigureAwait(false); 473var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 474var result = await target.RestartExecutableWithValues(RpcArguments.Int64(arguments["revision"]), RpcArguments.String(arguments["networkContext"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)).ConfigureAwait(false); 480var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 481var result = await target.RestartExecutableWorkload(RpcArguments.Int64(arguments["revision"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch)).ConfigureAwait(false); 487var target = handles.Get<ApplicationWorkspace>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationWorkspace"); 494var target = handles.Get<CompositionSession>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.CompositionSession"); 495await target.RetireGeneration(handles.Get<Composition>(arguments["composition"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition")).ConfigureAwait(false); 501var target = handles.Get<ResourceLifecycleScope>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceLifecycleScope"); 502var result = await target.RunLifecycleExecutable(RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)).ConfigureAwait(false); 508var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 515var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 516target.SetResourceConfiguration(RpcArguments.Dto(arguments["configuration"], NativeRpcJsonContext.Default.ResourceConfiguration)); 522var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 523target.SetSymbolicConfiguration(RpcArguments.String(arguments["name"]), handles.Get<DeclaredValue>(arguments["value"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue")); 529var target = handles.Get<Composition>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.Composition"); 537var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 538var result = await target.StartContainer(RpcArguments.Dto(arguments["container"], NativeRpcJsonContext.Default.ContainerLaunch)).ConfigureAwait(false); 544var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 545var result = await target.StartContainerWithValues(RpcArguments.Int64(arguments["revision"]), RpcArguments.String(arguments["networkContext"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ContainerWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)).ConfigureAwait(false); 551var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 552var result = await target.StartContainerWorkload(RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ContainerWorkloadLaunch)).ConfigureAwait(false); 558var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 559var result = await target.StartExecutable(RpcArguments.Dto(arguments["executable"], NativeRpcJsonContext.Default.ExecutableLaunch)).ConfigureAwait(false); 565var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 566var result = await target.StartExecutableWithValues(RpcArguments.Int64(arguments["revision"]), RpcArguments.String(arguments["networkContext"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)).ConfigureAwait(false); 572var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 573var result = await target.StartExecutableWorkload(RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch)).ConfigureAwait(false); 579var target = handles.Get<CompositionSession>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.CompositionSession"); 587var target = handles.Get<ApplicationExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationExecution"); 588await target.WaitApplicationReady(RpcArguments.Int32(arguments["timeoutMilliseconds"])).ConfigureAwait(false); 594var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 595target.WaitFor(handles.Get<DeclaredResource>(arguments["dependency"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource")); 601var target = handles.Get<NativeApplicationServer>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.NativeApplicationServer"); 608var target = handles.Get<ApplicationRunLifetime>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationRunLifetime"); 615var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 616var result = await target.WaitResourceCommands(RpcArguments.Int32(arguments["timeoutMilliseconds"])).ConfigureAwait(false); 622var target = handles.Get<ApplicationExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationExecution"); 623var result = await target.WaitResourceCompletion(handles.Get<DeclaredResource>(arguments["resource"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"), RpcArguments.Int32(arguments["timeoutMilliseconds"])).ConfigureAwait(false); 629var target = handles.Get<ResourceExecution>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceExecution"); 630var result = await target.WaitResourceConfiguration(RpcArguments.Int64(arguments["revision"]), RpcArguments.Int32(arguments["timeoutMilliseconds"])).ConfigureAwait(false); 636var target = handles.Get<ApplicationObserver>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ApplicationObserver"); 637var result = await target.WaitResourceObservations(RpcArguments.Int64(arguments["version"]), RpcArguments.Int32(arguments["timeoutMilliseconds"])).ConfigureAwait(false); 643var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 645var result = target.WithArgument(handles.Get<DeclaredValue>(arguments["value"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue")); 651var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 653var result = target.WithBindMount(RpcArguments.String(arguments["source"]), RpcArguments.String(arguments["target"]), RpcArguments.Boolean(arguments["readOnly"])); 659var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 660target.WithComputeEnvironment(handles.Get<DeclaredResource>(arguments["environment"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource")); 666var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 668var result = target.WithEndpoint(RpcArguments.Dto(arguments["endpoint"], NativeRpcJsonContext.Default.WorkloadEndpointDeclaration)); 674var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 676var result = target.WithEntrypoint(RpcArguments.String(arguments["entrypoint"])); 682var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 684var result = target.WithEnvironment(RpcArguments.String(arguments["name"]), handles.Get<DeclaredValue>(arguments["value"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue")); 690var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 698var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 700var result = target.WithLifecycleExecutable(RpcArguments.String(arguments["phase"]), RpcArguments.Dto(arguments["launch"], NativeRpcJsonContext.Default.ExecutableWorkloadLaunch), RpcArguments.Dto(arguments["bindings"], NativeRpcJsonContext.Default.SymbolicLaunchBindings)); 706var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 708var result = target.WithReference(RpcArguments.String(arguments["environmentName"]), handles.Get<DeclaredValue>(arguments["value"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue")); 714var target = handles.Get<DeclaredResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredResource"); 716var result = target.WithVolume(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["target"]), RpcArguments.Boolean(arguments["readOnly"])); 722var target = handles.Get<ResourceLifecycleScope>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.ResourceLifecycleScope"); 723target.WriteLifecycleLog(RpcArguments.String(arguments["stream"]), RpcArguments.String(arguments["message"])); 729var target = handles.Get<RpcArgsEditor>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcArgsEditor"); 730target.Add(RpcArguments.Union(arguments["value"], handles, ["Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEndpoint", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"])); 736var target = handles.Get<RpcBuilder>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcBuilder"); 738var result = target.AddContainer(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["image"])); 744var target = handles.Get<RpcBuilder>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcBuilder"); 746var result = target.AddExecutable(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["executablePath"]), RpcArguments.String(arguments["workingDirectory"])); 752var target = handles.Get<RpcBuilder>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcBuilder"); 754var result = target.AddSecretParameter(RpcArguments.String(arguments["name"]), RpcArguments.String(arguments["value"])); 760var target = handles.Get<RpcBuilder>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcBuilder"); 768var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 770var result = target.GetEndpoint(RpcArguments.String(arguments["name"])); 776var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 783var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 784var result = target.GetSerializedAnnotation(RpcArguments.String(arguments["annotationId"])); 790var target = handles.Get<RpcEndpoint>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEndpoint"); 792var result = target.Property(RpcArguments.String(arguments["property"])); 798var target = handles.Get<RpcBuilder>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcBuilder"); 805var target = handles.Get<RpcEnvironmentEditor>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEnvironmentEditor"); 806target.Set(RpcArguments.String(arguments["name"]), RpcArguments.Union(arguments["value"], handles, ["Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEndpoint", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"])); 812var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 814var result = target.WaitFor(handles.Get<RpcResource>(arguments["dependency"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource")); 820var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 822var result = target.WithArgs(RpcArguments.Strings(arguments["args"])); 828var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 829var result = await target.WithArgsCallback(connection.CreateAuthoringCallback<RpcArgsEditor>(callbackConnection, RpcArguments.String(arguments["callback"]), "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcArgsEditor")).ConfigureAwait(false); 835var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 837var result = target.WithConnectionString(RpcArguments.Union(arguments["value"], handles, ["Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEndpoint", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"])); 843var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 845var result = target.WithEndpoint(RpcArguments.Dto(arguments["options"], NativeRpcJsonContext.Default.RpcEndpointOptions)); 851var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 853var result = target.WithEnvironment(RpcArguments.String(arguments["name"]), RpcArguments.Union(arguments["value"], handles, ["Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Api.DeclaredValue", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEndpoint", "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"])); 859var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 860var result = await target.WithEnvironmentCallback(connection.CreateAuthoringCallback<RpcEnvironmentEditor>(callbackConnection, RpcArguments.String(arguments["callback"]), "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcEnvironmentEditor")).ConfigureAwait(false); 866var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 868var result = target.WithImageTag(RpcArguments.String(arguments["tag"])); 874var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 876var result = target.WithReference(handles.Get<RpcResource>(arguments["source"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource")); 882var target = handles.Get<RpcResource>(arguments["context"], "Aspire.Hosting.Native.Server/Aspire.Hosting.Native.Authoring.RpcResource"); 884var result = target.WithSerializedAnnotation(RpcArguments.String(arguments["annotationId"]), RpcArguments.String(arguments["json"]));
Rpc\NativeHandles.cs (4)
52var id = RpcArguments.String(reference["$handle"]); 53var typeId = RpcArguments.String(reference["$type"]); 69var id = RpcArguments.String(reference["$handle"]); 70var typeId = RpcArguments.String(reference["$type"]);
Rpc\NativeProviderMetadata.cs (20)
25contract["Capabilities"]!.AsArray().Select(value => value!["CapabilityId"]!.GetValue<string>()).ToHashSet(StringComparer.Ordinal), 26contract["HandleTypes"]!.AsArray().Select(value => value!["AtsTypeId"]!.GetValue<string>()).ToHashSet(StringComparer.Ordinal)); 35if (manifest is not JsonObject envelope || envelope["protocolVersion"] is not JsonValue version || 37envelope["capabilities"] is not JsonArray { Count: > 0 and <= 128 } capabilities) 44if (capabilities[index] is not JsonObject metadata || metadata["id"] is not JsonValue || 45metadata["parameters"] is not JsonArray { Count: <= 32 } parameters || 46metadata["returnType"] is not JsonObject returnType) 50result[index] = new(RpcArguments.String(metadata["id"]), RpcArguments.String(metadata["method"]), 60if (parameter is not JsonObject argument || argument["type"] is not JsonObject type) 64var name = RpcArguments.String(argument["name"]); 71if (type["category"] is not JsonValue category || !category.TryGetValue<string>(out var categoryName) || categoryName != "Callback" || 72argument["callbackParameters"] is not JsonArray { Count: <= 16 } callbackParameters || 73argument["callbackReturnType"] is not JsonObject callbackReturn) 80if (callbackParameters[index] is not JsonObject projectedParameter || projectedParameter["type"] is not JsonObject projectedType) 91new(RpcArguments.String(type["typeId"]), RpcArguments.String(type["category"]) switch 100metadata[name] is { } value ? RpcArguments.String(value) : null; 104if (metadata[name] is null) 108if (metadata[name] is JsonValue value && value.TryGetValue<bool>(out var flag))
Rpc\NativeProviderRegistry.cs (4)
222var callbackId = RpcArguments.String(arguments[name]); 229mapped[name] = ToProvider(registration, caller, arguments[name], parameter.Type, out var resource); 344RpcArguments.String(handle["$type"])); 373mapped[$"p{index}"] = ToCaller(registration, callback.Owner, arguments[$"p{index}"],
Rpc\NativeProviderValueProtocol.cs (4)
31var id = RpcArguments.String(handle["$handle"]); 32if (id.Length is 0 or > 512 || RpcArguments.String(handle["$type"]) != type.TypeId) 36if (!core && handle["$lifetime"] is not JsonObject) 41return new(id, handle, handle["$lifetime"] as JsonObject);
Rpc\NativeRpcConnection.cs (3)
21private static readonly HashSet<string> s_coreCapabilities = s_contract["Capabilities"]!.AsArray() 76DelegatedCoreReference delegated => (delegated.Owner, RpcArguments.String(delegated.Handle["$handle"]), typeId), 77ProviderResourceReference resource => (resource.Provider.Connection, RpcArguments.String(resource.Handle["$handle"]), typeId),
Rpc\RpcArguments.cs (1)
44if (value is JsonObject reference && typeIds.Contains(String(reference["$type"]), StringComparer.Ordinal))
Aspire.Hosting.Python.Tests (6)
AddPythonAppTests.cs (6)
1321Assert.Equal("container.v1", manifest["type"]?.ToString()); 1336Assert.Equal("container.v1", manifest["type"]?.ToString()); 1351Assert.Equal("container.v1", manifest["type"]?.ToString()); 1366Assert.Equal("container.v1", manifest["type"]?.ToString()); 1367Assert.Equal("/app/run", manifest["entrypoint"]?.ToString()); 1521Assert.Equal(["sibling"], manifest["resources"]!.AsObject().Select(resource => resource.Key));
Aspire.Hosting.Radius (2)
Publishing\RadiusDeploymentPipelineStep.cs (2)
74root["controlPlane"] is not JsonObject controlPlane || 75controlPlane["version"] is not JsonValue versionValue ||
Aspire.Hosting.Redis.Tests (40)
AddRedisTests.cs (35)
153var resources = fullManifest["resources"]!; 154var manifest = resources["redis"]!; 156Assert.Equal("container.v0", manifest["type"]!.GetValue<string>()); 157var connectionString = manifest["connectionString"]!.GetValue<string>(); 162Assert.Equal($"{RedisContainerImageTags.Registry}/{RedisContainerImageTags.Image}:{RedisContainerImageTags.Tag}", manifest["image"]!.GetValue<string>()); 163Assert.Equal("/bin/sh", manifest["entrypoint"]!.GetValue<string>()); 164Assert.Equal("{redis-password.value}", manifest["env"]!["REDIS_PASSWORD"]!.GetValue<string>()); 165Assert.Equal("redis", manifest["bindings"]!["tcp"]!["scheme"]!.GetValue<string>()); 166Assert.Equal(6379, manifest["bindings"]!["tcp"]!["targetPort"]!.GetValue<int>()); 178var resources = fullManifest["resources"]!; 179var manifest = resources["redis"]!; 181Assert.Equal("container.v0", manifest["type"]!.GetValue<string>()); 182var connectionString = manifest["connectionString"]!.GetValue<string>(); 187Assert.Equal($"{RedisContainerImageTags.Registry}/{RedisContainerImageTags.Image}:{RedisContainerImageTags.Tag}", manifest["image"]!.GetValue<string>()); 188Assert.Equal("/bin/sh", manifest["entrypoint"]!.GetValue<string>()); 189Assert.Equal("redis", manifest["bindings"]!["tcp"]!["scheme"]!.GetValue<string>()); 190Assert.Equal(6379, manifest["bindings"]!["tcp"]!["targetPort"]!.GetValue<int>()); 207var resources = fullManifest["resources"]!; 208var manifest = resources["redis"]!; 210Assert.Equal("container.v0", manifest["type"]!.GetValue<string>()); 211var connectionString = manifest["connectionString"]!.GetValue<string>(); 216Assert.Equal($"{RedisContainerImageTags.Registry}/{RedisContainerImageTags.Image}:{RedisContainerImageTags.Tag}", manifest["image"]!.GetValue<string>()); 217Assert.Equal("{pass.value}", manifest["env"]!["REDIS_PASSWORD"]!.GetValue<string>()); 218Assert.Equal("redis", manifest["bindings"]!["tcp"]!["scheme"]!.GetValue<string>()); 219Assert.Equal(6379, manifest["bindings"]!["tcp"]!["targetPort"]!.GetValue<int>()); 233var resources = fullManifest["resources"]!; 234var manifest = resources["redis"]!; 236Assert.Equal("container.v0", manifest["type"]!.GetValue<string>()); 237var connectionString = manifest["connectionString"]!.GetValue<string>(); 242Assert.Equal($"{RedisContainerImageTags.Registry}/{RedisContainerImageTags.Image}:{RedisContainerImageTags.Tag}", manifest["image"]!.GetValue<string>()); 243Assert.Equal("{pass.value}", manifest["env"]!["REDIS_PASSWORD"]!.GetValue<string>()); 244Assert.Equal("redis", manifest["bindings"]!["tcp"]!["scheme"]!.GetValue<string>()); 245Assert.Equal(6379, manifest["bindings"]!["tcp"]!["targetPort"]!.GetValue<int>()); 1088var creEntry = resources[creName]; 1090Assert.Equal("value.v0", creEntry["type"]!.GetValue<string>());
RedisFunctionalTests.cs (5)
716var agreements = jo["agreements"]; 719Assert.False(agreements["analytics"]!.GetValue<bool>()); 720Assert.False(agreements["notifications"]!.GetValue<bool>()); 721Assert.False(agreements["encryption"]!.GetValue<bool>()); 722Assert.True(agreements["eula"]!.GetValue<bool>());
Aspire.Hosting.RemoteHost (3)
Ats\AtsCallbackProxyFactory.cs (1)
412if (returnedArgs[key] is JsonObject modifiedDto)
Ats\ExternalCapabilityRegistry.cs (2)
608args[parameter.Name], typeof(CancellationToken), 651if (args[parameter.Name] is JsonValue value && value.TryGetValue<string>(out var callbackId) && !string.IsNullOrEmpty(callbackId))
Aspire.Hosting.RemoteHost.Tests (60)
AtsMarshallerTests.cs (34)
205Assert.Equal("test/IResource", result["$type"]!.GetValue<string>()); 206Assert.True(registry.TryGet(result["$handle"]!.GetValue<string>(), out var retrieved, out _)); 610Assert.NotNull(jsonObj["$handle"]); 611Assert.NotNull(jsonObj["$type"]); 613var typeId = jsonObj["$type"]!.GetValue<string>(); 629Assert.NotNull(jsonObj["$handle"]); 630Assert.NotNull(jsonObj["$type"]); 632var typeId = jsonObj["$type"]!.GetValue<string>(); 648Assert.NotNull(jsonObj["$handle"]); 649Assert.NotNull(jsonObj["$type"]); 844Assert.Equal("test", jsonObj["name"]?.GetValue<string>()); 845Assert.Equal(10, jsonObj["count"]?.GetValue<int>()); 897Assert.Equal(1500, json["required"]?.GetValue<double>()); 898Assert.Equal(90_000, json["optional"]?.GetValue<double>()); 899Assert.Null(json["empty"]); 991Assert.Equal("root", obj["name"]!.GetValue<string>()); 992Assert.True(obj["self"] is null || obj["self"]!.GetValueKind() == System.Text.Json.JsonValueKind.Null); 1007Assert.Equal("parent", obj["label"]!.GetValue<string>()); 1008var childObj = Assert.IsType<JsonObject>(obj["child"]); 1009Assert.Equal("child", childObj["label"]!.GetValue<string>()); 1011Assert.True(childObj["parent"] is null || childObj["parent"]!.GetValueKind() == System.Text.Json.JsonValueKind.Null); 1027Assert.Equal("typed", obj["name"]!.GetValue<string>()); 1028Assert.True(obj["self"] is null || obj["self"]!.GetValueKind() == System.Text.Json.JsonValueKind.Null); 1043Assert.Equal("parent", obj["label"]!.GetValue<string>()); 1044var childObj = Assert.IsType<JsonObject>(obj["child"]); 1045Assert.Equal("child", childObj["label"]!.GetValue<string>()); 1046Assert.True(childObj["parent"] is null || childObj["parent"]!.GetValueKind() == System.Text.Json.JsonValueKind.Null); 1344Assert.NotNull(jsonObj["$handle"]); 1345Assert.NotNull(jsonObj["$type"]); 1361var handleId = json["$handle"]!.GetValue<string>();
CallbackProxyTests.cs (11)
209Assert.Equal("hello-world", args["p0"]?.GetValue<string>()); 226Assert.Equal("test-name", args["p0"]?.GetValue<string>()); 227Assert.Equal(42, args["p1"]?.GetValue<int>()); 250var handle = Assert.IsAssignableFrom<JsonObject>(args["p0"]); 251Assert.NotNull(handle["$handle"]?.GetValue<string>()); 252Assert.Equal(AtsTypeMapping.DeriveTypeId(typeof(ITestCallbackHandle)), handle["$type"]?.GetValue<string>()); 282Assert.Equal("test", args["p0"]?.GetValue<string>()); 283var tokenId = args["p1"]?.GetValue<string>(); 286Assert.Equal(tokenId, args["$cancellationToken"]?.GetValue<string>()); 303var tokenId = args["p0"]?.GetValue<string>(); 305Assert.Equal(tokenId, args["$cancellationToken"]?.GetValue<string>());
CapabilityDispatcherTests.cs (4)
152var resultHandle = result["$handle"]!.GetValue<string>(); 583var nestedHandleId = handleRef["$handle"]!.GetValue<string>(); 584var nestedTypeId = handleRef["$type"]!.GetValue<string>(); 912Assert.Equal("hello from C#", callbackArgs["p0"]?.GetValue<string>());
ExternalCapabilityRegistryTests.cs (6)
149var invalidCapability = payload["capabilities"]![1]!.AsObject(); 247payload["capabilities"]![0]!["parameters"] = JsonSerializer.SerializeToNode(new[] 555payload["capabilities"]![0]!.AsObject().Remove(fieldName); 665(isFirst ? firstRequest : secondRequest).TrySetResult(args["configure"]!.GetValue<string>()); 685Assert.Equal("guest_callback", firstArgs["configure"]!.GetValue<string>()); 686Assert.Equal("guest_callback", secondArgs["configure"]!.GetValue<string>());
HandleRegistryTests.cs (4)
169Assert.NotNull(json["$handle"]); 170Assert.NotNull(json["$type"]); 171Assert.Equal("aspire/TestObject", json["$type"]!.GetValue<string>()); 173var handleId = json["$handle"]!.GetValue<string>();
ReferenceExpressionRefTests.cs (1)
270((JsonObject)json["$expr"]!)["valueProviders"] = providersArray;
Aspire.Hosting.Tests (126)
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (2)
1375Assert.Equal("localhost", nameValueObject["Host"]?.GetValue<string>()); 1376Assert.Equal("catalogdb", nameValueObject["DatabaseName"]?.GetValue<string>());
DistributedApplicationBuilderTests.cs (10)
670Assert.Equal(42, section.Data["Count"]!.GetValue<int>()); 671Assert.True(section.Data["Enabled"]!.GetValue<bool>()); 672Assert.Equal(1.25, section.Data["Ratio"]!.GetValue<double>()); 674Assert.Null(section.Data["Missing"]); 675Assert.Equal("value", section.Data["Text"]!.GetValue<string>()); 716Assert.Equal(42, section.Data["Count"]!.GetValue<int>()); 717Assert.True(section.Data["Enabled"]!.GetValue<bool>()); 718Assert.Equal(1.25, section.Data["Ratio"]!.GetValue<double>()); 720Assert.Null(section.Data["Missing"]); 721Assert.Equal("value", section.Data["Text"]!.GetValue<string>());
DotnetProgramPublishingTests.cs (3)
165Assert.Equal("project.v0", manifest["type"]?.GetValue<string>()); 166Assert.Equal("program.csproj", manifest["path"]?.GetValue<string>()); 169manifest["args"]?.AsArray().Select(static value => value!.GetValue<string>()));
JsonFlattenerTests.cs (31)
37Assert.Equal("existing-flat-value", result["Azure:SubscriptionId"]!.ToString()); 38Assert.Equal("microsoft.onmicrosoft.com", result["Azure:Tenant"]!.ToString()); 39Assert.Equal("/subscriptions/123/deployments/MyStorage", result["Azure:Deployments:MyStorage:Id"]!.ToString()); 40Assert.Equal("{ \"param\": \"value\" }", result["Azure:Deployments:MyStorage:Parameters"]!.ToString()); 62Assert.Equal("07268dd7-4c50-434b-b1ff-67b8164edb41", result["Azure:SubscriptionId"]!.ToString()); 63Assert.Equal("microsoft.onmicrosoft.com", result["Azure:Tenant"]!.ToString()); 64Assert.Equal("eastus2", result["Azure:Location"]!.ToString()); 103Assert.Equal("nested-value", result["Level1:Level2:Level3:DeepValue"]!.ToString()); 127Assert.Equal("text", result["StringValue"]!.ToString()); 128Assert.Equal("42", result["NumberValue"]!.ToString()); 129Assert.Equal("true", result["BoolValue"]!.ToString()); 130Assert.Null(result["NullValue"]); 131Assert.Equal("inner-text", result["Nested:InnerString"]!.ToString()); 132Assert.Null(result["Nested:InnerNull"]); 150Assert.Equal("value1", result["SimpleArray:0"]!.ToString()); 151Assert.Equal("value2", result["SimpleArray:1"]!.ToString()); 152Assert.Equal("value3", result["SimpleArray:2"]!.ToString()); 154Assert.Equal("1", result["NumberArray:0"]!.ToString()); 155Assert.Equal("2", result["NumberArray:1"]!.ToString()); 156Assert.Equal("3", result["NumberArray:2"]!.ToString()); 158Assert.Equal("text", result["MixedArray:0"]!.ToString()); 159Assert.Equal("42", result["MixedArray:1"]!.ToString()); 160Assert.Equal("true", result["MixedArray:2"]!.ToString()); 161Assert.Null(result["MixedArray:3"]); 190Assert.Equal("Item1", result["ObjectArray:0:Name"]!.ToString()); 191Assert.Equal("Value1", result["ObjectArray:0:Value"]!.ToString()); 192Assert.Equal("Item2", result["ObjectArray:1:Name"]!.ToString()); 193Assert.Equal("Value2", result["ObjectArray:1:Value"]!.ToString()); 195Assert.Equal("1", result["NestedConfig:Items:0:Id"]!.ToString()); 196Assert.Equal("true", result["NestedConfig:Items:0:Settings:Enabled"]!.ToString()); 214Assert.Equal("test", result["OtherValue"]!.ToString());
KestrelConfigTests.cs (1)
299Assert.Equal(expectedEnv, manifest["env"]!.ToString());
Orchestrator\ParameterProcessorTests.cs (3)
1636Assert.Equal("saved-value", stateManager.State[parameter.ConfigurationKey]?.GetValue<string>()); 1665Assert.Equal("form-value", stateManager.State[secondParameter.ConfigurationKey]?.GetValue<string>()); 2227Assert.Equal("old-value", stateManager.State[configurationKey]?.GetValue<string>());
Publishing\DeploymentStateManagerTests.cs (75)
48Assert.Equal("value1", section2.Data["key1"]?.GetValue<string>()); 64Assert.Null(restartedSection.Data["NullValue"]); 117Assert.Equal("value1", parametersCheck.Data["param1"]?.GetValue<string>()); 118Assert.Equal("azure-value1", azureCheck.Data["resource1"]?.GetValue<string>()); 146Assert.Equal($"value{i}", section.Data[$"key{i}"]?.GetValue<string>()); 165Assert.Equal("value1", section2.Data["key1"]?.GetValue<string>()); 186Assert.Equal("value1", section2.Data["key1"]?.GetValue<string>()); 199Assert.Equal("value1", section3.Data["key1"]?.GetValue<string>()); 200Assert.Equal("value2", section3.Data["key2"]?.GetValue<string>()); 238Assert.Equal("value1", parametersSection.Data["param1"]?.GetValue<string>()); 239Assert.Equal("azure-value1", azureSection.Data["resource1"]?.GetValue<string>()); 240Assert.Equal("value1", restartedParametersSection.Data["param1"]?.GetValue<string>()); 257Assert.Equal("value1", retrievedSection.Data["key1"]?.GetValue<string>()); 274Assert.Equal("nestedValue", verifySection.Data["nestedKey"]?.GetValue<string>()); 294Assert.Equal("value1", verify1.Data["key1"]?.GetValue<string>()); 295Assert.Equal("value2", verify2.Data["key2"]?.GetValue<string>()); 311Assert.Equal("value1", verify.Data[""]?.GetValue<string>()); 371Assert.Equal("topValue", verifyTop.Data["topKey"]?.GetValue<string>()); 372Assert.Equal("nestedValue", verifyNested.Data["nestedKey"]?.GetValue<string>()); 478Assert.True(migratedSection.Data["legacy"]?.GetValue<bool>()); 490Assert.True(currentSection.Data["legacy"]?.GetValue<bool>()); 491Assert.True(currentSection.Data["current"]?.GetValue<bool>()); 533Assert.Equal("legacy", legacyAfterRestart.Data["Value"]?.GetValue<string>()); 534Assert.Equal("current", replacementAfterRestart.Data["Value"]?.GetValue<string>()); 556Assert.Equal("committed", restartedSection.Data["Value"]?.GetValue<string>()); 594Assert.Equal("legacy", parameterSection.Data[""]?.GetValue<string>()); 621Assert.Equal("existing", section.Data[""]?.GetValue<string>()); 627Assert.Equal("existing", restartedSection.Data[""]?.GetValue<string>()); 658Assert.Equal("updated", restartedSection.Data[""]?.GetValue<string>()); 690Assert.Equal("updated", restartedSection.Data["Leaf"]?.GetValue<string>()); 718var features = Assert.IsType<JsonObject>(restartedSection.Data["Features"]); 720Assert.True(features["A"]?.GetValue<bool>()); 721Assert.True(features["B"]?.GetValue<bool>()); 754Assert.Equal("first-sandbox", migratedFirstSection.Data["SandboxId"]?.GetValue<string>()); 755Assert.True(migratedFirstSection.Data["Migrated"]?.GetValue<bool>()); 767Assert.True(restartedFirstSection.Data["Migrated"]?.GetValue<bool>()); 768Assert.Equal("second-sandbox", restartedSecondSection.Data["SandboxId"]?.GetValue<string>()); 773Assert.Equal("second-sandbox", secondSection.Data["SandboxId"]?.GetValue<string>()); 783Assert.Equal("first-sandbox", clearedFirstLegacySection.Data["SandboxId"]?.GetValue<string>()); 784Assert.Equal("second-sandbox", preservedSecondLegacySection.Data["SandboxId"]?.GetValue<string>()); 808Assert.Equal("current-subscription", currentAzureSection.Data["SubscriptionId"]?.GetValue<string>()); 809Assert.Null(currentAzureSection.Data["Sandboxes"]); 813Assert.Equal("current-subscription", restartedAzureSection.Data["SubscriptionId"]?.GetValue<string>()); 814Assert.Equal("first-sandbox", restartedAzureSection.Data["Sandboxes"]?["first"]?["SandboxId"]?.GetValue<string>()); 815Assert.Equal("second-sandbox", restartedAzureSection.Data["Sandboxes"]?["second"]?["SandboxId"]?.GetValue<string>()); 816Assert.Null((await restartedStateManager.AcquireCurrentSectionAsync("Azure")).Data["Sandboxes"]); 847Assert.Null(restartedAzureSection.Data["SubscriptionId"]); 848Assert.Null(restartedAzureSection.Data["Sandboxes"]?["legacy"]); 851restartedAzureSection.Data["Sandboxes"]?["new"]?["SandboxId"]?.GetValue<string>()); 892Assert.Null(restartedSandboxesSection.Data["first"]?["SandboxId"]); 893Assert.Null(restartedSandboxesSection.Data["first"]?["LegacyOnly"]); 896restartedSandboxesSection.Data["first"]?["new"]?["SandboxId"]?.GetValue<string>()); 899restartedSandboxesSection.Data["second"]?["SandboxId"]?.GetValue<string>()); 935Assert.Equal("first-sandbox", restartedFirstSection.Data["SandboxId"]?.GetValue<string>()); 936Assert.True(restartedFirstSection.Data["Updated"]?.GetValue<bool>()); 937Assert.Equal("second-sandbox", restartedSecondSection.Data["SandboxId"]?.GetValue<string>()); 938Assert.True(restartedSecondSection.Data["Updated"]?.GetValue<bool>()); 968Assert.Equal("current-subscription", restartedAzureSection.Data["SubscriptionId"]?.GetValue<string>()); 969Assert.Equal("current-location", restartedAzureSection.Data["Location"]?.GetValue<string>()); 972Assert.Equal("current-subscription", currentAzureSection.Data["SubscriptionId"]?.GetValue<string>()); 973Assert.Equal("current-location", currentAzureSection.Data["Location"]?.GetValue<string>()); 1003Assert.Equal("sub", preservedLegacySection.Data["SubscriptionId"]?.GetValue<string>()); 1033Assert.Equal("current-sub", asyncEffectiveState["Azure"]?["SubscriptionId"]?.GetValue<string>()); 1034Assert.Equal("current-sub", syncEffectiveState["Azure"]?["SubscriptionId"]?.GetValue<string>()); 1035Assert.Equal("current-sub", migratedSection.Data["SubscriptionId"]?.GetValue<string>()); 1057Assert.Equal("current-sub", asyncEffectiveState["Azure"]?["SubscriptionId"]?.GetValue<string>()); 1058Assert.Equal("current-sub", syncEffectiveState["Azure"]?["SubscriptionId"]?.GetValue<string>()); 1059Assert.Equal("current-sub", restartedSection.Data["SubscriptionId"]?.GetValue<string>()); 1065Assert.Equal("current-sub", savedSection.Data["SubscriptionId"]?.GetValue<string>()); 1066Assert.Equal("westus", savedSection.Data["Location"]?.GetValue<string>()); 1084Assert.Equal("sub", currentSection.Data["SubscriptionId"]?.GetValue<string>()); 1135.Data["SandboxId"]?.GetValue<string>()); 1139.Data["SubscriptionId"]?.GetValue<string>()); 1176.Data["SandboxId"]?.GetValue<string>()); 1180.Data["SandboxId"]?.GetValue<string>());
WithEndpointTests.cs (1)
549Assert.Equal(expectedEnv, manifest["env"]!.ToString());
Aspire.Hosting.TestUtilities (2)
Utils\ManifestUtils.cs (2)
41var resourceNode = obj[resource.Name]; 88var resourceNode = obj[r.Name];
ConfigurationSchemaGenerator (11)
ConfigSchemaEmitter.cs (11)
119var backupTypeNode = currentNode["type"]; 123if (currentNode[propertiesName] is not JsonObject propertiesNode) 132if (propertiesNode[pathSegment] is not JsonObject pathSegmentNode) 147backupCasingOfPathSegmentName = propertiesNode[pathSegment].GetPropertyName(); 174var existingValue = propertiesNode[pathSegment]; 240var backupTypeNode = currentNode["type"]; 244if (currentNode["properties"] is not JsonObject propertiesNode) 284var backupPropertyNode = currentNode[property.ConfigurationKeyName]; 315var backupTypeNode = currentNode["type"]; 316var backupContainerNode = currentNode[containerName]; 449var propertyNodeType = propertyNode["type"];
dotnet-aot (1)
parent\dotnet\Telemetry\TelemetryDiskLogger.cs (1)
56var activitiesArray = root["activities"]!.AsArray();
dotnet-user-jwts (6)
Helpers\JwtAuthenticationSchemeSettings.cs (4)
28if (config[AuthenticationKey] is JsonObject authentication) 30if (authentication[SchemesKey] is JsonObject schemes) 76if (config[AuthenticationKey] is JsonObject authentication && 77authentication[SchemesKey] is JsonObject schemes)
Helpers\SigningKeysHandler.cs (2)
82var signingKeys = secrets[signkingKeysPropertyName].AsArray(); 85var toRemove = signingKeys.SingleOrDefault(key => key["Issuer"].GetValue<string>() == issuer);
GenerateTemplateManifest (3)
TemplateRestorePlan.cs (3)
94var symbols = config["symbols"]?.AsObject() ?? []; 95var relevant = content + "\nFramework\n" + config["sources"]?.ToJsonString(); 121"choice" => symbol["choices"]!.AsArray().Select(c => c!["choice"]!.GetValue<string>()).ToArray(),
Infrastructure.Tests (572)
Pipelines\NpmCliPackageTests.cs (8)
138GetStringArray(packageJson["keywords"])); 144Assert.Equal(["bin", "README.md"], GetStringArray(packageJson["files"])); 208Assert.Equal(expectation.Os, GetStringArray(packageJson["os"])); 209Assert.Equal(expectation.Cpu, GetStringArray(packageJson["cpu"])); 210Assert.Equal(["bin", "README.md"], GetStringArray(packageJson["files"])); 218Assert.Equal(expectation.Libc, GetStringArray(packageJson["libc"])); 356return jsonObject[propertyName]?.AsObject() 362return jsonObject[propertyName]?.GetValue<string>()
TemplateManifest\TemplateManifestNpmTests.cs (1)
43var dependencies = lockfile["packages"]![""]![group]!.AsObject();
TemplateManifest\TemplateRestorePlanTests.cs (2)
73config["symbols"]!["IsNew"] = JsonNode.Parse("""{"type":"computed","value":"(Mode == \"New\")"}"""); 304config["symbols"]!["Mode"] = JsonNode.Parse(mode);
WorkflowScripts\AutoSecWorkflowTests.cs (561)
47Assert.Equal(0, result["exitCode"]!.GetValue<int>()); 48Assert.Equal("", result["stdout"]!.GetValue<string>()); 49Assert.Equal("", result["stderr"]!.GetValue<string>()); 50Assert.Equal(empty ? 0 : 1, result["counts"]!["alerts"]!.GetValue<int>()); 53Assert.Empty(result["alerts"]!.AsArray()); 57var alert = Assert.Single(result["alerts"]!.AsArray())!; 58Assert.True(alert["malware"]!.GetValue<bool>()); 59Assert.Equal(["< 1.2.3"], alert["vulnerable_ranges"]!.AsArray().Select(item => item!.GetValue<string>())); 60Assert.Null(alert["security_advisory"]); 75Assert.Equal(exitCode, result["exitCode"]!.GetValue<int>()); 76Assert.Equal("", result["stdout"]!.GetValue<string>()); 78result["stderr"]!.GetValue<string>().ReplaceLineEndings("\n")); 79Assert.Null(result["counts"]); 108Assert.True(result["failed"]!.GetValue<bool>()); 109Assert.Null(result["output"]); 110Assert.Equal(endpoint, result["calls"]!.AsArray().Last()!.GetValue<string>()); 122var file = request["changedFiles"]![1]![0]!; 124var contents = request["contents"]!.AsObject(); 137contents["repos/microsoft/aspire/contents/extension/yarn.lock?ref=base"]!.DeepClone(); 143Assert.False(result["failed"]!.GetValue<bool>()); 144var pr = Assert.Single(result["output"]!.AsArray())!; 145Assert.Equal(["README.md", "extension/yarn.lock"], pr["files"]!.AsArray().Select(n => n!.GetValue<string>())); 146Assert.Equal(status == "removed" ? [] : [7], pr["covered_alerts"]!.AsArray().Select(n => n!.GetValue<int>())); 156Assert.Equal(calls, result["calls"]!.AsArray().Select(n => n!.GetValue<string>())); 168request["changedFiles"]![1]![0]!["status"] = status; 180Assert.True(result["failed"]!.GetValue<bool>()); 181Assert.Null(result["output"]); 190var decision = Assert.Single(result["value"]!.AsArray()); 192Assert.Empty(decision["reasons"]!.AsArray()); 193Assert.Equal([7], decision["fixedAlerts"]!.AsArray().Select(n => n!.GetValue<int>())); 194var review = Assert.Single(result["reviews"]!.AsArray()); 196Assert.Equal(101, review["pull_number"]!.GetValue<int>()); 197Assert.Equal(HeadSha, review["commit_id"]!.GetValue<string>()); 209Assert.Equal("approve", result["value"]![0]!["decision"]!.GetValue<string>()); 210Assert.Empty(result["reviews"]!.AsArray()); 211Assert.Contains("(staged)", result["summary"]!.GetValue<string>(), StringComparison.Ordinal); 231scenario["contents"]!["old/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20"); 240Assert.Empty(result["reviews"]!.AsArray()); 241Assert.Equal(["gate-evaluation-failed"], result["value"]![0]!["reasons"]!.AsArray().Select(item => item!.GetValue<string>())); 242Assert.Equal(["Auto-sec approval failed: gate-evaluation-failed."], result["failures"]!.AsArray().Select(item => item!.GetValue<string>())); 258scenario["alerts"]![0]!["manifest_path"] = "extension/package.json"; 259scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("transitive", "4.0.0"); 260scenario["contents"]!["moved/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("transitive", breaking ? "5.0.0" : "4.1.0"); 261scenario["responses"]!["https://registry.npmjs.org/transitive"] = Response(new JsonObject 268Assert.Equal(breaking ? "skip" : "approve", result["value"]![0]!["decision"]!.GetValue<string>()); 269Assert.Equal(breaking ? ["breaking-change"] : [], result["value"]![0]!["reasons"]!.AsArray().Select(item => item!.GetValue<string>())); 272result["contentCalls"]!.AsArray().Select(item => item!.GetValue<string>())); 283scenario["alerts"]![0]!["manifest_path"] = "extension/package.json"; 284scenario["contents"]!.AsObject().Remove($"extension/yarn.lock@{(status == "added" ? "base" : "head")}"); 288Assert.Equal("approve", result["value"]![0]!["decision"]!.GetValue<string>()); 291result["contentCalls"]!.AsArray().Select(item => item!.GetValue<string>())); 317Assert.Empty(result["reviews"]!.AsArray()); 318Assert.Equal(["gate-evaluation-failed"], result["value"]![0]!["reasons"]!.AsArray().Select(item => item!.GetValue<string>())); 342Assert.Equal([$"Auto-sec approval failed: {reason}."], result["failures"]!.AsArray().Select(n => n!.GetValue<string>())); 343Assert.Empty(result["warnings"]!.AsArray()); 346Assert.Empty(result["value"]!.AsArray()); 347Assert.Equal(phase == "summary" ? "auto-sec Dependabot approvals\nRequests: 1. Approved: 1. Skipped: 0.\n\n- #101: approve" : "", result["summary"]!.GetValue<string>()); 351var decision = Assert.Single(result["value"]!.AsArray()); 353Assert.Equal([reason], decision["reasons"]!.AsArray().Select(n => n!.GetValue<string>())); 354Assert.Empty(decision["fixedAlerts"]!.AsArray()); 355Assert.Equal($"auto-sec Dependabot approvals\nRequests: 1. Approved: 0. Skipped: 1.\n\n- #101: skip ({reason})", result["summary"]!.GetValue<string>()); 357Assert.Equal(phase is "summary" or "submission-after-accept" ? 1 : 0, result["reviews"]!.AsArray().Count); 359result["info"]!.AsArray().Select(n => n!.GetValue<string>())); 387comparison["merge_base_commit"]!["sha"] = new string('c', 40); 400scenario["pr"]!["base_sha"] = ""; 407scenario["contents"]!["extension/yarn.lock@base"] = 412var decision = Assert.Single(result["value"]!.AsArray()); 415decision["reasons"]!.AsArray().Select(n => n!.GetValue<string>())); 416Assert.Equal(allowed ? 1 : 0, result["reviews"]!.AsArray().Count); 417var comparisons = result["comparisons"]!.AsArray(); 434scenario["contents"]!["extension/package.json@base"] = baseText; 435scenario["contents"]!["extension/package.json@head"] = baseText; 437Assert.Equal("approve", Assert.Single(unchanged["value"]!.AsArray())!["decision"]!.GetValue<string>()); 439scenario["contents"]!["extension/package.json@head"] = baseText.Replace(">=1 <2", ">=1 <3", StringComparison.Ordinal); 443var decision = Assert.Single(result["value"]!.AsArray()); 445Assert.Contains("non-version-manifest-edit", decision["reasons"]!.AsArray().Select(n => n!.GetValue<string>())); 446Assert.Empty(result["reviews"]!.AsArray()); 492var pr = scenario["pr"]!.AsObject(); 500scenario["contents"]!["extension/yarn.lock@base"] = "resolved \"https://pkgs.dev.azure.com/x\""; 509scenario["files"]!.AsArray().Add("NuGet.config"); 522scenario["files"]!.AsArray().Add("extension/package.json"); 523scenario["contents"]!["extension/package.json@base"] = "{\n \"scripts\": { \"build\": \"tsc\" },\n \"dependencies\": { \"lodash\": \"^4.17.20\" }\n}\n"; 524scenario["contents"]!["extension/package.json@head"] = "{\n \"scripts\": { \"build\": \"tsc && node x.js\" },\n \"dependencies\": { \"lodash\": \"^4.17.21\" }\n}\n"; 527scenario["contents"]!["extension/yarn.lock@head"] = "resolved \"https://registry.example.com/lodash\""; 532scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21", "https://pkgs.dev.azure.com/contoso/_packaging/feed/"); 545scenario["responses"]!["https://registry.npmjs.org/lodash"]!["body"]!["time"]!["5.0.0"] = "2026-09-01T00:00:00Z"; 548scenario["responses"]!["https://registry.npmjs.org/lodash"]!["body"]!["time"]!["4.17.21"] = "2026-09-28T00:00:00Z"; 553scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("react", "17.0.2"); 554scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("react", "18.2.0"); 555scenario["responses"]!["https://registry.npmjs.org/react"] = Response(new JsonObject { ["time"] = new JsonObject { ["18.2.0"] = "2026-09-01T00:00:00Z" } }); 561scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("foo", "1.0.0") + YarnLockEntry("foo", "2.0.0"); 562scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("foo", "2.1.0"); 563scenario["responses"]!["https://registry.npmjs.org/foo"] = Response(new JsonObject { ["time"] = new JsonObject { ["2.1.0"] = "2026-09-01T00:00:00Z" } }); 569scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("foo", "1.0.0") + YarnLockEntry("foo", "2.1.0"); 570scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("foo", "2.1.0"); 571scenario["responses"]!["https://registry.npmjs.org/foo"] = Response(new JsonObject { ["time"] = new JsonObject { ["2.1.0"] = "2026-09-01T00:00:00Z" } }); 577scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 578scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("minimist", "1.2.8"); 579scenario["responses"]!["https://registry.npmjs.org/minimist"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.2.8"] = "2026-09-01T00:00:00Z" } }); 580scenario["alerts"]!.AsArray().Add(new JsonObject 593scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 594scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("minimist", "1.2.8"); 595scenario["responses"]!["https://registry.npmjs.org/minimist"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.2.8"] = "2026-09-28T00:00:00Z" } }); 605scenario["contents"]!["extension/yarn.lock@base"] = baseLock.ToString(); 606scenario["contents"]!["extension/yarn.lock@head"] = headLock.ToString(); 611scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20"); 612scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("lodash", "4.17.20"); 615scenario["alerts"]![0]!["first_patched_version"] = "4.17.22"; 620scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21").Replace("/lodash/-/lodash-4.17.21.tgz", "/evil/-/evil-1.0.0.tgz", StringComparison.Ordinal); 626scenario["alerts"]![0]!["advisory_ranges"] = new JsonArray("< 4.17.21", ">= 4.17.21, < 4.17.25"); 663scenario["files"]!.AsArray().Add("playground/app/yarn.lock"); 664scenario["contents"]!["playground/app/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 665scenario["contents"]!["playground/app/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.8"); 666scenario["alerts"]![0]!["manifest_path"] = "playground/app/yarn.lock"; 667scenario["responses"]!["https://registry.npmjs.org/minimist"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.2.8"] = "2026-09-01T00:00:00Z" } }); 673scenario["alerts"]![0]!["manifest_path"] = "extension/package-lock.json"; 679scenario["checkRuns"]!.AsArray().Add(new JsonObject { ["name"] = "tests", ["status"] = "in_progress", ["conclusion"] = null }); 707var decision = Assert.Single(result["value"]!.AsArray()); 711Assert.Equal(expectedReason, decision["reasons"]![0]!.GetValue<string>()); 712Assert.Empty(result["reviews"]!.AsArray()); 736result["value"]!.ToJsonString()); 759Assert.Equal(expected, result["value"]!.GetValue<bool>()); 780Assert.Equal(expected, result["value"]!.GetValue<bool>()); 837Assert.Equal(expected, result["value"]!.GetValue<bool>()); 930var violations = result["value"]!["violations"]!.AsArray().Select(v => $"{v!["path"]} {v["reason"]}").ToArray(); 934Assert.Empty(result["failures"]!.AsArray()); 939Assert.Single(result["failures"]!.AsArray()); 1002Assert.Equal([$"{path} {reason}"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["path"]} {v["reason"]}")); 1003Assert.Single(result["failures"]!.AsArray()); 1023result["value"]!["violations"]!.AsArray().Select(v => $"{v!["path"]} {v["reason"]}")); 1057var violations = result["value"]!["violations"]!.AsArray() 1058.Select(v => $"{v!["path"]} {v["reason"]}") 1137result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1161Assert.Equal(expected, result["value"]!.GetValue<bool>()); 1185result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1209result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1210Assert.Empty(result["outputs"]!.AsArray()); 1211Assert.Empty(result["remaining"]!.AsArray()); 1212Assert.Null(result["stepOutputs"]!["publication_ready"]); 1213Assert.Empty(result["publications"]!.AsArray()); 1297var violations = result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}").ToArray(); 1301Assert.Empty(result["failures"]!.AsArray()); 1307var failure = Assert.Single(result["failures"]!.AsArray())!.GetValue<string>(); 1342Assert.Equal(expected, result["value"]!.GetValue<bool>()); 1362Assert.Equal(3, result["value"]!["alerts"]!.GetValue<int>()); 1363Assert.Equal(5, result["value"]!["codeFindings"]!.GetValue<int>()); 1394Assert.Equal(accepted ? "true" : null, result["stepOutputs"]!["publication_ready"]?.GetValue<string>()); 1395Assert.Equal(accepted ? CompiledPublicationConditions().Count : 0, result["publications"]!.AsArray().Count); 1396Assert.Equal(accepted ? [output] : [], result["outputs"]!.AsArray().Select(item => item!.GetValue<string>())); 1397Assert.Equal(accepted ? ["aw-auto-sec-security-updates.patch"] : [], result["remaining"]!.AsArray().Select(item => item!.GetValue<string>())); 1398Assert.Equal(accepted ? 0 : 1, result["failures"]!.AsArray().Count); 1430Assert.Null(result["stepOutputs"]!["publication_ready"]); 1431Assert.Empty(result["publications"]!.AsArray()); 1436Assert.Single(result["failures"]!.AsArray())!.GetValue<string>()); 1456Assert.Single(result["failures"]!.AsArray())!.GetValue<string>()); 1457Assert.Empty(result["outputs"]!.AsArray()); 1458Assert.Empty(result["publications"]!.AsArray()); 1484result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1485Assert.Empty(result["outputs"]!.AsArray()); 1486Assert.Empty(result["publications"]!.AsArray()); 1506Assert.Empty(result["failures"]!.AsArray()); 1507Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1557Assert.Empty(result["value"]!["violations"]!.AsArray()); 1558Assert.Single(result["outputs"]!.AsArray()); 1559Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1568result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1569Assert.Empty(result["outputs"]!.AsArray()); 1570Assert.Empty(result["remaining"]!.AsArray()); 1571Assert.Null(result["stepOutputs"]!["publication_ready"]); 1572Assert.Empty(result["publications"]!.AsArray()); 1622Assert.Empty(result["value"]!["violations"]!.AsArray()); 1623Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1632result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1633Assert.Empty(result["outputs"]!.AsArray()); 1634Assert.Null(result["stepOutputs"]!["publication_ready"]); 1635Assert.Empty(result["publications"]!.AsArray()); 1672var text = JsonNode.Parse(files[path]!.GetValue<string>())!.ToJsonString(new JsonSerializerOptions { WriteIndented = true }).ReplaceLineEndings("\n") + "\n"; 1678var head = JsonNode.Parse(heads["extension/package-lock.json"]!.GetValue<string>())!; 1679head["packages"]!["node_modules/y"] = new JsonObject { ["version"] = "1.0.2" }; 1699Assert.Empty(result["value"]!["violations"]!.AsArray()); 1700Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1709result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1710Assert.Empty(result["outputs"]!.AsArray()); 1711Assert.Empty(result["publications"]!.AsArray()); 1738Assert.Empty(result["failures"]!.AsArray()); 1739Assert.Equal(["aw-auto-sec-security-updates.patch"], result["remaining"]!.AsArray().Select(v => v!.GetValue<string>())); 1740Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1757Assert.Empty(result["failures"]!.AsArray()); 1758Assert.Equal([output], result["outputs"]!.AsArray().Select(v => JsonNode.Parse(v!.GetValue<string>())!.ToJsonString())); 1759Assert.Equal(["aw-auto-sec-security-updates.patch"], result["remaining"]!.AsArray().Select(v => v!.GetValue<string>())); 1791Assert.Empty(result["failures"]!.AsArray()); 1792Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1793Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 1794Assert.Equal(["aw-auto-sec-security-updates.patch"], result["remaining"]!.AsArray().Select(name => name!.GetValue<string>())); 1795var outputs = result["outputs"]!.AsArray().Select(line => JsonNode.Parse(line!.GetValue<string>())!).ToArray(); 1798item => Assert.Equal("create_pull_request", item["type"]!.GetValue<string>()), 1800item => Assert.Equal("noop", item["type"]!.GetValue<string>())); 1818Assert.Equal(["code-writing-outputs conflicting-requests"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1819Assert.Empty(result["outputs"]!.AsArray()); 1820Assert.Empty(result["remaining"]!.AsArray()); 1821Assert.Null(result["stepOutputs"]!["publication_ready"]); 1822Assert.Empty(result["publications"]!.AsArray()); 1857Assert.Equal(expected, result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1858Assert.Equal([$"auto-sec agent output scrub failed: {string.Join("; ", expected)}"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 1859Assert.Empty(result["outputs"]!.AsArray()); 1860Assert.Empty(result["remaining"]!.AsArray()); 1861Assert.Null(result["stepOutputs"]!["publication_ready"]); 1862Assert.Empty(result["publications"]!.AsArray()); 1897var package = head["packages"]!["node_modules/lodash"]!; 1929head["metadata"]![0]!["version"] = "42.0.0"; 1949output["body"] = output["body"]!.GetValue<string>().Replace("extension/package-lock.json", path, StringComparison.Ordinal); 1966Assert.Empty(result["value"]!["violations"]!.AsArray()); 1967Assert.Empty(result["failures"]!.AsArray()); 1968Assert.Single(result["outputs"]!.AsArray()); 1969Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 1970Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 1975result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 1977result["failures"]!.AsArray().Select(n => n!.GetValue<string>())); 1978Assert.Empty(result["outputs"]!.AsArray()); 1979Assert.Empty(result["remaining"]!.AsArray()); 1980Assert.Null(result["stepOutputs"]!["publication_ready"]); 1981Assert.Empty(result["publications"]!.AsArray()); 2016output["body"] = output["body"]!.GetValue<string>().Replace("extension/package-lock.json", path, StringComparison.Ordinal); 2031Assert.Empty(result["value"]!["violations"]!.AsArray()); 2032Assert.Empty(result["failures"]!.AsArray()); 2033Assert.Single(result["outputs"]!.AsArray()); 2034Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2035Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2059["lodash"] = baseline["packages"]!["node_modules/lodash"]!.DeepClone(), 2060["@types/node"] = baseline["packages"]!["node_modules/@types/node"]!.DeepClone(), 2067baseline[group]![owner]!["integrity"] = "sha512-YWJj"; 2072baseline["dependencies"]!["parent"] = new JsonObject 2080baseline["packages"]!["node_modules/parent/node_modules/lodash"] = new JsonObject { ["version"] = "4.17.20" }; 2084head[group]![owner]!["integrity"] = "sha512-ZGVm"; 2089head[group]![owner]!["version"] = "4.17.21"; 2093head[group]![other]!["version"] = "22.1.0"; 2099head["dependencies"]!["parent"]!["dependencies"]!["lodash"]!["version"] = "4.17.21"; 2103head["packages"]!["node_modules/parent/node_modules/lodash"]!["version"] = "4.17.21"; 2127Assert.Empty(result["value"]!["violations"]!.AsArray()); 2128Assert.Empty(result["failures"]!.AsArray()); 2129Assert.Single(result["outputs"]!.AsArray()); 2130Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2131Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2139result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2140Assert.Empty(result["outputs"]!.AsArray()); 2141Assert.Empty(result["remaining"]!.AsArray()); 2142Assert.Null(result["stepOutputs"]!["publication_ready"]); 2143Assert.Empty(result["publications"]!.AsArray()); 2214Assert.Empty(result["value"]!["violations"]!.AsArray()); 2215Assert.Empty(result["failures"]!.AsArray()); 2216Assert.Single(result["outputs"]!.AsArray()); 2217Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2218Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2226result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2227Assert.Empty(result["outputs"]!.AsArray()); 2228Assert.Empty(result["remaining"]!.AsArray()); 2229Assert.Null(result["stepOutputs"]!["publication_ready"]); 2230Assert.Empty(result["publications"]!.AsArray()); 2239baseline["packages"]!["node_modules/lodash"]!["integrity"] = "sha512-YWJj"; 2255result["value"]!["violations"]!.AsArray().Select(v => $"{v!["path"]} {v["reason"]}")); 2256Assert.Single(result["failures"]!.AsArray()); 2272baseline["packages"]![""] = new JsonObject { ["dependencies"] = new JsonObject { ["lodash"] = "^4.17.20" } }; 2273baseline["packages"]!["node_modules/lodash"]!["name"] = "lodash"; 2274baseline["packages"]!["node_modules/lodash"]!["integrity"] = "sha512-YWJj"; 2277baseline["packages"]!["node_modules/existing/node_modules/lodash"] = new JsonObject 2283head["packages"]!["node_modules/lodash"]!["version"] = "4.17.21"; 2284head["packages"]![""]!["dependencies"]!["lodash"] = scenario == "unbound-consumer" ? "^4.17.22" : "^4.17.21"; 2288head["packages"]![""]!["integrity"] = "sha512-ZGVm"; 2291head["packages"]!["node_modules/lodash"]!["name"] = "other"; 2297head["packages"]!["node_modules/new/node_modules/lodash"] = new JsonObject 2319Assert.Empty(result["value"]!["violations"]!.AsArray()); 2320Assert.Empty(result["failures"]!.AsArray()); 2321Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2326result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2327Assert.Empty(result["outputs"]!.AsArray()); 2328Assert.Empty(result["remaining"]!.AsArray()); 2329Assert.Null(result["stepOutputs"]!["publication_ready"]); 2330Assert.Empty(result["publications"]!.AsArray()); 2373Assert.Empty(result["value"]!["violations"]!.AsArray()); 2374Assert.Empty(result["failures"]!.AsArray()); 2375Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2380result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2381Assert.Empty(result["outputs"]!.AsArray()); 2382Assert.Empty(result["remaining"]!.AsArray()); 2383Assert.Null(result["stepOutputs"]!["publication_ready"]); 2384Assert.Empty(result["publications"]!.AsArray()); 2442Assert.Empty(result["value"]!["violations"]!.AsArray()); 2443Assert.Empty(result["failures"]!.AsArray()); 2444Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2449result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2450Assert.Empty(result["outputs"]!.AsArray()); 2451Assert.Empty(result["remaining"]!.AsArray()); 2452Assert.Null(result["stepOutputs"]!["publication_ready"]); 2453Assert.Empty(result["publications"]!.AsArray()); 2484result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2487Assert.Empty(result["outputs"]!.AsArray()); 2488Assert.Empty(result["remaining"]!.AsArray()); 2489Assert.Null(result["stepOutputs"]!["publication_ready"]); 2490Assert.Empty(result["publications"]!.AsArray()); 2494Assert.Empty(result["failures"]!.AsArray()); 2495Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2526result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2527Assert.Empty(result["outputs"]!.AsArray()); 2528Assert.Empty(result["remaining"]!.AsArray()); 2529Assert.Null(result["stepOutputs"]!["publication_ready"]); 2530Assert.Empty(result["publications"]!.AsArray()); 2550Assert.Equal([$"aw-auto-sec-security-updates.patch {reason}"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2551Assert.Empty(result["outputs"]!.AsArray()); 2552Assert.Empty(result["remaining"]!.AsArray()); 2553Assert.Null(result["stepOutputs"]!["publication_ready"]); 2554Assert.Empty(result["publications"]!.AsArray()); 2571output["body"] = output["body"]!.GetValue<string>().Replace( 2590result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2591Assert.Empty(result["outputs"]!.AsArray()); 2592Assert.Empty(result["remaining"]!.AsArray()); 2593Assert.Null(result["stepOutputs"]!["publication_ready"]); 2594Assert.Empty(result["publications"]!.AsArray()); 2598Assert.Empty(result["value"]!["violations"]!.AsArray()); 2599Assert.Single(result["outputs"]!.AsArray()); 2600Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2601Assert.NotEmpty(result["publications"]!.AsArray()); 2648Assert.Equal(expected, result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2649Assert.Empty(result["outputs"]!.AsArray()); 2650Assert.Empty(result["remaining"]!.AsArray()); 2651Assert.Null(result["stepOutputs"]!["publication_ready"]); 2652Assert.Empty(result["publications"]!.AsArray()); 2653Assert.Equal([$"auto-sec agent output scrub failed: {string.Join("; ", expected)}"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 2669Assert.Empty(result["value"]!["violations"]!.AsArray()); 2670Assert.Empty(result["failures"]!.AsArray()); 2671Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2672Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2690Assert.Equal(["patch-artifacts unsupported-artifact"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2691Assert.Equal(["auto-sec agent output scrub failed: patch-artifacts unsupported-artifact"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 2692Assert.Empty(result["outputs"]!.AsArray()); 2693Assert.Empty(result["remaining"]!.AsArray()); 2694Assert.Null(result["stepOutputs"]!["publication_ready"]); 2695Assert.Empty(result["publications"]!.AsArray()); 2740Assert.Equal(["patch-transport untrusted-base-commit"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2741Assert.Equal(["auto-sec agent output scrub failed: patch-transport untrusted-base-commit"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 2742Assert.Empty(result["outputs"]!.AsArray()); 2743Assert.Empty(result["remaining"]!.AsArray()); 2744Assert.Null(result["stepOutputs"]!["publication_ready"]); 2745Assert.Empty(result["publications"]!.AsArray()); 2749Assert.Empty(result["value"]!["violations"]!.AsArray()); 2750Assert.Empty(result["failures"]!.AsArray()); 2751Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2752Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2769Assert.Equal(["aw-auto-sec-security-updates.patch invalid-base-commit"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2770Assert.Equal(["auto-sec agent output scrub failed: aw-auto-sec-security-updates.patch invalid-base-commit"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 2771Assert.Empty(result["outputs"]!.AsArray()); 2772Assert.Empty(result["remaining"]!.AsArray()); 2773Assert.Null(result["stepOutputs"]!["publication_ready"]); 2774Assert.Empty(result["publications"]!.AsArray()); 2813Assert.Equal(expected, result["value"]!.GetValue<bool>()); 2853Assert.Equal(expected, result["value"]!.GetValue<bool>()); 2875Assert.Equal(["aw-auto-sec-security-updates.patch unsupported-lockfile-text"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2876Assert.Empty(result["outputs"]!.AsArray()); 2877Assert.Empty(result["remaining"]!.AsArray()); 2878Assert.Null(result["stepOutputs"]!["publication_ready"]); 2879Assert.Empty(result["publications"]!.AsArray()); 2909Assert.Equal(["create_pull_request.body row-not-in-patch"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2910Assert.Empty(result["outputs"]!.AsArray()); 2911Assert.Empty(result["remaining"]!.AsArray()); 2912Assert.Null(result["stepOutputs"]!["publication_ready"]); 2913Assert.Empty(result["publications"]!.AsArray()); 2932Assert.Equal(missing ? ["filesystem io-error"] : [], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 2933Assert.Equal(missing ? ["auto-sec agent output scrub failed: filesystem io-error"] : [], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 2934Assert.Equal(missing ? null : "true", result["stepOutputs"]!["publication_ready"]?.GetValue<string>()); 2935Assert.Equal(missing ? 0 : CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2964Assert.Empty(result["value"]!["violations"]!.AsArray()); 2965Assert.Empty(result["failures"]!.AsArray()); 2966Assert.Single(result["outputs"]!.AsArray()); 2967Assert.Equal([repoScoped ? "aw-microsoft-aspire-auto-sec-security-updates.patch" : "aw-auto-sec-security-updates.patch"], result["remaining"]!.AsArray().Select(v => v!.GetValue<string>())); 2968Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2969Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 2990Assert.Empty(result["value"]!["violations"]!.AsArray()); 2991Assert.Empty(result["failures"]!.AsArray()); 2992Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 2993Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 3017result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 3018Assert.Empty(result["outputs"]!.AsArray()); 3019Assert.Empty(result["remaining"]!.AsArray()); 3020Assert.Null(result["stepOutputs"]!["publication_ready"]); 3021Assert.Empty(result["publications"]!.AsArray()); 3040Assert.Empty(result["value"]!["violations"]!.AsArray()); 3041Assert.Empty(result["failures"]!.AsArray()); 3069Assert.Empty(result["failures"]!.AsArray()); 3070Assert.Empty(result["value"]!["violations"]!.AsArray()); 3071var output = JsonNode.Parse(Assert.Single(result["outputs"]!.AsArray())!.GetValue<string>()); 3073Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 3074Assert.Equal(CompiledPublicationConditions().Count, result["publications"]!.AsArray().Count); 3100Assert.Empty(result["failures"]!.AsArray()); 3101var output = JsonNode.Parse(Assert.Single(result["outputs"]!.AsArray())!.GetValue<string>()); 3103Assert.Equal("true", result["stepOutputs"]!["publication_ready"]!.GetValue<string>()); 3138Assert.Equal([$"{type} invalid-inputs"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 3139Assert.Equal([$"auto-sec agent output scrub failed: {type} invalid-inputs"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 3140Assert.Empty(result["outputs"]!.AsArray()); 3141Assert.Empty(result["remaining"]!.AsArray()); 3142Assert.Null(result["stepOutputs"]!["publication_ready"]); 3143Assert.Empty(result["publications"]!.AsArray()); 3210Assert.Equal(expectedViolations, result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 3211Assert.Empty(result["outputs"]!.AsArray()); 3212Assert.Empty(result["remaining"]!.AsArray()); 3213Assert.Null(result["stepOutputs"]!["publication_ready"]); 3215var failure = Assert.Single(result["failures"]!.AsArray())!.GetValue<string>(); 3250Assert.Equal(["filesystem io-error"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["source"]} {v["reason"]}")); 3251Assert.Equal(["auto-sec agent output scrub failed: filesystem io-error"], result["failures"]!.AsArray().Select(v => v!.GetValue<string>())); 3252Assert.Null(result["stepOutputs"]!["publication_ready"]); 3253Assert.Empty(result["publications"]!.AsArray()); 3254Assert.NotEmpty(result["remaining"]!.AsArray()); 3276Assert.Equal(expected ? conditions.Count : 0, result["publications"]!.AsArray().Count); 3287var guarded = result["value"]!.GetValue<string>(); 3288Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3310Assert.Empty(result["value"]!.AsArray()); 3321Assert.Equal("private-alert-123\n", unguarded["stdout"]!.GetValue<string>().ReplaceLineEndings("\n")); 3322Assert.Contains("private-range-malware", unguarded["stderr"]!.GetValue<string>()); 3323Assert.Equal(exitCode, unguarded["exitCode"]!.GetValue<int>()); 3329var guarded = result["value"]!.GetValue<string>(); 3338Assert.Equal("", quiet["stdout"]!.GetValue<string>()); 3339Assert.Equal("", quiet["stderr"]!.GetValue<string>()); 3340Assert.Equal(exitCode, quiet["exitCode"]!.GetValue<int>()); 3341Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3349var steps = AgentSteps(result["value"]!.GetValue<string>()); 3370Assert.Equal("private-gateway\n", original["stdout"]!.GetValue<string>().ReplaceLineEndings("\n")); 3371Assert.Equal("private-gateway-error\n", original["stderr"]!.GetValue<string>().ReplaceLineEndings("\n")); 3372Assert.Equal(exitCode, original["exitCode"]!.GetValue<int>()); 3377var gateway = Assert.Single(AgentSteps(result["value"]!.GetValue<string>()), 3385Assert.Equal("::add-mask::fixture-gateway-id\n", quiet["stdout"]!.GetValue<string>().ReplaceLineEndings("\n")); 3386Assert.Equal("", quiet["stderr"]!.GetValue<string>()); 3387Assert.Equal(exitCode, quiet["exitCode"]!.GetValue<int>()); 3388Assert.Equal(result["value"]!.GetValue<string>(), result["repeated"]!.GetValue<string>()); 3404Assert.Null(result["error"]); 3405var guarded = result["value"]!.GetValue<string>(); 3406Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3432var guarded = result["value"]!.GetValue<string>(); 3433Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3448var guarded = result["value"]!.GetValue<string>(); 3449Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3475var guarded = result["value"]!.GetValue<string>(); 3476Assert.Equal(guarded, result["repeated"]!.GetValue<string>()); 3537Assert.Equal("auto-sec publication guard: expected one guarded step condition", result["error"]!.GetValue<string>()); 3541Assert.StartsWith("auto-sec publication guard:", result["error"]!.GetValue<string>()); 3732Assert.Equal(expected, string.Join(",", result["value"]!.AsArray().Select(source => source!.GetValue<string>()))); 3755Assert.Equal(expected, string.Join(",", result["value"]!.AsArray().Select(source => source!.GetValue<string>()))); 3774Assert.Equal(["uv.lock new-package-source"], result["value"]!["violations"]!.AsArray().Select(v => $"{v!["path"]} {v["reason"]}")); 3775Assert.Single(result["failures"]!.AsArray()); 3799Assert.Equal(expected, result["value"]!.GetValue<int>()); 3836Assert.Equal(expected, string.Join(",", result["value"]!.AsArray().Select(source => source!.GetValue<string>()))); 3879Assert.Equal(expectedCount, result["value"]!.AsArray().Count); 3887scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 3888scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("minimist", "1.2.8") + YarnLockEntry("left-pad", "1.3.0"); 3889scenario["responses"]!["https://registry.npmjs.org/minimist"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.2.8"] = "2026-09-01T00:00:00Z" } }); 3890scenario["responses"]!["https://registry.npmjs.org/left-pad"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.3.0"] = "2026-09-01T00:00:00Z" } }); 3894var decision = Assert.Single(result["value"]!.AsArray()); 3903scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 3904scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21"); 3905scenario["alerts"]!.AsArray().Add(new JsonObject 3917var decision = Assert.Single(result["value"]!.AsArray()); 3919Assert.Equal([7, 8], decision["fixedAlerts"]!.AsArray().Select(n => n!.GetValue<int>())); 3927scenario["contents"]!["extension/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20") + YarnLockEntry("minimist", "1.2.5"); 3928scenario["contents"]!["extension/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21") + YarnLockEntry("minimist", "1.2.8"); 3929scenario["responses"]!["https://registry.npmjs.org/minimist"] = Response(new JsonObject { ["time"] = new JsonObject { ["1.2.8"] = "2026-09-01T00:00:00Z" } }); 3930scenario["alerts"]!.AsArray().Add(new JsonObject 3942var decision = Assert.Single(result["value"]!.AsArray()); 3944Assert.Equal([7, 8], decision["fixedAlerts"]!.AsArray().Select(n => n!.GetValue<int>())); 3956var decision = Assert.Single(result["value"]!.AsArray()); 3958Assert.Equal("malware-requires-review", decision["reasons"]![0]!.GetValue<string>()); 3959var info = Assert.Single(result["info"]!.AsArray())!.GetValue<string>(); 3961Assert.EndsWith("- #101: skip (human-review-required, fixes-no-open-alert)", result["summary"]!.GetValue<string>(), StringComparison.Ordinal); 3969var pr = scenario["pr"]!.AsObject(); 3973scenario["files"]!.AsArray().Add("playground/app/yarn.lock"); 3974scenario["contents"]!["playground/app/yarn.lock@base"] = YarnLockEntry("lodash", "4.17.20"); 3975scenario["contents"]!["playground/app/yarn.lock@head"] = YarnLockEntry("lodash", "4.17.21"); 3976scenario["alerts"]!.AsArray().Add(new JsonObject 3987var decision = Assert.Single(result["value"]!.AsArray()); 3989Assert.Equal([7, 8], decision["fixedAlerts"]!.AsArray().Select(n => n!.GetValue<int>())); 4014result["value"]!.AsArray().Select(decision => decision!["decision"]!.GetValue<string>() == "approve" 4016: decision["reasons"]![0]!.GetValue<string>())); 4017Assert.Equal(Enumerable.Range(4, 10), result["reviews"]!.AsArray().Select(review => review!["pull_number"]!.GetValue<int>())); 4035Assert.Equal(Enumerable.Range(1, 10), result["reviews"]!.AsArray().Select(review => review!["pull_number"]!.GetValue<int>())); 4037result["failures"]!.AsArray().Select(n => n!.GetValue<string>())); 4038Assert.All(result["value"]!.AsArray(), decision => Assert.Equal("skip", decision!["decision"]!.GetValue<string>())); 4040result["value"]!.AsArray().Select(decision => Assert.Single(decision!["reasons"]!.AsArray())!.GetValue<string>())); 4041Assert.StartsWith("auto-sec Dependabot approvals\nRequests: 12. Approved: 0. Skipped: 12.", result["summary"]!.GetValue<string>(), StringComparison.Ordinal); 4075Assert.Equal(expected, result["value"]!.ToJsonString()); 4093result["value"]!.ToJsonString()); 4136Assert.Equal(expected, result["value"]!.GetValue<bool>()); 4184Assert.Equal([1, 4, 9, 10], result["value"]!.AsArray().Select(n => n!.GetValue<int>())); 4209Assert.Equal(expected ? new[] { 1 } : Array.Empty<int>(), result["value"]!.AsArray().Select(n => n!.GetValue<int>())); 4234result["value"]!.ToJsonString()); 4271Assert.True(prefixMapped["value"]!["available_on_approved_feed"]!.GetValue<bool>()); 4278prefixMapped["urls"]!.AsArray().Select(url => url!.GetValue<string>())); 4279Assert.False(exactMapped["value"]!["available_on_approved_feed"]!.GetValue<bool>()); 4282exactMapped["urls"]!.AsArray().Select(url => url!.GetValue<string>())); 4318Assert.Equal(expectedCooldown, result["value"]!["cooldown_satisfied"]!.GetValue<bool>()); 4352Assert.False(nuget["value"]!["available_on_approved_feed"]!.GetValue<bool>()); 4353Assert.True(nuget["value"]!["cooldown_satisfied"]!.GetValue<bool>()); 4354Assert.True(npm["value"]!["available_on_approved_feed"]!.GetValue<bool>()); 4355Assert.False(npm["value"]!["cooldown_satisfied"]!.GetValue<bool>()); 4380Assert.Equal("2026-09-29T00:00:00Z", pip["value"]!["published_at"]!.GetValue<string>()); 4381Assert.False(pip["value"]!["cooldown_satisfied"]!.GetValue<bool>()); 4390Assert.Empty(result["failures"]!.AsArray()); 4391Assert.Equal(1, result["value"]!["requests"]!.GetValue<int>()); 4399Assert.Empty(noPush["failures"]!.AsArray()); 4400Assert.Equal(0, noPush["value"]!["requests"]!.GetValue<int>()); 4452case "wrong-author": closed["user"]!["login"] = "someone"; break; 4453case "wrong-head": closed["head"]!["ref"] = "another-branch"; break; 4454case "wrong-repo": closed["head"]!["repo"]!["full_name"] = "contoso/aspire"; break; 4455case "wrong-base": closed["base"]!["ref"] = "release/13.3"; break; 4456case "moved-branch": scenario["branch"]!["commit"]!["sha"] = new string('f', 40); break; 4459case "protected-branch": scenario["branch"]!["protected"] = true; break; 4465closed["user"]!["login"] = "custom-auto-sec[bot]"; 4468case "invalid-branch-sha": scenario["branch"]!["commit"]!["sha"] = "invalid"; break; 4474Assert.Equal(accepted ? 0 : 1, result["failures"]!.AsArray().Count); 4475Assert.Equal(accepted ? 0 : 1, result["value"]!["violations"]!.AsArray().Count); 4478Assert.Equal(["open"], result["calls"]!.AsArray().Select(item => item!.GetValue<string>())); 4482Assert.Equal("auto-sec create target gate failed: gate-evaluation-failed", Assert.Single(result["failures"]!.AsArray())!.GetValue<string>()); 4526var failure = Assert.Single(result["failures"]!.AsArray()); 4541Assert.Equal(allowed ? 0 : 1, result["failures"]!.AsArray().Count); 4543result["value"]!["violations"]!.AsArray().Select(violation => violation!["reason"]!.GetValue<string>())); 4731Assert.Equal(0, result["exitCode"]!.GetValue<int>()); 4732Assert.Equal(existing ? "preserved" : OperatingSystem.IsWindows() ? "created\nappend" : "created 600\nappend", result["stdout"]!.GetValue<string>().ReplaceLineEndings("\n")); 4733Assert.Equal("", result["stderr"]!.GetValue<string>()); 4783if (request["mode"]?.GetValue<string>() is "agent-scrub" or "public-text-gate")
Microsoft.AspNetCore.OpenApi (12)
Extensions\JsonNodeSchemaExtensions.cs (11)
138var isArray = MapJsonNodeToSchemaType(schema[OpenApiSchemaKeywords.TypeKeyword]) is { } schemaTypes && schemaTypes.HasFlag(JsonSchemaType.Array); 144var isArray = MapJsonNodeToSchemaType(schema[OpenApiSchemaKeywords.TypeKeyword]) is { } schemaTypes && schemaTypes.HasFlag(JsonSchemaType.Array); 150var isArray = MapJsonNodeToSchemaType(schema[OpenApiSchemaKeywords.TypeKeyword]) is { } schemaTypes && schemaTypes.HasFlag(JsonSchemaType.Array); 361if (enumType.IsEnum && schema[OpenApiSchemaKeywords.EnumKeyword] is JsonArray) 376var defaultKey = schema[OpenApiConstants.RefDefaultAnnotation] is not null 380&& schema[defaultKey] is JsonNode defaultNode 400&& MapJsonNodeToSchemaType(schema[OpenApiSchemaKeywords.TypeKeyword]) is { } schemaTypes && 508return (schema[OpenApiConstants.SchemaId] is JsonNode schemaIdNode 557if (MapJsonNodeToSchemaType(schema[OpenApiSchemaKeywords.TypeKeyword]) is { } schemaTypes) 593if (schema[OpenApiSchemaKeywords.TypeKeyword] is JsonArray typeArray) 607if (schema[OpenApiSchemaKeywords.EnumKeyword] is JsonArray enumArray)
Services\Schemas\OpenApiSchemaService.cs (1)
277if (rawNode[OpenApiSchemaKeywords.EnumKeyword] is JsonArray rawEnum && rawEnum.Count > 0)
Microsoft.Extensions.AI.Abstractions (3)
Utilities\AIJsonUtilities.Schema.Create.cs (3)
646JsonNode? notNode = obj[NotPropertyName]; 653if (notObj[EnumPropertyName] is null) 782if (ctx.TypeInfo.NumberHandling is not JsonNumberHandling.Strict && schema["type"] is JsonArray typeArray)
Microsoft.Extensions.AI.Abstractions.Tests (1)
Utilities\AIJsonUtilitiesTests.cs (1)
1850Assert.Equal(((JsonArray)schemaObj["required"]!).Count, ((JsonObject)props!).Count);
Microsoft.Extensions.AI.OpenAI (2)
OpenAIClientExtensions.cs (2)
82if (schemaObj[propName] is { } propNode) 91schemaObj["description"] = schemaObj["description"] is { } descriptionNode && descriptionNode.GetValueKind() == JsonValueKind.String ?
Microsoft.ML.AutoML (9)
SweepableEstimator\Converter\MultiModelPipelineConverter.cs (2)
18var schema = jValue["schema"].GetValue<string>(); 19var estimators = jValue["estimator"].GetValue<Dictionary<string, SweepableEstimator>>();
SweepableEstimator\Converter\SweepableEstimatorConverter.cs (2)
19var estimatorType = jsonObject["estimatorType"].GetValue<EstimatorType>(); 20var parameter = jsonObject["parameter"].GetValue<Parameter>();
SweepableEstimator\Converter\SweepableEstimatorPipelineConverter.cs (2)
18var parameter = jNode["parameter"].GetValue<Parameter>(); 19var estimators = jNode["estimators"].GetValue<SweepableEstimator[]>();
SweepableEstimator\Converter\SweepablePipelineConverter.cs (3)
18var currentSchema = jValue["currentSchema"].GetValue<string>(); 19var schema = jValue["schema"].GetValue<string>(); 20var estimators = jValue["estimator"].GetValue<Dictionary<string, SweepableEstimator>>();
Microsoft.ML.AutoML.SourceGenerator (10)
SearchSpaceGenerator.cs (10)
39var className = Utils.ToTitleCase(jNode["name"].GetValue<string>()); 40var searchSpaceJArray = jNode["search_space"].AsArray(); 43var optionName = Utils.ToTitleCase(t["name"].GetValue<string>()); 44string optionTypeName = t["type"].GetValue<string>() switch 65var defaultToken = t.AsObject().ContainsKey("default") ? t["default"] : null; 86var searchSpaceNode = t.AsObject().ContainsKey("search_space") ? t["search_space"] : null; 96var minToken = searchSpaceNode["min"]; 97var minValue = searchSpaceNode["min"].GetValue<double>(); 98var maxValue = searchSpaceNode["max"].GetValue<double>(); 99var logBase = searchSpaceObject.ContainsKey("log_base") is false ? "false" : searchSpaceNode["log_base"].GetValue<bool>() ? "true" : "false";
Microsoft.NET.Build.Containers (16)
ImageConfig.cs (14)
51if (_config["config"] is not JsonObject) 69internal string? GetUser() => _config["config"]?["User"]?.ToString(); 70internal string[]? GetEntrypoint() => _config["config"]?["Entrypoint"]?.AsArray()?.Select(node => node!.GetValue<string>())?.ToArray(); 71private string[]? GetCmd() => _config["config"]?["Entrypoint"]?.AsArray()?.Select(node => node!.GetValue<string>())?.ToArray(); 72private List<HistoryEntry> GetHistory() => _config["history"]?.AsArray().Select(node => node.Deserialize<HistoryEntry>()!).ToList() ?? new List<HistoryEntry>(); 75string? os = _config["os"]?.ToString(); 81string? architecture = _config["architecture"]?.ToString(); 129if (_config["config"]?[propertyName] is JsonNode propertyValue) 246if (_config["config"]?["ExposedPorts"] is JsonObject portsJson) 265if (_config["config"]?["Labels"] is JsonObject labelsJson) 282if (_config["config"]?["Env"] is JsonArray envVarJson) 335if (_config["rootfs"] is { } rootfs) 337if (rootfs["type"]?.GetValue<string>() == "layers" && rootfs["diff_ids"] is JsonArray layers)
Tasks\CreateImageIndex.cs (2)
151var architecture = configJson["architecture"]?.ToString(); 157var os = configJson["os"]?.ToString();
Microsoft.TemplateEngine.Cli (1)
PostActionProcessors\AddJsonPropertyPostActionProcessor.cs (1)
228JsonNode? childNode = node[property];
MSBuild (3)
JsonOutputFormatter.cs (3)
34Assumed.Null(_topLevelNode["Properties"], "Should not add multiple lists of properties to the json format."); 52Assumed.Null(_topLevelNode["Items"], "Should not add multiple lists of items to the json format."); 88Assumed.Null(_topLevelNode["TargetResults"], "Should not add multiple lists of target results to the json format.");
NativeIntegrations.DockerCompose (122)
ComposeModels.cs (19)
84get => Model["image"]?.GetValue<string>(); 97get => Model["build"] is JsonObject build ? new(build["context"]!.GetValue<string>(), build["dockerfile"]!.GetValue<string>()) : null; 103get => Model["healthcheck"] is JsonObject health ? ComposeJson.ReadHealthcheck(health) : null; 109get => Model["container_name"]?.GetValue<string>(); 115get => Model["restart"]?.GetValue<string>(); 128get => Model["pull_policy"]?.GetValue<string>(); 139public void SetLabel(string name, string value) => Model["labels"]!.AsObject()[name] = ComposeJson.Literal(value); 169get => Model["name"]!.GetValue<string>(); 181Model["services"]![name]?.AsObject() ?? throw new InvalidOperationException($"Compose service '{name}' does not exist."), applicationDirectory); 187var services = Model["services"]!.AsObject(); 239get => model["description"]?.GetValue<string>(); 244get => model["defaultValue"]?.GetValue<string>(); 247if (value is not null && model["secret"]!.GetValue<bool>()) 345value["test"]!.AsArray().Select(part => part!.GetValue<string>()).ToArray(), 346value["interval"]?.GetValue<string>(), value["timeout"]?.GetValue<string>(), value["retries"]?.GetValue<int>());
DockerComposeBuilderExtensions.cs (5)
36!Strings(context.Model["parameters"]).Contains(parameter.Resource.Name, StringComparer.Ordinal)) 41var parameters = plan.Inputs["parameters"]!.AsArray(); 48if (plan.Inputs["environment"]?.AsObject().ContainsKey(variable) == true) 229var resources = Objects(context.PublishingContext.Model["resources"]).ToArray(); 231(state.ServiceCallbacks.Count > 0 || resources.Any(resource => resource["configuration"]?["publish.dockerCompose"] is not null)))
DockerComposeEnvironment.cs (31)
86var service = new ComposeServiceBuilder(plan.Compose["services"]![entry.Service]!.AsObject(), context.ApplicationDirectory, value => 90var placeholders = Objects(plan.Inputs["parameters"]).Select(parameter => Placeholder(Text(parameter, "environmentVariable"))).ToHashSet(StringComparer.Ordinal); 108if (file.Name != originalName && Objects(context.Model["resources"]).Count(resource => Text(resource, "type") == "docker-compose/environment") > 1) 116var service = plan.Compose["services"]![entry.Service]!.AsObject(); 117var native = Objects(context.Model["resources"]).SingleOrDefault(resource => Text(resource, "name") == entry.Resource); 121if (string.IsNullOrWhiteSpace(service["image"]?.GetValue<string>()) || 122Text(native, "kind") == "executable" && service["build"] is null) 126if (Strings(native["lifecycle"]).Any() && !Boolean(options, "replaceRunLifecycle") || 127(Strings(native["lifecycle"]).Any() || Boolean(options, "replaceRunLifecycle")) && service["healthcheck"] is null) 132plan.Services[index] = entry with { Healthcheck = service["healthcheck"] is not null }; 134foreach (var (name, node) in plan.Compose["services"]!.AsObject()) 138if (service["healthcheck"] is JsonObject healthcheck) 142if (service["depends_on"] is JsonObject dependencies) 146var producer = plan.Compose["services"]![dependency]?.AsObject() ?? 148dependencies[dependency] = new JsonObject { ["condition"] = producer["healthcheck"] is null ? "service_started" : "service_healthy" }; 153plan.Services.Add(new(name, name, service["healthcheck"] is not null, [])); 155foreach (var mount in service["volumes"] is null ? [] : Objects(service["volumes"])) 157if (Text(mount, "type") == "volume" && plan.Compose["volumes"]?[Text(mount, "source")] is null) 164var captured = (plan.Inputs["environment"]?.AsObject() ?? []).ToDictionary(pair => pair.Key, 180foreach (var service in plan.Compose["services"]!.AsObject().Select(pair => pair.Value!.AsObject())) 182if (service["build"] is JsonObject build && 279Objects(context.Model["resources"]).Count(resource => Text(resource, "type") == "docker-compose/environment") > 1 ? 319var matches = rows.Where(row => row["Service"]?.GetValue<string>() == expected.Service).ToArray(); 330var publishers = row["Publishers"] is null ? [] : Objects(row["Publishers"]).Where(publisher => 331publisher["TargetPort"]?.GetValue<int>() == exposure.Target && publisher["Protocol"]?.GetValue<string>() == exposure.Protocol && 332publisher["URL"]?.GetValue<string>() == exposure.HostIp).ToArray(); 348["health"] = row["Health"]?.GetValue<string>() == "healthy" ? "healthy" : "not-configured", ["endpoints"] = endpoints
DockerComposeGenerator.cs (67)
33if (context.Model["schemaVersion"]?.GetValue<int>() != 1) 38var all = Objects(context.Model["resources"]).ToArray(); 65var metadata = resource["configuration"]?["publish.computeEnvironment"]?.GetValue<string>(); 66var assignment = resource.ContainsKey("computeEnvironment") ? resource["computeEnvironment"]?.GetValue<string>() : metadata; 97var parameters = Strings(context.Model["parameters"]).Order(StringComparer.Ordinal).ToDictionary(value => value, ParameterVariable, StringComparer.Ordinal); 115var image = configuration["image"]?.GetValue<string>() ?? resource["image"]?.GetValue<string>(); 118(configuration["image"] is null || configuration["build"] is null)) && !deferred) 126var lifecycle = Strings(resource["lifecycle"]).Any(); 127if ((lifecycle && (!Boolean(configuration, "replaceRunLifecycle") || configuration["healthcheck"] is null) || 128Boolean(configuration, "replaceRunLifecycle") && configuration["healthcheck"] is null) && !deferred) 136if (configuration["build"] is JsonObject build) 140if (Text(resource, "kind") == "container" && resource["entrypoint"] is not null) 144var arguments = Objects(resource["arguments"]).ToArray(); 150foreach (var (key, value) in resource["environment"]!.AsObject()) 155var endpoints = Objects(resource["endpoints"]).OrderBy(value => Text(value, "name"), StringComparer.Ordinal).ToArray(); 168if (endpoint["environmentVariable"]?.GetValue<string>() is { Length: > 0 } variable) 189var exposures = configuration["ports"] is not null ? Objects(configuration["ports"]) : 193if (endpoint["hostPort"]?.GetValue<int>() is > 0 and var hostPort) 205exposure["hostIp"]?.GetValue<string>() ?? "127.0.0.1", exposure["published"]?.GetValue<int>())); 222var mounts = Objects(resource["mounts"]).OrderBy(mount => Text(mount, "target") + "\0" + Text(mount, "source"), StringComparer.Ordinal).ToArray(); 268var dependencies = Strings(resource["dependencies"]).Distinct().Order(StringComparer.Ordinal).ToArray(); 277if (configuration["healthcheck"] is JsonObject healthcheck) 281compose["services"]!.AsObject().Add(names[resourceName], service); 282plan.Services.Add(new(resourceName, names[resourceName], configuration["healthcheck"] is not null, exposed)); 300if (compose["services"]!.AsObject().Count == 0) 331return new() { ["kind"] = "composite", ["parts"] = new JsonArray(Objects(value["parts"]).Select(part => (JsonNode)Normalize(part, depth + 1)).ToArray()) }; 333return new() { ["kind"] = "uriEncoded", ["value"] = Normalize(value["value"]!.AsObject(), depth + 1) }; 350return string.Concat(Objects(value["parts"]).Select(Render)); 361inputs["variables"]!.AsObject()[variable] = value.DeepClone(); 375foreach (var parameter in Objects(plan.Inputs["parameters"])) 379var secret = model["secretParameters"] is null || Strings(model["secretParameters"]).Contains(name, StringComparer.Ordinal); 381value ??= secret ? null : plan.Inputs["environment"]?[variable]?["defaultValue"]?.GetValue<string>() ?? 382model["parameterDefaults"]?[name]?.GetValue<string>(); 385foreach (var (variable, node) in plan.Inputs["environment"]?.AsObject() ?? []) 389value ??= Boolean(entry, "secret") ? null : entry["defaultValue"]?.GetValue<string>(); 392var resources = Objects(model["resources"]).ToDictionary(resource => Text(resource, "name"), StringComparer.Ordinal); 394foreach (var (variable, node) in plan.Inputs["variables"]!.AsObject()) 404foreach (var parameter in Objects(plan.Inputs["parameters"])) 413var secret = model["secretParameters"] is null || Strings(model["secretParameters"]).Contains(name, StringComparer.Ordinal); 415if (!secret && model["parameterDefaults"]?[name] is { } defaultValue) 425var source = environment["configuration"]?["publish.dockerComposeEnvironment"]?.GetValue<string>(); 440if (configuration[property] is not JsonValue value || !value.TryGetValue<bool>(out _)) 445if (configuration["dashboardHostPort"] is { } configuredPort) 449if (configuration["defaultNetworkName"] is { } network) 462var services = plan.Compose["services"]!.AsObject(); 467var hostPort = configuration["dashboardHostPort"]?.GetValue<int>(); 502if (captured.ContainsKey(variable) || Objects(plan.Inputs["parameters"]).Any(parameter => Text(parameter, "environmentVariable") == variable)) 514var options = resource["configuration"]?["publish.dockerCompose"] is { } source ? JsonNode.Parse(source.GetValue<string>())!.AsObject() : new JsonObject(); 526_ = options[flag]!.GetValue<bool>(); 535var build = options["build"]?.AsObject() ?? throw new ArgumentException("Build configuration must be an object.", nameof(options)); 542var health = options["healthcheck"]?.AsObject() ?? throw new ArgumentException("Healthcheck must be an object.", nameof(options)); 549foreach (var exposure in Objects(options["ports"])) 571internal static string Text(JsonObject value, string property) => value[property]?.GetValue<string>() ?? throw new ArgumentException($"Missing string '{property}'."); 572internal static bool Boolean(JsonObject value, string property) => value[property]?.GetValue<bool>() ?? false; 573private static int Integer(JsonObject value, string property) => value[property]!.GetValue<int>(); 611"composite" => Objects(value["parts"]).Any(ContainsParameter), 612"uriEncoded" => ContainsParameter(value["value"]!.AsObject()), 621"composite" => string.Concat(Objects(value["parts"]).Select(part => Evaluate(part, resources, names, parameters))), 622"uriEncoded" => EncodeUri(Evaluate(value["value"]!.AsObject(), resources, names, parameters)), 637var endpoint = Objects(resource["endpoints"]).SingleOrDefault(endpoint => Text(endpoint, "name") == Text(value, "endpoint")) 674foreach (var dependency in Strings(resource["dependencies"]))
sdk-tasks (7)
GetRuntimePackRids.cs (1)
23string [] runtimeIdentifiers = runtimeJsonRoot["runtimes"]!.AsObject().Select(p => p.Key).ToArray();
PublishMutationUtilities.cs (2)
20foreach (var target in deps["targets"]!.AsObject()) 38var librariesObj = deps["libraries"]!.AsObject();
RemoveAssetFromDepsPackages.cs (1)
37foreach (var target in deps["targets"]!.AsObject())
UpdateRuntimeConfig.cs (3)
38var frameworks = config["runtimeOptions"]?["frameworks"]; 39var framework = config["runtimeOptions"]?["framework"]; 58var name = framework["name"]!.GetValue<string>();
ServiceBus.AppHost (1)
AppHost.cs (1)
38document["UserConfig"]!["Logging"] = new JsonObject { ["Type"] = "Console" };