package initialize import ( "testing" "github.com/perfect-panel/server/internal/config" "github.com/perfect-panel/server/internal/model/system" "github.com/perfect-panel/server/pkg/tool" "github.com/stretchr/testify/assert" ) func TestApplyVerifyCodeDefaults(t *testing.T) { testCases := []struct { name string in config.VerifyCode want config.VerifyCode }{ { name: "apply defaults when all zero", in: config.VerifyCode{}, want: config.VerifyCode{ VerifyCodeExpireTime: 900, VerifyCodeLimit: 15, VerifyCodeInterval: 60, }, }, { name: "keep provided values", in: config.VerifyCode{ VerifyCodeExpireTime: 901, VerifyCodeLimit: 16, VerifyCodeInterval: 61, }, want: config.VerifyCode{ VerifyCodeExpireTime: 901, VerifyCodeLimit: 16, VerifyCodeInterval: 61, }, }, { name: "fix invalid non-positive values", in: config.VerifyCode{ VerifyCodeExpireTime: -1, VerifyCodeLimit: 0, VerifyCodeInterval: -10, }, want: config.VerifyCode{ VerifyCodeExpireTime: 900, VerifyCodeLimit: 15, VerifyCodeInterval: 60, }, }, } for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { got := testCase.in applyVerifyCodeDefaults(&got) assert.Equal(t, testCase.want, got) }) } } func TestVerifyCodeReflectUsesCanonicalKeys(t *testing.T) { configs := []*system.System{ {Category: "verify_code", Key: "VerifyCodeExpireTime", Value: "901"}, {Category: "verify_code", Key: "VerifyCodeLimit", Value: "16"}, {Category: "verify_code", Key: "VerifyCodeInterval", Value: "61"}, } var got config.VerifyCode tool.SystemConfigSliceReflectToStruct(configs, &got) applyVerifyCodeDefaults(&got) assert.Equal(t, int64(901), got.VerifyCodeExpireTime) assert.Equal(t, int64(16), got.VerifyCodeLimit) assert.Equal(t, int64(61), got.VerifyCodeInterval) } func TestVerifyCodeReflectIgnoresLegacyKeys(t *testing.T) { configs := []*system.System{ {Category: "verify_code", Key: "ExpireTime", Value: "901"}, {Category: "verify_code", Key: "Limit", Value: "16"}, {Category: "verify_code", Key: "Interval", Value: "61"}, } var got config.VerifyCode tool.SystemConfigSliceReflectToStruct(configs, &got) applyVerifyCodeDefaults(&got) assert.Equal(t, int64(900), got.VerifyCodeExpireTime) assert.Equal(t, int64(15), got.VerifyCodeLimit) assert.Equal(t, int64(60), got.VerifyCodeInterval) }