docs: project docs, scripts, deployment configs, and evidence

This commit is contained in:
2026-04-02 11:22:17 +08:00
parent 4718980ab5
commit bbeeb63dfa
396 changed files with 165018 additions and 0 deletions

231
svc_robust.txt Normal file
View File

@@ -0,0 +1,231 @@
=== 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.13s)
=== RUN TestRefreshToken_Success
--- PASS: TestRefreshToken_Success (0.13s)
=== 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 TestRobust_Password_ExactMinLength
--- PASS: TestRobust_Password_ExactMinLength (0.00s)
=== RUN TestRobust_Password_OneBelowMinLength
--- PASS: TestRobust_Password_OneBelowMinLength (0.00s)
=== RUN TestRobust_Password_MaxReasonableLength
--- PASS: TestRobust_Password_MaxReasonableLength (0.00s)
=== RUN TestRobust_Password_UnicodeCharacters
--- PASS: TestRobust_Password_UnicodeCharacters (0.00s)
=== RUN TestRobust_Password_AllSpecialChars
--- PASS: TestRobust_Password_AllSpecialChars (0.00s)
=== RUN TestRobust_Password_SpecialPlusDigit
--- PASS: TestRobust_Password_SpecialPlusDigit (0.00s)
=== RUN TestRobust_Password_EmptyString
--- PASS: TestRobust_Password_EmptyString (0.00s)
=== RUN TestRobust_Password_WhitespaceOnly
--- PASS: TestRobust_Password_WhitespaceOnly (0.00s)
=== RUN TestRobust_Register_EmptyUsername
--- PASS: TestRobust_Register_EmptyUsername (0.07s)
=== RUN TestRobust_Register_VeryLongUsername
--- PASS: TestRobust_Register_VeryLongUsername (0.06s)
=== RUN TestRobust_Register_SQLInjectionInUsername
--- PASS: TestRobust_Register_SQLInjectionInUsername (0.06s)
=== RUN TestRobust_Register_XSSInNickname
--- PASS: TestRobust_Register_XSSInNickname (0.06s)
=== RUN TestRobust_Register_InvalidEmailFormats
--- PASS: TestRobust_Register_InvalidEmailFormats (0.33s)
=== RUN TestRobust_Login_EmptyAccount
--- PASS: TestRobust_Login_EmptyAccount (0.00s)
=== RUN TestRobust_Login_EmptyPassword
--- PASS: TestRobust_Login_EmptyPassword (0.13s)
=== RUN TestRobust_Login_NullByteInInput
--- PASS: TestRobust_Login_NullByteInInput (0.00s)
=== RUN TestRobust_Login_VeryLongInput
--- PASS: TestRobust_Login_VeryLongInput (0.00s)
=== RUN TestRobust_Login_DisabledUser
--- PASS: TestRobust_Login_DisabledUser (0.06s)
=== RUN TestRobust_Login_LockedUser
--- PASS: TestRobust_Login_LockedUser (0.06s)
=== RUN TestRobust_Login_InactiveUser
--- PASS: TestRobust_Login_InactiveUser (0.07s)
=== RUN TestRobust_Login_LockCounterResetsAfterSuccess
--- PASS: TestRobust_Login_LockCounterResetsAfterSuccess (0.64s)
=== RUN TestRobust_ValidateToken_Tampered
--- PASS: TestRobust_ValidateToken_Tampered (0.00s)
=== RUN TestRobust_ValidateToken_EmptyString
--- PASS: TestRobust_ValidateToken_EmptyString (0.00s)
=== RUN TestRobust_ValidateToken_WrongSecret
--- PASS: TestRobust_ValidateToken_WrongSecret (0.00s)
=== RUN TestRobust_ValidateToken_RefreshTokenUsedAsAccess
--- PASS: TestRobust_ValidateToken_RefreshTokenUsedAsAccess (0.00s)
=== RUN TestRobust_RefreshToken_WithExpiredToken
--- PASS: TestRobust_RefreshToken_WithExpiredToken (0.01s)
=== RUN TestRobust_ConcurrentRegister_UniqueUsernames
--- PASS: TestRobust_ConcurrentRegister_UniqueUsernames (0.26s)
=== RUN TestRobust_ConcurrentLogin_SameUser
--- PASS: TestRobust_ConcurrentLogin_SameUser (0.21s)
=== RUN TestRobust_ConcurrentRegister_DuplicateUsername
auth_robustness_test.go:438: 并发重复用户名注册16 次成功mock 无锁,真实 DB 应为 1
--- PASS: TestRobust_ConcurrentRegister_DuplicateUsername (0.10s)
=== RUN TestRobust_Logout_Idempotent
--- PASS: TestRobust_Logout_Idempotent (0.13s)
=== RUN TestRobust_Logout_NilRequest
--- PASS: TestRobust_Logout_NilRequest (0.00s)
=== RUN TestRobust_IsTokenBlacklisted_EmptyJTI
--- PASS: TestRobust_IsTokenBlacklisted_EmptyJTI (0.00s)
=== RUN TestRobust_GetPasswordStrength_EmptyInput
--- PASS: TestRobust_GetPasswordStrength_EmptyInput (0.00s)
=== RUN TestRobust_GetPasswordStrength_AllTypes
--- PASS: TestRobust_GetPasswordStrength_AllTypes (0.00s)
=== RUN TestRobust_GetPasswordStrength_MaxLengthInput
--- PASS: TestRobust_GetPasswordStrength_MaxLengthInput (0.00s)
=== RUN TestRegister_Success
--- PASS: TestRegister_Success (0.07s)
=== RUN TestRegister_DuplicateUsername
--- PASS: TestRegister_DuplicateUsername (0.06s)
=== RUN TestRegister_DuplicateEmail
--- PASS: TestRegister_DuplicateEmail (0.06s)
=== RUN TestLogin_Success
--- PASS: TestLogin_Success (0.13s)
=== RUN TestLogin_WrongPassword
--- PASS: TestLogin_WrongPassword (0.13s)
=== 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.32s)
=== RUN TestUserService_UpdatePassword_WrongOld
--- PASS: TestUserService_UpdatePassword_WrongOld (0.13s)
=== RUN TestUserService_UpdatePassword_SameAsOld
--- PASS: TestUserService_UpdatePassword_SameAsOld (0.20s)
=== RUN TestUserService_UpdatePassword_WeakNew
--- PASS: TestUserService_UpdatePassword_WeakNew (0.13s)
=== RUN TestUserService_ListUsers_All
--- PASS: TestUserService_ListUsers_All (0.07s)
=== RUN TestUserService_ListUsers_Pagination
--- PASS: TestUserService_ListUsers_Pagination (0.07s)
=== RUN TestUserService_ListUsers_FilterByStatus
--- PASS: 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)
PASS
ok github.com/user-management-system/internal/service 5.528s