67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
// Copyright (c) 2020 Tudor Stanciu
|
|
|
|
using MediatR;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Tuitio.Application.CommandHandlers;
|
|
using Tuitio.Application.Tests.Fixtures;
|
|
using Tuitio.PublishedLanguage.Constants;
|
|
using Xunit;
|
|
|
|
namespace Tuitio.Application.Tests
|
|
{
|
|
public class CommandHandlerTests : IClassFixture<DependencyInjectionFixture>, IDisposable
|
|
{
|
|
private readonly IServiceScope _tuitioScope;
|
|
private readonly IMediator _mediator;
|
|
|
|
public CommandHandlerTests(DependencyInjectionFixture fixture)
|
|
{
|
|
_tuitioScope = fixture.ServiceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope();
|
|
_mediator = _tuitioScope.ServiceProvider.GetRequiredService<IMediator>();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_tuitioScope.Dispose();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AccountLoginHandler_Handle_Success()
|
|
{
|
|
// Arrange
|
|
var userName = "tuitio.user";
|
|
var password = "pass123";
|
|
var command = new AccountLoginHandler.Command(userName, password);
|
|
|
|
// Act
|
|
var result = await _mediator.Send(command);
|
|
|
|
// Assert
|
|
Assert.NotNull(result);
|
|
Assert.NotNull(result.Result);
|
|
Assert.Null(result.Error);
|
|
Assert.NotEmpty(result.Result.Token);
|
|
Assert.True(result.Result.ExpiresIn > 0, "Token expiration must be a positive number.");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AccountLoginHandler_Handle_Failed()
|
|
{
|
|
// Arrange
|
|
var userName = "tuitio.user";
|
|
var password = "wrong_password";
|
|
var command = new AccountLoginHandler.Command(userName, password);
|
|
|
|
// Act
|
|
var result = await _mediator.Send(command);
|
|
|
|
// Assert
|
|
Assert.NotNull(result);
|
|
Assert.Null(result.Result);
|
|
Assert.NotNull(result.Error);
|
|
Assert.NotEmpty(result.Error);
|
|
Assert.Equal(EnvelopeError.BAD_CREDENTIALS, result.Error);
|
|
}
|
|
}
|
|
}
|