feat: backend core - auth, user, role, permission, device, webhook, monitoring, cache, repository, service, middleware, API handlers
2026-04-02 11:19:50 +08:00
|
|
|
|
// Package testdb provides a pure-Go SQLite helper for tests.
|
|
|
|
|
|
// It uses modernc.org/sqlite (CGO-free) via gorm.io/driver/sqlite's DriverName override.
|
|
|
|
|
|
package testdb
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
|
|
gormsqlite "gorm.io/driver/sqlite"
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
|
"gorm.io/gorm/logger"
|
test: add comprehensive test coverage and improve code quality
- Add new test files for auth, service, and handler modules
- Improve test organization and coverage
- Refactor code for better maintainability
- Add captcha, settings, stats, and theme handler tests
- Add auth module tests (CAS, OAuth, password, SSO, state)
- Add service layer tests for auth, export, permissions, roles
- All Go tests pass (exit code 0)
- All frontend tests pass (325 tests in 59 files)
2026-04-17 20:43:50 +08:00
|
|
|
|
_ "modernc.org/sqlite" // 注册纯Go SQLite驱动,驱动名 "sqlite"
|
feat: backend core - auth, user, role, permission, device, webhook, monitoring, cache, repository, service, middleware, API handlers
2026-04-02 11:19:50 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Open 使用 modernc.org/sqlite(纯Go,无需CGO)打开内存测试数据库。
|
|
|
|
|
|
// 驱动名必须是 "sqlite"(modernc 注册),而非 gorm 默认的 "sqlite3"(mattn/CGO)。
|
|
|
|
|
|
func Open(t testing.TB) *gorm.DB {
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
|
|
|
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
|
|
|
|
|
|
DriverName: "sqlite",
|
|
|
|
|
|
DSN: "file::memory:?cache=shared&mode=memory",
|
|
|
|
|
|
}), &gorm.Config{
|
|
|
|
|
|
Logger: logger.Default.LogMode(logger.Silent),
|
|
|
|
|
|
})
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
t.Skipf("跳过数据库测试(SQLite不可用): %v", err)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return db
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// OpenWith 使用自定义DSN
|
|
|
|
|
|
func OpenWith(t testing.TB, dsn string) *gorm.DB {
|
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
|
|
|
db, err := gorm.Open(gormsqlite.New(gormsqlite.Config{
|
|
|
|
|
|
DriverName: "sqlite",
|
|
|
|
|
|
DSN: dsn,
|
|
|
|
|
|
}), &gorm.Config{
|
|
|
|
|
|
Logger: logger.Default.LogMode(logger.Silent),
|
|
|
|
|
|
})
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
t.Skipf("跳过数据库测试(SQLite不可用): %v", err)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return db
|
|
|
|
|
|
}
|