aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-04-17 23:31:15 +0800
committercrupest <crupest@outlook.com>2022-04-17 23:31:15 +0800
commitad2829be08116cdb596990c1152e1dfc4f0ffe47 (patch)
treee7f2f5dd2fd72889148d323492de7ab9d5cfce8d /BackEnd/Timeline.Tests
parent84cb99d087f62dca89fa682feae6738b3350fed4 (diff)
downloadtimeline-ad2829be08116cdb596990c1152e1dfc4f0ffe47.tar.gz
timeline-ad2829be08116cdb596990c1152e1dfc4f0ffe47.tar.bz2
timeline-ad2829be08116cdb596990c1152e1dfc4f0ffe47.zip
...
Diffstat (limited to 'BackEnd/Timeline.Tests')
-rw-r--r--BackEnd/Timeline.Tests/Helpers/TestDatabase.cs7
-rw-r--r--BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs9
-rw-r--r--BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs67
-rw-r--r--BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs42
-rw-r--r--BackEnd/Timeline.Tests/Services/ServiceTestBase.cs10
-rw-r--r--BackEnd/Timeline.Tests/Timeline.Tests.csproj6
6 files changed, 118 insertions, 23 deletions
diff --git a/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
index 5752b8cd..9bd690a2 100644
--- a/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
+++ b/BackEnd/Timeline.Tests/Helpers/TestDatabase.cs
@@ -1,11 +1,9 @@
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging.Abstractions;
-using Moq;
using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Services;
-using Timeline.Services.Token;
using Timeline.Services.User;
using Xunit;
using Xunit.Abstractions;
@@ -26,10 +24,7 @@ namespace Timeline.Tests.Helpers
using var context = CreateContext();
await context.Database.MigrateAsync();
- var mockUserTokenManager = new Mock<IUserTokenService>();
- mockUserTokenManager.SetReturnsDefault(Task.CompletedTask);
-
- var userService = new UserService(NullLogger<UserService>.Instance, context, new PasswordService(), mockUserTokenManager.Object, new Clock());
+ var userService = new UserService(NullLogger<UserService>.Instance, context, new PasswordService(), new Clock());
await userService.ModifyUserAsync(
await userService.GetUserIdByUsernameAsync("administrator"),
diff --git a/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs
index 01390baf..62932010 100644
--- a/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs
+++ b/BackEnd/Timeline.Tests/IntegratedTests/UserTest.cs
@@ -1,4 +1,4 @@
-using FluentAssertions;
+using FluentAssertions;
using System.Collections.Generic;
using System.Threading.Tasks;
using Timeline.Models.Http;
@@ -96,12 +96,6 @@ namespace Timeline.Tests.IntegratedTests
}
{
- var token = userClient.DefaultRequestHeaders.Authorization!.Parameter!;
- // Token should expire.
- await userClient.TestPostAssertErrorAsync("token/verify", new HttpVerifyOrRevokeTokenRequest() { Token = token });
- }
-
- {
// Check password.
(await CreateClientWithCredential("newuser", "newpw")).Dispose();
}
@@ -294,7 +288,6 @@ namespace Timeline.Tests.IntegratedTests
{
using var client = await CreateClientAsUser();
await client.TestPostAsync(changePasswordUrl, new HttpChangePasswordRequest { OldPassword = "user1pw", NewPassword = "newpw" });
- await client.TestPatchAssertUnauthorizedAsync("users/user1", new HttpUserPatchRequest { });
(await CreateClientWithCredential("user1", "newpw")).Dispose();
}
diff --git a/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs b/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs
new file mode 100644
index 00000000..0019de02
--- /dev/null
+++ b/BackEnd/Timeline.Tests/ServiceTests/ServiceTestBase.cs
@@ -0,0 +1,67 @@
+using Microsoft.Extensions.Logging.Abstractions;
+using System.Threading.Tasks;
+using Timeline.Entities;
+using Timeline.Services.User;
+using Timeline.Tests.Helpers;
+using Xunit;
+using Xunit.Abstractions;
+
+namespace Timeline.Tests.ServiceTests
+{
+ public abstract class ServiceTestBase : IAsyncLifetime
+ {
+ private readonly ITestOutputHelper? _testOutputHelper;
+
+ protected TestDatabase TestDatabase { get; }
+ protected DatabaseContext Database { get; private set; } = default!;
+
+ protected TestClock Clock { get; } = new TestClock();
+ protected UserService UserService { get; private set; } = default!;
+
+ protected long AdminId { get; private set; }
+ protected long UserId { get; private set; }
+
+ protected ServiceTestBase(ITestOutputHelper? testOutputHelper = null)
+ {
+ _testOutputHelper = testOutputHelper;
+ TestDatabase = new TestDatabase();
+ }
+
+ public async Task InitializeAsync()
+ {
+ await TestDatabase.InitializeAsync();
+ Database = TestDatabase.CreateContext(_testOutputHelper);
+
+ UserService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), Clock);
+
+ AdminId = await UserService.GetUserIdByUsernameAsync("admin");
+ UserId = await UserService.GetUserIdByUsernameAsync("user");
+
+ await OnInitializeAsync();
+ OnInitialize();
+ }
+
+ public async Task DisposeAsync()
+ {
+ OnDispose();
+ await OnDisposeAsync();
+ await Database.DisposeAsync();
+ await TestDatabase.DisposeAsync();
+ }
+
+
+ protected virtual void OnInitialize() { }
+ protected virtual void OnDispose() { }
+
+
+ protected virtual Task OnInitializeAsync()
+ {
+ return Task.CompletedTask;
+ }
+
+ protected virtual Task OnDisposeAsync()
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git a/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs b/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs
new file mode 100644
index 00000000..6542696f
--- /dev/null
+++ b/BackEnd/Timeline.Tests/ServiceTests/User/RegisterCode/RegisterCodeServiceTest.cs
@@ -0,0 +1,42 @@
+using System.Threading.Tasks;
+using FluentAssertions;
+using Timeline.Services.User.RegisterCode;
+using Xunit;
+
+namespace Timeline.Tests.ServiceTests.User.RegisterCode
+{
+ public class RegisterCodeServiceTest : ServiceTestBase
+ {
+ private RegisterCodeService _registerCodeService = default!;
+
+ protected override void OnInitialize()
+ {
+ _registerCodeService = new RegisterCodeService(Database);
+ }
+
+ protected override void OnDispose()
+ {
+ _registerCodeService.Dispose();
+ }
+
+ [Fact]
+ public async Task Test()
+ {
+ var a = await _registerCodeService.GetCurrentCode(AdminId);
+ a.Should().BeNull();
+ var b = await _registerCodeService.CreateNewCode(AdminId);
+ b.Should().NotBeNullOrEmpty();
+ var c = await _registerCodeService.GetCurrentCode(AdminId);
+ c.Should().Be(b);
+ var d = await _registerCodeService.CreateNewCode(AdminId);
+ d.Should().NotBe(b);
+ var e = await _registerCodeService.GetCodeOwner(d);
+ e.Should().Be(AdminId);
+ var f = await _registerCodeService.GetCodeOwner(b);
+ f.Should().BeNull();
+ var g = await _registerCodeService.GetCodeOwner(b, false);
+ g.Should().Be(AdminId);
+ }
+ }
+}
+
diff --git a/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs b/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
index 039d3f59..fa8269c2 100644
--- a/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
+++ b/BackEnd/Timeline.Tests/Services/ServiceTestBase.cs
@@ -1,9 +1,7 @@
using Microsoft.Extensions.Logging.Abstractions;
-using Moq;
using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Services.Timeline;
-using Timeline.Services.Token;
using Timeline.Services.User;
using Timeline.Tests.Helpers;
using Xunit;
@@ -21,8 +19,6 @@ namespace Timeline.Tests.Services
protected TestClock Clock { get; } = new TestClock();
protected UserService UserService { get; private set; } = default!;
protected TimelineService TimelineService { get; private set; } = default!;
- protected Mock<IUserTokenService> UserTokenServiceMock { get; private set; } = default!;
- protected IUserTokenService UserTokenService { get; private set; } = default!;
protected long UserId { get; private set; }
protected long AdminId { get; private set; }
@@ -38,11 +34,7 @@ namespace Timeline.Tests.Services
await TestDatabase.InitializeAsync();
Database = TestDatabase.CreateContext(_testOutputHelper);
- UserTokenServiceMock = new();
- UserTokenServiceMock.SetReturnsDefault(Task.CompletedTask);
- UserTokenService = UserTokenServiceMock.Object;
-
- UserService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), UserTokenService, Clock);
+ UserService = new UserService(NullLogger<UserService>.Instance, Database, new PasswordService(), Clock);
TimelineService = new TimelineService(NullLogger<TimelineService>.Instance, Database, UserService, Clock);
UserId = await UserService.GetUserIdByUsernameAsync("user");
diff --git a/BackEnd/Timeline.Tests/Timeline.Tests.csproj b/BackEnd/Timeline.Tests/Timeline.Tests.csproj
index 84fc9055..9c8c64b4 100644
--- a/BackEnd/Timeline.Tests/Timeline.Tests.csproj
+++ b/BackEnd/Timeline.Tests/Timeline.Tests.csproj
@@ -31,8 +31,14 @@
</ItemGroup>
<ItemGroup>
<None Remove="V2\" />
+ <None Remove="ServiceTest\" />
+ <None Remove="ServiceTests\User\" />
+ <None Remove="ServiceTests\User\RegisterCode\" />
</ItemGroup>
<ItemGroup>
<Folder Include="IntegratedTests2\" />
+ <Folder Include="ServiceTests\" />
+ <Folder Include="ServiceTests\User\" />
+ <Folder Include="ServiceTests\User\RegisterCode\" />
</ItemGroup>
</Project>