Resolve Concelier/Excititor merge conflicts
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using System.Text.Json;
|
||||
using StellaOps.Concelier.Connector.Ru.Nkcki.Internal;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.Concelier.Connector.Ru.Nkcki.Tests;
|
||||
|
||||
public sealed class RuNkckiJsonParserTests
|
||||
{
|
||||
[Fact]
|
||||
public void Parse_WellFormedEntry_ReturnsDto()
|
||||
{
|
||||
const string json = """
|
||||
{
|
||||
"vuln_id": {"MITRE": "CVE-2025-0001", "FSTEC": "BDU:2025-00001"},
|
||||
"date_published": "2025-09-01",
|
||||
"date_updated": "2025-09-02",
|
||||
"cvss_rating": "КРИТИЧЕСКИЙ",
|
||||
"patch_available": true,
|
||||
"description": "Test description",
|
||||
"cwe": {"cwe_number": 79, "cwe_description": "Cross-site scripting"},
|
||||
"product_category": ["Web", "CMS"],
|
||||
"mitigation": ["Apply update", "Review configuration"],
|
||||
"vulnerable_software": {
|
||||
"software_text": "ExampleCMS <= 1.0",
|
||||
"software": [{"vendor": "Example", "name": "ExampleCMS", "version": "<= 1.0"}],
|
||||
"cpe": false
|
||||
},
|
||||
"cvss": {
|
||||
"cvss_score": 8.8,
|
||||
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
|
||||
"cvss_score_v4": 5.5,
|
||||
"cvss_vector_v4": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H"
|
||||
},
|
||||
"impact": "ACE",
|
||||
"method_of_exploitation": "Special request",
|
||||
"user_interaction": false,
|
||||
"urls": ["https://example.com/advisory", {"url": "https://cert.gov.ru/materialy/uyazvimosti/2025-00001"}],
|
||||
"tags": ["cms"]
|
||||
}
|
||||
""";
|
||||
|
||||
using var document = JsonDocument.Parse(json);
|
||||
var dto = RuNkckiJsonParser.Parse(document.RootElement);
|
||||
|
||||
Assert.Equal("BDU:2025-00001", dto.FstecId);
|
||||
Assert.Equal("CVE-2025-0001", dto.MitreId);
|
||||
Assert.Equal(8.8, dto.CvssScore);
|
||||
Assert.Equal("CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", dto.CvssVector);
|
||||
Assert.True(dto.PatchAvailable);
|
||||
Assert.Equal(79, dto.Cwe?.Number);
|
||||
Assert.Contains("Web", dto.ProductCategories);
|
||||
Assert.Contains("CMS", dto.ProductCategories);
|
||||
Assert.Single(dto.VulnerableSoftwareEntries);
|
||||
var entry = dto.VulnerableSoftwareEntries[0];
|
||||
Assert.Equal("Example ExampleCMS", entry.Identifier);
|
||||
Assert.Contains("<= 1.0", entry.RangeExpressions);
|
||||
Assert.Equal(2, dto.Urls.Length);
|
||||
Assert.Contains("cms", dto.Tags);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user