39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
using System.Net;
|
|
using System.Net.Http.Json;
|
|
using CShells.Lifecycle;
|
|
using NSubstitute;
|
|
|
|
namespace Elsa.Shells.Api.Tests.Endpoints.ReloadAll;
|
|
|
|
public class ReloadAllTests : ShellsApiTestBase
|
|
{
|
|
[Fact]
|
|
public async Task Post_WhenSuccessful_Returns200WithCompletedStatus()
|
|
{
|
|
var response = await HttpClient.PostAsync("/shells/reload", null);
|
|
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
var body = await response.Content.ReadFromJsonAsync<ShellReloadResult>(JsonOptions);
|
|
Assert.NotNull(body);
|
|
Assert.Equal("Completed", body.Status);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Post_WhenAnyShellFails_Returns503WithFailedStatus()
|
|
{
|
|
ShellRegistry
|
|
.ReloadActiveAsync(Arg.Any<ReloadOptions?>(), Arg.Any<CancellationToken>())
|
|
.Returns(Task.FromResult<IReadOnlyList<ReloadResult>>([
|
|
new ReloadResult("shell-a", null, null, new InvalidOperationException("Shell reload failed"))
|
|
]));
|
|
|
|
var response = await HttpClient.PostAsync("/shells/reload", null);
|
|
|
|
Assert.Equal(HttpStatusCode.ServiceUnavailable, response.StatusCode);
|
|
var body = await response.Content.ReadFromJsonAsync<ShellReloadResult>(JsonOptions);
|
|
Assert.NotNull(body);
|
|
Assert.Equal("Failed", body.Status);
|
|
Assert.Contains("Shell reload failed", body.Message);
|
|
}
|
|
}
|