< Summary

Information
Class: Elsa.ExternalAuthentication.Permissions.PermissionGrantMappingSettings
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Permissions/PermissionGrantMappingSettings.cs
Line coverage
90%
Covered lines: 20
Uncovered lines: 2
Coverable lines: 22
Total lines: 53
Line coverage: 90.9%
Branch coverage
82%
Covered branches: 28
Total branches: 34
Branch coverage: 82.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Read(...)89.28%282893.75%
ReadPassThroughPermissions(...)50%5466.66%
ReadPermissions(...)50%22100%

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    {
 149        if (settings.ValueKind != JsonValueKind.Object || !settings.TryGetProperty("claimType", out var claimTypePropert
 010            return [];
 11
 1412        var claimType = claimTypeProperty.GetString();
 1413        if (string.IsNullOrWhiteSpace(claimType) || !settings.TryGetProperty("mappings", out var mappings))
 214            return [];
 15
 1216        var result = new List<PermissionGrantMapping>();
 1217        if (mappings.ValueKind == JsonValueKind.Object)
 18        {
 4519            foreach (var property in mappings.EnumerateObject().OrderBy(x => x.Name, StringComparer.Ordinal))
 920                result.Add(new PermissionGrantMapping(claimType, property.Name, ReadPermissions(property.Value)));
 21        }
 322        else if (mappings.ValueKind == JsonValueKind.Array)
 23        {
 1224            foreach (var mapping in mappings.EnumerateArray())
 25            {
 326                if (mapping.ValueKind != JsonValueKind.Object || !mapping.TryGetProperty("value", out var valueProperty)
 27                    continue;
 28
 329                var value = valueProperty.GetString();
 330                if (string.IsNullOrWhiteSpace(value))
 31                    continue;
 32
 333                result.Add(new PermissionGrantMapping(claimType, value, ReadPermissions(permissionsProperty)));
 34            }
 35        }
 36
 1237        return result;
 38    }
 39
 40    public static IReadOnlyCollection<string> ReadPassThroughPermissions(JsonElement settings)
 41    {
 442        if (settings.ValueKind != JsonValueKind.Object || !settings.TryGetProperty("allowedPermissions", out var permiss
 043            return [];
 44
 445        return ReadPermissions(permissions);
 46    }
 47
 1648    private static IReadOnlyCollection<string> ReadPermissions(JsonElement value) => value.ValueKind == JsonValueKind.Ar
 7049        ? value.EnumerateArray().Where(x => x.ValueKind == JsonValueKind.String).Select(x => x.GetString()).Where(x => !
 1650        : [];
 51}
 52
 53internal sealed record PermissionGrantMapping(string ClaimType, string Value, IReadOnlyCollection<string> Permissions);