Implement PSInfisicalAPI module per design spec with env-var auto-discovery
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using PSInfisicalAPI.Authentication;
|
||||
using Xunit;
|
||||
|
||||
namespace PSInfisicalAPI.Tests
|
||||
{
|
||||
public class InfisicalEnvironmentPatternTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_API_URL")]
|
||||
[InlineData("INFISICAL_BASE_URL")]
|
||||
[InlineData("INFISICAL_BASE_URI")]
|
||||
[InlineData("INFISICAL_HOST")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_APIURL")]
|
||||
public void BaseUriPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.BaseUriPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_ORG_ID")]
|
||||
[InlineData("INFISICAL_ORGANIZATION_ID")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_ORGANIZATIONID")]
|
||||
public void OrganizationIdPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.OrganizationIdPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_PROJECT_ID")]
|
||||
[InlineData("INFISICAL_WORKSPACE_ID")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_PROJECTID")]
|
||||
public void ProjectIdPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.ProjectIdPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_ENVIRONMENT")]
|
||||
[InlineData("INFISICAL_ENVIRONMENT_NAME")]
|
||||
[InlineData("INFISICAL_ENV")]
|
||||
[InlineData("INFISICAL_ENV_SLUG")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_ENVIRONMENT")]
|
||||
public void EnvironmentPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.EnvironmentPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_CLIENT_ID")]
|
||||
[InlineData("INFISICAL_UNIVERSAL_AUTH_CLIENT_ID")]
|
||||
[InlineData("INFISICAL_MACHINE_IDENTITY_CLIENT_ID")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_CLIENTID")]
|
||||
[InlineData("myapp_infisical_client_id")]
|
||||
public void ClientIdPatterns_Match_Standard_And_Custom_Prefixed_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.ClientIdPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_CLIENT_SECRET")]
|
||||
[InlineData("INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET")]
|
||||
[InlineData("INFISICAL_MACHINE_IDENTITY_CLIENT_SECRET")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_CLIENTSECRET")]
|
||||
[InlineData("myapp_infisical_client_secret")]
|
||||
public void ClientSecretPatterns_Match_Standard_And_Custom_Prefixed_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.ClientSecretPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_TOKEN")]
|
||||
[InlineData("INFISICAL_ACCESS_TOKEN")]
|
||||
[InlineData("INFISICAL_AUTH_TOKEN")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_TOKEN")]
|
||||
public void AccessTokenPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.AccessTokenPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_SECRET_PATH")]
|
||||
[InlineData("INFISICAL_DEFAULT_SECRET_PATH")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_SECRETPATH")]
|
||||
public void SecretPathPatterns_Match_Expected_Names(string name)
|
||||
{
|
||||
Assert.True(MatchesAny(name, InfisicalEnvironmentResolver.SecretPathPatterns), "Expected match for " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("INFISICAL_SECRET_PATH")]
|
||||
[InlineData("INFISICAL_DEFAULT_SECRET_PATH")]
|
||||
[InlineData("CLOUDINIT_INFISICAL_SECRETPATH")]
|
||||
public void ClientSecretPatterns_Do_Not_Match_SecretPath_Variables(string name)
|
||||
{
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.ClientSecretPatterns), "ClientSecretPatterns should NOT match " + name);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("PATH")]
|
||||
[InlineData("USERNAME")]
|
||||
[InlineData("HOME")]
|
||||
[InlineData("PROCESSOR_ARCHITECTURE")]
|
||||
public void Patterns_Do_Not_Match_Unrelated_System_Variables(string name)
|
||||
{
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.ClientIdPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.ClientSecretPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.AccessTokenPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.BaseUriPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.OrganizationIdPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.ProjectIdPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.EnvironmentPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.SecretPathPatterns));
|
||||
Assert.False(MatchesAny(name, InfisicalEnvironmentResolver.ApiVersionPatterns));
|
||||
}
|
||||
|
||||
private static bool MatchesAny(string input, Regex[] patterns)
|
||||
{
|
||||
for (int i = 0; i < patterns.Length; i++)
|
||||
{
|
||||
if (patterns[i].IsMatch(input))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user