Files
git.stella-ops.org/src/BinaryIndex/__Tests/StellaOps.BinaryIndex.FixIndex.Tests/Parsers/PatchHeaderParserTests.cs
StellaOps Bot 83c37243e0 save progress
2026-01-03 11:02:24 +02:00

65 lines
2.1 KiB
C#

using FluentAssertions;
using StellaOps.BinaryIndex.FixIndex.Models;
using StellaOps.BinaryIndex.FixIndex.Parsers;
namespace StellaOps.BinaryIndex.FixIndex.Tests.Parsers;
public sealed class PatchHeaderParserTests
{
[Fact]
public void ParsePatches_SkipsHeadersWithInvalidEncoding()
{
var options = new FixIndexParserOptions
{
PatchHeaderMaxLines = 3,
PatchHeaderMaxChars = 200,
PatchHeaderExcerptMaxLength = 120
};
var parser = new PatchHeaderParser(options, new FixedTimeProvider(DateTimeOffset.UnixEpoch));
var patches = new[]
{
("CVE-2024-9999.patch", "Binary\0Content", "sha256")
};
var results = parser.ParsePatches(patches, "debian", "bookworm", "pkg", "1.0.0").ToList();
results.Should().BeEmpty();
}
[Fact]
public void ParsePatches_RespectsLimitsAndUsesFixedTime()
{
var line1 = "Description: Fix CVE-2024-3333";
var line2 = "Origin: upstream";
var line3 = "Bug: https://example.test";
var content = string.Join('\n', line1, line2, line3);
var options = new FixIndexParserOptions
{
PatchHeaderMaxLines = 2,
PatchHeaderMaxChars = 200,
PatchHeaderExcerptMaxLength = line1.Length,
PatchHeaderConfidence = 0.88m
};
var now = new DateTimeOffset(2025, 12, 30, 15, 0, 0, TimeSpan.Zero);
var parser = new PatchHeaderParser(options, new FixedTimeProvider(now));
var patches = new[]
{
("patches/CVE-2024-3333.patch", content, "sha256")
};
var results = parser.ParsePatches(patches, "Ubuntu", "Jammy", "pkg", "1.0.0").ToList();
results.Should().HaveCount(1);
results[0].Distro.Should().Be("ubuntu");
results[0].Release.Should().Be("jammy");
results[0].Confidence.Should().Be(0.88m);
results[0].CreatedAt.Should().Be(now);
var evidence = (PatchHeaderEvidence)results[0].Evidence;
evidence.HeaderExcerpt.Should().Be(line1);
}
}