|
// 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("command --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("command");
// 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("command 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("command 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("command myresource my-command --project /path/to/project.csproj --help");
var exitCode = await result.InvokeAsync().DefaultTimeout();
Assert.Equal(ExitCodeConstants.Success, exitCode);
}
[Fact]
public async Task ResourceCommand_AcceptsKnownCommandNames()
{
using var workspace = TemporaryWorkspace.Create(outputHelper);
var services = CliTestHelper.CreateServiceCollection(workspace, outputHelper);
var provider = services.BuildServiceProvider();
var command = provider.GetRequiredService<RootCommand>();
// Test with resource-start
var startResult = command.Parse("command myresource resource-start --help");
var startExitCode = await startResult.InvokeAsync().DefaultTimeout();
Assert.Equal(ExitCodeConstants.Success, startExitCode);
// Test with resource-stop
var stopResult = command.Parse("command myresource resource-stop --help");
var stopExitCode = await stopResult.InvokeAsync().DefaultTimeout();
Assert.Equal(ExitCodeConstants.Success, stopExitCode);
// Test with resource-restart
var restartResult = command.Parse("command myresource resource-restart --help");
var restartExitCode = await restartResult.InvokeAsync().DefaultTimeout();
Assert.Equal(ExitCodeConstants.Success, restartExitCode);
}
}
|