< Summary

Information
Class: Elsa.Permissions.DefaultPermissionDescriptorRegistry
Assembly: Elsa.Api.Common
File(s): /home/runner/work/elsa-core/elsa-core/src/common/Elsa.Api.Common/Permissions/DefaultPermissionDescriptorRegistry.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 29
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
List()100%11100%
Find(...)100%11100%
Reach(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/common/Elsa.Api.Common/Permissions/DefaultPermissionDescriptorRegistry.cs

#LineLine coverage
 1using Elsa.Authorization;
 2
 3namespace Elsa.Permissions;
 4
 5/// <inheritdoc />
 96public sealed class DefaultPermissionDescriptorRegistry(IEnumerable<IPermissionDescriptorProvider> providers) : IPermiss
 7{
 98    private readonly IReadOnlyCollection<PermissionDescriptor> _descriptors = providers
 269        .SelectMany(x => x.GetDescriptors())
 9910        .Where(x => !string.IsNullOrWhiteSpace(x.Resource))
 9811        .GroupBy(x => x.Resource, StringComparer.Ordinal)
 9712        .Select(x => x.First())
 9413        .OrderBy(x => x.Resource, StringComparer.Ordinal)
 914        .ToArray();
 15
 16    /// <inheritdoc />
 317    public IReadOnlyCollection<PermissionDescriptor> List() => _descriptors;
 18
 19    /// <inheritdoc />
 20    public PermissionDescriptor? Find(string resource) =>
 2821        _descriptors.FirstOrDefault(x => string.Equals(x.Resource, resource, StringComparison.Ordinal));
 22
 23    /// <inheritdoc />
 24    public IReadOnlyCollection<string> Reach(string resourcePattern) =>
 425        _descriptors
 1326            .Where(x => PermissionMatcher.ResourceMatches(resourcePattern, x.Resource))
 927            .Select(x => x.Resource)
 428            .ToArray();
 29}