< Summary - Heimdall API

Information
Class: ArturRios.Heimdall.Shared.Messages.ErasureMessageMap
Assembly: ArturRios.Heimdall.Shared
File(s): /home/runner/work/heimdall-api/heimdall-api/src/Application/ArturRios.Heimdall.Shared/Messages/ErasureMessageMap.cs
Line coverage
100%
Covered lines: 34
Uncovered lines: 0
Coverable lines: 34
Total lines: 45
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
100%
Covered methods: 1
Fully covered methods: 1
Total methods: 1
Method coverage: 100%
Full method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%

File(s)

/home/runner/work/heimdall-api/heimdall-api/src/Application/ArturRios.Heimdall.Shared/Messages/ErasureMessageMap.cs

#LineLine coverage
 1using ArturRios.Util.Http;
 2
 3namespace ArturRios.Heimdall.Shared.Messages;
 4
 5/// <summary>
 6///     Maps each <see cref="ErasureMessages" /> value to its HTTP status code, following UC-42's
 7///     flows. Passed to the response resolver.
 8/// </summary>
 9public static class ErasureMessageMap
 10{
 111    public static readonly IReadOnlyDictionary<string, int> StatusCodes =
 112        DataAccessMessageMap.CombinedWith(new Dictionary<string, int>
 113        {
 114            // UC-42 main flow — request recorded, identity suspended.
 115            [ErasureMessages.ErasureRequested] = HttpStatusCodes.Ok,
 116            // AF-42d — recorded and running, but blocked. Still a success: the request was accepted,
 117            // and answering 4xx would tell the subject their right had been refused when it has not.
 118            [ErasureMessages.ErasureRequestedButBlocked] = HttpStatusCodes.Ok,
 119            // AF-42a — the re-authentication credential failed: a Google User's ID token, and a
 120            // person's password, which shares every re-authentication's refusal (FR-AU-13).
 121            [ErasureMessages.CredentialNotAccepted] = HttpStatusCodes.Unauthorized,
 122            [AuthMessages.PasswordOrCodeIncorrect] = HttpStatusCodes.Unauthorized,
 123            // AF-42b — the token names no identity this endpoint can act for.
 124            [ErasureMessages.NotEligible] = HttpStatusCodes.Forbidden,
 125            // AF-42c — already requested.
 126            [ErasureMessages.ErasureAlreadyRequested] = HttpStatusCodes.Conflict,
 127            // UC-41 — the copy was produced.
 128            [ErasureMessages.DataExported] = HttpStatusCodes.Ok,
 129            // UC-44 — restriction imposed.
 130            [ErasureMessages.ProcessingRestricted] = HttpStatusCodes.Ok,
 131            [ErasureMessages.ProcessingAlreadyRestricted] = HttpStatusCodes.Conflict,
 132            [ErasureMessages.RestrictionGroundUnknown] = HttpStatusCodes.BadRequest,
 133            // UC-45 — restriction lifted.
 134            [ErasureMessages.RestrictionLifted] = HttpStatusCodes.Ok,
 135            [ErasureMessages.NotRestricted] = HttpStatusCodes.NotFound,
 136            // Art. 18(3) makes the notification a precondition, so a delivery failure is a refusal
 137            // rather than something to swallow.
 138            [ErasureMessages.RestrictionLiftNotificationFailed] = HttpStatusCodes.ServiceUnavailable,
 139            // NFR-25 — restore reconciliation.
 140            [ErasureMessages.ErasuresReapplied] = HttpStatusCodes.Ok,
 141            [ErasureMessages.NoSubjectsToReapply] = HttpStatusCodes.BadRequest,
 142            // UC-43 read.
 143            [ErasureMessages.ErasureRequestsRetrieved] = HttpStatusCodes.Ok
 144        });
 45}

Methods/Properties

.cctor()