Something went wrong!
Hang in there while we get back on track
Password Reset Feature Security Analysis
Analyzes a basic password reset flow to identify missing security, validation, and error handling edge cases. Demonstrates comprehensive coverage of authentication-related features including email enumeration prevention, rate limiting, and token expiration.
Input
What you provide to the skill
Password reset feature - user clicks ‘forgot password’, enters email, receives reset link
Output
What the skill generates for you
Edge Case Analysis: Password Reset Feature
Current AC Coverage: 30% (happy path only, missing critical security, error handling, and abuse prevention edge cases)
Missing Edge Cases Identified (14 cases)
Category: Empty/Null States
Edge Case 1: What if user submits empty email field? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “Reset button is disabled when email field is empty”
- “If somehow submitted empty, show error: ‘Email address is required’”
- “Empty field is highlighted with red border”
Why Important: Basic validation prevents unnecessary server calls and improves UX
Category: Input Validation
Edge Case 2: What if email format is invalid? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “Validate email format client-side (must contain @ and valid domain structure)”
- “Show error below field: ‘Please enter a valid email address’”
- “Disable reset button until email is valid format”
Why Important: Prevents API calls with invalid data, improves user experience
Edge Case 3: What if email contains SQL injection or XSS attempts? 🔴 CRITICAL PRIORITY
Current Status: Not defined (security risk)
Suggested AC:
- “All email inputs are properly sanitized server-side”
- “Use parameterized queries to prevent SQL injection”
- “Escape special characters to prevent XSS”
- “Log suspicious input patterns for security monitoring”
Why Important: Critical security requirement to prevent attacks
Edge Case 4: What if email is extremely long (500+ characters)? 🟡 MEDIUM PRIORITY
Current Status: Not defined
Suggested AC:
- “Email field has maximum length of 255 characters”
- “Show error if exceeded: ‘Email address is too long’”
- “Prevent additional character input beyond limit”
Why Important: Prevents potential buffer overflow or database issues
Category: Error Scenarios
Edge Case 5: What if email doesn’t exist in system? 🔴 CRITICAL PRIORITY
Current Status: Not defined (security vulnerability)
Suggested AC:
- “Show generic success message even if email doesn’t exist: ‘If this email is in our system, you will receive a reset link shortly’”
- “Do not reveal whether email exists in database”
- “Send confirmation with same timing regardless of email existence”
Why Important: Security - prevents email enumeration attacks where attackers discover valid user emails
Edge Case 6: What if email service fails to send the reset link? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “If email service fails, show generic success message to user (don’t reveal failure)”
- “Log email delivery failure with full error details for ops team”
- “Queue email for retry (3 attempts over 15 minutes)”
- “Alert ops team if retries fail”
Why Important: Prevents service outages from blocking users; maintains security posture
Edge Case 7: What if email server is down or unreachable? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “System continues to show success message to user”
- “Queue reset request for when service recovers”
- “Trigger monitoring alert for email service outage”
- “Reset requests expire after 24 hours if undeliverable”
Why Important: Graceful degradation; maintains user confidence during outages
Edge Case 8: What if reset token generation fails? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “Show error: ‘Unable to process password reset. Please try again shortly.’”
- “Log token generation failure with stack trace”
- “Do not save partial reset record to database”
Why Important: Prevents stuck states where user expects email that will never arrive
Category: Concurrent/Conflict Scenarios
Edge Case 9: What if user requests multiple reset links rapidly? 🔴 CRITICAL PRIORITY
Current Status: Not defined (abuse potential)
Suggested AC:
- “Rate limit: Allow 1 reset request per email address per 5 minutes”
- “If limit exceeded, show: ‘Password reset already requested. Please check your email or try again in X minutes.’”
- “Don’t invalidate existing valid token when new request is blocked”
- “Log excessive reset attempts for security review”
Why Important: Prevents spam, abuse, and email bombing; reduces server load
Edge Case 10: What if user requests reset while previous token is still valid? 🟡 MEDIUM PRIORITY
Current Status: Not defined
Suggested AC:
- “New reset request invalidates all previous reset tokens for that email”
- “Send new reset email with fresh token”
- “Show message: ‘A new password reset link has been sent’”
- “Previous reset links show error: ‘This reset link has expired. Please request a new one.’”
Why Important: Security - ensures only most recent reset attempt is valid
Edge Case 11: What if user clicks reset link after already resetting password? 🟡 MEDIUM PRIORITY
Current Status: Not defined
Suggested AC:
- “Token is invalidated immediately after successful password reset”
- “If user clicks expired token, show: ‘This reset link has already been used or has expired’”
- “Provide link to request new reset or to login page”
Why Important: Prevents confusion and potential security issues with reused tokens
Category: Boundary Conditions
Edge Case 12: How long is the reset link valid? 🔴 CRITICAL PRIORITY
Current Status: Not defined (security requirement)
Suggested AC:
- “Reset tokens expire after 1 hour from generation”
- “If user clicks expired link, show: ‘This reset link has expired. Reset links are valid for 1 hour.’”
- “Provide ‘Request New Reset Link’ button on expired page”
- “Include expiration timestamp in reset email”
Why Important: Security best practice; limits window for token compromise
Edge Case 13: What if user’s account is locked, suspended, or deleted? 🔴 HIGH PRIORITY
Current Status: Not defined
Suggested AC:
- “Show same generic success message regardless of account status”
- “Do not send reset email for suspended/deleted accounts”
- “For locked accounts, send email explaining account is locked with support contact”
- “Log reset attempts on non-active accounts for security review”
Why Important: Security - prevents account enumeration; provides appropriate support path
Category: Network/Performance
Edge Case 14: What if reset request takes very long (slow connection)? 🟡 MEDIUM PRIORITY
Current Status: Not defined
Suggested AC:
- “Show loading spinner on ‘Send Reset Link’ button during request”
- “Disable button to prevent duplicate submissions”
- “Timeout after 30 seconds with error: ‘Request timed out. Please try again.’”
- “Re-enable button after error or timeout”
Why Important: Prevents double submissions and user confusion during slow network
Priority Summary
CRITICAL/HIGH (10 cases) - Must address:
- Email doesn’t exist in system (security - email enumeration)
- SQL injection/XSS prevention in email input
- Rate limiting for reset requests (abuse prevention)
- Reset token expiration time (security)
- Email format validation
- Empty email validation
- Email service failure handling
- Email server outage handling
- Token generation failure
- Account status handling (locked/suspended/deleted)
MEDIUM (4 cases) - Should address:
- Multiple tokens for same user (token invalidation)
- Reused/already-used tokens
- Extremely long email addresses
- Network timeout and loading states
Coverage Improvement
Before: 3 acceptance criteria (happy path only)
After: 17 acceptance criteria (3 original + 14 edge cases)
Estimated Bugs Prevented: 12-15 (including critical security vulnerabilities and abuse vectors)
Recommended Next Steps:
- URGENT: Review security edge cases with engineering and security team (email enumeration, rate limiting, token expiration, injection prevention)
- Add CRITICAL/HIGH priority cases to acceptance criteria immediately
- Implement rate limiting and abuse prevention before launch
- Set up monitoring for reset request patterns and email delivery failures
- Document incident response for email service outages
- Consider adding email confirmation or secondary verification for sensitive accounts
- Test edge cases with security/penetration testing tools
About This Skill
Systematically analyzes feature descriptions and existing acceptance criteria to identify missing edge cases across six categories. Generates specific, testable acceptance criteria for each missing edge case with priority ratings.
View Skill DetailsMore Examples
API Rate Limiting Technical Edge Cases
Analyzes an API rate limiting feature to identify missing boundary conditions, race conditions, and distributed systems edge cases. Demonstrates technical infrastructure-level analysis including off-by-one errors, concurrent request handling, and failure mode decisions.
Subscription Checkout Payment Edge Cases
Analyzes a subscription checkout flow to identify missing payment failures, validation, and concurrent user edge cases. Demonstrates handling of e-commerce scenarios including card declines, gateway failures, and duplicate submission prevention.