Refactor code structure and optimize performance across multiple modules

This commit is contained in:
StellaOps Bot
2025-12-26 20:03:22 +02:00
parent c786faae84
commit f10d83c444
1385 changed files with 69732 additions and 10280 deletions

View File

@@ -9,7 +9,8 @@ namespace StellaOps.Policy.Tests;
public sealed class PolicyBinderTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Bind_ValidYaml_ReturnsSuccess()
{
const string yaml = """
@@ -29,7 +30,8 @@ public sealed class PolicyBinderTests
Assert.Empty(result.Issues);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Bind_ExceptionsConfigured_ParsesDefinitions()
{
const string yaml = """
@@ -78,7 +80,8 @@ public sealed class PolicyBinderTests
Assert.True(routing[0].RequireMfa);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Bind_ExceptionDowngradeMissingSeverity_ReturnsError()
{
const string yaml = """
@@ -99,7 +102,8 @@ public sealed class PolicyBinderTests
Assert.Contains(result.Issues, issue => issue.Code == "policy.exceptions.effect.downgrade.missingSeverity");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Bind_InvalidSeverity_ReturnsError()
{
const string yaml = """
@@ -116,7 +120,8 @@ public sealed class PolicyBinderTests
Assert.Contains(result.Issues, issue => issue.Code == "policy.severity.invalid");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Cli_StrictMode_FailsOnWarnings()
{
const string yaml = """
@@ -134,6 +139,7 @@ public sealed class PolicyBinderTests
{
using var output = new StringWriter();
using var error = new StringWriter();
using StellaOps.TestKit;
var cli = new PolicyValidationCli(output, error);
var options = new PolicyValidationCliOptions
{

View File

@@ -1,11 +1,13 @@
using System.Collections.Immutable;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Policy.Tests;
public sealed class PolicyEvaluationTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvaluateFinding_AppliesTrustAndReachabilityWeights()
{
var action = new PolicyAction(PolicyActionType.Block, null, null, null, false);
@@ -50,7 +52,8 @@ public sealed class PolicyEvaluationTests
Assert.Equal("BlockMedium", explanation.RuleName);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvaluateFinding_QuietWithRequireVexAppliesQuietPenalty()
{
var ignoreOptions = new PolicyIgnoreOptions(null, null);
@@ -99,7 +102,8 @@ public sealed class PolicyEvaluationTests
Assert.Equal(PolicyVerdictStatus.Ignored, explanation!.Decision);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvaluateFinding_UnknownSeverityComputesConfidence()
{
var action = new PolicyAction(PolicyActionType.Block, null, null, null, false);

View File

@@ -7,6 +7,7 @@ using Microsoft.Extensions.Time.Testing;
using Xunit;
using Xunit.Abstractions;
using StellaOps.TestKit;
namespace StellaOps.Policy.Tests;
public sealed class PolicyPreviewServiceTests
@@ -18,7 +19,8 @@ public sealed class PolicyPreviewServiceTests
_output = output ?? throw new ArgumentNullException(nameof(output));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task PreviewAsync_ComputesDiffs_ForBlockingRule()
{
const string yaml = """
@@ -63,7 +65,8 @@ rules:
Assert.Equal(PolicyVerdictStatus.Pass, response.Diffs.First(diff => diff.Projected.FindingId == "finding-2").Projected.Status);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task PreviewAsync_UsesProposedPolicy_WhenProvided()
{
const string yaml = """
@@ -103,7 +106,8 @@ rules:
Assert.Equal(1, response.ChangedCount);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task PreviewAsync_ReturnsIssues_WhenPolicyInvalid()
{
var snapshotRepo = new InMemoryPolicySnapshotRepository();
@@ -125,7 +129,8 @@ rules:
Assert.NotEmpty(response.Issues);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task PreviewAsync_QuietWithoutVexDowngradesToWarn()
{
const string yaml = """

View File

@@ -6,7 +6,8 @@ namespace StellaOps.Policy.Tests;
public sealed class PolicyScoringConfigTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void LoadDefaultReturnsConfig()
{
var config = PolicyScoringConfigBinder.LoadDefault();
@@ -21,7 +22,8 @@ public sealed class PolicyScoringConfigTests
Assert.Equal("high", config.UnknownConfidence.Bands[0].Name);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void BindRejectsEmptyContent()
{
var result = PolicyScoringConfigBinder.Bind(string.Empty, PolicyDocumentFormat.Json);
@@ -29,7 +31,8 @@ public sealed class PolicyScoringConfigTests
Assert.NotEmpty(result.Issues);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void BindRejectsInvalidSchema()
{
const string json = """
@@ -47,13 +50,15 @@ public sealed class PolicyScoringConfigTests
Assert.Null(result.Config);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void DefaultResourceDigestMatchesGolden()
{
var assembly = typeof(PolicyScoringConfig).Assembly;
using var stream = assembly.GetManifestResourceStream("StellaOps.Policy.Schemas.policy-scoring-default.json")
?? throw new InvalidOperationException("Unable to locate embedded scoring default resource.");
using var reader = new StreamReader(stream);
using StellaOps.TestKit;
var json = reader.ReadToEnd();
var binding = PolicyScoringConfigBinder.Bind(json, PolicyDocumentFormat.Json);

View File

@@ -5,6 +5,7 @@ using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Time.Testing;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Policy.Tests;
public sealed class PolicySnapshotStoreTests
@@ -17,7 +18,8 @@ rules:
action: block
""";
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task SaveAsync_CreatesNewSnapshotAndAuditEntry()
{
var snapshotRepo = new InMemoryPolicySnapshotRepository();
@@ -47,7 +49,8 @@ rules:
Assert.Equal("rev-1", audits[0].RevisionId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task SaveAsync_DoesNotCreateNewRevisionWhenDigestUnchanged()
{
var snapshotRepo = new InMemoryPolicySnapshotRepository();
@@ -72,7 +75,8 @@ rules:
Assert.Single(audits);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task SaveAsync_ReturnsFailureWhenValidationFails()
{
var snapshotRepo = new InMemoryPolicySnapshotRepository();

View File

@@ -8,7 +8,8 @@ namespace StellaOps.Policy.Tests;
public class PolicyValidationCliTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task RunAsync_EmitsCanonicalDigest_OnValidPolicy()
{
var tmp = Path.GetTempFileName();
@@ -41,6 +42,7 @@ public class PolicyValidationCliTests
using var output = new StringWriter();
using var error = new StringWriter();
using StellaOps.TestKit;
var cli = new PolicyValidationCli(output, error);
var exit = await cli.RunAsync(options);

View File

@@ -1,11 +1,13 @@
using StellaOps.Policy;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Policy.Tests;
public class SplCanonicalizerTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Canonicalize_SortsStatementsActionsAndConditions()
{
const string input = """
@@ -54,7 +56,8 @@ public class SplCanonicalizerTests
Assert.Equal(expected, canonical);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ComputeDigest_IgnoresOrderingNoise()
{
const string versionA = """
@@ -71,7 +74,8 @@ public class SplCanonicalizerTests
Assert.Equal(hashA, hashB);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ComputeDigest_DetectsContentChange()
{
const string baseDoc = """

View File

@@ -6,7 +6,8 @@ namespace StellaOps.Policy.Tests;
public class SplLayeringEngineTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Merge_ReplacesStatementsById_AndKeepsBaseOnes()
{
const string baseDoc = """
@@ -24,7 +25,8 @@ public class SplLayeringEngineTests
Assert.Equal(expected, merged);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Merge_MergesMetadataAndDefaultEffect()
{
const string baseDoc = """
@@ -42,7 +44,8 @@ public class SplLayeringEngineTests
Assert.Equal(expected, merged);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Merge_PreservesUnknownTopLevelAndSpecFields()
{
const string baseDoc = """
@@ -56,6 +59,7 @@ public class SplLayeringEngineTests
var merged = SplLayeringEngine.Merge(baseDoc, overlay);
using var doc = JsonDocument.Parse(merged);
using StellaOps.TestKit;
var root = doc.RootElement;
Assert.True(root.TryGetProperty("extras", out var extras) && extras.TryGetProperty("foo", out var foo) && foo.GetInt32() == 1);

View File

@@ -2,11 +2,13 @@ using System.Collections.Immutable;
using StellaOps.Policy;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Policy.Tests;
public class SplMigrationToolTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ToSplPolicyJson_ConvertsRulesAndMetadata()
{
var rule = PolicyRule.Create(
@@ -44,7 +46,8 @@ public class SplMigrationToolTests
Assert.Equal(expected, spl);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ToSplPolicyJson_UsesOverlaySafeIdsAndAudits()
{
var rule = PolicyRule.Create(

View File

@@ -6,11 +6,13 @@ namespace StellaOps.Policy.Tests;
public class SplSchemaResourceTests
{
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Schema_IncludesReachabilityAndExploitability()
{
var schema = SplSchemaResource.GetSchema();
using var doc = JsonDocument.Parse(schema);
using StellaOps.TestKit;
var match = doc.RootElement
.GetProperty("properties")
.GetProperty("spec")