39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using BuildFlow.Host.Endpoints.Platform.Auth;
|
|
using BuildFlow.Platform.Application.Auth.Commands;
|
|
using FastEndpoints;
|
|
using FluentAssertions;
|
|
using MediatR;
|
|
using NSubstitute;
|
|
using Xunit;
|
|
|
|
namespace BuildFlow.Platform.Tests.Auth;
|
|
|
|
/// <summary>
|
|
/// 修改密码 HTTP 适配器测试,确保 Endpoint 只转发应用层命令。
|
|
/// </summary>
|
|
public class ChangePasswordEndpointTests
|
|
{
|
|
[Fact]
|
|
public async Task EndpointSendsCommandAndReturnsOk()
|
|
{
|
|
var mediator = Substitute.For<IMediator>();
|
|
mediator.Send(Arg.Any<ChangePasswordCommand>(), Arg.Any<CancellationToken>())
|
|
.Returns(Unit.Value);
|
|
var endpoint = Factory.Create<ChangePasswordEndpoint>(mediator);
|
|
var request = new ChangePasswordRequest
|
|
{
|
|
OldPassword = "OldPassword1",
|
|
NewPassword = "NewPassword2",
|
|
};
|
|
|
|
await endpoint.HandleAsync(request, CancellationToken.None);
|
|
|
|
await mediator.Received(1).Send(
|
|
Arg.Is<ChangePasswordCommand>(command =>
|
|
command.OldPassword == request.OldPassword
|
|
&& command.NewPassword == request.NewPassword),
|
|
Arg.Any<CancellationToken>());
|
|
endpoint.HttpContext.Response.StatusCode.Should().Be(200);
|
|
}
|
|
}
|