优化结构
This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
func newPolicyTestData(t *testing.T) *Data {
|
||||
@@ -20,9 +20,11 @@ func newPolicyTestData(t *testing.T) *Data {
|
||||
}
|
||||
data := &Data{
|
||||
gormDB: newReloadableDB(db, nil),
|
||||
runtime: conf.NewRuntime(
|
||||
&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}},
|
||||
&conf.AdminBackend{System: &conf.AdminBackend_System{UseStrictAuth: true}},
|
||||
runtime: config.NewStore(
|
||||
&config.Config{
|
||||
Data: &config.Data{Database: &config.Database{Driver: "sqlite"}},
|
||||
Admin: &config.Admin{System: &config.System{UseStrictAuth: true}},
|
||||
},
|
||||
),
|
||||
}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"kra/internal/biz/system"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
@@ -15,7 +15,7 @@ func authorityUintPointer(value uint) *uint { return &value }
|
||||
|
||||
func enableStrictAuthorityTestMode(data *Data) {
|
||||
currentData, _ := data.runtime.Values()
|
||||
data.runtime.Replace(currentData, &conf.AdminBackend{System: &conf.AdminBackend_System{UseStrictAuth: true}})
|
||||
data.runtime.Replace(&config.Config{Data: currentData, Admin: &config.Admin{System: &config.System{UseStrictAuth: true}}})
|
||||
}
|
||||
|
||||
func TestCopyAuthorityStrictPolicyValidationMatchesAdministrationContract(t *testing.T) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
func TestLogViewerReadsNestedCategoryFiles(t *testing.T) {
|
||||
@@ -22,7 +22,7 @@ func TestLogViewerReadsNestedCategoryFiles(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
runtime := conf.NewRuntime(nil, &conf.AdminBackend{Zap: &conf.AdminBackend_Zap{Director: root}})
|
||||
runtime := config.NewStore(&config.Config{Admin: &config.Admin{Zap: &config.Zap{Director: root}}})
|
||||
repo := &logFileRepo{data: &Data{runtime: runtime}}
|
||||
files, err := repo.LogFiles(context.Background(), date)
|
||||
if err != nil {
|
||||
@@ -41,7 +41,7 @@ func TestLogViewerReadsNestedCategoryFiles(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLogViewerRejectsPathTraversal(t *testing.T) {
|
||||
runtime := conf.NewRuntime(nil, &conf.AdminBackend{Zap: &conf.AdminBackend_Zap{Director: t.TempDir()}})
|
||||
runtime := config.NewStore(&config.Config{Admin: &config.Admin{Zap: &config.Zap{Director: t.TempDir()}}})
|
||||
repo := &logFileRepo{data: &Data{runtime: runtime}}
|
||||
_, err := repo.LogContent(context.Background(), "2026-08-16", "../application.log", nil)
|
||||
if !errors.Is(err, system.ErrInvalidLogPath) {
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
func newMenuTestData(t *testing.T) *Data {
|
||||
@@ -20,7 +20,7 @@ func newMenuTestData(t *testing.T) *Data {
|
||||
}
|
||||
data := &Data{
|
||||
gormDB: newReloadableDB(db, nil),
|
||||
runtime: conf.NewRuntime(&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}}, &conf.AdminBackend{}),
|
||||
runtime: config.NewStore(&config.Config{Data: &config.Data{Database: &config.Database{Driver: "sqlite"}}, Admin: &config.Admin{}}),
|
||||
}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
return data
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"kra/internal/biz/system"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
func TestPermissionSelectedButtonsEmptyShape(t *testing.T) {
|
||||
@@ -16,7 +16,7 @@ func TestPermissionSelectedButtonsEmptyShape(t *testing.T) {
|
||||
if err := db.AutoMigrate(&authorityButtonPO{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: conf.NewRuntime(&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}}, &conf.AdminBackend{})}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewStore(&config.Config{Data: &config.Data{Database: &config.Database{Driver: "sqlite"}}, Admin: &config.Admin{}})}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
|
||||
ids, err := (&permissionRepo{data: data}).SelectedButtons(context.Background(), 1, 2)
|
||||
@@ -36,7 +36,7 @@ func TestPermissionCanRemoveButtonUsesRawQueryID(t *testing.T) {
|
||||
if err := db.AutoMigrate(&authorityButtonPO{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: conf.NewRuntime(&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}}, &conf.AdminBackend{})}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewStore(&config.Config{Data: &config.Data{Database: &config.Database{Driver: "sqlite"}}, Admin: &config.Admin{}})}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
repo := &permissionRepo{data: data}
|
||||
if err := data.gormDB.WithContext(context.Background()).Create(&authorityButtonPO{AuthorityID: 888, MenuID: 10, ButtonID: 31}).Error; err != nil {
|
||||
@@ -67,7 +67,7 @@ func TestPermissionSetSelectedButtonsPreservesDuplicates(t *testing.T) {
|
||||
if err := db.AutoMigrate(&authorityButtonPO{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: conf.NewRuntime(&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}}, &conf.AdminBackend{})}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewStore(&config.Config{Data: &config.Data{Database: &config.Database{Driver: "sqlite"}}, Admin: &config.Admin{}})}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
repo := &permissionRepo{data: data}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
@@ -12,5 +12,5 @@ type Provider interface {
|
||||
DB() *gorm.DB
|
||||
Database(name string) (*gorm.DB, error)
|
||||
DatabaseReady() bool
|
||||
Runtime() *conf.Runtime
|
||||
Runtime() *config.Store
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
"kra/internal/biz/system"
|
||||
"time"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
"kra/internal/security"
|
||||
|
||||
jwt "github.com/golang-jwt/jwt/v5"
|
||||
)
|
||||
|
||||
type runtimeSettings struct{ runtime *conf.Runtime }
|
||||
type runtimeSettings struct{ runtime *config.Store }
|
||||
|
||||
func NewRuntimeSettings(runtime *conf.Runtime) system.RuntimeSettings {
|
||||
func NewRuntimeSettings(runtime *config.Store) system.RuntimeSettings {
|
||||
return &runtimeSettings{runtime: runtime}
|
||||
}
|
||||
|
||||
@@ -30,18 +30,18 @@ func (s *runtimeSettings) RouterPrefix() string {
|
||||
func (s *runtimeSettings) JWTSettings() system.JWTSettings {
|
||||
value := system.JWTSettings{Issuer: "kra", Expires: 7 * 24 * time.Hour, Buffer: 24 * time.Hour}
|
||||
config := s.runtime.Admin()
|
||||
if config == nil || config.Jwt == nil {
|
||||
if config == nil || config.JWT == nil {
|
||||
return value
|
||||
}
|
||||
value.SigningKey = config.Jwt.SigningKey
|
||||
if config.Jwt.Issuer != "" {
|
||||
value.Issuer = config.Jwt.Issuer
|
||||
value.SigningKey = config.JWT.SigningKey
|
||||
if config.JWT.Issuer != "" {
|
||||
value.Issuer = config.JWT.Issuer
|
||||
}
|
||||
if config.Jwt.ExpiresTime != nil {
|
||||
value.Expires = config.Jwt.ExpiresTime.AsDuration()
|
||||
if config.JWT.ExpiresTime > 0 {
|
||||
value.Expires = config.JWT.ExpiresTime
|
||||
}
|
||||
if config.Jwt.BufferTime != nil {
|
||||
value.Buffer = config.Jwt.BufferTime.AsDuration()
|
||||
if config.JWT.BufferTime > 0 {
|
||||
value.Buffer = config.JWT.BufferTime
|
||||
}
|
||||
return value
|
||||
}
|
||||
@@ -53,16 +53,16 @@ func (s *runtimeSettings) CaptchaSettings() system.CaptchaSettings {
|
||||
return value
|
||||
}
|
||||
if config.Captcha.KeyLong > 0 {
|
||||
value.KeyLong = int(config.Captcha.KeyLong)
|
||||
value.KeyLong = config.Captcha.KeyLong
|
||||
}
|
||||
if config.Captcha.ImgWidth > 0 {
|
||||
value.ImageWidth = int(config.Captcha.ImgWidth)
|
||||
value.ImageWidth = config.Captcha.ImgWidth
|
||||
}
|
||||
if config.Captcha.ImgHeight > 0 {
|
||||
value.ImageHeight = int(config.Captcha.ImgHeight)
|
||||
value.ImageHeight = config.Captcha.ImgHeight
|
||||
}
|
||||
if config.Captcha.StoreExpiration != nil {
|
||||
value.StoreExpiration = config.Captcha.StoreExpiration.AsDuration()
|
||||
if config.Captcha.StoreExpiration > 0 {
|
||||
value.StoreExpiration = config.Captcha.StoreExpiration
|
||||
}
|
||||
return value
|
||||
}
|
||||
@@ -72,7 +72,7 @@ func (s *runtimeSettings) MediaSettings() system.MediaSettings {
|
||||
if config == nil || config.Media == nil {
|
||||
return system.MediaSettings{}
|
||||
}
|
||||
return system.MediaSettings{SessionTTL: int(config.Media.SessionTtl), MaxFileSize: config.Media.MaxFileSize, ChunkDir: config.Media.ChunkDir}
|
||||
return system.MediaSettings{SessionTTL: config.Media.SessionTTL, MaxFileSize: config.Media.MaxFileSize, ChunkDir: config.Media.ChunkDir}
|
||||
}
|
||||
|
||||
func (s *runtimeSettings) UseMultipoint() bool {
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
// Data is a small in-package test harness. Production repositories depend on
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
type Data struct {
|
||||
gormDB *reloadableDB
|
||||
redis *reloadableRedis
|
||||
runtime *conf.Runtime
|
||||
runtime *config.Store
|
||||
databaseReady atomic.Bool
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ func (d *Data) DB() *gorm.DB {
|
||||
|
||||
func (d *Data) Database(string) (*gorm.DB, error) { return d.DB(), nil }
|
||||
func (d *Data) DatabaseReady() bool { return d != nil && d.databaseReady.Load() }
|
||||
func (d *Data) Runtime() *conf.Runtime {
|
||||
func (d *Data) Runtime() *config.Store {
|
||||
if d == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
func newTransactionTestData(t *testing.T) *Data {
|
||||
@@ -19,7 +19,7 @@ func newTransactionTestData(t *testing.T) *Data {
|
||||
if err = migrateAll(db); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), redis: newReloadableRedis(nil), runtime: conf.NewRuntime(&conf.Data{Database: &conf.Data_Database{Driver: "sqlite"}}, &conf.AdminBackend{})}
|
||||
data := &Data{gormDB: newReloadableDB(db, nil), redis: newReloadableRedis(nil), runtime: config.NewStore(&config.Config{Data: &config.Data{Database: &config.Database{Driver: "sqlite"}}, Admin: &config.Admin{}})}
|
||||
t.Cleanup(func() { data.gormDB.close() })
|
||||
return data
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user