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 b4fc66feb6
3353 changed files with 88254 additions and 1590657 deletions

View File

@@ -1,6 +1,7 @@
using StellaOps.Scanner.Analyzers.OS.MacOsBundle;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Scanner.Analyzers.OS.MacOsBundle.Tests;
public sealed class EntitlementsParserTests
@@ -11,7 +12,8 @@ public sealed class EntitlementsParserTests
private readonly EntitlementsParser _parser = new();
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_ValidEntitlements_ReturnsEntitlements()
{
// Arrange
@@ -25,7 +27,8 @@ public sealed class EntitlementsParserTests
Assert.True(result.IsSandboxed);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_DetectsHighRiskEntitlements()
{
// Arrange
@@ -40,7 +43,8 @@ public sealed class EntitlementsParserTests
Assert.Contains("com.apple.security.device.microphone", result.HighRiskEntitlements);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_CategorizeEntitlements()
{
// Arrange
@@ -57,7 +61,8 @@ public sealed class EntitlementsParserTests
Assert.Contains("sandbox", result.Categories);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_NonExistentFile_ReturnsEmpty()
{
// Arrange
@@ -70,7 +75,8 @@ public sealed class EntitlementsParserTests
Assert.Same(BundleEntitlements.Empty, result);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void FindEntitlementsFile_FindsXcentFile()
{
// Arrange
@@ -84,7 +90,8 @@ public sealed class EntitlementsParserTests
Assert.EndsWith(".xcent", result);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void FindEntitlementsFile_NoBundlePath_ReturnsNull()
{
// Act
@@ -94,7 +101,8 @@ public sealed class EntitlementsParserTests
Assert.Null(result);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void FindEntitlementsFile_NoEntitlements_ReturnsNull()
{
// Arrange - bundle without entitlements
@@ -107,7 +115,8 @@ public sealed class EntitlementsParserTests
Assert.Null(result);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void HasEntitlement_ReturnsTrueForExistingEntitlement()
{
// Arrange
@@ -119,7 +128,8 @@ public sealed class EntitlementsParserTests
Assert.True(result.HasEntitlement("com.apple.security.device.camera"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void HasEntitlement_ReturnsFalseForMissingEntitlement()
{
// Arrange

View File

@@ -1,6 +1,7 @@
using StellaOps.Scanner.Analyzers.OS.MacOsBundle;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Scanner.Analyzers.OS.MacOsBundle.Tests;
public sealed class InfoPlistParserTests
@@ -11,7 +12,8 @@ public sealed class InfoPlistParserTests
private readonly InfoPlistParser _parser = new();
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_ValidInfoPlist_ReturnsBundleInfo()
{
// Arrange
@@ -29,7 +31,8 @@ public sealed class InfoPlistParserTests
Assert.Equal("1.2.3", result.ShortVersion);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_ExtractsMinimumSystemVersion()
{
// Arrange
@@ -43,7 +46,8 @@ public sealed class InfoPlistParserTests
Assert.Equal("12.0", result.MinimumSystemVersion);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_ExtractsExecutable()
{
// Arrange
@@ -57,7 +61,8 @@ public sealed class InfoPlistParserTests
Assert.Equal("TestApp", result.Executable);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_ExtractsSupportedPlatforms()
{
// Arrange
@@ -72,7 +77,8 @@ public sealed class InfoPlistParserTests
Assert.Contains("MacOSX", result.SupportedPlatforms);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_NonExistentFile_ReturnsNull()
{
// Arrange
@@ -85,7 +91,8 @@ public sealed class InfoPlistParserTests
Assert.Null(result);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Parse_MissingBundleIdentifier_ReturnsNull()
{
// Arrange - Create a temp file without CFBundleIdentifier

View File

@@ -3,6 +3,7 @@ using Microsoft.Extensions.Logging.Abstractions;
using StellaOps.Scanner.Analyzers.OS.MacOsBundle;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.Scanner.Analyzers.OS.MacOsBundle.Tests;
public sealed class MacOsBundleAnalyzerTests
@@ -29,13 +30,15 @@ public sealed class MacOsBundleAnalyzerTests
_logger);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void AnalyzerId_ReturnsMacosBundleIdentifier()
{
Assert.Equal("macos-bundle", _analyzer.AnalyzerId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_WithValidBundles_ReturnsPackages()
{
// Arrange
@@ -50,7 +53,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.True(result.Packages.Count > 0, "Expected at least one bundle");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_FindsTestApp()
{
// Arrange
@@ -68,7 +72,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Equal("Test Application", testApp.Name);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_ExtractsVersionCorrectly()
{
// Arrange
@@ -88,7 +93,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Equal("123", testApp.Release);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_BuildsCorrectPurl()
{
// Arrange
@@ -105,7 +111,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Contains("pkg:generic/macos-app/com.stellaops.testapp@1.2.3", testApp.PackageUrl);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_ExtractsVendorFromBundleId()
{
// Arrange
@@ -122,7 +129,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Equal("stellaops", testApp.SourcePackage);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_SetsEvidenceSourceToMacOsBundle()
{
// Arrange
@@ -138,7 +146,8 @@ public sealed class MacOsBundleAnalyzerTests
}
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_ExtractsVendorMetadata()
{
// Arrange
@@ -159,7 +168,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Equal("MacOSX", testApp.VendorMetadata["macos:platforms"]);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_IncludesCodeResourcesHash()
{
// Arrange
@@ -178,7 +188,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.StartsWith("sha256:", hash);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_DetectsSandboxedApp()
{
// Arrange
@@ -195,7 +206,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Equal("true", sandboxedApp.VendorMetadata["macos:sandboxed"]);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_DetectsHighRiskEntitlements()
{
// Arrange
@@ -216,7 +228,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Contains("com.apple.security.device.microphone", highRisk);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_DetectsCapabilityCategories()
{
// Arrange
@@ -239,7 +252,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.Contains("sandbox", categories);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_IncludesFileEvidence()
{
// Arrange
@@ -264,7 +278,8 @@ public sealed class MacOsBundleAnalyzerTests
Assert.True(infoPlist.IsConfigFile);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_ResultsAreDeterministicallySorted()
{
// Arrange
@@ -282,7 +297,8 @@ public sealed class MacOsBundleAnalyzerTests
}
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_NoApplicationsDirectory_ReturnsEmptyPackages()
{
// Arrange - use temp directory without Applications
@@ -305,7 +321,8 @@ public sealed class MacOsBundleAnalyzerTests
}
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task AnalyzeAsync_PopulatesTelemetry()
{
// Arrange

View File

@@ -20,6 +20,7 @@
<ItemGroup>
<ProjectReference Include="../../__Libraries/StellaOps.Scanner.Analyzers.OS/StellaOps.Scanner.Analyzers.OS.csproj" />
<ProjectReference Include="../../__Libraries/StellaOps.Scanner.Analyzers.OS.MacOsBundle/StellaOps.Scanner.Analyzers.OS.MacOsBundle.csproj" />
<ProjectReference Include="../../../__Libraries/StellaOps.TestKit/StellaOps.TestKit.csproj" />
</ItemGroup>
<ItemGroup>
<None Include="Fixtures\**\*" CopyToOutputDirectory="PreserveNewest" />