Compare commits

...

4 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
dc037549b0 Fix parsing error for all empty config int64 values, not just verificationCodeTimeout
Co-authored-by: nomeguy <85475922+nomeguy@users.noreply.github.com>
2026-02-02 12:46:21 +00:00
copilot-swe-agent[bot]
feff1f5f50 Address code review feedback: add constant for default timeout
Co-authored-by: nomeguy <85475922+nomeguy@users.noreply.github.com>
2026-02-02 12:34:50 +00:00
copilot-swe-agent[bot]
a410889de6 Add default value for verificationCodeTimeout to fix signup with Email OTP
Co-authored-by: nomeguy <85475922+nomeguy@users.noreply.github.com>
2026-02-02 12:31:30 +00:00
copilot-swe-agent[bot]
43e8bfe7a9 Initial plan 2026-02-02 12:28:17 +00:00
2 changed files with 47 additions and 0 deletions

View File

@@ -24,6 +24,11 @@ import (
"github.com/beego/beego/v2/server/web"
)
const (
// DefaultVerificationCodeTimeout is the default timeout for verification codes in minutes
DefaultVerificationCodeTimeout = 10
)
func init() {
// this array contains the beego configuration items that may be modified via env
presetConfigItems := []string{"httpport", "appname"}
@@ -66,6 +71,14 @@ func GetConfigBool(key string) bool {
func GetConfigInt64(key string) (int64, error) {
value := GetConfigString(key)
if value == "" {
// Return default values for known keys with empty config
if key == "verificationCodeTimeout" {
return DefaultVerificationCodeTimeout, nil
}
// For other keys, return 0 when config value is empty
return 0, nil
}
num, err := strconv.ParseInt(value, 10, 64)
if err != nil {
return 0, fmt.Errorf("GetConfigInt64(%s) error, %s", key, err.Error())

View File

@@ -125,3 +125,37 @@ func TestGetConfigLogs(t *testing.T) {
assert.Equal(t, scenery.expected, quota)
}
}
func TestGetConfigInt64WithDefault(t *testing.T) {
scenarios := []struct {
description string
input string
expected int64
}{
{"Should return default 10 minutes for missing verificationCodeTimeout", "verificationCodeTimeout", 10},
{"Should return 0 for missing inactiveTimeoutMinutes", "inactiveTimeoutMinutes", 0},
}
// Create a temporary config without verificationCodeTimeout
tempConfig := `appname = casdoor
httpport = 8000
inactiveTimeoutMinutes = `
tempFile, err := os.CreateTemp("", "test_app.conf")
assert.Nil(t, err)
defer os.Remove(tempFile.Name())
_, err = tempFile.WriteString(tempConfig)
assert.Nil(t, err)
tempFile.Close()
err = web.LoadAppConfig("ini", tempFile.Name())
assert.Nil(t, err)
for _, scenery := range scenarios {
t.Run(scenery.description, func(t *testing.T) {
actual, err := GetConfigInt64(scenery.input)
assert.Nil(t, err)
assert.Equal(t, scenery.expected, actual)
})
}
}