mirror of
https://github.com/status-im/status-go.git
synced 2025-01-10 14:47:06 +00:00
2df9df10ab
interface for initializing db, which is implemented for appdatabase and walletdatabase. TBD for multiaccounts DB. Unified DB initializion for all tests using helpers and new interface. Reduced sqlcipher kdf iterations for all tests to 1.
74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package helpers
|
|
|
|
import (
|
|
"database/sql"
|
|
"io/ioutil"
|
|
"os"
|
|
|
|
"github.com/status-im/status-go/common/dbsetup"
|
|
"github.com/status-im/status-go/protocol/sqlite"
|
|
)
|
|
|
|
const kdfIterationsNumberForTests = 1
|
|
|
|
// SetupTestSQLDB creates a temporary sqlite database file, initialises and then returns with a teardown func
|
|
func SetupTestSQLDB(dbInit dbsetup.DatabaseInitializer, prefix string) (*sql.DB, func() error, error) {
|
|
tmpfile, err := ioutil.TempFile("", prefix)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
db, err := dbInit.Initialize(tmpfile.Name(), "password", kdfIterationsNumberForTests)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
return db, func() error {
|
|
err := db.Close()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.Remove(tmpfile.Name())
|
|
}, nil
|
|
}
|
|
|
|
func SetupTestMemorySQLDB(dbInit dbsetup.DatabaseInitializer) (*sql.DB, error) {
|
|
db, err := dbInit.Initialize(sqlite.InMemoryPath, "password", kdfIterationsNumberForTests)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return db, nil
|
|
}
|
|
|
|
func ColumnExists(db *sql.DB, tableName string, columnName string) (bool, error) {
|
|
rows, err := db.Query("PRAGMA table_info(" + tableName + ")")
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var cid int
|
|
var name string
|
|
var dataType string
|
|
var notNull bool
|
|
var dFLTValue sql.NullString
|
|
var pk int
|
|
|
|
for rows.Next() {
|
|
err := rows.Scan(&cid, &name, &dataType, ¬Null, &dFLTValue, &pk)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
if name == columnName {
|
|
return true, nil
|
|
}
|
|
}
|
|
|
|
if rows.Err() != nil {
|
|
return false, rows.Err()
|
|
}
|
|
|
|
return false, nil
|
|
}
|