Skip to content

Commit 5127914

Browse files
fix(core): 🐛 include API error code in exception messages
1 parent 3ed3f3b commit 5127914

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

SectigoCertificateManager.Tests/ApiErrorHandlerTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,16 @@ public async Task ExceptionMessageTruncatesLongBody() {
105105
Assert.Contains(new string('a', 200), ex.Message);
106106
Assert.DoesNotContain(new string('a', 201), ex.Message);
107107
}
108+
109+
[Fact]
110+
public async Task ExceptionMessageIncludesErrorCode() {
111+
var response = new HttpResponseMessage(HttpStatusCode.BadRequest) {
112+
Content = JsonContent.Create(new ApiError { Code = ApiErrorCode.ErrorWhileDecodingCsr, Description = "Invalid" })
113+
};
114+
115+
using var client = CreateClient(response);
116+
117+
var ex = await Assert.ThrowsAsync<ValidationException>(() => client.GetAsync("v1/test"));
118+
Assert.Contains($"Code: {(int)ApiErrorCode.ErrorWhileDecodingCsr}", ex.Message);
119+
}
108120
}

SectigoCertificateManager/ApiErrorHandler.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@ namespace SectigoCertificateManager;
55
using System.Net.Http;
66
using System.Text.Json;
77
using System.Threading;
8-
using System.Threading.Tasks;
9-
8+
using System.Threading.Tasks; if (!string.IsNullOrWhiteSpace(error.Description)) {
9+
message += $", Error: {error.Description}";
10+
}
11+
if ((int)error.Code != 0) {
12+
message += $", Code: {(int)error.Code}";
13+
}
14+
15+
error.Description = message;
1016
/// <summary>
1117
/// Handles API error responses.
1218
/// </summary>

0 commit comments

Comments
 (0)