Skip to content

Commit 7041064

Browse files
authored
Order vulnerabilities by severity (#8780)
Addresses #8703
1 parent d421b7d commit 7041064

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

src/NuGetGallery/Helpers/ViewModelExtensions/DisplayPackageViewModelFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private DisplayPackageViewModel SetupCommon(
206206
&& packageKeyToVulnerabilities.TryGetValue(package.Key, out var vulnerabilities)
207207
&& vulnerabilities != null && vulnerabilities.Any())
208208
{
209-
viewModel.Vulnerabilities = vulnerabilities;
209+
viewModel.Vulnerabilities = vulnerabilities.OrderByDescending(vul => vul.Severity).ToList().AsReadOnly();
210210
maxVulnerabilitySeverity = viewModel.Vulnerabilities.Max(v => v.Severity); // cache for messaging
211211
viewModel.MaxVulnerabilitySeverity = maxVulnerabilitySeverity.Value;
212212
}

tests/NuGetGallery.Facts/ViewModels/DisplayPackageViewModelFacts.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,38 @@ public void DeprecationFieldsAreSetAsExpected(
924924
Assert.Null(versionModel.CustomMessage);
925925
}
926926

927+
[Fact]
928+
public void VulnerabilitiesDisplayedInOrder()
929+
{
930+
var package = CreateTestPackage("1.0.0");
931+
932+
var packageKeyToVulnerabilities = new Dictionary<int, IReadOnlyList<PackageVulnerability>>
933+
{
934+
{ package.Key, new List<PackageVulnerability>
935+
{
936+
new PackageVulnerability { Key = 1, Severity = PackageVulnerabilitySeverity.High },
937+
new PackageVulnerability { Key = 2, Severity = PackageVulnerabilitySeverity.Low },
938+
new PackageVulnerability { Key = 3, Severity = PackageVulnerabilitySeverity.Critical },
939+
}
940+
}
941+
};
942+
943+
// Act
944+
var model = CreateDisplayPackageViewModel(
945+
package,
946+
currentUser: null,
947+
packageKeyToVulnerabilities: packageKeyToVulnerabilities,
948+
readmeHtml: null);
949+
950+
// Assert
951+
var versionModel = model.PackageVersions.Single();
952+
Assert.Null(versionModel.CustomMessage);
953+
Assert.NotNull(model.Vulnerabilities);
954+
Assert.Equal(PackageVulnerabilitySeverity.Critical, model.Vulnerabilities.ElementAt(0).Severity);
955+
Assert.Equal(PackageVulnerabilitySeverity.High, model.Vulnerabilities.ElementAt(1).Severity);
956+
Assert.Equal(PackageVulnerabilitySeverity.Low, model.Vulnerabilities.ElementAt(2).Severity);
957+
}
958+
927959
[Theory]
928960
[InlineData(true)]
929961
[InlineData(false)]

0 commit comments

Comments
 (0)