Implement PSInfisicalAPI module per design spec with env-var auto-discovery

This commit is contained in:
GraceSolutions
2026-06-02 12:46:34 -04:00
parent 3c47d6ff30
commit 430e3a00c9
80 changed files with 6361 additions and 0 deletions
@@ -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;
}
}
}