< Summary

Information
Class: AsiBackbone.AspNetCore.Correlation.AsiBackboneHttpRequestCorrelationAuditExtensions
Assembly: AsiBackbone.AspNetCore
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.AspNetCore/Correlation/AsiBackboneHttpRequestCorrelationAuditExtensions.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CreateAuditResidue(...)100%44100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.AspNetCore/Correlation/AsiBackboneHttpRequestCorrelationAuditExtensions.cs

#LineLine coverage
 1using AsiBackbone.Core.Actors;
 2using AsiBackbone.Core.Audit;
 3using AsiBackbone.Core.Decisions;
 4
 5namespace AsiBackbone.AspNetCore.Correlation;
 6
 7/// <summary>
 8/// Provides helpers for applying ASP.NET Core request correlation data to framework-neutral audit residue.
 9/// </summary>
 10public static class AsiBackboneHttpRequestCorrelationAuditExtensions
 11{
 12    /// <summary>
 13    /// Creates audit residue from a governance decision and enriches it with safe ASP.NET Core request correlation data
 14    /// </summary>
 15    /// <param name="correlation">The resolved ASP.NET Core request correlation data.</param>
 16    /// <param name="actor">The actor associated with the operation.</param>
 17    /// <param name="operationName">The operation name.</param>
 18    /// <param name="decision">The governance decision to audit.</param>
 19    /// <param name="eventId">Optional audit event identifier. When omitted, a new identifier is generated.</param>
 20    /// <param name="occurredUtc">Optional event timestamp. When omitted, the current UTC timestamp is used.</param>
 21    /// <param name="metadata">Optional host-provided audit metadata to merge with safe request metadata.</param>
 22    /// <returns>An enriched audit residue value.</returns>
 23    public static AuditResidue CreateAuditResidue(
 24        this AsiBackboneHttpRequestCorrelation correlation,
 25        IAsiBackboneActorContext actor,
 26        string operationName,
 27        GovernanceDecision decision,
 28        string? eventId = null,
 29        DateTimeOffset? occurredUtc = null,
 30        IReadOnlyDictionary<string, string>? metadata = null)
 31    {
 632        ArgumentNullException.ThrowIfNull(correlation);
 633        ArgumentNullException.ThrowIfNull(decision);
 34
 635        return AuditResidue.Create(
 636            actor,
 637            operationName,
 638            decision.Outcome.ToString(),
 639            decision.ReasonCodes,
 640            eventId,
 641            occurredUtc,
 642            correlation.CorrelationId ?? decision.CorrelationId,
 643            correlation.TraceId ?? decision.TraceId,
 644            decision.PolicyVersion,
 645            decision.PolicyHash,
 646            correlation.MergeMetadata(metadata));
 47    }
 48}