1
0
mirror of https://github.com/bitwarden/server.git synced 2024-12-01 13:43:23 +01:00
bitwarden-server/test/Common/AutoFixture/Attributes/RequiredEnvironmentTheoryAttribute.cs

38 lines
1.1 KiB
C#
Raw Normal View History

using Xunit;
2022-08-29 22:06:55 +02:00
namespace Bit.Test.Common.AutoFixture.Attributes;
/// <summary>
/// Used for requiring certain environment variables exist at the time. Mostly used for more edge unit tests that shouldn't
/// be run during CI builds or should only be ran in CI builds when pieces of information are available.
/// </summary>
public class RequiredEnvironmentTheoryAttribute : TheoryAttribute
{
2022-08-29 22:06:55 +02:00
private readonly string[] _environmentVariableNames;
public RequiredEnvironmentTheoryAttribute(params string[] environmentVariableNames)
{
2022-08-29 22:06:55 +02:00
_environmentVariableNames = environmentVariableNames;
2022-08-29 22:06:55 +02:00
if (!HasRequiredEnvironmentVariables())
{
2022-08-29 22:06:55 +02:00
Skip = $"Missing one or more required environment variables. ({string.Join(", ", _environmentVariableNames)})";
}
2022-08-29 22:06:55 +02:00
}
2022-08-29 22:06:55 +02:00
private bool HasRequiredEnvironmentVariables()
{
foreach (var env in _environmentVariableNames)
{
2022-08-29 22:06:55 +02:00
var value = Environment.GetEnvironmentVariable(env);
2022-08-29 22:06:55 +02:00
if (value == null)
{
return false;
}
}
2022-08-29 22:06:55 +02:00
return true;
}
}