This commit is contained in:
parent
ffa7378480
commit
00a87948c2
@ -252,6 +252,7 @@ func SetDatabaseSettingsWithOptions(ctx *context.Context, settings DatabaseSetti
|
|||||||
|
|
||||||
previousConfig := *configData
|
previousConfig := *configData
|
||||||
candidateConfig := *configData
|
candidateConfig := *configData
|
||||||
|
markSetupInProgress(&candidateConfig)
|
||||||
candidateConfig.DbType = dbType
|
candidateConfig.DbType = dbType
|
||||||
candidateConfig.DbDSN = dbDSN
|
candidateConfig.DbDSN = dbDSN
|
||||||
if err = config.WriteConfig(&candidateConfig); err != nil {
|
if err = config.WriteConfig(&candidateConfig); err != nil {
|
||||||
@ -269,6 +270,16 @@ func SetDatabaseSettingsWithOptions(ctx *context.Context, settings DatabaseSetti
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func markSetupInProgress(cfg *config.Config) {
|
||||||
|
if cfg == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
cfg.IsInit = false
|
||||||
|
if !cfg.SetupState.Valid() {
|
||||||
|
cfg.SetupState = config.SetupStateBootstrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func closeDatabaseInstance() {
|
func closeDatabaseInstance() {
|
||||||
if db.Instance == nil {
|
if db.Instance == nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@ -10,10 +10,37 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.pcux.cn/xuans/Smail/config"
|
||||||
"github.com/go-sql-driver/mysql"
|
"github.com/go-sql-driver/mysql"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestMarkSetupInProgressClearsLegacyInitializationFlag(t *testing.T) {
|
||||||
|
cfg := &config.Config{IsInit: true}
|
||||||
|
|
||||||
|
markSetupInProgress(cfg)
|
||||||
|
|
||||||
|
if cfg.IsInit {
|
||||||
|
t.Fatal("legacy initialization flag must be cleared during setup")
|
||||||
|
}
|
||||||
|
if cfg.SetupState != config.SetupStateBootstrap {
|
||||||
|
t.Fatalf("setup state = %q, want %q", cfg.SetupState, config.SetupStateBootstrap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMarkSetupInProgressPreservesExplicitSetupState(t *testing.T) {
|
||||||
|
cfg := &config.Config{IsInit: true, SetupState: config.SetupStateNew}
|
||||||
|
|
||||||
|
markSetupInProgress(cfg)
|
||||||
|
|
||||||
|
if cfg.IsInit {
|
||||||
|
t.Fatal("legacy initialization flag must be cleared during setup")
|
||||||
|
}
|
||||||
|
if cfg.SetupState != config.SetupStateNew {
|
||||||
|
t.Fatalf("setup state = %q, want %q", cfg.SetupState, config.SetupStateNew)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type fakeSetupDB struct {
|
type fakeSetupDB struct {
|
||||||
pingErrors []error
|
pingErrors []error
|
||||||
pingCalls int
|
pingCalls int
|
||||||
|
|||||||
@ -21,6 +21,7 @@ func SetDomainSettings(smtpDomain, webDomain, multiDomains string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err)
|
return errors.Wrap(err)
|
||||||
}
|
}
|
||||||
|
markSetupInProgress(configData)
|
||||||
|
|
||||||
smtpDomain, err = validation.NormalizeDomain(smtpDomain)
|
smtpDomain, err = validation.NormalizeDomain(smtpDomain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user