1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-19 00:21:35 -05:00

Add support for running integration tests using sqlserver

This commit is contained in:
Hinton
2025-05-15 17:37:57 +02:00
parent 828ed7402c
commit 2bd74b3caa
8 changed files with 206 additions and 78 deletions

View File

@ -9,12 +9,12 @@ namespace Bit.Api.IntegrationTest.AdminConsole.Controllers;
public class OrganizationUsersControllerPerformanceTest(ITestOutputHelper testOutputHelper)
{
[Theory(Skip = "Performance test")]
[Theory]
[InlineData(100)]
[InlineData(60000)]
public async Task GetAsync(int seats)
{
await using var factory = new ApiApplicationFactory();
await using var factory = new SqlServerApiApplicationFactory();
var client = factory.CreateClient();
var db = factory.GetDatabaseContext();

View File

@ -1,10 +1,10 @@
using Bit.Core;
using Bit.Core.Auth.Models.Api.Request.Accounts;
using Bit.Core.Enums;
using Bit.IntegrationTestCommon;
using Bit.IntegrationTestCommon.Factories;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Data.Sqlite;
#nullable enable
@ -12,16 +12,19 @@ namespace Bit.Api.IntegrationTest.Factories;
public class ApiApplicationFactory : WebApplicationFactoryBase<Startup>
{
private readonly IdentityApplicationFactory _identityApplicationFactory;
private const string _connectionString = "DataSource=:memory:";
protected IdentityApplicationFactory _identityApplicationFactory;
public ApiApplicationFactory()
public ApiApplicationFactory() : this(new SqlServerTestDatabase())
{
SqliteConnection = new SqliteConnection(_connectionString);
SqliteConnection.Open();
}
public ApiApplicationFactory(ITestDatabase db)
{
TestDatabase = db;
_handleDbDisposal = true;
_identityApplicationFactory = new IdentityApplicationFactory();
_identityApplicationFactory.SqliteConnection = SqliteConnection;
_identityApplicationFactory.TestDatabase = TestDatabase;
}
protected override void ConfigureWebHost(IWebHostBuilder builder)
@ -73,12 +76,6 @@ public class ApiApplicationFactory : WebApplicationFactoryBase<Startup>
return await _identityApplicationFactory.TokenFromPasswordAsync(email, masterPasswordHash);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
SqliteConnection!.Dispose();
}
/// <summary>
/// Helper for logging in via client secret.
/// Currently used for Secrets Manager service accounts

View File

@ -0,0 +1,7 @@
using Bit.IntegrationTestCommon;
#nullable enable
namespace Bit.Api.IntegrationTest.Factories;
public class SqlServerApiApplicationFactory() : ApiApplicationFactory(new SqlServerTestDatabase());