< Summary - Envilder .NET SDK

Information
Class: Envilder.Infrastructure.Aws.AwsSsmSecretProvider
Assembly: Envilder
File(s): /home/runner/work/envilder/envilder/src/sdks/dotnet/Infrastructure/Aws/AwsSsmSecretProvider.cs
Tag: 151_24479375065
Line coverage
90%
Covered lines: 9
Uncovered lines: 1
Coverable lines: 10
Total lines: 46
Line coverage: 90%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)50%22100%
GetSecretAsync()50%2285.71%

File(s)

/home/runner/work/envilder/envilder/src/sdks/dotnet/Infrastructure/Aws/AwsSsmSecretProvider.cs

#LineLine coverage
 1namespace Envilder.Infrastructure.Aws;
 2
 3using Amazon.SimpleSystemsManagement;
 4using Amazon.SimpleSystemsManagement.Model;
 5using Envilder.Domain.Ports;
 6using System;
 7using System.Threading;
 8using System.Threading.Tasks;
 9
 10/// <summary>
 11/// <see cref="ISecretProvider"/> backed by AWS Systems Manager Parameter Store.
 12/// Parameters are retrieved with decryption enabled so that <c>SecureString</c>
 13/// values are returned in plain text.
 14/// </summary>
 15public class AwsSsmSecretProvider : ISecretProvider
 16{
 17    private readonly IAmazonSimpleSystemsManagement _ssmClient;
 18
 19    /// <summary>
 20    /// Initializes a new instance using the supplied SSM client.
 21    /// </summary>
 22    /// <param name="ssmClient">A configured <see cref="IAmazonSimpleSystemsManagement"/> instance.</param>
 123    public AwsSsmSecretProvider(IAmazonSimpleSystemsManagement ssmClient)
 24    {
 125        _ssmClient = ssmClient ?? throw new ArgumentNullException(nameof(ssmClient));
 126    }
 27
 28    /// <inheritdoc />
 29    public async Task<string?> GetSecretAsync(string name, CancellationToken cancellationToken = default)
 30    {
 131        if (string.IsNullOrWhiteSpace(name))
 32        {
 033            throw new ArgumentException("Secret name cannot be null or whitespace.", nameof(name));
 34        }
 35
 36        try
 37        {
 138            var response = await _ssmClient.GetParameterAsync(new() { Name = name, WithDecryption = true }, cancellation
 139            return response.Parameter.Value;
 40        }
 141        catch (ParameterNotFoundException)
 42        {
 143            return null;
 44        }
 145    }
 46}