mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-17 03:45:13 +00:00
Add test for mysql
This commit is contained in:
parent
0c9a765956
commit
b9111a3f44
1 changed files with 45 additions and 1 deletions
|
@ -2,7 +2,11 @@ package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/drone/drone/pkg/database"
|
"github.com/drone/drone/pkg/database"
|
||||||
"github.com/drone/drone/pkg/database/encrypt"
|
"github.com/drone/drone/pkg/database/encrypt"
|
||||||
|
@ -12,6 +16,11 @@ import (
|
||||||
"github.com/russross/meddler"
|
"github.com/russross/meddler"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
dbname, driver, dsn, login string
|
||||||
|
db *sql.DB
|
||||||
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// create a cipher for ecnrypting and decrypting
|
// create a cipher for ecnrypting and decrypting
|
||||||
// database fields
|
// database fields
|
||||||
|
@ -24,11 +33,31 @@ func init() {
|
||||||
// decrypt database fields.
|
// decrypt database fields.
|
||||||
meddler.Register("gobencrypt", &encrypt.EncryptedField{cipher})
|
meddler.Register("gobencrypt", &encrypt.EncryptedField{cipher})
|
||||||
|
|
||||||
|
// Check for $DB_ENV
|
||||||
|
dbenv := os.Getenv("DB_ENV")
|
||||||
|
if dbenv == "mysql" {
|
||||||
|
driver = dbenv
|
||||||
|
dbname = "drone_test"
|
||||||
|
login = os.Getenv("MYSQL_LOGIN")
|
||||||
|
if len(login) == 0 {
|
||||||
|
login = "root"
|
||||||
|
}
|
||||||
|
log.Println("Using mysql database ...")
|
||||||
|
} else {
|
||||||
|
driver = "sqlite3"
|
||||||
|
dsn = ":memory:"
|
||||||
|
log.Println("Using sqlite3 database ...")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setup() {
|
func Setup() {
|
||||||
// create an in-memory database
|
// create an in-memory database
|
||||||
database.Init("sqlite3", ":memory:")
|
if driver == "mysql" {
|
||||||
|
idsn := fmt.Sprintf("%s@/?parseTime=true", login)
|
||||||
|
db, dsn = createDB(dbname, idsn)
|
||||||
|
}
|
||||||
|
database.Init(driver, dsn)
|
||||||
|
|
||||||
// create dummy user data
|
// create dummy user data
|
||||||
user1 := User{
|
user1 := User{
|
||||||
|
@ -197,4 +226,19 @@ func Setup() {
|
||||||
|
|
||||||
func Teardown() {
|
func Teardown() {
|
||||||
database.Close()
|
database.Close()
|
||||||
|
if driver == "mysql" {
|
||||||
|
db.Exec(fmt.Sprintf("DROP DATABASE %s", dbname))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createDB(name, datasource string) (*sql.DB, string) {
|
||||||
|
db, err := sql.Open(driver, datasource)
|
||||||
|
if err != nil {
|
||||||
|
panic("Can't connect to database")
|
||||||
|
}
|
||||||
|
if _, err := db.Exec(fmt.Sprintf("CREATE DATABASE %s", name)); err != nil {
|
||||||
|
panic("Can't create database")
|
||||||
|
}
|
||||||
|
dsn := strings.Replace(datasource, "/", fmt.Sprintf("/%s", name), 1)
|
||||||
|
return db, dsn
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue