< Summary

Information
Class: Elsa.ExternalAuthentication.Permissions.PermissionGrantMapping
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Permissions/PermissionGrantMappingSettings.cs
Line coverage
100%
Covered lines: 1
Uncovered lines: 0
Coverable lines: 1
Total lines: 53
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
get_ClaimType()100%11100%

File(s)

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

#LineLine coverage
 1using System.Text.Json;
 2
 3namespace Elsa.ExternalAuthentication.Permissions;
 4
 5internal static class PermissionGrantMappingSettings
 6{
 7    public static IReadOnlyCollection<PermissionGrantMapping> Read(JsonElement settings)
 8    {
 9        if (settings.ValueKind != JsonValueKind.Object || !settings.TryGetProperty("claimType", out var claimTypePropert
 10            return [];
 11
 12        var claimType = claimTypeProperty.GetString();
 13        if (string.IsNullOrWhiteSpace(claimType) || !settings.TryGetProperty("mappings", out var mappings))
 14            return [];
 15
 16        var result = new List<PermissionGrantMapping>();
 17        if (mappings.ValueKind == JsonValueKind.Object)
 18        {
 19            foreach (var property in mappings.EnumerateObject().OrderBy(x => x.Name, StringComparer.Ordinal))
 20                result.Add(new PermissionGrantMapping(claimType, property.Name, ReadPermissions(property.Value)));
 21        }
 22        else if (mappings.ValueKind == JsonValueKind.Array)
 23        {
 24            foreach (var mapping in mappings.EnumerateArray())
 25            {
 26                if (mapping.ValueKind != JsonValueKind.Object || !mapping.TryGetProperty("value", out var valueProperty)
 27                    continue;
 28
 29                var value = valueProperty.GetString();
 30                if (string.IsNullOrWhiteSpace(value))
 31                    continue;
 32
 33                result.Add(new PermissionGrantMapping(claimType, value, ReadPermissions(permissionsProperty)));
 34            }
 35        }
 36
 37        return result;
 38    }
 39
 40    public static IReadOnlyCollection<string> ReadPassThroughPermissions(JsonElement settings)
 41    {
 42        if (settings.ValueKind != JsonValueKind.Object || !settings.TryGetProperty("allowedPermissions", out var permiss
 43            return [];
 44
 45        return ReadPermissions(permissions);
 46    }
 47
 48    private static IReadOnlyCollection<string> ReadPermissions(JsonElement value) => value.ValueKind == JsonValueKind.Ar
 49        ? value.EnumerateArray().Where(x => x.ValueKind == JsonValueKind.String).Select(x => x.GetString()).Where(x => !
 50        : [];
 51}
 52
 5753internal sealed record PermissionGrantMapping(string ClaimType, string Value, IReadOnlyCollection<string> Permissions);

Methods/Properties

get_ClaimType()