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