< Summary

Information
Class: ProjectTemplate.Infrastructure.Data.Auditing.ApplicationAuditReconciliationOptions
Assembly: ProjectTemplate.Infrastructure
File(s): /home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Infrastructure/Data/Auditing/ApplicationAuditReconciliationContracts.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 125
Line coverage: 100%
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_Enabled()100%11100%
get_RunWorker()100%11100%
get_Interval()100%11100%
get_CompletionGracePeriod()100%11100%
get_StalePendingThreshold()100%11100%
get_StaleRetryReadyThreshold()100%11100%
get_MaximumBatchesPerRun()100%11100%
get_HealthWarningFindingCount()100%11100%
get_HealthUnhealthyFindingCount()100%11100%

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{
 5035    public bool Enabled { get; set; } = true;
 36
 1637    public bool RunWorker { get; set; } = true;
 38
 1639    public TimeSpan Interval { get; set; } = TimeSpan.FromMinutes(5);
 40
 3841    public TimeSpan CompletionGracePeriod { get; set; } = TimeSpan.FromMinutes(2);
 42
 3443    public TimeSpan StalePendingThreshold { get; set; } = TimeSpan.FromMinutes(15);
 44
 3245    public TimeSpan StaleRetryReadyThreshold { get; set; } = TimeSpan.FromMinutes(15);
 46
 4847    public int MaximumBatchesPerRun { get; set; } = 1_000;
 48
 1649    public int HealthWarningFindingCount { get; set; } = 1;
 50
 1651    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
 90public sealed record ApplicationAuditReconciliationFindingItem(
 91    Guid Id,
 92    string SchemaVersion,
 93    string FindingKey,
 94    string ReasonCode,
 95    string Severity,
 96    string MutationBatchId,
 97    string? Destination,
 98    string Guidance,
 99    string RemediationStatus,
 100    DateTime FirstObservedUtc,
 101    DateTime LastObservedUtc,
 102    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);