aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests/IntegratedTests2/RegisterCodeTest.cs
blob: d11c3250b9611a8d24503cdf7a736d6b19b28215 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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 this.TestOnlySelfAndAdminCanCall(HttpMethod.Get, "v2/users/user/registercode", "v2/users/admin/registercode", null);
            await this.TestOnlySelfAndAdminCanCall(HttpMethod.Post, "v2/users/user/renewregistercode", "v2/users/admin/renewregistercode", null);
        }
    }
}