save progress
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user