mirror of https://github.com/goharbor/harbor.git
Set default capability for old scanners (#20306)
Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com>
This commit is contained in:
parent
0d9dc4b4a4
commit
d759429831
|
@ -161,14 +161,22 @@ func (md *ScannerAdapterMetadata) GetCapability(mimeType string) *ScannerCapabil
|
|||
// ConvertCapability converts the capability to map, used in get scanner API
|
||||
func (md *ScannerAdapterMetadata) ConvertCapability() map[string]interface{} {
|
||||
capabilities := make(map[string]interface{})
|
||||
oldScanner := true
|
||||
for _, c := range md.Capabilities {
|
||||
if len(c.Type) > 0 {
|
||||
oldScanner = false
|
||||
}
|
||||
if c.Type == ScanTypeVulnerability {
|
||||
capabilities[supportVulnerability] = true
|
||||
}
|
||||
if c.Type == ScanTypeSbom {
|
||||
} else if c.Type == ScanTypeSbom {
|
||||
capabilities[supportSBOM] = true
|
||||
}
|
||||
}
|
||||
if oldScanner && len(capabilities) == 0 {
|
||||
// to compatible with old version scanner, suppose they should always support scan vulnerability when capability is empty
|
||||
capabilities[supportVulnerability] = true
|
||||
capabilities[supportSBOM] = false
|
||||
}
|
||||
return capabilities
|
||||
}
|
||||
|
||||
|
|
|
@ -13,3 +13,29 @@ func TestIsSupportedMimeType(t *testing.T) {
|
|||
// Test with an unsupported mime type
|
||||
assert.False(t, isSupportedMimeType("unsupported/mime-type"), "isSupportedMimeType should return false for unsupported mime types")
|
||||
}
|
||||
|
||||
func TestConvertCapability(t *testing.T) {
|
||||
md := &ScannerAdapterMetadata{
|
||||
Capabilities: []*ScannerCapability{
|
||||
{Type: ScanTypeSbom},
|
||||
{Type: ScanTypeVulnerability},
|
||||
},
|
||||
}
|
||||
result := md.ConvertCapability()
|
||||
assert.Equal(t, result[supportSBOM], true)
|
||||
assert.Equal(t, result[supportVulnerability], true)
|
||||
}
|
||||
|
||||
func TestConvertCapabilityOldScaner(t *testing.T) {
|
||||
md := &ScannerAdapterMetadata{
|
||||
Capabilities: []*ScannerCapability{
|
||||
{
|
||||
ConsumesMimeTypes: []string{"application/vnd.oci.image.manifest.v1+json", "application/vnd.docker.distribution.manifest.v2+json"},
|
||||
ProducesMimeTypes: []string{MimeTypeNativeReport},
|
||||
},
|
||||
},
|
||||
}
|
||||
result := md.ConvertCapability()
|
||||
assert.Equal(t, result[supportSBOM], false)
|
||||
assert.Equal(t, result[supportVulnerability], true)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue