mirror of
https://github.com/goharbor/harbor.git
synced 2024-10-01 06:47:33 +02:00
add tc for vulnerability transform
This commit is contained in:
parent
e3e722b1f8
commit
8f41be471d
@ -59,8 +59,13 @@ func UpdateScanOverview(digest, layerName string, l ...*log.Logger) error {
|
||||
logger.Errorf("Failed to get result from Clair, error: %v", err)
|
||||
return err
|
||||
}
|
||||
compOverview, sev := transformVuln(res)
|
||||
return dao.UpdateImgScanOverview(digest, layerName, sev, compOverview)
|
||||
}
|
||||
|
||||
func transformVuln(clairVuln *models.ClairLayerEnvelope) (*models.ComponentsOverview, models.Severity) {
|
||||
vulnMap := make(map[models.Severity]int)
|
||||
features := res.Layer.Features
|
||||
features := clairVuln.Layer.Features
|
||||
totalComponents := len(features)
|
||||
var temp models.Severity
|
||||
for _, f := range features {
|
||||
@ -85,9 +90,8 @@ func UpdateScanOverview(digest, layerName string, l ...*log.Logger) error {
|
||||
}
|
||||
compSummary = append(compSummary, entry)
|
||||
}
|
||||
compOverview := &models.ComponentsOverview{
|
||||
return &models.ComponentsOverview{
|
||||
Total: totalComponents,
|
||||
Summary: compSummary,
|
||||
}
|
||||
return dao.UpdateImgScanOverview(digest, layerName, overallSev, compOverview)
|
||||
}, overallSev
|
||||
}
|
||||
|
@ -14,6 +14,10 @@
|
||||
package clair
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"path"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@ -33,3 +37,41 @@ func TestParseServerity(t *testing.T) {
|
||||
assert.Equal(v, ParseClairSev(k))
|
||||
}
|
||||
}
|
||||
|
||||
func TestTransformVuln(t *testing.T) {
|
||||
var clairVuln = &models.ClairLayerEnvelope{}
|
||||
assert := assert.New(t)
|
||||
empty := []byte(`{"Layer":{"Features":[]}}`)
|
||||
loadVuln(empty, clairVuln)
|
||||
output, o := transformVuln(clairVuln)
|
||||
assert.Equal(0, output.Total)
|
||||
assert.Equal(models.SevNone, o)
|
||||
_, f, _, ok := runtime.Caller(0)
|
||||
if !ok {
|
||||
panic("Failed to get current directory")
|
||||
}
|
||||
curDir := path.Dir(f)
|
||||
real, err := ioutil.ReadFile(path.Join(curDir, "test/total-12.json"))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
loadVuln(real, clairVuln)
|
||||
output, o = transformVuln(clairVuln)
|
||||
assert.Equal(12, output.Total)
|
||||
assert.Equal(models.SevHigh, o)
|
||||
hit := false
|
||||
for _, s := range output.Summary {
|
||||
if s.Sev == int(models.SevHigh) {
|
||||
assert.Equal(3, s.Count, "There should be 3 components with High severity")
|
||||
hit = true
|
||||
}
|
||||
}
|
||||
assert.True(hit, "Not found entry for high severity in summary list")
|
||||
}
|
||||
|
||||
func loadVuln(input []byte, data *models.ClairLayerEnvelope) {
|
||||
err := json.Unmarshal(input, data)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user