mirror of
https://github.com/project-zot/zot.git
synced 2026-06-17 21:17:58 +08:00
fix: return empty CVE graphql results when cve disabled
Agent-Logs-Url: https://github.com/project-zot/zot/sessions/1ad9a48e-b34b-4cf5-8672-fcad1eec752f Co-authored-by: rchincha <45800463+rchincha@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
b5ed56f07d
commit
b419227a92
@@ -1168,6 +1168,10 @@ func TestServeSearchEnabledNoCVE(t *testing.T) {
|
||||
found, err = ReadLogFileAndSearchString(logPath, "cve config not provided, skipping cve-db update", readLogFileTimeout)
|
||||
So(found, ShouldBeTrue)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
found, err = ReadLogFileAndSearchString(logPath, "updating cve-db", readLogFileTimeout)
|
||||
So(found, ShouldBeFalse)
|
||||
So(err, ShouldBeNil)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -754,7 +754,61 @@ func TestQueryResolverErrors(t *testing.T) {
|
||||
|
||||
_, err := qr.CVEDiffListForImages(ctx, gql_generated.ImageInput{}, gql_generated.ImageInput{},
|
||||
&gql_generated.PageInput{}, nil, nil)
|
||||
So(err, ShouldNotBeNil)
|
||||
So(err, ShouldBeNil)
|
||||
})
|
||||
|
||||
Convey("CVEListForImage nil cveinfo returns empty result", func() {
|
||||
resolverConfig := NewResolver(
|
||||
log,
|
||||
storage.StoreController{DefaultStore: mocks.MockedImageStore{}},
|
||||
mocks.MetaDBMock{},
|
||||
nil,
|
||||
)
|
||||
|
||||
qr := queryResolver{resolverConfig}
|
||||
|
||||
result, err := qr.CVEListForImage(ctx, "repo1:1.0.0", &gql_generated.PageInput{}, nil, nil, nil)
|
||||
So(err, ShouldBeNil)
|
||||
So(result, ShouldNotBeNil)
|
||||
So(result.Page, ShouldNotBeNil)
|
||||
So(result.CVEList, ShouldNotBeNil)
|
||||
So(len(result.CVEList), ShouldEqual, 0)
|
||||
})
|
||||
|
||||
Convey("ImageListForCve nil cveinfo returns empty result", func() {
|
||||
resolverConfig := NewResolver(
|
||||
log,
|
||||
storage.StoreController{DefaultStore: mocks.MockedImageStore{}},
|
||||
mocks.MetaDBMock{},
|
||||
nil,
|
||||
)
|
||||
|
||||
qr := queryResolver{resolverConfig}
|
||||
|
||||
result, err := qr.ImageListForCve(ctx, "CVE-123", &gql_generated.Filter{}, &gql_generated.PageInput{})
|
||||
So(err, ShouldBeNil)
|
||||
So(result, ShouldNotBeNil)
|
||||
So(result.Page, ShouldNotBeNil)
|
||||
So(result.Results, ShouldNotBeNil)
|
||||
So(len(result.Results), ShouldEqual, 0)
|
||||
})
|
||||
|
||||
Convey("ImageListWithCVEFixed nil cveinfo returns empty result", func() {
|
||||
resolverConfig := NewResolver(
|
||||
log,
|
||||
storage.StoreController{DefaultStore: mocks.MockedImageStore{}},
|
||||
mocks.MetaDBMock{},
|
||||
nil,
|
||||
)
|
||||
|
||||
qr := queryResolver{resolverConfig}
|
||||
|
||||
result, err := qr.ImageListWithCVEFixed(ctx, "CVE-123", "repo1", &gql_generated.Filter{}, &gql_generated.PageInput{})
|
||||
So(err, ShouldBeNil)
|
||||
So(result, ShouldNotBeNil)
|
||||
So(result.Page, ShouldNotBeNil)
|
||||
So(result.Results, ShouldNotBeNil)
|
||||
So(len(result.Results), ShouldEqual, 0)
|
||||
})
|
||||
|
||||
Convey("CVEDiffListForImages error", func() {
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/vektah/gqlparser/v2/gqlerror"
|
||||
zerr "zotregistry.dev/zot/v2/errors"
|
||||
"zotregistry.dev/zot/v2/pkg/common"
|
||||
"zotregistry.dev/zot/v2/pkg/extensions/search/convert"
|
||||
"zotregistry.dev/zot/v2/pkg/extensions/search/gql_generated"
|
||||
@@ -18,7 +17,10 @@ import (
|
||||
// CVEListForImage is the resolver for the CVEListForImage field.
|
||||
func (r *queryResolver) CVEListForImage(ctx context.Context, image string, requestedPage *gql_generated.PageInput, searchedCve *string, excludedCve *string, severity *string) (*gql_generated.CVEResultForImage, error) {
|
||||
if r.cveInfo == nil {
|
||||
return &gql_generated.CVEResultForImage{}, zerr.ErrCVESearchDisabled
|
||||
return &gql_generated.CVEResultForImage{
|
||||
CVEList: []*gql_generated.Cve{},
|
||||
Page: &gql_generated.PageInfo{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
return getCVEListForImage(ctx, image, r.cveInfo, requestedPage, deref(searchedCve, ""), deref(excludedCve, ""), deref(severity, ""), r.log)
|
||||
@@ -27,7 +29,20 @@ func (r *queryResolver) CVEListForImage(ctx context.Context, image string, reque
|
||||
// CVEDiffListForImages is the resolver for the CVEDiffListForImages field.
|
||||
func (r *queryResolver) CVEDiffListForImages(ctx context.Context, minuend gql_generated.ImageInput, subtrahend gql_generated.ImageInput, requestedPage *gql_generated.PageInput, searchedCve *string, excludedCve *string) (*gql_generated.CVEDiffResult, error) {
|
||||
if r.cveInfo == nil {
|
||||
return &gql_generated.CVEDiffResult{}, zerr.ErrCVESearchDisabled
|
||||
return &gql_generated.CVEDiffResult{
|
||||
Minuend: &gql_generated.ImageIdentifier{
|
||||
Repo: minuend.Repo,
|
||||
Tag: minuend.Tag,
|
||||
Digest: minuend.Digest,
|
||||
},
|
||||
Subtrahend: &gql_generated.ImageIdentifier{
|
||||
Repo: subtrahend.Repo,
|
||||
Tag: subtrahend.Tag,
|
||||
Digest: subtrahend.Digest,
|
||||
},
|
||||
CVEList: []*gql_generated.Cve{},
|
||||
Page: &gql_generated.PageInfo{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
return getCVEDiffListForImages(ctx, minuend, subtrahend, r.metaDB, r.cveInfo, requestedPage,
|
||||
@@ -37,7 +52,10 @@ func (r *queryResolver) CVEDiffListForImages(ctx context.Context, minuend gql_ge
|
||||
// ImageListForCve is the resolver for the ImageListForCVE field.
|
||||
func (r *queryResolver) ImageListForCve(ctx context.Context, id string, filter *gql_generated.Filter, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
|
||||
if r.cveInfo == nil {
|
||||
return &gql_generated.PaginatedImagesResult{}, zerr.ErrCVESearchDisabled
|
||||
return &gql_generated.PaginatedImagesResult{
|
||||
Page: &gql_generated.PageInfo{},
|
||||
Results: []*gql_generated.ImageSummary{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
filter = cleanFilter(filter)
|
||||
@@ -48,7 +66,10 @@ func (r *queryResolver) ImageListForCve(ctx context.Context, id string, filter *
|
||||
// ImageListWithCVEFixed is the resolver for the ImageListWithCVEFixed field.
|
||||
func (r *queryResolver) ImageListWithCVEFixed(ctx context.Context, id string, image string, filter *gql_generated.Filter, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
|
||||
if r.cveInfo == nil {
|
||||
return &gql_generated.PaginatedImagesResult{}, zerr.ErrCVESearchDisabled
|
||||
return &gql_generated.PaginatedImagesResult{
|
||||
Page: &gql_generated.PageInfo{},
|
||||
Results: []*gql_generated.ImageSummary{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
filter = cleanFilter(filter)
|
||||
|
||||
Reference in New Issue
Block a user