Implement PSInfisicalAPI module per design spec with env-var auto-discovery
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using PSInfisicalAPI.Errors;
|
||||
using Xunit;
|
||||
|
||||
namespace PSInfisicalAPI.Tests
|
||||
{
|
||||
public class ErrorHandlerTests
|
||||
{
|
||||
[Fact]
|
||||
public void BuildDetails_Preserves_Http_Status_Code()
|
||||
{
|
||||
InfisicalApiException exception = new InfisicalApiException("Forbidden")
|
||||
{
|
||||
StatusCode = 403,
|
||||
ReasonPhrase = "Forbidden",
|
||||
EndpointName = "ListSecrets",
|
||||
RequestMethod = "GET",
|
||||
ApiErrorCode = "PERMISSION_DENIED",
|
||||
SanitizedBody = "[REDACTED]"
|
||||
};
|
||||
|
||||
InfisicalErrorDetails details = InfisicalErrorHandler.BuildDetails("SecretsClient", "RetrieveSecrets", exception);
|
||||
|
||||
Assert.Equal(403, details.StatusCode);
|
||||
Assert.Equal("Forbidden", details.ReasonPhrase);
|
||||
Assert.Equal("PERMISSION_DENIED", details.ApiErrorCode);
|
||||
Assert.Equal("ListSecrets", details.EndpointName);
|
||||
Assert.Equal("[REDACTED]", details.SanitizedBody);
|
||||
Assert.Equal("SecretsClient", details.Component);
|
||||
Assert.Equal("RetrieveSecrets", details.Operation);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildDetails_Preserves_Serialization_Line_Information()
|
||||
{
|
||||
InfisicalSerializationException exception = new InfisicalSerializationException("Bad JSON")
|
||||
{
|
||||
LineNumber = 12,
|
||||
LinePosition = 34
|
||||
};
|
||||
|
||||
InfisicalErrorDetails details = InfisicalErrorHandler.BuildDetails("Serializer", "Deserialize", exception);
|
||||
|
||||
Assert.Equal(12, details.LineNumber);
|
||||
Assert.Equal(34, details.LinePosition);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MapCategory_Maps_Auth_Exception()
|
||||
{
|
||||
System.Management.Automation.ErrorCategory category = InfisicalErrorHandler.MapCategory(new InfisicalAuthenticationException("Bad creds"));
|
||||
Assert.Equal(System.Management.Automation.ErrorCategory.AuthenticationError, category);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MapCategory_Maps_Api_Exception_By_Status_Code()
|
||||
{
|
||||
Assert.Equal(System.Management.Automation.ErrorCategory.AuthenticationError, InfisicalErrorHandler.MapCategory(new InfisicalApiException("x") { StatusCode = 401 }));
|
||||
Assert.Equal(System.Management.Automation.ErrorCategory.PermissionDenied, InfisicalErrorHandler.MapCategory(new InfisicalApiException("x") { StatusCode = 403 }));
|
||||
Assert.Equal(System.Management.Automation.ErrorCategory.ObjectNotFound, InfisicalErrorHandler.MapCategory(new InfisicalApiException("x") { StatusCode = 404 }));
|
||||
Assert.Equal(System.Management.Automation.ErrorCategory.ResourceUnavailable, InfisicalErrorHandler.MapCategory(new InfisicalApiException("x") { StatusCode = 503 }));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user