< Summary

Information
Class: Elsa.Secrets.Endpoints.Secrets.Picker.Endpoint
Assembly: Elsa.Secrets
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Secrets/Endpoints/Secrets/Picker/Endpoint.cs
Line coverage
100%
Covered lines: 23
Uncovered lines: 0
Coverable lines: 23
Total lines: 41
Line coverage: 100%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Configure()100%11100%
ExecuteAsync()75%88100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Secrets/Endpoints/Secrets/Picker/Endpoint.cs

#LineLine coverage
 1using Elsa.Authorization;
 2using Elsa.Abstractions;
 3using Elsa.Secrets.Contracts;
 4using Elsa.Secrets.Permissions;
 5using Elsa.Secrets.Services;
 6using Microsoft.Extensions.DependencyInjection;
 7
 8namespace Elsa.Secrets.Endpoints.Secrets.Picker;
 9
 1510internal class Endpoint(ISecretManager manager, ISecretStoreRegistry storeRegistry) : ElsaEndpoint<SecretPickerRequest, 
 11{
 12    public override void Configure()
 13    {
 814        Post("/secrets/picker");
 815        RequirePermission(Elsa.Secrets.Permissions.SecretsResourcePermissions.Secrets, CoreVerbs.View);
 816    }
 17
 18    public override async Task<SecretPickerResponse> ExecuteAsync(SecretPickerRequest request, CancellationToken cancell
 19    {
 820        var listRequest = new ListSecretsRequest
 821        {
 822            Search = request.Search,
 823            TypeNames = request.TypeNames,
 824            StoreNames = request.StoreNames,
 825            Scope = request.Scope,
 826            Status = request.ActiveOnly ? SecretStatus.Active : null,
 827            PageSize = 100
 828        };
 29
 830        var items = await manager.ListAsync(listRequest, cancellationToken);
 831        var models = items
 332            .Select(x => x.ToModel())
 833            .ToList();
 834        var permissionEvaluator = HttpContext.RequestServices.GetService<IPermissionEvaluator>() ?? PermissionEvaluator.
 835        var hasWritePermission = !EndpointSecurityOptions.SecurityIsEnabled ||
 836                                 permissionEvaluator.HasPermission(HttpContext.User, SecretsResourcePermissions.Secrets,
 1537        var canCreate = hasWritePermission && storeRegistry.List().Any(x => !x.Descriptor.IsReadOnly);
 38
 839        return new SecretPickerResponse { Items = models, CanCreateInline = canCreate };
 840    }
 41}