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;
///
/// 修改密码 HTTP 适配器测试,确保 Endpoint 只转发应用层命令。
///
public class ChangePasswordEndpointTests
{
[Fact]
public async Task EndpointSendsCommandAndReturnsOk()
{
var mediator = Substitute.For();
mediator.Send(Arg.Any(), Arg.Any())
.Returns(Unit.Value);
var endpoint = Factory.Create(mediator);
var request = new ChangePasswordRequest
{
OldPassword = "OldPassword1",
NewPassword = "NewPassword2",
};
await endpoint.HandleAsync(request, CancellationToken.None);
await mediator.Received(1).Send(
Arg.Is(command =>
command.OldPassword == request.OldPassword
&& command.NewPassword == request.NewPassword),
Arg.Any());
endpoint.HttpContext.Response.StatusCode.Should().Be(200);
}
}