Add test for mysql

This commit is contained in:
Nurahmadie 2014-03-17 11:24:23 +00:00
parent 0c9a765956
commit b9111a3f44

View file

@ -2,7 +2,11 @@ package database
import (
"crypto/aes"
"database/sql"
"fmt"
"log"
"os"
"strings"
"github.com/drone/drone/pkg/database"
"github.com/drone/drone/pkg/database/encrypt"
@ -12,6 +16,11 @@ import (
"github.com/russross/meddler"
)
var (
dbname, driver, dsn, login string
db *sql.DB
)
func init() {
// create a cipher for ecnrypting and decrypting
// database fields
@ -24,11 +33,31 @@ func init() {
// decrypt database fields.
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() {
// 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
user1 := User{
@ -197,4 +226,19 @@ func Setup() {
func Teardown() {
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
}