diff --git a/pkg/api/controller_test.go b/pkg/api/controller_test.go index 7eeeecff..cbdec24d 100644 --- a/pkg/api/controller_test.go +++ b/pkg/api/controller_test.go @@ -6779,6 +6779,40 @@ func TestDistSpecExtensions(t *testing.T) { }) } +func TestHTTPOptionsResponse(t *testing.T) { + Convey("Test http options response", t, func() { + conf := config.New() + port := test.GetFreePort() + conf.HTTP.Port = port + baseURL := test.GetBaseURL(port) + + ctlr := api.NewController(conf) + + firstDir := t.TempDir() + + secondDir := t.TempDir() + defer os.RemoveAll(firstDir) + defer os.RemoveAll(secondDir) + + ctlr.Config.Storage.RootDirectory = firstDir + subPaths := make(map[string]config.StorageConfig) + subPaths["/a"] = config.StorageConfig{ + RootDirectory: secondDir, + } + + ctlr.Config.Storage.SubPaths = subPaths + ctrlManager := test.NewControllerManager(ctlr) + + ctrlManager.StartAndWait(port) + + resp, _ := resty.R().Options(baseURL + constants.RoutePrefix + constants.ExtCatalogPrefix) + So(resp, ShouldNotBeNil) + So(resp.StatusCode(), ShouldEqual, http.StatusNoContent) + + defer ctrlManager.StopServer() + }) +} + func getAllBlobs(imagePath string) []string { blobList := make([]string, 0) diff --git a/pkg/cli/cve_cmd_test.go b/pkg/cli/cve_cmd_test.go index b2db53ca..ef4911c7 100644 --- a/pkg/cli/cve_cmd_test.go +++ b/pkg/cli/cve_cmd_test.go @@ -28,10 +28,13 @@ import ( "zotregistry.io/zot/pkg/api" "zotregistry.io/zot/pkg/api/config" extconf "zotregistry.io/zot/pkg/extensions/config" + "zotregistry.io/zot/pkg/extensions/monitoring" cveinfo "zotregistry.io/zot/pkg/extensions/search/cve" cvemodel "zotregistry.io/zot/pkg/extensions/search/cve/model" "zotregistry.io/zot/pkg/log" "zotregistry.io/zot/pkg/meta/repodb" + "zotregistry.io/zot/pkg/storage" + "zotregistry.io/zot/pkg/storage/local" "zotregistry.io/zot/pkg/test" "zotregistry.io/zot/pkg/test/mocks" ) @@ -418,9 +421,28 @@ func TestNegativeServerResponse(t *testing.T) { dir := t.TempDir() - test.CopyTestFiles("../../test/data/zot-cve-test", path.Join(dir, "zot-cve-test")) + imageStore := local.NewImageStore(dir, false, 0, false, false, + log.NewLogger("debug", ""), monitoring.NewMetricsServer(false, log.NewLogger("debug", "")), nil, nil) - err := os.RemoveAll(path.Join(dir, "zot-cve-test/blobs")) + storeController := storage.StoreController{ + DefaultStore: imageStore, + } + + num := 10 + config, layers, manifest, err := test.GetRandomImageComponents(num) + So(err, ShouldBeNil) + + err = test.WriteImageToFileSystem( + test.Image{ + Manifest: manifest, + Layers: layers, + Config: config, + Reference: "0.0.1", + }, "zot-cve-test", storeController, + ) + So(err, ShouldBeNil) + + err = os.RemoveAll(path.Join(dir, "zot-cve-test/blobs")) if err != nil { panic(err) } @@ -500,8 +522,6 @@ func TestServerCVEResponse(t *testing.T) { dir := t.TempDir() - test.CopyTestFiles("../../test/data/zot-cve-test", path.Join(dir, "zot-cve-test")) - conf.Storage.RootDirectory = dir trivyConfig := &extconf.TrivyConfig{ DBRepository: "ghcr.io/project-zot/trivy-db", @@ -550,6 +570,17 @@ func TestServerCVEResponse(t *testing.T) { test.WaitTillServerReady(url) + config, layers, manifest, err := test.GetImageComponents(100) + if err != nil { + panic(err) + } + + err = test.PushTestImage("zot-cve-test", "0.0.1", url, + manifest, config, layers) + if err != nil { + panic(err) + } + _, err = test.ReadLogFileAndSearchString(logPath, "DB update completed, next update scheduled", 90*time.Second) if err != nil { panic(err) @@ -627,8 +658,7 @@ func TestServerCVEResponse(t *testing.T) { str := space.ReplaceAllString(buff.String(), " ") str = strings.TrimSpace(str) So(err, ShouldBeNil) - So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+ - test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" N/A false 75MB") + So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 N/A false 548B") }) Convey("Test images by CVE ID - GQL - invalid CVE ID", t, func() { @@ -743,8 +773,8 @@ func TestServerCVEResponse(t *testing.T) { space := regexp.MustCompile(`\s+`) str := space.ReplaceAllString(buff.String(), " ") So(err, ShouldBeNil) - So(strings.TrimSpace(str), ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+ - test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" N/A false 75MB") + So(strings.TrimSpace(str), ShouldEqual, + "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 N/A false 548B") }) Convey("Test CVE by name and CVE ID - GQL - invalid name and CVE ID", t, func() { @@ -822,8 +852,7 @@ func TestServerCVEResponse(t *testing.T) { str := space.ReplaceAllString(buff.String(), " ") str = strings.TrimSpace(str) So(err, ShouldBeNil) - So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+ - test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" linux/amd64 false 75MB") + So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 linux/amd64 false 548B") }) Convey("Test images by CVE ID - invalid CVE ID", t, func() { @@ -907,8 +936,8 @@ func TestServerCVEResponse(t *testing.T) { space := regexp.MustCompile(`\s+`) str := space.ReplaceAllString(buff.String(), " ") So(err, ShouldBeNil) - So(strings.TrimSpace(str), ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+ - test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" linux/amd64 false 75MB") + So(strings.TrimSpace(str), ShouldEqual, + "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 linux/amd64 false 548B") }) Convey("Test CVE by name and CVE ID - invalid name and CVE ID", t, func() { @@ -924,7 +953,8 @@ func TestServerCVEResponse(t *testing.T) { space := regexp.MustCompile(`\s+`) str := space.ReplaceAllString(buff.String(), " ") So(err, ShouldBeNil) - So(strings.TrimSpace(str), ShouldNotContainSubstring, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE") + So(strings.TrimSpace(str), ShouldNotContainSubstring, + "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE") }) } diff --git a/pkg/extensions/search/cve/cve_test.go b/pkg/extensions/search/cve/cve_test.go index abe74f86..2c948ba7 100644 --- a/pkg/extensions/search/cve/cve_test.go +++ b/pkg/extensions/search/cve/cve_test.go @@ -8,7 +8,6 @@ import ( "encoding/json" "fmt" "io" - "net/http" "os" "path" "strings" @@ -407,8 +406,8 @@ func TestCVESearchDisabled(t *testing.T) { }, } - dbDir, err := testSetup(t) - So(err, ShouldBeNil) + dbDir := t.TempDir() + conf.Storage.RootDirectory = dbDir defaultVal := true searchConfig := &extconf.SearchConfig{ @@ -715,96 +714,6 @@ func TestCVESearch(t *testing.T) { }) } -func TestCVEConfig(t *testing.T) { - Convey("Verify CVE config", t, func() { - conf := config.New() - port := GetFreePort() - conf.HTTP.Port = port - baseURL := GetBaseURL(port) - htpasswdPath := MakeHtpasswdFile() - defer os.Remove(htpasswdPath) - - conf.HTTP.Auth = &config.AuthConfig{ - HTPasswd: config.AuthHTPasswd{ - Path: htpasswdPath, - }, - } - - ctlr := api.NewController(conf) - - firstDir := t.TempDir() - - secondDir := t.TempDir() - - CopyTestFiles("../../../../test/data", path.Join(secondDir, "a")) - - ctlr.Config.Storage.RootDirectory = firstDir - subPaths := make(map[string]config.StorageConfig) - subPaths["/a"] = config.StorageConfig{ - RootDirectory: secondDir, - } - - ctlr.Config.Storage.SubPaths = subPaths - ctrlManager := NewControllerManager(ctlr) - - ctrlManager.StartAndWait(port) - - resp, _ := resty.R().SetBasicAuth(username, passphrase).Get(baseURL + constants.RoutePrefix + "/") - So(resp, ShouldNotBeNil) - So(resp.StatusCode(), ShouldEqual, 200) - - resp, _ = resty.R().SetBasicAuth(username, passphrase).Get(baseURL + constants.RoutePrefix + constants.ExtCatalogPrefix) - So(resp, ShouldNotBeNil) - So(resp.StatusCode(), ShouldEqual, 200) - - resp, _ = resty.R().SetBasicAuth(username, passphrase).Get(baseURL + "/v2/a/zot-test/tags/list") - So(resp, ShouldNotBeNil) - So(resp.StatusCode(), ShouldEqual, 200) - - resp, _ = resty.R().SetBasicAuth(username, passphrase).Get(baseURL + "/v2/zot-test/tags/list") - So(resp, ShouldNotBeNil) - So(resp.StatusCode(), ShouldEqual, 404) - - defer ctrlManager.StopServer() - }) -} - -func TestHTTPOptionsResponse(t *testing.T) { - Convey("Test http options response", t, func() { - conf := config.New() - port := GetFreePort() - conf.HTTP.Port = port - baseURL := GetBaseURL(port) - - ctlr := api.NewController(conf) - - firstDir := t.TempDir() - - secondDir := t.TempDir() - defer os.RemoveAll(firstDir) - defer os.RemoveAll(secondDir) - - CopyTestFiles("../../../../test/data", path.Join(secondDir, "a")) - - ctlr.Config.Storage.RootDirectory = firstDir - subPaths := make(map[string]config.StorageConfig) - subPaths["/a"] = config.StorageConfig{ - RootDirectory: secondDir, - } - - ctlr.Config.Storage.SubPaths = subPaths - ctrlManager := NewControllerManager(ctlr) - - ctrlManager.StartAndWait(port) - - resp, _ := resty.R().Options(baseURL + constants.RoutePrefix + constants.ExtCatalogPrefix) - So(resp, ShouldNotBeNil) - So(resp.StatusCode(), ShouldEqual, http.StatusNoContent) - - defer ctrlManager.StopServer() - }) -} - func TestCVEStruct(t *testing.T) { Convey("Unit test the CVE struct", t, func() { repoDB, err := bolt.NewBoltDBWrapper(bolt.DBParameters{