< Summary

Information
Class: Elsa.ExternalAuthentication.Policies.CreateUserUnlinkedIdentityPolicy
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Policies/CreateUserUnlinkedIdentityPolicy.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 35
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
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%11100%
EvaluateAsync(...)100%11100%
ReadRoleIds(...)100%66100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Policies/CreateUserUnlinkedIdentityPolicy.cs

#LineLine coverage
 1using Elsa.ExternalAuthentication.Contracts;
 2using Elsa.ExternalAuthentication.Models;
 3using System.Text.Json;
 4
 5namespace Elsa.ExternalAuthentication.Policies;
 6
 7/// <summary>
 8/// Requests just-in-time creation of a credential-less Elsa user for an unlinked external identity.
 9/// </summary>
 10public sealed class CreateUserUnlinkedIdentityPolicy : IUnlinkedIdentityPolicy
 11{
 12    public const string PolicyType = "create-user";
 13    private const string DefaultUserNamePrefix = "external";
 14
 715    public string Type => PolicyType;
 16
 117    public UnlinkedIdentityPolicyDescriptor Describe() => new(
 118        Type,
 119        "Create a user",
 120        "Creates a credential-less Elsa user and an external identity link after successful external authentication.",
 121        1,
 122        [new("defaultRoleIds", "Default roles", "Role IDs assigned only when this policy creates a new user.", "string-a
 123        null);
 24
 25    public ValueTask<UnlinkedIdentityDecision> EvaluateAsync(UnlinkedIdentityContext context, CancellationToken cancella
 26    {
 227        cancellationToken.ThrowIfCancellationRequested();
 228        return ValueTask.FromResult<UnlinkedIdentityDecision>(new UnlinkedIdentityDecision.CreateUser(new UserCreationPr
 29    }
 30
 31    internal static IReadOnlyCollection<string> ReadRoleIds(JsonElement settings) =>
 2232        settings.ValueKind == JsonValueKind.Object && settings.TryGetProperty("defaultRoleIds", out var values) && value
 6933            ? values.EnumerateArray().Where(x => x.ValueKind == JsonValueKind.String).Select(x => x.GetString()).Where(x
 2234            : [];
 35}