From fa6541944012c08ff31ce453c4701cb5460ba4ec Mon Sep 17 00:00:00 2001 From: Stefan Stadlbauer Date: Wed, 25 Mar 2026 10:25:07 +0100 Subject: [PATCH] add public version endpoint --- .../Controllers/VersionController.cs | 15 +++++++++++++++ .../AzureStorageAuthenticationMiddleware.cs | 3 ++- .../Controllers/VersionControllerTests.cs | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/Adliance.AzureBlobSimulator/Controllers/VersionController.cs create mode 100644 test/Adliance.AzureBlobSimulator.Tests/Controllers/VersionControllerTests.cs diff --git a/src/Adliance.AzureBlobSimulator/Controllers/VersionController.cs b/src/Adliance.AzureBlobSimulator/Controllers/VersionController.cs new file mode 100644 index 0000000..a0a7c8a --- /dev/null +++ b/src/Adliance.AzureBlobSimulator/Controllers/VersionController.cs @@ -0,0 +1,15 @@ +using System.Reflection; +using Microsoft.AspNetCore.Mvc; + +namespace Adliance.AzureBlobSimulator.Controllers; + +[ApiController] +public class VersionController() : ControllerBase +{ + [HttpGet("/version")] + public IActionResult HandleGetRequest() + { + var assemblyVersion = Assembly.GetAssembly(typeof(Program))?.GetCustomAttribute()?.InformationalVersion; + return Ok($"v{assemblyVersion}"); + } +} diff --git a/src/Adliance.AzureBlobSimulator/Middleware/AzureStorageAuthenticationMiddleware.cs b/src/Adliance.AzureBlobSimulator/Middleware/AzureStorageAuthenticationMiddleware.cs index e131b51..9a13f11 100644 --- a/src/Adliance.AzureBlobSimulator/Middleware/AzureStorageAuthenticationMiddleware.cs +++ b/src/Adliance.AzureBlobSimulator/Middleware/AzureStorageAuthenticationMiddleware.cs @@ -34,7 +34,8 @@ public async Task InvokeAsync(HttpContext context) var request = context.Request; // Allow unauthenticated health checks - if (request.Path.StartsWithSegments("/health", StringComparison.OrdinalIgnoreCase)) + if (request.Path.StartsWithSegments("/health", StringComparison.OrdinalIgnoreCase) + || request.Path.StartsWithSegments("/version", StringComparison.OrdinalIgnoreCase)) { await _next(context); return; diff --git a/test/Adliance.AzureBlobSimulator.Tests/Controllers/VersionControllerTests.cs b/test/Adliance.AzureBlobSimulator.Tests/Controllers/VersionControllerTests.cs new file mode 100644 index 0000000..13e25a5 --- /dev/null +++ b/test/Adliance.AzureBlobSimulator.Tests/Controllers/VersionControllerTests.cs @@ -0,0 +1,17 @@ +using System.Net; +using Microsoft.AspNetCore.Mvc.Testing; + +namespace Adliance.AzureBlobSimulator.Tests.Controllers; + +public class VersionControllerTests(WebApplicationFactory factory) : ControllerTestBase(factory) +{ + [Fact] + public async Task GetVersionTest() + { + var client = Factory.CreateClient(); + client.BaseAddress = BlobServiceClient.Uri; + var response = await client.GetAsync("/version"); + Assert.StartsWith("v", await response.Content.ReadAsStringAsync()); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + } +}