< Summary

Information
Class: Chronicis.Api.Services.BlobStorageHealthCheckService
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/BlobStorageHealthCheckService.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 16
Coverable lines: 16
Total lines: 48
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
PerformHealthCheckAsync()0%4260%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/BlobStorageHealthCheckService.cs

#LineLine coverage
 1using Azure.Storage.Blobs;
 2using Chronicis.Shared.DTOs;
 3
 4namespace Chronicis.Api.Services;
 5
 6public class BlobStorageHealthCheckService : HealthCheckServiceBase
 7{
 8    private readonly IConfiguration _configuration;
 9
 10    public BlobStorageHealthCheckService(
 11        IConfiguration configuration,
 12        ILogger<BlobStorageHealthCheckService> logger)
 013        : base(logger)
 14    {
 015        _configuration = configuration;
 016    }
 17
 18    protected override async Task<(string Status, string? Message)> PerformHealthCheckAsync()
 19    {
 020        var connectionString = _configuration["BlobStorage:ConnectionString"];
 021        var containerName = _configuration["BlobStorage:ContainerName"];
 22
 023        if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(containerName))
 24        {
 025            return (HealthStatus.Unhealthy, "Blob storage configuration missing");
 26        }
 27
 28        try
 29        {
 030            var blobServiceClient = new BlobServiceClient(connectionString);
 031            var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
 32
 33            // Check if container exists and is accessible
 034            var exists = await containerClient.ExistsAsync();
 35
 036            if (!exists)
 37            {
 038                return (HealthStatus.Unhealthy, "Container does not exist or is not accessible");
 39            }
 40
 041            return (HealthStatus.Healthy, "Blob storage accessible");
 42        }
 043        catch (Exception ex)
 44        {
 045            return (HealthStatus.Unhealthy, $"Blob storage error: {ex.Message}");
 46        }
 047    }
 48}