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  }