From 68ca8b0976efe90c0c40bcae69f0825671b98bad Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 30 May 2020 16:23:25 +0800 Subject: Merge front end to this repo. But I need to wait for aspnet core support for custom port and package manager for dev server. --- .../IntegratedTests/IntegratedTestBase.cs | 125 +++++++++++---------- 1 file changed, 64 insertions(+), 61 deletions(-) (limited to 'Timeline.Tests/IntegratedTests/IntegratedTestBase.cs') diff --git a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs b/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs index a4a7638c..6c349ffb 100644 --- a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs +++ b/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs @@ -1,43 +1,43 @@ -using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.DependencyInjection; -using System; +using System; using System.Collections.Generic; -using System.Net.Http; +using System.Net.Http; using System.Text.Json; using System.Text.Json.Serialization; -using System.Threading.Tasks; +using System.Threading.Tasks; using Timeline.Models; using Timeline.Models.Converters; -using Timeline.Models.Http; +using Timeline.Models.Http; using Timeline.Services; -using Timeline.Tests.Helpers; -using Xunit; - -namespace Timeline.Tests.IntegratedTests -{ - public abstract class IntegratedTestBase : IClassFixture>, IAsyncLifetime - { - protected TestApplication TestApp { get; } - - protected WebApplicationFactory Factory => TestApp.Factory; - - public IReadOnlyList UserInfos { get; private set; } - - private readonly int _userCount; - - public IntegratedTestBase(WebApplicationFactory factory) : this(factory, 1) - { - +using Timeline.Tests.Helpers; +using Xunit; + +namespace Timeline.Tests.IntegratedTests +{ + public abstract class IntegratedTestBase : IClassFixture>, IAsyncLifetime + { + protected TestApplication TestApp { get; } + + protected WebApplicationFactory Factory => TestApp.Factory; + + public IReadOnlyList UserInfos { get; private set; } + + private readonly int _userCount; + + public IntegratedTestBase(WebApplicationFactory factory) : this(factory, 1) + { + } - public IntegratedTestBase(WebApplicationFactory factory, int userCount) - { - if (userCount < 0) - throw new ArgumentOutOfRangeException(nameof(userCount), userCount, "User count can't be negative."); - - _userCount = userCount; - - TestApp = new TestApplication(factory); + public IntegratedTestBase(WebApplicationFactory factory, int userCount) + { + if (userCount < 0) + throw new ArgumentOutOfRangeException(nameof(userCount), userCount, "User count can't be negative."); + + _userCount = userCount; + + TestApp = new TestApplication(factory); } protected virtual Task OnInitializeAsync() @@ -115,34 +115,37 @@ namespace Timeline.Tests.IntegratedTests await OnDisposeAsync(); OnDispose(); await TestApp.DisposeAsync(); - } - - public Task CreateDefaultClient() - { - return Task.FromResult(Factory.CreateDefaultClient()); - } - - public async Task CreateClientWithCredential(string username, string password) - { - var client = Factory.CreateDefaultClient(); - var response = await client.PostAsJsonAsync("/token/create", - new CreateTokenRequest { Username = username, Password = password }); - var token = response.Should().HaveStatusCode(200) - .And.HaveJsonBody().Which.Token; - client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); - return client; - } - - public Task CreateClientAs(int userNumber) - { - if (userNumber < 0) - return CreateDefaultClient(); - if (userNumber == 0) - return CreateClientWithCredential("admin", "adminpw"); - else - return CreateClientWithCredential($"user{userNumber}", $"user{userNumber}pw"); - } - + } + + public Task CreateDefaultClient() + { + var client = Factory.CreateDefaultClient(); + client.BaseAddress = new Uri(client.BaseAddress, "api"); + return Task.FromResult(client); + } + + public async Task CreateClientWithCredential(string username, string password) + { + var client = Factory.CreateDefaultClient(); + client.BaseAddress = new Uri(client.BaseAddress, "api"); + var response = await client.PostAsJsonAsync("/token/create", + new CreateTokenRequest { Username = username, Password = password }); + var token = response.Should().HaveStatusCode(200) + .And.HaveJsonBody().Which.Token; + client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); + return client; + } + + public Task CreateClientAs(int userNumber) + { + if (userNumber < 0) + return CreateDefaultClient(); + if (userNumber == 0) + return CreateClientWithCredential("admin", "adminpw"); + else + return CreateClientWithCredential($"user{userNumber}", $"user{userNumber}pw"); + } + public Task CreateClientAsAdministrator() { return CreateClientAs(0); @@ -152,5 +155,5 @@ namespace Timeline.Tests.IntegratedTests { return CreateClientAs(1); } - } -} + } +} -- cgit v1.2.3