< Summary

Information
Class: AsiBackbone.Core.Metadata.GovernanceMetadataClassificationResult
Assembly: AsiBackbone.Core
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Metadata/GovernanceMetadataClassificationResult.cs
Line coverage
100%
Covered lines: 40
Uncovered lines: 0
Coverable lines: 40
Total lines: 135
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
.ctor(...)100%11100%
get_Action()100%11100%
get_Reason()100%11100%
get_ReplacementValue()100%11100%
Allow()100%11100%
Warn(...)100%11100%
Redact(...)100%11100%
Drop(...)100%11100%
Deny(...)100%11100%
CreateWithReason(...)100%11100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Metadata/GovernanceMetadataClassificationResult.cs

#LineLine coverage
 1using AsiBackbone.Core.Results;
 2
 3namespace AsiBackbone.Core.Metadata;
 4
 5/// <summary>
 6/// Represents the provider-neutral classification result for one governance metadata entry.
 7/// </summary>
 8public sealed class GovernanceMetadataClassificationResult
 9{
 10    /// <summary>
 11    /// Gets the default replacement value used by <see cref="Redact(string, string, string)" />.
 12    /// </summary>
 13    public const string DefaultRedactedValue = "[REDACTED]";
 14
 2415    private GovernanceMetadataClassificationResult(
 2416        GovernanceMetadataSanitizationAction action,
 2417        OperationReason? reason,
 2418        string? replacementValue)
 19    {
 2420        Action = action;
 2421        Reason = reason;
 2422        ReplacementValue = replacementValue;
 2423    }
 24
 25    /// <summary>
 26    /// Gets the action requested by the classifier.
 27    /// </summary>
 3428    public GovernanceMetadataSanitizationAction Action { get; }
 29
 30    /// <summary>
 31    /// Gets the stable machine-readable reason associated with a non-allow action.
 32    /// </summary>
 4833    public OperationReason? Reason { get; }
 34
 35    /// <summary>
 36    /// Gets the safe replacement value used when <see cref="Action" /> is <see cref="GovernanceMetadataSanitizationActi
 37    /// </summary>
 1638    public string? ReplacementValue { get; }
 39
 40    /// <summary>
 41    /// Creates an allow result.
 42    /// </summary>
 43    /// <returns>An allow classification result.</returns>
 44    public static GovernanceMetadataClassificationResult Allow()
 45    {
 246        return new GovernanceMetadataClassificationResult(
 247            GovernanceMetadataSanitizationAction.Allow,
 248            reason: null,
 249            replacementValue: null);
 50    }
 51
 52    /// <summary>
 53    /// Creates a warning result that permits the original value to continue.
 54    /// </summary>
 55    /// <param name="reasonCode">The stable machine-readable warning code.</param>
 56    /// <param name="reasonMessage">The curated warning message.</param>
 57    /// <returns>A warning classification result.</returns>
 58    public static GovernanceMetadataClassificationResult Warn(
 59        string reasonCode,
 60        string reasonMessage)
 61    {
 662        return CreateWithReason(
 663            GovernanceMetadataSanitizationAction.Warn,
 664            reasonCode,
 665            reasonMessage,
 666            replacementValue: null);
 67    }
 68
 69    /// <summary>
 70    /// Creates a redaction result with a safe replacement value.
 71    /// </summary>
 72    /// <param name="reasonCode">The stable machine-readable redaction code.</param>
 73    /// <param name="reasonMessage">The curated redaction message.</param>
 74    /// <param name="replacementValue">The safe value that replaces the classified value.</param>
 75    /// <returns>A redaction classification result.</returns>
 76    public static GovernanceMetadataClassificationResult Redact(
 77        string reasonCode,
 78        string reasonMessage,
 79        string replacementValue = DefaultRedactedValue)
 80    {
 1281        ArgumentNullException.ThrowIfNull(replacementValue);
 82
 1083        return CreateWithReason(
 1084            GovernanceMetadataSanitizationAction.Redact,
 1085            reasonCode,
 1086            reasonMessage,
 1087            replacementValue);
 88    }
 89
 90    /// <summary>
 91    /// Creates a drop result that removes the metadata entry.
 92    /// </summary>
 93    /// <param name="reasonCode">The stable machine-readable drop code.</param>
 94    /// <param name="reasonMessage">The curated drop message.</param>
 95    /// <returns>A drop classification result.</returns>
 96    public static GovernanceMetadataClassificationResult Drop(
 97        string reasonCode,
 98        string reasonMessage)
 99    {
 6100        return CreateWithReason(
 6101            GovernanceMetadataSanitizationAction.Drop,
 6102            reasonCode,
 6103            reasonMessage,
 6104            replacementValue: null);
 105    }
 106
 107    /// <summary>
 108    /// Creates a deny result that prevents the metadata collection from continuing.
 109    /// </summary>
 110    /// <param name="reasonCode">The stable machine-readable denial code.</param>
 111    /// <param name="reasonMessage">The curated denial message.</param>
 112    /// <returns>A denial classification result.</returns>
 113    public static GovernanceMetadataClassificationResult Deny(
 114        string reasonCode,
 115        string reasonMessage)
 116    {
 10117        return CreateWithReason(
 10118            GovernanceMetadataSanitizationAction.Deny,
 10119            reasonCode,
 10120            reasonMessage,
 10121            replacementValue: null);
 122    }
 123
 124    private static GovernanceMetadataClassificationResult CreateWithReason(
 125        GovernanceMetadataSanitizationAction action,
 126        string reasonCode,
 127        string reasonMessage,
 128        string? replacementValue)
 129    {
 32130        return new GovernanceMetadataClassificationResult(
 32131            action,
 32132            OperationReason.Create(reasonCode, reasonMessage),
 32133            replacementValue);
 134    }
 135}