mirror of https://github.com/artifacthub/hub.git
Fix issue handling security reports with no results (#1440)
Signed-off-by: Sergio Castaño Arteaga <tegioz@icloud.com>
This commit is contained in:
parent
5b94f70b9f
commit
bca33092e3
|
|
@ -99,7 +99,7 @@ func (s *Scanner) Scan(sn *hub.SnapshotToScan) (*hub.SnapshotSecurityReport, err
|
||||||
if err := json.Unmarshal(imageReportJSON, &imageReport); err != nil {
|
if err := json.Unmarshal(imageReportJSON, &imageReport); err != nil {
|
||||||
return report, fmt.Errorf("error unmarshalling image %s report: %w", image.Image, err)
|
return report, fmt.Errorf("error unmarshalling image %s report: %w", image.Image, err)
|
||||||
}
|
}
|
||||||
if imageReport != nil {
|
if imageReport != nil && len(imageReport.Results) > 0 {
|
||||||
imagesReports[image.Image] = imageReport
|
imagesReports[image.Image] = imageReport
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -92,18 +92,39 @@ func TestScan(t *testing.T) {
|
||||||
ecMock.AssertExpectations(t)
|
ecMock.AssertExpectations(t)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("image report generated successfully", func(t *testing.T) {
|
t.Run("image report returned no results", func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
ecMock := &repo.ErrorsCollectorMock{}
|
ecMock := &repo.ErrorsCollectorMock{}
|
||||||
ecMock.On("Init", repositoryID)
|
ecMock.On("Init", repositoryID)
|
||||||
isMock := &ImageScannerMock{}
|
isMock := &ImageScannerMock{}
|
||||||
isMock.On("ScanImage", image).Return(sampleReportData, nil)
|
isMock.On("ScanImage", image).Return(sampleReport1Data, nil)
|
||||||
s := New(ctx, cfg, ecMock, WithImageScanner(isMock))
|
s := New(ctx, cfg, ecMock, WithImageScanner(isMock))
|
||||||
|
|
||||||
report, err := s.Scan(snapshot)
|
report, err := s.Scan(snapshot)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
var expectedImageFullReport *trivyreport.Report
|
var expectedImageFullReport *trivyreport.Report
|
||||||
err = json.Unmarshal(sampleReportData, &expectedImageFullReport)
|
err = json.Unmarshal(sampleReport1Data, &expectedImageFullReport)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, &hub.SnapshotSecurityReport{
|
||||||
|
PackageID: packageID,
|
||||||
|
Version: version,
|
||||||
|
}, report)
|
||||||
|
isMock.AssertExpectations(t)
|
||||||
|
ecMock.AssertExpectations(t)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("image report generated successfully", func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
ecMock := &repo.ErrorsCollectorMock{}
|
||||||
|
ecMock.On("Init", repositoryID)
|
||||||
|
isMock := &ImageScannerMock{}
|
||||||
|
isMock.On("ScanImage", image).Return(sampleReport2Data, nil)
|
||||||
|
s := New(ctx, cfg, ecMock, WithImageScanner(isMock))
|
||||||
|
|
||||||
|
report, err := s.Scan(snapshot)
|
||||||
|
require.Nil(t, err)
|
||||||
|
var expectedImageFullReport *trivyreport.Report
|
||||||
|
err = json.Unmarshal(sampleReport2Data, &expectedImageFullReport)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, &hub.SnapshotSecurityReport{
|
assert.Equal(t, &hub.SnapshotSecurityReport{
|
||||||
PackageID: packageID,
|
PackageID: packageID,
|
||||||
|
|
@ -122,7 +143,27 @@ func TestScan(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleReportData = []byte(`
|
var sampleReport1Data = []byte(`
|
||||||
|
{
|
||||||
|
"SchemaVersion": 2,
|
||||||
|
"ArtifactName": "artifacthub/hub:v1.0.0",
|
||||||
|
"ArtifactType": "container_image",
|
||||||
|
"Metadata": {
|
||||||
|
"OS": {
|
||||||
|
"Family": "alpine",
|
||||||
|
"Name": "3.13.5"
|
||||||
|
},
|
||||||
|
"RepoTags": [
|
||||||
|
"artifacthub/hub:v1.0.0"
|
||||||
|
],
|
||||||
|
"RepoDigests": [
|
||||||
|
"artifacthub/hub@sha256:becb8e06fb01f0324dabac05d700755bcd324071e66ebf4bc10151e356de9c71"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
var sampleReport2Data = []byte(`
|
||||||
{
|
{
|
||||||
"SchemaVersion": 2,
|
"SchemaVersion": 2,
|
||||||
"ArtifactName": "artifacthub/hub:v1.0.0",
|
"ArtifactName": "artifacthub/hub:v1.0.0",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue