more audit work

This commit is contained in:
master
2026-01-08 10:21:51 +02:00
parent 43c02081ef
commit 51cf4bc16c
546 changed files with 36721 additions and 4003 deletions

View File

@@ -13,6 +13,7 @@ namespace StellaOps.Scanner.Reachability.Tests;
public class ReachabilityUnionWriterTests
{
private static CancellationToken TestCancellationToken => TestContext.Current.CancellationToken;
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task WritesDeterministicNdjson()
@@ -31,14 +32,14 @@ public class ReachabilityUnionWriterTests
new ReachabilityUnionEdge("sym:dotnet:A", "sym:dotnet:B", "call")
});
var result = await writer.WriteAsync(graph, temp.Path, "analysis-x");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-x", TestCancellationToken);
var meta = await JsonDocument.ParseAsync(File.OpenRead(result.MetaPath));
var meta = await JsonDocument.ParseAsync(File.OpenRead(result.MetaPath), cancellationToken: TestCancellationToken);
var files = meta.RootElement.GetProperty("files").EnumerateArray().ToList();
Assert.Equal(2, files.Count); // nodes + edges
// Deterministic order
var nodeLines = await File.ReadAllLinesAsync(Path.Combine(temp.Path, "reachability_graphs/analysis-x/nodes.ndjson"));
var nodeLines = await File.ReadAllLinesAsync(Path.Combine(temp.Path, "reachability_graphs/analysis-x/nodes.ndjson"), TestCancellationToken);
Assert.Contains(nodeLines, l => l.Contains("sym:dotnet:A"));
}
@@ -64,9 +65,9 @@ public class ReachabilityUnionWriterTests
},
Edges: Array.Empty<ReachabilityUnionEdge>());
var result = await writer.WriteAsync(graph, temp.Path, "analysis-purl");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-purl", TestCancellationToken);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path, TestCancellationToken);
Assert.Single(nodeLines);
Assert.Contains("\"purl\":\"pkg:nuget/TestPackage@1.0.0\"", nodeLines[0]);
Assert.Contains("\"symbol_digest\":\"sha256:abc123\"", nodeLines[0]);
@@ -97,9 +98,9 @@ public class ReachabilityUnionWriterTests
SymbolDigest: "sha256:def456")
});
var result = await writer.WriteAsync(graph, temp.Path, "analysis-edge-purl");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-edge-purl", TestCancellationToken);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path, TestCancellationToken);
Assert.Single(edgeLines);
Assert.Contains("\"purl\":\"pkg:nuget/TargetPackage@2.0.0\"", edgeLines[0]);
Assert.Contains("\"symbol_digest\":\"sha256:def456\"", edgeLines[0]);
@@ -135,9 +136,9 @@ public class ReachabilityUnionWriterTests
})
});
var result = await writer.WriteAsync(graph, temp.Path, "analysis-candidates");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-candidates", TestCancellationToken);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path, TestCancellationToken);
Assert.Single(edgeLines);
Assert.Contains("\"candidates\":", edgeLines[0]);
Assert.Contains("pkg:deb/ubuntu/openssl@3.0.2", edgeLines[0]);
@@ -165,9 +166,9 @@ public class ReachabilityUnionWriterTests
},
Edges: Array.Empty<ReachabilityUnionEdge>());
var result = await writer.WriteAsync(graph, temp.Path, "analysis-symbol");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-symbol", TestCancellationToken);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path, TestCancellationToken);
Assert.Single(nodeLines);
Assert.Contains("\"code_block_hash\":\"sha256:deadbeef\"", nodeLines[0]);
Assert.Contains("\"symbol\":{\"mangled\":\"_Z15ssl3_read_bytes\",\"demangled\":\"ssl3_read_bytes\",\"source\":\"DWARF\",\"confidence\":0.98}", nodeLines[0]);
@@ -190,13 +191,13 @@ public class ReachabilityUnionWriterTests
new ReachabilityUnionEdge("sym:dotnet:A", "sym:dotnet:A", "call")
});
var result = await writer.WriteAsync(graph, temp.Path, "analysis-null-purl");
var result = await writer.WriteAsync(graph, temp.Path, "analysis-null-purl", TestCancellationToken);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path);
var nodeLines = await File.ReadAllLinesAsync(result.Nodes.Path, TestCancellationToken);
Assert.DoesNotContain("purl", nodeLines[0]);
Assert.DoesNotContain("symbol_digest", nodeLines[0]);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path);
var edgeLines = await File.ReadAllLinesAsync(result.Edges.Path, TestCancellationToken);
Assert.DoesNotContain("purl", edgeLines[0]);
Assert.DoesNotContain("symbol_digest", edgeLines[0]);
Assert.DoesNotContain("candidates", edgeLines[0]);