< Summary

Information
Class: Elsa.ExternalAuthentication.Endpoints.Connections.ConnectionTestResponse
Assembly: Elsa.ExternalAuthentication
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.ExternalAuthentication/Endpoints/Connections/TestConnection.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 1
Coverable lines: 1
Total lines: 53
Line coverage: 0%
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_Status()100%210%

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
 10internal sealed class TestConnection(IServiceProvider services, ITenantAccessor tenantAccessor) : ElsaEndpointWithoutReq
 11{
 12    public override void Configure()
 13    {
 14        Post("/external-authentication/connections/{connectionId}/test");
 15        ConfigurePermissions(ExternalAuthenticationPermissions.ConnectionsTest);
 16    }
 17
 18    public override async Task HandleAsync(CancellationToken cancellationToken)
 19    {
 20        if (!ConnectionEndpointSupport.TryGetExpectedRevision(HttpContext, out var revision))
 21        {
 22            await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status428PreconditionRequired, "prec
 23            return;
 24        }
 25
 26        var tests = services.GetService<ConnectionTestService>();
 27        if (tests is null)
 28        {
 29            await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status503ServiceUnavailable, "test_u
 30            return;
 31        }
 32        var result = await tests.TestAsync(Route<string>("connectionId")!, revision, tenantAccessor.TenantId, User, canc
 33        switch (result)
 34        {
 35            case ConnectionTestOperationResult.Completed(var observation):
 36                await HttpContext.Response.WriteAsJsonAsync(new ConnectionTestResponse(
 37                    observation.Status.ToString().ToLowerInvariant(), observation.ObservedAt, observation.TestedMaterial
 38                    observation.Category, observation.Summary, observation.Warnings, observation.Duration, observation.C
 39                return;
 40            case ConnectionTestOperationResult.PreconditionFailed(var currentRevision):
 41                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status412PreconditionFailed, "pr
 42                return;
 43            case ConnectionTestOperationResult.NotFound:
 44                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status404NotFound, "not_found", 
 45                return;
 46            default:
 47                await ConnectionEndpointSupport.SendErrorAsync(HttpContext, StatusCodes.Status400BadRequest, "test_unava
 48                return;
 49        }
 50    }
 51}
 52
 053internal sealed record ConnectionTestResponse(string Status, DateTimeOffset ObservedAt, string TestedMaterialRevision, s

Methods/Properties

get_Status()