From 1fcd4c0daace2532757f797be2e33768b9d2cccd Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Sat, 17 Aug 2019 20:39:12 +0800 Subject: Add unit tests for change username. --- Timeline.Tests/UserUnitTest.cs | 75 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) (limited to 'Timeline.Tests/UserUnitTest.cs') diff --git a/Timeline.Tests/UserUnitTest.cs b/Timeline.Tests/UserUnitTest.cs index 7bf12ad8..77ec37ee 100644 --- a/Timeline.Tests/UserUnitTest.cs +++ b/Timeline.Tests/UserUnitTest.cs @@ -185,6 +185,80 @@ namespace Timeline.Tests } } + + public class ChangeUsernameUnitTest : IClassFixture>, IDisposable + { + private const string url = "userop/changeusername"; + + private readonly WebApplicationFactory _factory; + private readonly Action _disposeAction; + + public ChangeUsernameUnitTest(MyWebApplicationFactory factory, ITestOutputHelper outputHelper) + { + _factory = factory.WithTestConfig(outputHelper, out _disposeAction); + } + + public void Dispose() + { + _disposeAction(); + } + + [Fact] + public async Task InvalidModel() + { + using (var client = await _factory.CreateClientAsAdmin()) + { + // missing old username + await InvalidModelTestHelpers.TestPostInvalidModel(client, url, + new ChangeUsernameRequest { OldUsername= null, NewUsername= "hhh" }); + // missing new username + await InvalidModelTestHelpers.TestPostInvalidModel(client, url, + new ChangeUsernameRequest { OldUsername= "hhh", NewUsername= null }); + // bad username + await InvalidModelTestHelpers.TestPostInvalidModel(client, url, + new ChangeUsernameRequest { OldUsername = "hhh", NewUsername = "???" }); + } + } + + [Fact] + public async Task UserNotExist() + { + using (var client = await _factory.CreateClientAsAdmin()) + { + var res = await client.PostAsJsonAsync(url, + new ChangeUsernameRequest{ OldUsername= "usernotexist", NewUsername= "newUsername" }); + res.Should().HaveStatusCodeBadRequest() + .And.Should().HaveBodyAsCommonResponseWithCode(UserController.ErrorCodes.ChangeUsername_NotExist); + } + } + + [Fact] + public async Task UserAlreadyExist() + { + using (var client = await _factory.CreateClientAsAdmin()) + { + var res = await client.PostAsJsonAsync(url, + new ChangeUsernameRequest { OldUsername = MockUsers.UserUsername, NewUsername = MockUsers.AdminUsername }); + res.Should().HaveStatusCodeBadRequest() + .And.Should().HaveBodyAsCommonResponseWithCode(UserController.ErrorCodes.ChangeUsername_AlreadyExist); + } + } + + [Fact] + public async Task Success() + { + using (var client = await _factory.CreateClientAsAdmin()) + { + const string newUsername = "hahaha"; + var res = await client.PostAsJsonAsync(url, + new ChangeUsernameRequest { OldUsername = MockUsers.UserUsername, NewUsername = newUsername }); + res.Should().HaveStatusCodeOk(); + await client.CreateUserTokenAsync(newUsername, MockUsers.UserPassword); + } + } + } + + public class ChangePasswordUnitTest : IClassFixture>, IDisposable { private const string url = "userop/changepassword"; @@ -202,7 +276,6 @@ namespace Timeline.Tests _disposeAction(); } - [Fact] public async Task InvalidModel() { -- cgit v1.2.3