diff options
Diffstat (limited to 'Timeline.Tests/IntegratedTests/IntegratedTestBase.cs')
-rw-r--r-- | Timeline.Tests/IntegratedTests/IntegratedTestBase.cs | 127 |
1 files changed, 65 insertions, 62 deletions
diff --git a/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs b/Timeline.Tests/IntegratedTests/IntegratedTestBase.cs index a4a7638c..e42483bd 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<WebApplicationFactory<Startup>>, IAsyncLifetime - { - protected TestApplication TestApp { get; } - - protected WebApplicationFactory<Startup> Factory => TestApp.Factory; - - public IReadOnlyList<UserInfo> UserInfos { get; private set; } - - private readonly int _userCount; - - public IntegratedTestBase(WebApplicationFactory<Startup> factory) : this(factory, 1) - { - +using Timeline.Tests.Helpers;
+using Xunit;
+
+namespace Timeline.Tests.IntegratedTests
+{
+ public abstract class IntegratedTestBase : IClassFixture<WebApplicationFactory<Startup>>, IAsyncLifetime
+ {
+ protected TestApplication TestApp { get; }
+
+ protected WebApplicationFactory<Startup> Factory => TestApp.Factory;
+
+ public IReadOnlyList<UserInfo> UserInfos { get; private set; }
+
+ private readonly int _userCount;
+
+ public IntegratedTestBase(WebApplicationFactory<Startup> factory) : this(factory, 1)
+ {
+
}
- public IntegratedTestBase(WebApplicationFactory<Startup> 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<Startup> 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()
@@ -100,7 +100,7 @@ namespace Timeline.Tests.IntegratedTests options.Converters.Add(new JsonDateTimeConverter());
foreach (var user in users)
{
- var s = await client.GetStringAsync($"/users/{user.Username}");
+ var s = await client.GetStringAsync($"users/{user.Username}");
userInfoList.Add(JsonSerializer.Deserialize<UserInfo>(s, options));
}
@@ -115,34 +115,37 @@ namespace Timeline.Tests.IntegratedTests await OnDisposeAsync();
OnDispose();
await TestApp.DisposeAsync();
- } - - public Task<HttpClient> CreateDefaultClient() - { - return Task.FromResult(Factory.CreateDefaultClient()); - } - - public async Task<HttpClient> 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<CreateTokenResponse>().Which.Token; - client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); - return client; - } - - public Task<HttpClient> 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<HttpClient> CreateDefaultClient()
+ {
+ var client = Factory.CreateDefaultClient();
+ client.BaseAddress = new Uri(client.BaseAddress, "api/");
+ return Task.FromResult(client);
+ }
+
+ public async Task<HttpClient> 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<CreateTokenResponse>().Which.Token;
+ client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
+ return client;
+ }
+
+ public Task<HttpClient> 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<HttpClient> CreateClientAsAdministrator()
{
return CreateClientAs(0);
@@ -152,5 +155,5 @@ namespace Timeline.Tests.IntegratedTests {
return CreateClientAs(1);
}
- } -} + }
+}
|