From 8c797c5b4f822ee815357fc358d6b8de38b86dd9 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 16 Apr 2022 19:52:50 +0800 Subject: ... --- .../IntegratedTests2/IntegratedTestBase.cs | 10 +++ .../Timeline.Tests/IntegratedTests2/UserTest.cs | 76 +++++++++++++++++++ .../Timeline.Tests/IntegratedTests2/UserTest2.cs | 88 ++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 BackEnd/Timeline.Tests/IntegratedTests2/UserTest.cs create mode 100644 BackEnd/Timeline.Tests/IntegratedTests2/UserTest2.cs (limited to 'BackEnd') diff --git a/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs b/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs index 24a869a0..de41181b 100644 --- a/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs +++ b/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs @@ -20,6 +20,10 @@ namespace Timeline.Tests.IntegratedTests2 protected string NormalUserToken { get; set; } = default!; protected string AdminUserToken { get; set; } = default!; + protected HttpClient DefaultClient { get; set; } = default!; + protected HttpClient UserClient { get; set; } = default!; + protected HttpClient AdminClient { get; set; } = default!; + public IntegratedTestBase(ITestOutputHelper testOutputHelper) : this(1, testOutputHelper) { @@ -83,6 +87,9 @@ namespace Timeline.Tests.IntegratedTests2 await CreateInitUsersAsync(); NormalUserToken = await CreateTokenWithCredentialAsync("user", "userpw"); AdminUserToken = await CreateTokenWithCredentialAsync("admin", "adminpw"); + DefaultClient = CreateDefaultClient(); + UserClient = CreateClientAsUser(); + AdminClient = CreateClientAsAdmin(); await OnInitializeAsync(); OnInitialize(); } @@ -91,6 +98,9 @@ namespace Timeline.Tests.IntegratedTests2 { await OnDisposeAsync(); OnDispose(); + DefaultClient.Dispose(); + UserClient.Dispose(); + AdminClient.Dispose(); await TestApp.DisposeAsync(); } diff --git a/BackEnd/Timeline.Tests/IntegratedTests2/UserTest.cs b/BackEnd/Timeline.Tests/IntegratedTests2/UserTest.cs new file mode 100644 index 00000000..c5ec4c58 --- /dev/null +++ b/BackEnd/Timeline.Tests/IntegratedTests2/UserTest.cs @@ -0,0 +1,76 @@ +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using FluentAssertions; +using Timeline.Models; +using Timeline.Models.Http; +using Xunit; +using Xunit.Abstractions; + +namespace Timeline.Tests.IntegratedTests2 +{ + public class UserTest : IntegratedTestBase + { + public UserTest(ITestOutputHelper testOutput) : base(testOutput) + { + } + + [Fact] + public async Task ListTest() + { + using var client = CreateDefaultClient(); + + var a = await client.TestJsonSendAsync>(HttpMethod.Get, "v2/users", expectedStatusCode: HttpStatusCode.OK); + a.TotalCount.Should().Be(3); + } + + [Fact] + public async Task GetTest() + { + using var client = CreateDefaultClient(); + + var a = await client.TestJsonSendAsync(HttpMethod.Get, "v2/users/user", expectedStatusCode: HttpStatusCode.OK); + a.Username.Should().Be("user"); + } + + [Fact] + public async Task CreateTest() + { + using var client = CreateClientAsAdmin(); + + var a = await client.TestJsonSendAsync(HttpMethod.Post, "v2/users", new HttpUserPostRequest + { + Username = "user2", + Password = "user2pw", + Nickname = "nickname" + }, expectedStatusCode: HttpStatusCode.Created); + + a.Username.Should().Be("user2"); + a.Nickname.Should().Be("nickname"); + } + + [Fact] + public async Task CreateNotLogin() + { + using var client = CreateDefaultClient(); + + await client.TestJsonSendAsync(HttpMethod.Post, "v2/users", new HttpUserPostRequest + { + Username = "user2", + Password = "user2pw", + }, expectedStatusCode: HttpStatusCode.Unauthorized); + } + + [Fact] + public async Task CreateForbid() + { + using var client = CreateClientAsUser(); + + await client.TestJsonSendAsync(HttpMethod.Post, "v2/users", new HttpUserPostRequest + { + Username = "user2", + Password = "user2pw", + }, expectedStatusCode: HttpStatusCode.Forbidden); + } + } +} diff --git a/BackEnd/Timeline.Tests/IntegratedTests2/UserTest2.cs b/BackEnd/Timeline.Tests/IntegratedTests2/UserTest2.cs new file mode 100644 index 00000000..12573a0c --- /dev/null +++ b/BackEnd/Timeline.Tests/IntegratedTests2/UserTest2.cs @@ -0,0 +1,88 @@ +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using FluentAssertions; +using Timeline.Models.Http; +using Xunit; +using Xunit.Abstractions; + +namespace Timeline.Tests.IntegratedTests2 +{ + public class UserTest2 : IntegratedTestBase + { + public UserTest2(ITestOutputHelper testOutput) : base(testOutput) + { + } + + [Fact] + public async Task UserPatchTest() + { + var a = await UserClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/user", new HttpUserPatchRequest + { + Nickname = "nick" + }); + a.Nickname.Should().Be("nick"); + } + + [Fact] + public async Task UserPatchUnauthorize() + { + await DefaultClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/user", new HttpUserPatchRequest + { + Nickname = "nick" + }, expectedStatusCode: HttpStatusCode.Unauthorized); + } + + [Fact] + public async Task UserPatchForbid() + { + await UserClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/user", new HttpUserPatchRequest + { + Username = "hello" + }, expectedStatusCode: HttpStatusCode.Forbidden); + + await UserClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/user", new HttpUserPatchRequest + { + Password = "hello" + }, expectedStatusCode: HttpStatusCode.Forbidden); + + await UserClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/admin", new HttpUserPatchRequest + { + Nickname = "nick" + }, expectedStatusCode: HttpStatusCode.Forbidden); + } + + [Fact] + public async Task AdminPatchTest() + { + var a = await AdminClient.TestJsonSendAsync(HttpMethod.Patch, "v2/users/user", new HttpUserPatchRequest + { + Username = "hello", + Password = "hellopw", + Nickname = "nick" + }); + a.Username.Should().Be("hello"); + a.Nickname.Should().Be("nick"); + } + + [Fact] + public async Task DeleteTest() + { + await AdminClient.TestSendAsync(HttpMethod.Delete, "v2/users/user"); + } + + [Fact] + public async Task DeleteUnauthorized() + { + await DefaultClient.TestSendAsync(HttpMethod.Delete, "v2/users/user", expectedStatusCode: HttpStatusCode.Unauthorized); + } + + [Fact] + public async Task DeleteForbid() + { + await UserClient.TestSendAsync(HttpMethod.Delete, "v2/users/user", expectedStatusCode: HttpStatusCode.Forbidden); + } + } +} + -- cgit v1.2.3