From 42215e7d28d6144e5a19f77ddc060c42b7afdad5 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 23 Jan 2020 20:51:02 +0800 Subject: ... --- Timeline.Tests/Controllers/TokenControllerTest.cs | 35 +++++++++++++++++------ Timeline.Tests/Controllers/UserControllerTest.cs | 21 ++++++++++---- 2 files changed, 42 insertions(+), 14 deletions(-) (limited to 'Timeline.Tests/Controllers') diff --git a/Timeline.Tests/Controllers/TokenControllerTest.cs b/Timeline.Tests/Controllers/TokenControllerTest.cs index 740d8377..61fbe950 100644 --- a/Timeline.Tests/Controllers/TokenControllerTest.cs +++ b/Timeline.Tests/Controllers/TokenControllerTest.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Timeline.Controllers; +using Timeline.Models; using Timeline.Models.Http; using Timeline.Services; using Timeline.Tests.Helpers; @@ -15,7 +16,7 @@ namespace Timeline.Tests.Controllers { public class TokenControllerTest : IDisposable { - private readonly Mock _mockUserService = new Mock(); + private readonly Mock _mockUserService = new Mock(); private readonly TestClock _mockClock = new TestClock(); @@ -38,12 +39,18 @@ namespace Timeline.Tests.Controllers { var mockCurrentTime = DateTime.Now; _mockClock.MockCurrentTime = mockCurrentTime; - var createResult = new CreateTokenResult + var mockCreateResult = new UserTokenCreateResult { Token = "mocktokenaaaaa", - User = MockUser.User.Info + User = new UserInfo + { + Id = 1, + Username = MockUser.User.Username, + Administrator = MockUser.User.Administrator, + Version = 1 + } }; - _mockUserService.Setup(s => s.CreateToken("u", "p", expire == null ? null : (DateTime?)mockCurrentTime.AddDays(expire.Value))).ReturnsAsync(createResult); + _mockUserService.Setup(s => s.CreateToken("u", "p", expire == null ? null : (DateTime?)mockCurrentTime.AddDays(expire.Value))).ReturnsAsync(mockCreateResult); var action = await _controller.Create(new CreateTokenRequest { Username = "u", @@ -51,7 +58,11 @@ namespace Timeline.Tests.Controllers Expire = expire }); action.Result.Should().BeAssignableTo() - .Which.Value.Should().BeEquivalentTo(createResult); + .Which.Value.Should().BeEquivalentTo(new CreateTokenResponse + { + Token = mockCreateResult.Token, + User = MockUser.User.Info + }); } [Fact] @@ -88,7 +99,13 @@ namespace Timeline.Tests.Controllers public async Task Verify_Ok() { const string token = "aaaaaaaaaaaaaa"; - _mockUserService.Setup(s => s.VerifyToken(token)).ReturnsAsync(MockUser.User.Info); + _mockUserService.Setup(s => s.VerifyToken(token)).ReturnsAsync(new UserInfo + { + Id = 1, + Username = MockUser.User.Username, + Administrator = MockUser.User.Administrator, + Version = 1 + }); var action = await _controller.Verify(new VerifyTokenRequest { Token = token }); action.Result.Should().BeAssignableTo() .Which.Value.Should().BeAssignableTo() @@ -97,9 +114,9 @@ namespace Timeline.Tests.Controllers public static IEnumerable Verify_BadRequest_Data() { - yield return new object[] { new JwtUserTokenBadFormatException(JwtUserTokenBadFormatException.ErrorCodes.Expired), ErrorCodes.TokenController.Verify_TimeExpired }; - yield return new object[] { new JwtUserTokenBadFormatException(JwtUserTokenBadFormatException.ErrorCodes.IdClaimBadFormat), ErrorCodes.TokenController.Verify_BadFormat }; - yield return new object[] { new JwtUserTokenBadFormatException(JwtUserTokenBadFormatException.ErrorCodes.OldVersion), ErrorCodes.TokenController.Verify_OldVersion }; + yield return new object[] { new UserTokenTimeExpireException(), ErrorCodes.TokenController.Verify_TimeExpired }; + yield return new object[] { new UserTokenBadVersionException(), ErrorCodes.TokenController.Verify_OldVersion }; + yield return new object[] { new UserTokenBadFormatException(), ErrorCodes.TokenController.Verify_BadFormat }; yield return new object[] { new UserNotExistException(), ErrorCodes.TokenController.Verify_UserNotExist }; } diff --git a/Timeline.Tests/Controllers/UserControllerTest.cs b/Timeline.Tests/Controllers/UserControllerTest.cs index 262dbe11..a1035675 100644 --- a/Timeline.Tests/Controllers/UserControllerTest.cs +++ b/Timeline.Tests/Controllers/UserControllerTest.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging.Abstractions; using Moq; using System; +using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; @@ -35,18 +36,28 @@ namespace Timeline.Tests.Controllers [Fact] public async Task GetList_Success() { - var array = MockUser.UserInfoList.ToArray(); - _mockUserService.Setup(s => s.ListUsers()).ReturnsAsync(array); + var mockUserList = new UserInfo[] { + new UserInfo { Id = 1, Username = "aaa", Administrator = true, Version = 1 }, + new UserInfo { Id = 2, Username = "bbb", Administrator = false, Version = 1 } + }; + _mockUserService.Setup(s => s.ListUsers()).ReturnsAsync(mockUserList); var action = await _controller.List(); action.Result.Should().BeAssignableTo() - .Which.Value.Should().BeEquivalentTo(array); + .Which.Value.Should().BeEquivalentTo( + mockUserList.Select(u => new User { Username = u.Username, Administrator = u.Administrator }).ToArray()); } [Fact] public async Task Get_Success() { const string username = "aaa"; - _mockUserService.Setup(s => s.GetUserByUsername(username)).ReturnsAsync(MockUser.User.Info); + _mockUserService.Setup(s => s.GetUserByUsername(username)).ReturnsAsync(new UserInfo + { + Id = 1, + Username = MockUser.User.Username, + Administrator = MockUser.User.Administrator, + Version = 1 + }); var action = await _controller.Get(username); action.Result.Should().BeAssignableTo() .Which.Value.Should().BeEquivalentTo(MockUser.User.Info); @@ -56,7 +67,7 @@ namespace Timeline.Tests.Controllers public async Task Get_NotFound() { const string username = "aaa"; - _mockUserService.Setup(s => s.GetUserByUsername(username)).Returns(Task.FromResult(null)); + _mockUserService.Setup(s => s.GetUserByUsername(username)).ThrowsAsync(new UserNotExistException()); var action = await _controller.Get(username); action.Result.Should().BeAssignableTo() .Which.Value.Should().BeAssignableTo() -- cgit v1.2.3