github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/dbtest/db.go (about) 1 package dbtest 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/require" 10 11 fixtures "github.com/aquasecurity/bolt-fixtures" 12 "github.com/aquasecurity/trivy-db/pkg/db" 13 jdb "github.com/aquasecurity/trivy-java-db/pkg/db" 14 ) 15 16 // InitDB initializes testing database. 17 func InitDB(t *testing.T, fixtureFiles []string) string { 18 // Create a temp dir 19 dir := t.TempDir() 20 21 dbPath := db.Path(dir) 22 dbDir := filepath.Dir(dbPath) 23 err := os.MkdirAll(dbDir, 0700) 24 require.NoError(t, err) 25 26 // Load testdata into BoltDB 27 loader, err := fixtures.New(dbPath, fixtureFiles) 28 require.NoError(t, err) 29 require.NoError(t, loader.Load()) 30 require.NoError(t, loader.Close()) 31 32 // Initialize DB 33 require.NoError(t, db.Init(dir)) 34 35 return dir 36 } 37 38 func Close() error { 39 return db.Close() 40 } 41 42 func InitJavaDB(t *testing.T, cacheDir string) { 43 dbDir := filepath.Join(cacheDir, "java-db") 44 javaDB, err := jdb.New(dbDir) 45 require.NoError(t, err) 46 err = javaDB.Init() 47 require.NoError(t, err) 48 49 meta := jdb.Metadata{ 50 Version: jdb.SchemaVersion, 51 NextUpdate: time.Now().Add(24 * time.Hour), 52 UpdatedAt: time.Now(), 53 } 54 metac := jdb.NewMetadata(dbDir) 55 err = metac.Update(meta) 56 require.NoError(t, err) 57 }