Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -164,7 +164,7 @@ public class EnvironmentOverrideTests
// Production should have lower unknowns threshold
var threshold = double.Parse(settings["unknownsThreshold"]?.ToString() ?? "0", CultureInfo.InvariantCulture);
threshold.Should().BeLessOrEqualTo(0.05);
threshold.Should().BeLessThanOrEqualTo(0.05);
// Production should require signing
ParseBool(settings["requireSignedSbom"]).Should().BeTrue();
@@ -207,6 +207,6 @@ public class EnvironmentOverrideTests
// Staging should have moderate unknowns threshold
var threshold = double.Parse(settings["unknownsThreshold"]?.ToString() ?? "0", CultureInfo.InvariantCulture);
threshold.Should().BeGreaterThan(0.05).And.BeLessOrEqualTo(0.15);
threshold.Should().BeGreaterThan(0.05).And.BeLessThanOrEqualTo(0.15);
}
}

View File

@@ -35,11 +35,16 @@ public class PolicyPackSchemaTests
.Build();
}
private JsonNode YamlToJson(string yamlContent)
private JsonElement YamlToJson(string yamlContent)
{
var yamlObject = _yamlDeserializer.Deserialize(new StringReader(yamlContent));
var jsonString = _yamlToJsonSerializer.Serialize(yamlObject);
return JsonNode.Parse(jsonString)!;
return JsonDocument.Parse(jsonString).RootElement;
}
private static JsonElement ParseJson(string json)
{
return JsonDocument.Parse(json).RootElement;
}
[Trait("Category", TestCategories.Unit)]
@@ -96,7 +101,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_RequiresApiVersion()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"kind": "PolicyPack",
"metadata": { "name": "test-policy", "version": "1.0.0" },
@@ -112,7 +117,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_RequiresKind()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"metadata": { "name": "test-policy", "version": "1.0.0" },
@@ -128,7 +133,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_RequiresMetadata()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "PolicyPack",
@@ -144,7 +149,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_RequiresSpec()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "PolicyPack",
@@ -160,7 +165,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_ValidatesApiVersionFormat()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"apiVersion": "invalid-version",
"kind": "PolicyPack",
@@ -177,7 +182,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_ValidatesKindEnum()
{
var invalidPolicy = JsonNode.Parse("""
var invalidPolicy = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "InvalidKind",
@@ -194,7 +199,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_AcceptsValidPolicyPack()
{
var validPolicy = JsonNode.Parse("""
var validPolicy = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "PolicyPack",
@@ -228,7 +233,7 @@ public class PolicyPackSchemaTests
[Fact]
public void Schema_AcceptsValidPolicyOverride()
{
var validOverride = JsonNode.Parse("""
var validOverride = ParseJson("""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "PolicyOverride",
@@ -264,7 +269,7 @@ public class PolicyPackSchemaTests
[InlineData("block")]
public void Schema_AcceptsValidRuleActions(string action)
{
var policy = JsonNode.Parse($$"""
var policy = ParseJson($$"""
{
"apiVersion": "policy.stellaops.io/v1",
"kind": "PolicyPack",
@@ -295,7 +300,7 @@ public class PolicyPackSchemaTests
private static void CollectErrors(EvaluationResults result, List<string> errors)
{
if (result.Errors != null && result.Errors.Count > 0)
if (result.Errors is { Count: > 0 })
{
foreach (var error in result.Errors)
{
@@ -303,12 +308,12 @@ public class PolicyPackSchemaTests
}
}
if (!result.IsValid && result.HasErrors && errors.Count == 0)
if (!result.IsValid && result.Errors is { Count: > 0 } && errors.Count == 0)
{
errors.Add($"At {result.InstanceLocation}: validation failed with no specific error message");
}
if (result.HasDetails)
if (result.Details is { Count: > 0 })
{
foreach (var detail in result.Details)
{

View File

@@ -9,19 +9,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="YamlDotNet" Version="16.2.1" />
<PackageReference Include="JsonSchema.Net" Version="7.3.4" />
<PackageReference Include="FluentAssertions" />
<PackageReference Include="YamlDotNet" />
<PackageReference Include="JsonSchema.Net" />
</ItemGroup>
<ItemGroup>
@@ -38,4 +28,4 @@
<ItemGroup>
<ProjectReference Include="../../../__Libraries/StellaOps.TestKit/StellaOps.TestKit.csproj" />
</ItemGroup>
</Project>
</Project>