DD.WellWorkover.Cloud/AsbCloudWebApi.Tests/IntegrationTests/BaseIntegrationTest.cs
Степанов Дмитрий 2aa897d3df Интеграционные тесты
1. Добавил Docker Compose
2. Добавил AppFactory
3. Добавлен базовый класс для интеграционных классов
4. Покрыл тестами контроллер AdminDeposit
2023-12-12 19:13:07 +05:00

47 lines
1.9 KiB
C#

using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using AsbCloudApp.Data.User;
using AsbCloudDb;
using AsbCloudDb.Model;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
namespace AsbCloudWebApi.Tests.IntegrationTests;
public abstract class BaseIntegrationTest : IClassFixture<TestWebApplicationFactory>
{
private readonly IAsbCloudDbContext dbContext;
protected readonly HttpClient httpClient;
protected readonly IServiceScope scope;
protected BaseIntegrationTest(TestWebApplicationFactory factory)
{
scope = factory.Services.CreateScope();
httpClient = factory.CreateClient();
dbContext = scope.ServiceProvider.GetRequiredService<IAsbCloudDbContext>();
dbContext.Database.EnsureCreatedAndMigrated();
}
protected void SetToken(string token)
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
}
//TODO: поправить метод регистрации, сделать этот метод следующим образом:
//1. Пройти регистрацию
//2. Залогиниться под новым логином и паролем. Тестить всё под учёткой dev -- это неправильно, но пока так.
// Пока используется jwt токен dev, пока так захардкожено
protected Task<UserTokenDto> RegisterUserAsync()
{
var authToken = new UserTokenDto
{
Token =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGV2IiwiaWRDb21wYW55IjoiMSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvcm9sZSI6InJvb3QiLCJuYmYiOjE3MDIzNjg3NzksImV4cCI6MTczMzkyNjM3OSwiaXNzIjoiYSIsImF1ZCI6ImEifQ.zMJHgoEkfifR28vIPxtABvznf8NFJjk33E9fxNZTwGM"
};
return Task.FromResult(authToken);
}
}