< Summary

Information
Class: Elsa.ExternalAuthentication.Permissions.ClaimPassThroughPermissionGrantSource
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Permissions/ClaimPassThroughPermissionGrantSource.cs
Line coverage
80%
Covered lines: 8
Uncovered lines: 2
Coverable lines: 10
Total lines: 29
Line coverage: 80%
Branch coverage
75%
Covered branches: 9
Total branches: 12
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Type()100%11100%
Describe()100%210%
GetGrantsAsync(...)75%121287.5%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Permissions/ClaimPassThroughPermissionGrantSource.cs

#LineLine coverage
 1using Elsa.ExternalAuthentication.Contracts;
 2using Elsa.ExternalAuthentication.Models;
 3
 4namespace Elsa.ExternalAuthentication.Permissions;
 5
 6/// <summary>
 7/// Grants only provider claim values explicitly bounded by configured literal permission names.
 8/// </summary>
 9public sealed class ClaimPassThroughPermissionGrantSource : IPermissionGrantSource
 10{
 11    public const string SourceType = "claim-pass-through";
 612    public string Type => SourceType;
 13
 014    public PermissionGrantSourceDescriptor Describe() => new(Type, "Bounded claim pass-through", "Grants only projected 
 15
 16    public ValueTask<PermissionGrantResult> GetGrantsAsync(PermissionGrantContext context, CancellationToken cancellatio
 17    {
 218        if (context.Selection.Settings.ValueKind != System.Text.Json.JsonValueKind.Object || !context.Selection.Settings
 019            return ValueTask.FromResult(new PermissionGrantResult([], []));
 20
 221        var claimType = claimTypeProperty.GetString();
 222        var boundary = PermissionGrantMappingSettings.ReadPassThroughPermissions(context.Selection.Settings);
 223        if (string.IsNullOrWhiteSpace(claimType) || boundary.Count == 0 || !context.ProjectedClaims.TryGetValue(claimTyp
 124            return ValueTask.FromResult(new PermissionGrantResult([], []));
 25
 326        var grants = values.Where(boundary.Contains).OrderBy(x => x, StringComparer.Ordinal).Select(value => new Permiss
 127        return ValueTask.FromResult(new PermissionGrantResult(grants, []));
 28    }
 29}