mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-04-04 11:03:39 +00:00
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package sqlhooks
|
|
|
|
import (
|
|
"database/sql"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/go-sql-driver/mysql"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func setUpMySQL(t *testing.T, dsn string) {
|
|
db, err := sql.Open("mysql", dsn)
|
|
require.NoError(t, err)
|
|
require.NoError(t, db.Ping())
|
|
defer db.Close()
|
|
|
|
_, err = db.Exec("CREATE table IF NOT EXISTS users(id int, name text)")
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestMySQL(t *testing.T) {
|
|
dsn := os.Getenv("SQLHOOKS_MYSQL_DSN")
|
|
if dsn == "" {
|
|
t.Skipf("SQLHOOKS_MYSQL_DSN not set")
|
|
}
|
|
|
|
setUpMySQL(t, dsn)
|
|
|
|
s := newSuite(t, &mysql.MySQLDriver{}, dsn)
|
|
|
|
s.TestHooksExecution(t, "SELECT * FROM users WHERE id = ?", 1)
|
|
s.TestHooksArguments(t, "SELECT * FROM users WHERE id = ? AND name = ?", int64(1), "Gus")
|
|
s.TestHooksErrors(t, "SELECT 1+1")
|
|
|
|
t.Run("DBWorks", func(t *testing.T) {
|
|
s.hooks.noop()
|
|
if _, err := s.db.Exec("DELETE FROM users"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
stmt, err := s.db.Prepare("INSERT INTO users (id, name) VALUES(?, ?)")
|
|
require.NoError(t, err)
|
|
for i := range [5]struct{}{} {
|
|
_, err := stmt.Exec(i, "gus")
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
var count int
|
|
require.NoError(t,
|
|
s.db.QueryRow("SELECT COUNT(*) FROM users").Scan(&count),
|
|
)
|
|
assert.Equal(t, 5, count)
|
|
})
|
|
}
|