mirror of
https://github.com/go-shiori/shiori.git
synced 2025-10-10 13:48:19 +08:00
* refactor: base http server stdlib * refactor: swagger and frontend routes * fix: use global middlewares * refactor: removed gin from testutils * fix: object references in legacy webserver * refactor: legacy, swagger and system handlers * fix: added verbs to handlers * fix: server handlers ordering * refactor: bookmarks handlers * refactor: system api routes * tests: bookmark handlers * refactor: migrated api auth routes * chore: remove unused middlewares * docs: add swagger docs to refactored system api * chore: remove old auth routes * refactor: account apis * chore: removed old handlers * fix: api v1 handlers missing middlewares * refactor: migrated tag list route * refactor: bookmark routes * refactor: remove gin * chore: make styles * test: fixed tests * test: generate binary file without text * fix: global middleware missing from system api handler * fix: incorrect api handler * chore: avoid logging screenshot contents * tests: bookmarks domain * tests: shortcuts * test: missing tests * tests: server tests * test: remove test using syscall to avoid windows errors * chore: added middlewares
68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
//go:build !test_sqlite_only
|
|
// +build !test_sqlite_only
|
|
|
|
package database
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/go-shiori/shiori/internal/model"
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
func init() {
|
|
connString := os.Getenv("SHIORI_TEST_MYSQL_URL")
|
|
if connString == "" {
|
|
log.Fatal("mysql tests can't run without a MysQL database, set SHIORI_TEST_MYSQL_URL environment variable")
|
|
}
|
|
}
|
|
|
|
func mysqlTestDatabaseFactory(envKey string) testDatabaseFactory {
|
|
return func(_ *testing.T, ctx context.Context) (model.DB, error) {
|
|
connString := os.Getenv(envKey)
|
|
db, err := OpenMySQLDatabase(ctx, connString)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var dbname string
|
|
err = db.withTx(ctx, func(tx *sqlx.Tx) error {
|
|
err := tx.QueryRow("SELECT DATABASE()").Scan(&dbname)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = tx.ExecContext(ctx, "DROP DATABASE IF EXISTS "+dbname)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = tx.ExecContext(ctx, "CREATE DATABASE "+dbname)
|
|
return err
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if _, err := db.Exec("USE " + dbname); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err = db.Migrate(context.TODO()); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return db, err
|
|
}
|
|
}
|
|
|
|
func TestMysqlsDatabase(t *testing.T) {
|
|
testDatabase(t, mysqlTestDatabaseFactory("SHIORI_TEST_MYSQL_URL"))
|
|
}
|
|
|
|
func TestMariaDBDatabase(t *testing.T) {
|
|
testDatabase(t, mysqlTestDatabaseFactory("SHIORI_TEST_MARIADB_URL"))
|
|
}
|