more audit work
This commit is contained in:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user