save progress
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using FluentAssertions;
|
||||
using StellaOps.Signals.Models;
|
||||
using StellaOps.Signals.Parsing;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.Signals.Tests;
|
||||
|
||||
public sealed class SimpleJsonCallgraphParserGateTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task ParseAsync_parses_gate_fields_on_edges()
|
||||
{
|
||||
var json = """
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"nodes": [
|
||||
{ "id": "main" },
|
||||
{ "id": "target" }
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"from": "main",
|
||||
"to": "target",
|
||||
"kind": "call",
|
||||
"gate_multiplier_bps": 3000,
|
||||
"gates": [
|
||||
{
|
||||
"type": "authRequired",
|
||||
"detail": "[Authorize] attribute",
|
||||
"guard_symbol": "main",
|
||||
"source_file": "/src/app.cs",
|
||||
"line_number": 42,
|
||||
"confidence": 0.9,
|
||||
"detection_method": "pattern"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
""";
|
||||
|
||||
var parser = new SimpleJsonCallgraphParser("csharp");
|
||||
await using var stream = new MemoryStream(Encoding.UTF8.GetBytes(json), writable: false);
|
||||
var parsed = await parser.ParseAsync(stream, CancellationToken.None);
|
||||
|
||||
parsed.Edges.Should().ContainSingle();
|
||||
var edge = parsed.Edges[0];
|
||||
edge.GateMultiplierBps.Should().Be(3000);
|
||||
edge.Gates.Should().NotBeNull();
|
||||
edge.Gates!.Should().ContainSingle();
|
||||
edge.Gates[0].Type.Should().Be(CallgraphGateType.AuthRequired);
|
||||
edge.Gates[0].GuardSymbol.Should().Be("main");
|
||||
edge.Gates[0].SourceFile.Should().Be("/src/app.cs");
|
||||
edge.Gates[0].LineNumber.Should().Be(42);
|
||||
edge.Gates[0].DetectionMethod.Should().Be("pattern");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user