64 lines
2.8 KiB
C#
64 lines
2.8 KiB
C#
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 }));
|
|
}
|
|
}
|
|
}
|