diff options
author | crupest <crupest@outlook.com> | 2022-04-20 22:10:48 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-04-20 22:10:48 +0800 |
commit | de2dc69400efb217513700b587d1571d31e53c7b (patch) | |
tree | 6424b78f5f4e7e7f381b9c6f16a6ee1e053fe1f1 /BackEnd/Timeline.Tests/IntegratedTests2 | |
parent | 7187553a32af6a0011e5246080ee2edc2be8215e (diff) | |
download | timeline-de2dc69400efb217513700b587d1571d31e53c7b.tar.gz timeline-de2dc69400efb217513700b587d1571d31e53c7b.tar.bz2 timeline-de2dc69400efb217513700b587d1571d31e53c7b.zip |
...
Diffstat (limited to 'BackEnd/Timeline.Tests/IntegratedTests2')
-rw-r--r-- | BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs | 9 | ||||
-rw-r--r-- | BackEnd/Timeline.Tests/IntegratedTests2/RegisterCodeTest.cs | 60 |
2 files changed, 69 insertions, 0 deletions
diff --git a/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs b/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs index de41181b..d30c807d 100644 --- a/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs +++ b/BackEnd/Timeline.Tests/IntegratedTests2/IntegratedTestBase.cs @@ -1,4 +1,5 @@ using System;
+using System.Net; using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.TestHost;
@@ -138,5 +139,13 @@ namespace Timeline.Tests.IntegratedTests2 { return CreateClientWithToken(NormalUserToken); }
+
+ public async Task TestOnlySelfAndAdminCanCall(HttpMethod httpMethod, string selfResourceUrl, string otherResourceUrl, object? body) + { + await DefaultClient.TestJsonSendAsync(httpMethod, selfResourceUrl, body, expectedStatusCode: HttpStatusCode.Unauthorized); + await UserClient.TestJsonSendAsync(httpMethod, selfResourceUrl, body); + await UserClient.TestJsonSendAsync(httpMethod, otherResourceUrl, body, expectedStatusCode: HttpStatusCode.Forbidden); + await AdminClient.TestJsonSendAsync(httpMethod, selfResourceUrl, body); + }
}
}
diff --git a/BackEnd/Timeline.Tests/IntegratedTests2/RegisterCodeTest.cs b/BackEnd/Timeline.Tests/IntegratedTests2/RegisterCodeTest.cs new file mode 100644 index 00000000..b840183e --- /dev/null +++ b/BackEnd/Timeline.Tests/IntegratedTests2/RegisterCodeTest.cs @@ -0,0 +1,60 @@ +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 RegisterCodeTest : IntegratedTestBase + { + public RegisterCodeTest(ITestOutputHelper testOutput) : base(testOutput) + { + } + + [Fact] + public async Task RegisterTest() + { + await DefaultClient.TestJsonSendAsync(HttpMethod.Post, "v2/register", new HttpRegisterCodeRegisterRequest + { + Username = "hello", + Password = "passwd", + }, expectedStatusCode: HttpStatusCode.UnprocessableEntity); + + await DefaultClient.TestJsonSendAsync(HttpMethod.Post, "v2/register", new HttpRegisterCodeRegisterRequest + { + Username = "hello", + Password = "passwd", + RegisterCode = "invalidone" + }, expectedStatusCode: HttpStatusCode.UnprocessableEntity); + + var b = await UserClient.TestJsonSendAsync<HttpRegisterCode>(HttpMethod.Get, "v2/users/user/registercode"); + b.RegisterCode.Should().BeNull(); + + var a = await UserClient.TestJsonSendAsync<HttpRegisterCode>(HttpMethod.Post, "v2/users/user/renewregistercode"); + a.RegisterCode.Should().NotBeNull(); + + var c = await UserClient.TestJsonSendAsync<HttpRegisterCode>(HttpMethod.Get, "v2/users/user/registercode"); + c.RegisterCode.Should().NotBeNull().And.Be(a.RegisterCode); + + var d = await DefaultClient.TestJsonSendAsync<HttpUser>(HttpMethod.Post, "v2/register", new HttpRegisterCodeRegisterRequest + { + Username = "hello", + Password = "passwd", + RegisterCode = a.RegisterCode! + }); + d.Username.Should().Be("hello"); + } + + [Fact] + public async Task PermissionTest() + { + await TestOnlySelfAndAdminCanCall(HttpMethod.Get, "v2/users/user/registercode", "v2/users/admin/registercode", null); + await TestOnlySelfAndAdminCanCall(HttpMethod.Post, "v2/users/user/renewregistercode", "v2/users/admin/renewregistercode", null); + } + } +} + |