refactor: simplify dataset initialization

This commit is contained in:
2026-07-23 22:44:04 +08:00
parent bc7fa40995
commit af8de3eff6
5 changed files with 98 additions and 329 deletions

View File

@@ -13,33 +13,42 @@ import (
func TestInitUserCreatesRootUserWhenTableIsEmpty(t *testing.T) {
database := newUserTestDatabase(t)
require.NoError(t, InitUser(database))
user, err := InitUser(database)
require.NoError(t, err)
var users []models.SaUser
require.NoError(t, database.Find(&users).Error)
require.Len(t, users, 1)
require.Equal(t, users[0].ID, user.ID)
require.Equal(t, users[0].Identity, user.Identity)
require.Equal(t, rootUsername, users[0].Email)
require.Equal(t, rootUsername, users[0].DisplayName)
require.Equal(t, rootRole, users[0].Role)
require.NoError(t, bcrypt.CompareHashAndPassword([]byte(users[0].PasswordHash), []byte(rootPassword)))
}
func TestInitUserDoesNothingWhenTableIsNotEmpty(t *testing.T) {
func TestInitUserReturnsExistingRootWhenTableIsNotEmpty(t *testing.T) {
database := newUserTestDatabase(t)
existing := models.SaUser{
Email: "existing@example.com",
DisplayName: "Existing User",
root := models.SaUser{
Email: rootUsername,
DisplayName: rootUsername,
PasswordHash: "existing-hash",
Role: "user",
Role: rootRole,
}
require.NoError(t, database.Create(&existing).Error)
require.NoError(t, database.Create(&root).Error)
require.NoError(t, database.Create(&models.SaUser{
Email: "other@example.com", DisplayName: "Other",
PasswordHash: "hash", Role: "user",
}).Error)
require.NoError(t, InitUser(database))
user, err := InitUser(database)
require.NoError(t, err)
var users []models.SaUser
require.NoError(t, database.Find(&users).Error)
require.Len(t, users, 1)
require.Equal(t, existing.Email, users[0].Email)
require.Len(t, users, 2)
require.Equal(t, root.ID, user.ID)
require.Equal(t, root.Identity, user.Identity)
}
func newUserTestDatabase(t *testing.T) *gorm.DB {