aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests
diff options
context:
space:
mode:
Diffstat (limited to 'BackEnd/Timeline.Tests')
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs10
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests2/UserTest.cs76
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests2/UserTest2.cs88
3 files changed, 174 insertions, 0 deletions
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<Page<HttpUser>>(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<HttpUser>(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<HttpUser>(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<HttpUser>(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<HttpUser>(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);
+ }
+ }
+}
+