< Summary

Information
Class: Elsa.Identity.Endpoints.Users.Delete.Delete
Assembly: Elsa.Identity
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Identity/Endpoints/Users/Delete/Endpoint.cs
Line coverage
23%
Covered lines: 4
Uncovered lines: 13
Coverable lines: 17
Total lines: 47
Line coverage: 23.5%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Configure()100%11100%
HandleAsync()0%4260%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Identity/Endpoints/Users/Delete/Endpoint.cs

#LineLine coverage
 1using Elsa.Authorization;
 2using Elsa.Abstractions;
 3using Elsa.Identity.Contracts;
 4using Elsa.Identity.Models;
 5using JetBrains.Annotations;
 6using Microsoft.AspNetCore.Http;
 7
 8namespace Elsa.Identity.Endpoints.Users.Delete;
 9
 10/// <summary>
 11/// An endpoint that deletes a user by ID.
 12/// </summary>
 13[PublicAPI]
 314internal class Delete(IUserDeletionCoordinator coordinator) : ElsaEndpointWithoutRequest
 15{
 16    /// <inheritdoc />
 17    public override void Configure()
 18    {
 319        Delete("/identity/users/{id}");
 320        RequirePermission(Elsa.Identity.Permissions.IdentityPermissions.Users, CoreVerbs.Delete);
 321    }
 22
 23    /// <inheritdoc />
 24    public override async Task HandleAsync(CancellationToken cancellationToken)
 25    {
 026        var id = Route<string>("id")!;
 27
 028        var result = await coordinator.DeleteAsync(id, cancellationToken);
 29        switch (result)
 30        {
 31            case UserDeletionOperationResult.Deleted:
 032                await Send.NoContentAsync(cancellationToken);
 033                break;
 34            case UserDeletionOperationResult.NotFound:
 035                await Send.NotFoundAsync(cancellationToken);
 036                break;
 37            case UserDeletionOperationResult.Blocked blocked:
 038                HttpContext.Response.StatusCode = StatusCodes.Status409Conflict;
 039                await HttpContext.Response.WriteAsJsonAsync(
 040                    new { error = "conflict", message = "The user is referenced by one or more installed modules.", depe
 041                    cancellationToken);
 042                break;
 43            default:
 044                throw new InvalidOperationException("Unknown user-deletion operation result.");
 45        }
 046    }
 47}