From def8e8dd78812c019a0d6e8e5a3e2de4e82ae3e4 Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Thu, 17 Oct 2019 20:46:57 +0800 Subject: ... --- Timeline.Tests/Controllers/TokenControllerTest.cs | 84 +++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Timeline.Tests/Controllers/TokenControllerTest.cs (limited to 'Timeline.Tests/Controllers/TokenControllerTest.cs') diff --git a/Timeline.Tests/Controllers/TokenControllerTest.cs b/Timeline.Tests/Controllers/TokenControllerTest.cs new file mode 100644 index 00000000..fff7c020 --- /dev/null +++ b/Timeline.Tests/Controllers/TokenControllerTest.cs @@ -0,0 +1,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 _mockUserService = new Mock(); + private readonly TestClock _mockClock = new TestClock(); + + private readonly TokenController _controller; + + public TokenControllerTest() + { + _controller = new TokenController(_mockUserService.Object, NullLogger.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() + .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() + .Which.Value.Should().BeAssignableTo() + .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() + .Which.Value.Should().BeAssignableTo() + .Which.Code.Should().Be(Create.BadCredential); + } + + // TODO! Verify unit tests + } +} -- cgit v1.2.3