< Summary

Information
Class: Elsa.ExternalAuthentication.Endpoints.Connections.TestConnection
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Endpoints/Connections/TestConnection.cs
Line coverage
17%
Covered lines: 4
Uncovered lines: 19
Coverable lines: 23
Total lines: 53
Line coverage: 17.3%
Branch coverage
0%
Covered branches: 0
Total branches: 10
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%110100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Endpoints/Connections/TestConnection.cs

#LineLine coverage
 1using Elsa.Abstractions;
 2using Elsa.Common.Multitenancy;
 3using Elsa.ExternalAuthentication.Permissions;
 4using Elsa.ExternalAuthentication.Services;
 5using Microsoft.AspNetCore.Http;
 6using Microsoft.Extensions.DependencyInjection;
 7
 8namespace Elsa.ExternalAuthentication.Endpoints.Connections;
 9
 2110internal sealed class TestConnection(IServiceProvider services, ITenantAccessor tenantAccessor) : ElsaEndpointWithoutReq
 11{
 12    public override void Configure()
 13    {
 2114        Post("/external-authentication/connections/{connectionId}/test");
 2115        ConfigurePermissions(ExternalAuthenticationPermissions.ConnectionsTest);
 2116    }
 17
 18    public override async Task HandleAsync(CancellationToken cancellationToken)
 19    {
 020        if (!ConnectionEndpointSupport.TryGetExpectedRevision(HttpContext, out var revision))
 21        {
 022            await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status428PreconditionRequired, "prec
 023            return;
 24        }
 25
 026        var tests = services.GetService<ConnectionTestService>();
 027        if (tests is null)
 28        {
 029            await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status503ServiceUnavailable, "test_u
 030            return;
 31        }
 032        var result = await tests.TestAsync(Route<string>("connectionId")!, revision, tenantAccessor.TenantId, User, canc
 33        switch (result)
 34        {
 35            case ConnectionTestOperationResult.Completed(var observation):
 036                await HttpContext.Response.WriteAsJsonAsync(new ConnectionTestResponse(
 037                    observation.Status.ToString().ToLowerInvariant(), observation.ObservedAt, observation.TestedMaterial
 038                    observation.Category, observation.Summary, observation.Warnings, observation.Duration, observation.C
 039                return;
 40            case ConnectionTestOperationResult.PreconditionFailed(var currentRevision):
 041                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status412PreconditionFailed, "pr
 042                return;
 43            case ConnectionTestOperationResult.NotFound:
 044                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status404NotFound, "not_found", 
 045                return;
 46            default:
 047                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status400BadRequest, "test_unava
 048                return;
 49        }
 050    }
 51}
 52
 53internal sealed record ConnectionTestResponse(string Status, DateTimeOffset ObservedAt, string TestedMaterialRevision, s