=== RUN   TestValidatePasswordStrength_TooShort
--- PASS: TestValidatePasswordStrength_TooShort (0.00s)
=== RUN   TestValidatePasswordStrength_OnlyLowercase
--- PASS: TestValidatePasswordStrength_OnlyLowercase (0.00s)
=== RUN   TestValidatePasswordStrength_LowerAndDigit
--- PASS: TestValidatePasswordStrength_LowerAndDigit (0.00s)
=== RUN   TestValidatePasswordStrength_StrictMode_MissingUpper
--- PASS: TestValidatePasswordStrength_StrictMode_MissingUpper (0.00s)
=== RUN   TestValidatePasswordStrength_StrictMode_MissingDigit
--- PASS: TestValidatePasswordStrength_StrictMode_MissingDigit (0.00s)
=== RUN   TestValidatePasswordStrength_StrictMode_Valid
--- PASS: TestValidatePasswordStrength_StrictMode_Valid (0.00s)
=== RUN   TestValidatePasswordStrength_ExactMinLen
--- PASS: TestValidatePasswordStrength_ExactMinLen (0.00s)
=== RUN   TestGetPasswordStrength_Scoring
--- PASS: TestGetPasswordStrength_Scoring (0.00s)
=== RUN   TestGetPasswordStrength_WeakPassword
--- PASS: TestGetPasswordStrength_WeakPassword (0.00s)
=== RUN   TestRegister_WeakPassword_TooShort
--- PASS: TestRegister_WeakPassword_TooShort (0.00s)
=== RUN   TestRegister_WeakPassword_SingleCharType
--- PASS: TestRegister_WeakPassword_SingleCharType (0.00s)
=== RUN   TestRegister_StrongPassword_Accepted
--- PASS: TestRegister_StrongPassword_Accepted (0.06s)
=== RUN   TestLogin_LockAfterMaxAttempts
--- PASS: TestLogin_LockAfterMaxAttempts (0.26s)
=== RUN   TestLogin_SuccessAfterCorrectPassword_ClearsAttempts
--- PASS: TestLogin_SuccessAfterCorrectPassword_ClearsAttempts (0.26s)
=== RUN   TestLogin_ByEmail
--- PASS: TestLogin_ByEmail (0.13s)
=== RUN   TestLogin_ByPhone
--- PASS: TestLogin_ByPhone (0.15s)
=== RUN   TestRefreshToken_Success
--- PASS: TestRefreshToken_Success (0.14s)
=== RUN   TestRefreshToken_InvalidToken
--- PASS: TestRefreshToken_InvalidToken (0.00s)
=== RUN   TestLogout_BlacklistsToken
--- PASS: TestLogout_BlacklistsToken (0.13s)
=== RUN   TestIsTokenBlacklisted_EmptyJTI
--- PASS: TestIsTokenBlacklisted_EmptyJTI (0.00s)
=== RUN   TestGetUserInfo_Success
--- PASS: TestGetUserInfo_Success (0.06s)
=== RUN   TestGetUserInfo_NotFound
--- PASS: TestGetUserInfo_NotFound (0.00s)
=== RUN   TestRegister_Success
--- PASS: TestRegister_Success (0.06s)
=== RUN   TestRegister_DuplicateUsername
--- PASS: TestRegister_DuplicateUsername (0.06s)
=== RUN   TestRegister_DuplicateEmail
--- PASS: TestRegister_DuplicateEmail (0.07s)
=== RUN   TestLogin_Success
--- PASS: TestLogin_Success (0.13s)
=== RUN   TestLogin_WrongPassword
--- PASS: TestLogin_WrongPassword (0.14s)
=== RUN   TestLogin_UserNotFound
--- PASS: TestLogin_UserNotFound (0.00s)
=== RUN   TestLogin_DisabledUser
--- PASS: TestLogin_DisabledUser (0.06s)
=== RUN   TestCaptchaService_Generate
--- PASS: TestCaptchaService_Generate (0.00s)
=== RUN   TestCaptchaService_Verify_WrongAnswer
--- PASS: TestCaptchaService_Verify_WrongAnswer (0.00s)
=== RUN   TestCaptchaService_Verify_EmptyInputs
--- PASS: TestCaptchaService_Verify_EmptyInputs (0.00s)
=== RUN   TestCaptchaService_ValidateCaptcha_EmptyID
--- PASS: TestCaptchaService_ValidateCaptcha_EmptyID (0.00s)
=== RUN   TestCaptchaService_Generate_UniqueIDs
--- PASS: TestCaptchaService_Generate_UniqueIDs (0.01s)
=== RUN   TestDeviceService_CreateAndList
--- PASS: TestDeviceService_CreateAndList (0.01s)
=== RUN   TestDeviceService_DeleteDevice
--- PASS: TestDeviceService_DeleteDevice (0.00s)
=== RUN   TestDeviceService_UpdateDeviceStatus
--- PASS: TestDeviceService_UpdateDeviceStatus (0.00s)
=== RUN   TestLoginLogService_RecordAndList
--- PASS: TestLoginLogService_RecordAndList (0.00s)
=== RUN   TestLoginLogService_RecordFailedLogin
--- PASS: TestLoginLogService_RecordFailedLogin (0.00s)
=== RUN   TestOperationLogService_RecordAndList
--- PASS: TestOperationLogService_RecordAndList (0.00s)
=== RUN   TestPermissionService_CreateAndList
--- PASS: TestPermissionService_CreateAndList (0.00s)
=== RUN   TestPermissionService_DuplicateCode
--- PASS: TestPermissionService_DuplicateCode (0.00s)
=== RUN   TestPermissionService_GetAndUpdate
--- PASS: TestPermissionService_GetAndUpdate (0.00s)
=== RUN   TestPermissionService_Delete
--- PASS: TestPermissionService_Delete (0.00s)
=== RUN   TestRoleService_CreateAndGet
--- PASS: TestRoleService_CreateAndGet (0.00s)
=== RUN   TestRoleService_DuplicateCode
--- PASS: TestRoleService_DuplicateCode (0.00s)
=== RUN   TestRoleService_ListRoles
--- PASS: TestRoleService_ListRoles (0.00s)
=== RUN   TestRoleService_UpdateRole
--- PASS: TestRoleService_UpdateRole (0.00s)
=== RUN   TestRoleService_DeleteRole
--- PASS: TestRoleService_DeleteRole (0.00s)
=== RUN   TestTOTPManager_GenerateSecret
--- PASS: TestTOTPManager_GenerateSecret (0.01s)
=== RUN   TestTOTPManager_Verify_ValidCode
--- PASS: TestTOTPManager_Verify_ValidCode (0.01s)
=== RUN   TestTOTPManager_Verify_InvalidCode
--- PASS: TestTOTPManager_Verify_InvalidCode (0.01s)
=== RUN   TestTOTPService_GetTOTPStatus_Disabled
--- PASS: TestTOTPService_GetTOTPStatus_Disabled (0.00s)
=== RUN   TestTOTPService_GetTOTPStatus_Enabled
--- PASS: TestTOTPService_GetTOTPStatus_Enabled (0.00s)
=== RUN   TestTOTPManager_RecoveryCodesFormat
--- PASS: TestTOTPManager_RecoveryCodesFormat (0.01s)
=== RUN   TestValidateRecoveryCode
--- PASS: TestValidateRecoveryCode (0.00s)
=== RUN   TestUserRepo_GetUser_NotFound
--- PASS: TestUserRepo_GetUser_NotFound (0.00s)
=== RUN   TestUserRepo_EmailConflictDetection
--- PASS: TestUserRepo_EmailConflictDetection (0.00s)
=== RUN   TestUserRepo_DeleteUser
--- PASS: TestUserRepo_DeleteUser (0.00s)
=== RUN   TestUserRepo_UpdateStatus
--- PASS: TestUserRepo_UpdateStatus (0.00s)
=== RUN   TestUserRepo_List_Pagination
--- PASS: TestUserRepo_List_Pagination (0.00s)
=== RUN   TestUserRepo_ListByStatus
--- PASS: TestUserRepo_ListByStatus (0.00s)
=== RUN   TestUserService_GetUser_NotFound
--- PASS: TestUserService_GetUser_NotFound (0.00s)
=== RUN   TestUserService_UpdateUser_Nickname
--- PASS: TestUserService_UpdateUser_Nickname (0.07s)
=== RUN   TestUserService_UpdateUser_EmailConflict
--- PASS: TestUserService_UpdateUser_EmailConflict (0.07s)
=== RUN   TestUserService_UpdateUser_Birthday
--- PASS: TestUserService_UpdateUser_Birthday (0.07s)
=== RUN   TestUserService_UpdatePassword_Success
--- PASS: TestUserService_UpdatePassword_Success (0.34s)
=== RUN   TestUserService_UpdatePassword_WrongOld
--- PASS: TestUserService_UpdatePassword_WrongOld (0.13s)
=== RUN   TestUserService_UpdatePassword_SameAsOld
--- PASS: TestUserService_UpdatePassword_SameAsOld (0.21s)
=== RUN   TestUserService_UpdatePassword_WeakNew
--- PASS: TestUserService_UpdatePassword_WeakNew (0.14s)
=== RUN   TestUserService_ListUsers_All
    user_svc_integration_test.go:249: 期望 total >= 5，实际 1
    user_svc_integration_test.go:252: 期望返回 >= 5 条，实际 1 条
--- FAIL: TestUserService_ListUsers_All (0.07s)
=== RUN   TestUserService_ListUsers_Pagination
    user_svc_integration_test.go:280: 期望 total >= 7，实际 1
    user_svc_integration_test.go:283: 第一页期望 3 条，实际 1
    user_svc_integration_test.go:292: 第三页期望 1 条，实际 0
--- FAIL: TestUserService_ListUsers_Pagination (0.07s)
=== RUN   TestUserService_ListUsers_FilterByStatus
    user_svc_integration_test.go:316: 期望激活用户数=2，实际 1
--- FAIL: TestUserService_ListUsers_FilterByStatus (0.07s)
=== RUN   TestUserService_UpdateUserStatus
--- PASS: TestUserService_UpdateUserStatus (0.07s)
=== RUN   TestWebhookService_CreateAndList
--- PASS: TestWebhookService_CreateAndList (0.00s)
=== RUN   TestWebhookService_Update
--- PASS: TestWebhookService_Update (0.00s)
=== RUN   TestWebhookService_Delete
--- PASS: TestWebhookService_Delete (0.00s)
=== RUN   TestWebhookService_Publish_DeliveryRecord
--- PASS: TestWebhookService_Publish_DeliveryRecord (0.00s)
=== RUN   TestWebhookSubscribesTo
--- PASS: TestWebhookSubscribesTo (0.00s)
FAIL
FAIL	github.com/user-management-system/internal/service	3.310s
FAIL
