mirror of
https://github.com/bitwarden/server.git
synced 2024-11-25 12:45:18 +01:00
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
|
using Microsoft.Extensions.Configuration;
|
|||
|
using Xunit;
|
|||
|
|
|||
|
namespace Bit.Infrastructure.IntegrationTest;
|
|||
|
|
|||
|
public class DatabaseTheoryAttribute : TheoryAttribute
|
|||
|
{
|
|||
|
private static IConfiguration? _cachedConfiguration;
|
|||
|
|
|||
|
public const string DapperSqlServerKey = "Dapper:SqlServer";
|
|||
|
public const string EfPostgresKey = "Ef:Postgres";
|
|||
|
public const string EfMySqlKey = "Ef:MySql";
|
|||
|
|
|||
|
public DatabaseTheoryAttribute()
|
|||
|
{
|
|||
|
if (!HasAnyDatabaseSetup())
|
|||
|
{
|
|||
|
Skip = "No database connections strings setup.";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private static bool HasAnyDatabaseSetup()
|
|||
|
{
|
|||
|
var config = GetConfiguration();
|
|||
|
return config.TryGetConnectionString(DapperSqlServerKey, out _) ||
|
|||
|
config.TryGetConnectionString(EfPostgresKey, out _) ||
|
|||
|
config.TryGetConnectionString(EfMySqlKey, out _);
|
|||
|
}
|
|||
|
|
|||
|
public static IConfiguration GetConfiguration()
|
|||
|
{
|
|||
|
return _cachedConfiguration ??= new ConfigurationBuilder()
|
|||
|
.AddUserSecrets<DatabaseDataAttribute>(optional: true, reloadOnChange: false)
|
|||
|
.AddEnvironmentVariables("BW_TEST_")
|
|||
|
.AddCommandLine(Environment.GetCommandLineArgs())
|
|||
|
.Build();
|
|||
|
}
|
|||
|
}
|