mirror of
https://github.com/project-zot/zot.git
synced 2024-12-16 21:56:37 -05:00
refactor(test): update cve tests to stop duplicating test/data if not needed (#1232)
Signed-off-by: Nicol Draghici <idraghic@cisco.com>
This commit is contained in:
parent
6bbf730061
commit
23efe24c72
3 changed files with 79 additions and 106 deletions
|
@ -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 {
|
func getAllBlobs(imagePath string) []string {
|
||||||
blobList := make([]string, 0)
|
blobList := make([]string, 0)
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,13 @@ import (
|
||||||
"zotregistry.io/zot/pkg/api"
|
"zotregistry.io/zot/pkg/api"
|
||||||
"zotregistry.io/zot/pkg/api/config"
|
"zotregistry.io/zot/pkg/api/config"
|
||||||
extconf "zotregistry.io/zot/pkg/extensions/config"
|
extconf "zotregistry.io/zot/pkg/extensions/config"
|
||||||
|
"zotregistry.io/zot/pkg/extensions/monitoring"
|
||||||
cveinfo "zotregistry.io/zot/pkg/extensions/search/cve"
|
cveinfo "zotregistry.io/zot/pkg/extensions/search/cve"
|
||||||
cvemodel "zotregistry.io/zot/pkg/extensions/search/cve/model"
|
cvemodel "zotregistry.io/zot/pkg/extensions/search/cve/model"
|
||||||
"zotregistry.io/zot/pkg/log"
|
"zotregistry.io/zot/pkg/log"
|
||||||
"zotregistry.io/zot/pkg/meta/repodb"
|
"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"
|
||||||
"zotregistry.io/zot/pkg/test/mocks"
|
"zotregistry.io/zot/pkg/test/mocks"
|
||||||
)
|
)
|
||||||
|
@ -418,9 +421,28 @@ func TestNegativeServerResponse(t *testing.T) {
|
||||||
|
|
||||||
dir := t.TempDir()
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -500,8 +522,6 @@ func TestServerCVEResponse(t *testing.T) {
|
||||||
|
|
||||||
dir := t.TempDir()
|
dir := t.TempDir()
|
||||||
|
|
||||||
test.CopyTestFiles("../../test/data/zot-cve-test", path.Join(dir, "zot-cve-test"))
|
|
||||||
|
|
||||||
conf.Storage.RootDirectory = dir
|
conf.Storage.RootDirectory = dir
|
||||||
trivyConfig := &extconf.TrivyConfig{
|
trivyConfig := &extconf.TrivyConfig{
|
||||||
DBRepository: "ghcr.io/project-zot/trivy-db",
|
DBRepository: "ghcr.io/project-zot/trivy-db",
|
||||||
|
@ -550,6 +570,17 @@ func TestServerCVEResponse(t *testing.T) {
|
||||||
|
|
||||||
test.WaitTillServerReady(url)
|
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)
|
_, err = test.ReadLogFileAndSearchString(logPath, "DB update completed, next update scheduled", 90*time.Second)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -627,8 +658,7 @@ func TestServerCVEResponse(t *testing.T) {
|
||||||
str := space.ReplaceAllString(buff.String(), " ")
|
str := space.ReplaceAllString(buff.String(), " ")
|
||||||
str = strings.TrimSpace(str)
|
str = strings.TrimSpace(str)
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+
|
So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 N/A false 548B")
|
||||||
test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" N/A false 75MB")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("Test images by CVE ID - GQL - invalid CVE ID", t, func() {
|
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+`)
|
space := regexp.MustCompile(`\s+`)
|
||||||
str := space.ReplaceAllString(buff.String(), " ")
|
str := space.ReplaceAllString(buff.String(), " ")
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(strings.TrimSpace(str), ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+
|
So(strings.TrimSpace(str), ShouldEqual,
|
||||||
test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" N/A false 75MB")
|
"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() {
|
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 := space.ReplaceAllString(buff.String(), " ")
|
||||||
str = strings.TrimSpace(str)
|
str = strings.TrimSpace(str)
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+
|
So(str, ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 82836dd7 linux/amd64 false 548B")
|
||||||
test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" linux/amd64 false 75MB")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("Test images by CVE ID - invalid CVE ID", t, func() {
|
Convey("Test images by CVE ID - invalid CVE ID", t, func() {
|
||||||
|
@ -907,8 +936,8 @@ func TestServerCVEResponse(t *testing.T) {
|
||||||
space := regexp.MustCompile(`\s+`)
|
space := regexp.MustCompile(`\s+`)
|
||||||
str := space.ReplaceAllString(buff.String(), " ")
|
str := space.ReplaceAllString(buff.String(), " ")
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(strings.TrimSpace(str), ShouldEqual, "IMAGE NAME TAG DIGEST OS/ARCH SIGNED SIZE zot-cve-test 0.0.1 "+
|
So(strings.TrimSpace(str), ShouldEqual,
|
||||||
test.GetTestBlobDigest("zot-cve-test", "manifest").Encoded()[:8]+" linux/amd64 false 75MB")
|
"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() {
|
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+`)
|
space := regexp.MustCompile(`\s+`)
|
||||||
str := space.ReplaceAllString(buff.String(), " ")
|
str := space.ReplaceAllString(buff.String(), " ")
|
||||||
So(err, ShouldBeNil)
|
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")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -407,8 +406,8 @@ func TestCVESearchDisabled(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
dbDir, err := testSetup(t)
|
dbDir := t.TempDir()
|
||||||
So(err, ShouldBeNil)
|
|
||||||
conf.Storage.RootDirectory = dbDir
|
conf.Storage.RootDirectory = dbDir
|
||||||
defaultVal := true
|
defaultVal := true
|
||||||
searchConfig := &extconf.SearchConfig{
|
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) {
|
func TestCVEStruct(t *testing.T) {
|
||||||
Convey("Unit test the CVE struct", t, func() {
|
Convey("Unit test the CVE struct", t, func() {
|
||||||
repoDB, err := bolt.NewBoltDBWrapper(bolt.DBParameters{
|
repoDB, err := bolt.NewBoltDBWrapper(bolt.DBParameters{
|
||||||
|
|
Loading…
Reference in a new issue