| File: Commands\ResourceCommandTests.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Cli.Commands; using Aspire.Cli.Tests.Utils; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.InternalTesting; namespace Aspire.Cli.Tests.Commands; public class ResourceCommandTests(ITestOutputHelper outputHelper) { [Fact] public async Task ResourceCommand_Help_Works() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource --help"); var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, exitCode); } [Fact] public async Task ResourceCommand_RequiresResourceArgument() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource"); // Missing required argument should fail var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.NotEqual(ExitCodeConstants.Success, exitCode); } [Fact] public async Task ResourceCommand_RequiresCommandArgument() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource myresource"); // Missing required command argument should fail var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.NotEqual(ExitCodeConstants.Success, exitCode); } [Fact] public async Task ResourceCommand_AcceptsBothArguments() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource myresource my-command --help"); var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, exitCode); } [Fact] public async Task ResourceCommand_AcceptsProjectOption() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource myresource my-command --apphost /path/to/project.csproj --help"); var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, exitCode); } [Fact] public async Task ResourceCommand_AcceptsWellKnownCommandNames() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); // Test with start var startResult = command.Parse("resource myresource start --help"); var startExitCode = await startResult.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, startExitCode); // Test with stop var stopResult = command.Parse("resource myresource stop --help"); var stopExitCode = await stopResult.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, stopExitCode); // Test with restart var restartResult = command.Parse("resource myresource restart --help"); var restartExitCode = await restartResult.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, restartExitCode); } [Fact] public async Task ResourceCommand_AcceptsProjectOptionWithStart() { using var workspace = TemporaryWorkspace.Create(outputHelper); var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper); var provider = services.BuildServiceProvider(); var command = provider.GetRequiredService<RootCommand>(); var result = command.Parse("resource myresource start --apphost /path/to/project.csproj --help"); var exitCode = await result.InvokeAsync().DefaultTimeout(); Assert.Equal(ExitCodeConstants.Success, exitCode); } }