package config import ( "testing" sdkconfig "github.com/go-admin-team/go-admin-core/sdk/config" ) func TestApplyEnvironment(t *testing.T) { originalDefault := *sdkconfig.DatabaseConfig originalDatabases := sdkconfig.DatabasesConfig originalApplication := *sdkconfig.ApplicationConfig t.Cleanup(func() { *sdkconfig.DatabaseConfig = originalDefault sdkconfig.DatabasesConfig = originalDatabases *sdkconfig.ApplicationConfig = originalApplication }) sdkconfig.DatabasesConfig = map[string]*sdkconfig.Database{"*": {Driver: "sqlite3", Source: "old.db"}} t.Setenv("GOAUTO_DB_DSN", "user:secret@tcp(127.0.0.1:3306)/goauto") t.Setenv("GOAUTO_DB_DRIVER", "mysql") t.Setenv("GOAUTO_SERVER_PORT", "18000") ApplyEnvironment() if sdkconfig.DatabaseConfig.Driver != "mysql" || sdkconfig.DatabaseConfig.Source == "" { t.Fatal("default database was not overridden") } if database := sdkconfig.DatabasesConfig["*"]; database.Driver != "mysql" || database.Source != sdkconfig.DatabaseConfig.Source { t.Fatal("host database was not overridden") } if sdkconfig.ApplicationConfig.Port != 18000 { t.Fatalf("application port = %d, want 18000", sdkconfig.ApplicationConfig.Port) } } func TestApplyEnvironmentIgnoresEmptyDatabaseAndInvalidPort(t *testing.T) { original := *sdkconfig.DatabaseConfig originalApplication := *sdkconfig.ApplicationConfig t.Cleanup(func() { *sdkconfig.DatabaseConfig = original *sdkconfig.ApplicationConfig = originalApplication }) sdkconfig.DatabaseConfig.Driver = "sqlite3" sdkconfig.DatabaseConfig.Source = "local.db" sdkconfig.ApplicationConfig.Port = 8000 t.Setenv("GOAUTO_DB_DSN", "") t.Setenv("GOAUTO_SERVER_PORT", "70000") ApplyEnvironment() if sdkconfig.DatabaseConfig.Driver != "sqlite3" || sdkconfig.DatabaseConfig.Source != "local.db" { t.Fatal("empty environment unexpectedly changed database config") } if sdkconfig.ApplicationConfig.Port != 8000 { t.Fatal("invalid environment unexpectedly changed application port") } }