61 lines
2.0 KiB
C#
61 lines
2.0 KiB
C#
using Xunit;
|
|
|
|
namespace Nexus.Api.Tests;
|
|
|
|
internal static class DockerIntegrationTestEnvironment
|
|
{
|
|
public const string CollectionName = "Docker integration";
|
|
public const string PostgreSqlOptIn = "NEXUS_RUN_DOCKER_INTEGRATION_TESTS";
|
|
public const string ToxiproxyOptIn = "NEXUS_RUN_TOXIPROXY_INTEGRATION_TESTS";
|
|
|
|
public static bool PostgreSqlEnabled => IsEnabled(PostgreSqlOptIn);
|
|
|
|
public static bool ToxiproxyEnabled =>
|
|
PostgreSqlEnabled && IsEnabled(ToxiproxyOptIn);
|
|
|
|
private static bool IsEnabled(string variable)
|
|
{
|
|
var value = Environment.GetEnvironmentVariable(variable)?.Trim();
|
|
return value is not null
|
|
&& (string.Equals(value, "1", StringComparison.Ordinal)
|
|
|| string.Equals(value, "true", StringComparison.OrdinalIgnoreCase)
|
|
|| string.Equals(value, "yes", StringComparison.OrdinalIgnoreCase)
|
|
|| string.Equals(value, "on", StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
}
|
|
|
|
[AttributeUsage(AttributeTargets.Method)]
|
|
public sealed class PostgreSqlIntegrationFactAttribute : FactAttribute
|
|
{
|
|
public PostgreSqlIntegrationFactAttribute()
|
|
{
|
|
if (!DockerIntegrationTestEnvironment.PostgreSqlEnabled)
|
|
{
|
|
Skip =
|
|
$"Requires Docker and explicit {DockerIntegrationTestEnvironment.PostgreSqlOptIn}=true opt-in.";
|
|
}
|
|
}
|
|
}
|
|
|
|
[AttributeUsage(AttributeTargets.Method)]
|
|
public sealed class ToxiproxyIntegrationFactAttribute : FactAttribute
|
|
{
|
|
public ToxiproxyIntegrationFactAttribute()
|
|
{
|
|
if (!DockerIntegrationTestEnvironment.ToxiproxyEnabled)
|
|
{
|
|
Skip =
|
|
"Requires Docker plus explicit "
|
|
+ $"{DockerIntegrationTestEnvironment.PostgreSqlOptIn}=true and "
|
|
+ $"{DockerIntegrationTestEnvironment.ToxiproxyOptIn}=true opt-in.";
|
|
}
|
|
}
|
|
}
|
|
|
|
[CollectionDefinition(
|
|
DockerIntegrationTestEnvironment.CollectionName,
|
|
DisableParallelization = true)]
|
|
public sealed class DockerIntegrationCollectionDefinition
|
|
{
|
|
}
|