Files
user-system/internal/service/auth_service_test.go

177 lines
4.8 KiB
Go
Raw Normal View History

test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
package service_test
import (
"testing"
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
"github.com/stretchr/testify/assert"
"github.com/user-management-system/internal/service"
)
// =============================================================================
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
// Auth Service Password Strength Tests
// =============================================================================
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_Empty(t *testing.T) {
info := service.GetPasswordStrength("")
assert.Equal(t, 0, info.Score)
assert.Equal(t, 0, info.Length)
assert.False(t, info.HasUpper)
assert.False(t, info.HasLower)
assert.False(t, info.HasDigit)
assert.False(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_OnlyLowercase(t *testing.T) {
info := service.GetPasswordStrength("abcdef")
assert.Equal(t, 1, info.Score)
assert.Equal(t, 6, info.Length)
assert.False(t, info.HasUpper)
assert.True(t, info.HasLower)
assert.False(t, info.HasDigit)
assert.False(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_OnlyUppercase(t *testing.T) {
info := service.GetPasswordStrength("ABCDEF")
assert.Equal(t, 1, info.Score)
assert.Equal(t, 6, info.Length)
assert.True(t, info.HasUpper)
assert.False(t, info.HasLower)
assert.False(t, info.HasDigit)
assert.False(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_OnlyDigits(t *testing.T) {
info := service.GetPasswordStrength("123456")
assert.Equal(t, 1, info.Score)
assert.Equal(t, 6, info.Length)
assert.False(t, info.HasUpper)
assert.False(t, info.HasLower)
assert.True(t, info.HasDigit)
assert.False(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_OnlySpecial(t *testing.T) {
info := service.GetPasswordStrength("!@#$%")
assert.Equal(t, 1, info.Score)
assert.Equal(t, 5, info.Length)
assert.False(t, info.HasUpper)
assert.False(t, info.HasLower)
assert.False(t, info.HasDigit)
assert.True(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_TwoTypes(t *testing.T) {
// Upper + Lower
info := service.GetPasswordStrength("Abcdef")
assert.Equal(t, 2, info.Score)
assert.True(t, info.HasUpper)
assert.True(t, info.HasLower)
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
// Upper + Digit
info = service.GetPasswordStrength("A12345")
assert.Equal(t, 2, info.Score)
assert.True(t, info.HasUpper)
assert.True(t, info.HasDigit)
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
// Lower + Special
info = service.GetPasswordStrength("abc!")
assert.Equal(t, 2, info.Score)
assert.True(t, info.HasLower)
assert.True(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_ThreeTypes(t *testing.T) {
info := service.GetPasswordStrength("Abc123!")
// When all 4 types are present, score is 4
assert.Equal(t, 4, info.Score)
assert.True(t, info.HasUpper)
assert.True(t, info.HasLower)
assert.True(t, info.HasDigit)
assert.True(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_FourTypes(t *testing.T) {
info := service.GetPasswordStrength("Abc123!@")
assert.Equal(t, 4, info.Score)
assert.True(t, info.HasUpper)
assert.True(t, info.HasLower)
assert.True(t, info.HasDigit)
assert.True(t, info.HasSpecial)
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestGetPasswordStrength_Unicode(t *testing.T) {
// Unicode characters
info := service.GetPasswordStrength("测试密码123")
assert.GreaterOrEqual(t, info.Length, 6)
// Unicode is not counted as upper/lower/digit/special in the current implementation
}
// =============================================================================
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
// LoginRequest GetAccount Tests
// =============================================================================
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Nil(t *testing.T) {
var req *service.LoginRequest
assert.Equal(t, "", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Empty(t *testing.T) {
req := &service.LoginRequest{}
assert.Equal(t, "", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Account(t *testing.T) {
req := &service.LoginRequest{
Account: "testuser",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "testuser", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Username(t *testing.T) {
req := &service.LoginRequest{
Username: "testuser",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "testuser", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Email(t *testing.T) {
req := &service.LoginRequest{
Email: "test@test.com",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "test@test.com", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Phone(t *testing.T) {
req := &service.LoginRequest{
Phone: "+1234567890",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "+1234567890", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Priority(t *testing.T) {
// Account has priority
req := &service.LoginRequest{
Account: "account",
Username: "username",
Email: "email@test.com",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "account", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_Trimmed(t *testing.T) {
// Whitespace should be trimmed
req := &service.LoginRequest{
Username: " testuser ",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "testuser", req.GetAccount())
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
func TestLoginRequest_GetAccount_EmptyAfterTrim(t *testing.T) {
// Only whitespace
req := &service.LoginRequest{
Username: " ",
}
test: add AuthService and CaptchaService unit tests AuthService Tests (22 functions): Password Strength: - GetPasswordStrength_Empty: empty password - GetPasswordStrength_OnlyLowercase: lowercase only - GetPasswordStrength_OnlyUppercase: uppercase only - GetPasswordStrength_OnlyDigits: digits only - GetPasswordStrength_OnlySpecial: special chars only - GetPasswordStrength_TwoTypes: two character types - GetPasswordStrength_ThreeTypes: three character types - GetPasswordStrength_FourTypes: all character types - GetPasswordStrength_Unicode: unicode handling LoginRequest.GetAccount: - GetAccount_Nil: nil request - GetAccount_Empty: empty request - GetAccount_Account: account field - GetAccount_Username: username field - GetAccount_Email: email field - GetAccount_Phone: phone field - GetAccount_Priority: field priority - GetAccount_Trimmed: whitespace trimming - GetAccount_EmptyAfterTrim: whitespace only CaptchaService Tests (15 functions): - Generate_Success: captcha generation - Verify_CorrectAnswer: verification logic - Verify_EmptyID: empty ID validation - Verify_EmptyAnswer: empty answer validation - Verify_NonExistent: non-existent captcha - VerifyOneTimeUse: one-time use - ValidateCaptcha_Success: validation success - ValidateCaptcha_EmptyID: empty ID error - ValidateCaptcha_EmptyAnswer: empty answer error - MultipleGeneration: unique IDs - Verify_CaseInsensitive: case handling - Generate: basic generation - Verify: basic verification - ValidateCaptcha: basic validation - VerifyWithoutDelete: test helper Coverage: - AuthService password validation: ~100% - CaptchaService: ~85%+ - All service tests pass
2026-05-30 14:54:36 +08:00
assert.Equal(t, "", req.GetAccount())
}