1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
using FluentAssertions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using System;
using System.Threading.Tasks;
using Timeline.Controllers;
using Timeline.Models.Http;
using Timeline.Services;
using Timeline.Tests.Mock.Data;
using Timeline.Tests.Mock.Services;
using Xunit;
using static Timeline.ErrorCodes.Http.Token;
namespace Timeline.Tests.Controllers
{
public class TokenControllerTest
{
private readonly Mock<IUserService> _mockUserService = new Mock<IUserService>();
private readonly TestClock _mockClock = new TestClock();
private readonly TokenController _controller;
public TokenControllerTest()
{
_controller = new TokenController(_mockUserService.Object, NullLogger<TokenController>.Instance, _mockClock);
}
[Theory]
[InlineData(null)]
[InlineData(100)]
public async Task Create_Ok(int? expire)
{
var mockCurrentTime = DateTime.Now;
_mockClock.MockCurrentTime = mockCurrentTime;
var createResult = new CreateTokenResult
{
Token = "mocktokenaaaaa",
User = MockUser.User.Info
};
_mockUserService.Setup(s => s.CreateToken("u", "p", expire == null ? null : (DateTime?)mockCurrentTime.AddDays(expire.Value))).ReturnsAsync(createResult);
var action = await _controller.Create(new CreateTokenRequest
{
Username = "u",
Password = "p",
Expire = expire
});
action.Should().BeAssignableTo<OkObjectResult>()
.Which.Value.Should().BeEquivalentTo(createResult);
}
[Fact]
public async Task Create_UserNotExist()
{
_mockUserService.Setup(s => s.CreateToken("u", "p", null)).ThrowsAsync(new UserNotExistException("u"));
var action = await _controller.Create(new CreateTokenRequest
{
Username = "u",
Password = "p",
Expire = null
});
action.Should().BeAssignableTo<BadRequestObjectResult>()
.Which.Value.Should().BeAssignableTo<CommonResponse>()
.Which.Code.Should().Be(Create.BadCredential);
}
[Fact]
public async Task Create_BadPassword()
{
_mockUserService.Setup(s => s.CreateToken("u", "p", null)).ThrowsAsync(new BadPasswordException("u"));
var action = await _controller.Create(new CreateTokenRequest
{
Username = "u",
Password = "p",
Expire = null
});
action.Should().BeAssignableTo<BadRequestObjectResult>()
.Which.Value.Should().BeAssignableTo<CommonResponse>()
.Which.Code.Should().Be(Create.BadCredential);
}
// TODO! Verify unit tests
}
}
|