aboutsummaryrefslogtreecommitdiff
path: root/Timeline.Tests/TokenUnitTest.cs
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-04 15:46:31 +0800
committer杨宇千 <crupest@outlook.com>2019-08-04 15:46:31 +0800
commit7f7fdd4d3d72980d575f7e27cea4a2d11c8482a8 (patch)
treedeace7e60ff91362572bf178004f3928175a340e /Timeline.Tests/TokenUnitTest.cs
parent05f10e61506c4c9200a863d3f060a480d897f4d4 (diff)
downloadtimeline-7f7fdd4d3d72980d575f7e27cea4a2d11c8482a8.tar.gz
timeline-7f7fdd4d3d72980d575f7e27cea4a2d11c8482a8.tar.bz2
timeline-7f7fdd4d3d72980d575f7e27cea4a2d11c8482a8.zip
Continue to add unit tests for token. Fix a bug thanks to unit test.
Diffstat (limited to 'Timeline.Tests/TokenUnitTest.cs')
-rw-r--r--Timeline.Tests/TokenUnitTest.cs58
1 files changed, 51 insertions, 7 deletions
diff --git a/Timeline.Tests/TokenUnitTest.cs b/Timeline.Tests/TokenUnitTest.cs
index 27c2ed32..d7df8797 100644
--- a/Timeline.Tests/TokenUnitTest.cs
+++ b/Timeline.Tests/TokenUnitTest.cs
@@ -1,10 +1,14 @@
using Microsoft.AspNetCore.Mvc.Testing;
+using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using System.Linq;
using System.Net;
using System.Net.Http;
using Timeline.Controllers;
+using Timeline.Entities;
using Timeline.Entities.Http;
+using Timeline.Models;
+using Timeline.Services;
using Timeline.Tests.Helpers;
using Timeline.Tests.Helpers.Authentication;
using Xunit;
@@ -80,23 +84,63 @@ namespace Timeline.Tests
{
var response = await client.PostAsJsonAsync(VerifyTokenUrl, new VerifyTokenRequest { Token = "bad token hahaha" });
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ var body = await response.ReadBodyAsJson<CommonResponse>();
+ Assert.Equal(TokenController.ErrorCodes.Verify_BadToken, body.Code);
}
}
[Fact]
- public async void VerifyTokenTest_GoodToken()
+ public async void VerifyTokenTest_BadVersion_AND_UserNotExist()
{
using (var client = _factory.CreateDefaultClient())
{
- var createTokenResult = await client.CreateUserTokenAsync("admin", "admin");
+ using (var scope = _factory.Server.Host.Services.CreateScope()) // UserService is scoped.
+ {
+ // create a user for test
+ var userService = scope.ServiceProvider.GetRequiredService<IUserService>();
+
+ const string username = "verifytokentest0";
+ const string password = "12345678";
+
+ await userService.PutUser(username, password, false);
+
+ // create a token
+ var token = (await client.CreateUserTokenAsync(username, password)).Token;
+ // increase version
+ await userService.PatchUser(username, null, null);
+
+ // test against bad version
+ var response = await client.PostAsJsonAsync(VerifyTokenUrl, new VerifyTokenRequest { Token = token });
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ var body = await response.ReadBodyAsJson<CommonResponse>();
+ Assert.Equal(TokenController.ErrorCodes.Verify_BadVersion, body.Code);
+
+ // create another token
+ var token2 = (await client.CreateUserTokenAsync(username, password)).Token;
+
+ // delete user
+ await userService.DeleteUser(username);
+
+ // test against user not exist
+ var response2 = await client.PostAsJsonAsync(VerifyTokenUrl, new VerifyTokenRequest { Token = token });
+ Assert.Equal(HttpStatusCode.BadRequest, response2.StatusCode);
+ var body2 = await response2.ReadBodyAsJson<CommonResponse>();
+ Assert.Equal(TokenController.ErrorCodes.Verify_UserNotExist, body2.Code);
+ }
+ }
+ }
+
+ [Fact]
+ public async void VerifyTokenTest_Success()
+ {
+ using (var client = _factory.CreateDefaultClient())
+ {
+ var createTokenResult = await client.CreateUserTokenAsync("admin", "admin");
var response = await client.PostAsJsonAsync(VerifyTokenUrl, new VerifyTokenRequest { Token = createTokenResult.Token });
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
-
- var result = JsonConvert.DeserializeObject<VerifyTokenResponse>(await response.Content.ReadAsStringAsync());
- Assert.NotNull(result.User);
- Assert.Equal(createTokenResult.User.Username, result.User.Username);
- Assert.Equal(createTokenResult.User.Administrator, result.User.Administrator);
+ var body = JsonConvert.DeserializeObject<VerifyTokenResponse>(await response.Content.ReadAsStringAsync());
+ Assert.Equal(TestMockUsers.MockUserInfos.Where(u => u.Username == "user").Single(), body.User, UserInfoComparers.EqualityComparer);
}
}
}