< Summary

Information
Class: ProjectTemplate.Infrastructure.Data.Auditing.ApplicationAuditContext
Assembly: ProjectTemplate.Infrastructure
File(s): /home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Infrastructure/Data/Auditing/ApplicationAuditContext.cs
Line coverage
100%
Covered lines: 28
Uncovered lines: 0
Coverable lines: 28
Total lines: 72
Line coverage: 100%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
NormalizeRequired(...)50%22100%
NormalizeOptional(...)100%22100%

File(s)

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

#LineLine coverage
 1namespace ProjectTemplate.Infrastructure.Data.Auditing;
 2
 3/// <summary>
 4/// Carries host-owned identity and correlation data into application mutation audit records.
 5/// </summary>
 6public sealed record ApplicationAuditContext
 7{
 8    public static ApplicationAuditContext System { get; } = new(
 9        SystemCurrentActorAccessor.ActorName,
 10        ApplicationAuditActorTypes.System,
 11        SystemCurrentActorAccessor.ActorName);
 12
 3213    public ApplicationAuditContext(
 3214        string actorId,
 3215        string actorType,
 3216        string actorDisplayName,
 3217        string? operationExecutionId = null,
 3218        string? executionAttemptId = null,
 3219        string? correlationId = null,
 3220        string? traceId = null,
 3221        string? spanId = null,
 3222        string? decisionAuditRecordId = null,
 3223        string? tenantHash = null,
 3224        string? organizationHash = null)
 25    {
 3226        ActorId = NormalizeRequired(actorId, nameof(actorId));
 3227        ActorType = NormalizeRequired(actorType, nameof(actorType));
 3228        ActorDisplayName = NormalizeRequired(actorDisplayName, nameof(actorDisplayName));
 3229        OperationExecutionId = NormalizeOptional(operationExecutionId);
 3230        ExecutionAttemptId = NormalizeOptional(executionAttemptId);
 3231        CorrelationId = NormalizeOptional(correlationId);
 3232        TraceId = NormalizeOptional(traceId);
 3233        SpanId = NormalizeOptional(spanId);
 3234        DecisionAuditRecordId = NormalizeOptional(decisionAuditRecordId);
 3235        TenantHash = NormalizeOptional(tenantHash);
 3236        OrganizationHash = NormalizeOptional(organizationHash);
 3237    }
 38
 39    public string ActorId { get; }
 40
 41    public string ActorType { get; }
 42
 43    public string ActorDisplayName { get; }
 44
 45    public string? OperationExecutionId { get; }
 46
 47    public string? ExecutionAttemptId { get; }
 48
 49    public string? CorrelationId { get; }
 50
 51    public string? TraceId { get; }
 52
 53    public string? SpanId { get; }
 54
 55    public string? DecisionAuditRecordId { get; }
 56
 57    public string? TenantHash { get; }
 58
 59    public string? OrganizationHash { get; }
 60
 61    private static string NormalizeRequired(string value, string parameterName)
 62    {
 9663        return string.IsNullOrWhiteSpace(value)
 9664            ? throw new ArgumentException("Value must not be empty.", parameterName)
 9665            : value.Trim();
 66    }
 67
 68    private static string? NormalizeOptional(string? value)
 69    {
 25670        return string.IsNullOrWhiteSpace(value) ? null : value.Trim();
 71    }
 72}