< Summary

Information
Class: ProjectTemplate.Infrastructure.Data.Auditing.ApplicationAuditReconciliationFindingItem
Assembly: ProjectTemplate.Infrastructure
File(s): /home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Infrastructure/Data/Auditing/ApplicationAuditReconciliationContracts.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 13
Coverable lines: 13
Total lines: 125
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
.ctor(...)100%210%
get_Id()100%210%
get_SchemaVersion()100%210%
get_FindingKey()100%210%
get_ReasonCode()100%210%
get_Severity()100%210%
get_MutationBatchId()100%210%
get_Destination()100%210%
get_Guidance()100%210%
get_RemediationStatus()100%210%
get_FirstObservedUtc()100%210%
get_LastObservedUtc()100%210%
get_ResolvedUtc()100%210%

File(s)

/home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Infrastructure/Data/Auditing/ApplicationAuditReconciliationContracts.cs

#LineLine coverage
 1namespace ProjectTemplate.Infrastructure.Data.Auditing;
 2
 3public static class ApplicationAuditReconciliationReasonCodes
 4{
 5    public const string MissingCompletion = "MissingCompletion";
 6    public const string MissingAuditBatch = "MissingAuditBatch";
 7    public const string AuditRecordCountMismatch = "AuditRecordCountMismatch";
 8    public const string ManifestVerificationFailed = "ManifestVerificationFailed";
 9    public const string IncompleteGeneratedValues = "IncompleteGeneratedValues";
 10    public const string MalformedCorrelation = "MalformedCorrelation";
 11    public const string DuplicateCompletion = "DuplicateCompletion";
 12    public const string StalePending = "StalePending";
 13    public const string StaleRetryReady = "StaleRetryReady";
 14    public const string DeliveryFailed = "DeliveryFailed";
 15    public const string DeadLettered = "DeadLettered";
 16}
 17
 18public static class ApplicationAuditReconciliationSeverities
 19{
 20    public const string Information = "Information";
 21    public const string Warning = "Warning";
 22    public const string Error = "Error";
 23    public const string Critical = "Critical";
 24}
 25
 26public static class ApplicationAuditReconciliationRemediationStatuses
 27{
 28    public const string Open = "Open";
 29    public const string Acknowledged = "Acknowledged";
 30    public const string Resolved = "Resolved";
 31}
 32
 33public sealed class ApplicationAuditReconciliationOptions
 34{
 35    public bool Enabled { get; set; } = true;
 36
 37    public bool RunWorker { get; set; } = true;
 38
 39    public TimeSpan Interval { get; set; } = TimeSpan.FromMinutes(5);
 40
 41    public TimeSpan CompletionGracePeriod { get; set; } = TimeSpan.FromMinutes(2);
 42
 43    public TimeSpan StalePendingThreshold { get; set; } = TimeSpan.FromMinutes(15);
 44
 45    public TimeSpan StaleRetryReadyThreshold { get; set; } = TimeSpan.FromMinutes(15);
 46
 47    public int MaximumBatchesPerRun { get; set; } = 1_000;
 48
 49    public int HealthWarningFindingCount { get; set; } = 1;
 50
 51    public int HealthUnhealthyFindingCount { get; set; } = 10;
 52}
 53
 54public interface IApplicationAuditReconciler
 55{
 56    Task<ApplicationAuditReconciliationSummary> ReconcileAsync(
 57        CancellationToken cancellationToken = default);
 58
 59    Task<ApplicationAuditReconciliationSummary> GetSummaryAsync(
 60        CancellationToken cancellationToken = default);
 61
 62    Task<IReadOnlyList<ApplicationAuditReconciliationFindingItem>> QueryFindingsAsync(
 63        ApplicationAuditReconciliationQuery request,
 64        CancellationToken cancellationToken = default);
 65
 66    Task<ApplicationAuditReconciliationRemediationItem> RecordRemediationAsync(
 67        Guid findingId,
 68        ApplicationAuditReconciliationRemediationRequest request,
 69        CancellationToken cancellationToken = default);
 70}
 71
 72public sealed record ApplicationAuditReconciliationSummary(
 73    bool Enabled,
 74    DateTime? LastRunUtc,
 75    long OpenFindingCount,
 76    long ErrorFindingCount,
 77    long CriticalFindingCount,
 78    long ManifestVerificationFailureCount,
 79    long MissingCompletionCount,
 80    long StaleDeliveryCount,
 81    long DeadLetterCount);
 82
 83public sealed record ApplicationAuditReconciliationQuery(
 84    string? ReasonCode = null,
 85    string? Severity = null,
 86    string? MutationBatchId = null,
 87    string? RemediationStatus = null,
 88    int MaximumResults = 100);
 89
 090public sealed record ApplicationAuditReconciliationFindingItem(
 091    Guid Id,
 092    string SchemaVersion,
 093    string FindingKey,
 094    string ReasonCode,
 095    string Severity,
 096    string MutationBatchId,
 097    string? Destination,
 098    string Guidance,
 099    string RemediationStatus,
 0100    DateTime FirstObservedUtc,
 0101    DateTime LastObservedUtc,
 0102    DateTime? ResolvedUtc);
 103
 104public sealed record ApplicationAuditReconciliationRemediationRequest(
 105    string ActionCode,
 106    string ActorId,
 107    string? EvidenceReference = null,
 108    bool ResolveFinding = false);
 109
 110public sealed record ApplicationAuditReconciliationRemediationItem(
 111    Guid Id,
 112    Guid FindingId,
 113    string MutationBatchId,
 114    string ActionCode,
 115    string ActorId,
 116    string? EvidenceReference,
 117    DateTime RecordedUtc);
 118
 119internal sealed record ApplicationAuditReconciliationCandidate(
 120    string FindingKey,
 121    string ReasonCode,
 122    string Severity,
 123    string MutationBatchId,
 124    string? Destination,
 125    string Guidance);