fix: use /api/status/ for ping instead of /api/

The /api/ endpoint returns HTML (Swagger UI), not JSON.
Changed ping to use /api/status/ which returns JSON with version info.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Barry Walker
2026-01-13 17:38:26 -05:00
parent 5230dd126a
commit dba6c453c4
3 changed files with 13 additions and 38 deletions
@@ -31,14 +31,7 @@ public class PaperlessClientTests : IDisposable
public async Task PingAsync_WhenSuccessful_ReturnsSuccess()
{
// Arrange
_factory.MockHandler
.When(HttpMethod.Get, "https://paperless.example.com/api/")
.Respond(req =>
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.Add("X-Version", "2.0.0");
return response;
});
_factory.SetupGet("api/status/", """{"pngx_version": "2.0.0", "server_os": "Linux"}""");
// Act
var (success, version, error) = await _factory.Client.PingAsync();
@@ -53,7 +46,7 @@ public class PaperlessClientTests : IDisposable
public async Task PingAsync_WhenUnauthorized_ReturnsFailure()
{
// Arrange
_factory.SetupGetWithStatus("api/", HttpStatusCode.Unauthorized);
_factory.SetupGetWithStatus("api/status/", HttpStatusCode.Unauthorized);
// Act
var (success, version, error) = await _factory.Client.PingAsync();
+4 -24
View File
@@ -26,14 +26,7 @@ public class HealthToolsTests : IDisposable
public async Task Ping_WhenConnected_ReturnsSuccess()
{
// Arrange
_factory.MockHandler
.When(HttpMethod.Get, "https://paperless.example.com/api/")
.Respond(req =>
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.Add("X-Version", "2.5.0");
return response;
});
_factory.SetupGet("api/status/", """{"pngx_version": "2.5.0", "server_os": "Linux"}""");
// Act
var result = await HealthTools.Ping(_factory.Client);
@@ -48,7 +41,7 @@ public class HealthToolsTests : IDisposable
public async Task Ping_WhenConnectionFails_ReturnsError()
{
// Arrange
_factory.SetupGetWithStatus("api/", HttpStatusCode.Unauthorized);
_factory.SetupGetWithStatus("api/status/", HttpStatusCode.Unauthorized);
// Act
var result = await HealthTools.Ping(_factory.Client);
@@ -63,16 +56,7 @@ public class HealthToolsTests : IDisposable
public async Task GetCapabilities_ReturnsCapabilitiesInfo()
{
// Arrange
_factory.MockHandler
.When(HttpMethod.Get, "https://paperless.example.com/api/")
.Respond(req =>
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Headers.Add("X-Version", "2.5.0");
return response;
});
_factory.SetupGet("api/status/", "{}");
_factory.SetupGet("api/status/", """{"pngx_version": "2.5.0", "server_os": "Linux"}""");
// Act
var result = await HealthTools.GetCapabilities(_factory.Client);
@@ -91,11 +75,7 @@ public class HealthToolsTests : IDisposable
public async Task GetCapabilities_IncludesAllEndpointCategories()
{
// Arrange
_factory.MockHandler
.When(HttpMethod.Get, "https://paperless.example.com/api/")
.Respond(HttpStatusCode.OK);
_factory.SetupGet("api/status/", "{}");
_factory.SetupGet("api/status/", """{"pngx_version": "2.5.0"}""");
// Act
var result = await HealthTools.GetCapabilities(_factory.Client);
+7 -5
View File
@@ -42,19 +42,21 @@ public class PaperlessClient
#region Health & Status
/// <summary>
/// Checks connectivity and returns API root information.
/// Checks connectivity and returns API status information.
/// </summary>
public async Task<(bool Success, string? Version, string? Error)> PingAsync(CancellationToken cancellationToken = default)
{
try
{
var response = await _httpClient.GetAsync("api/", cancellationToken);
var response = await _httpClient.GetAsync("api/status/", cancellationToken);
if (response.IsSuccessStatusCode)
{
// Try to extract version from response headers or body
var version = response.Headers.TryGetValues("X-Version", out var versions)
? versions.FirstOrDefault()
// Extract version from the status response
var content = await response.Content.ReadAsStringAsync(cancellationToken);
var json = JsonSerializer.Deserialize<JsonElement>(content);
var version = json.TryGetProperty("pngx_version", out var versionProp)
? versionProp.GetString()
: null;
return (true, version, null);