Implementation: SCRUM-490 - NumberFormatException when parsing magicNumber query parameter - #50
Implementation: SCRUM-490 - NumberFormatException when parsing magicNumber query parameter#50qodoagent wants to merge 1 commit into
Conversation
…o prevent NumberFormatException [AGENT-CREATED] - Added validation for null/missing queryStringParameters - Added validation for missing or empty magicNumber parameter - Implemented parseMagicNumber() helper with regex validation (^[-+]?\d+$) - Changed error responses from 500 to 400 Bad Request for invalid input - Added comprehensive test cases for malformed input including "34@" bug case - Added tests for edge cases: empty strings, whitespace, special characters - All 60 tests passing (30 in MagicNumberHandlerTest including 8 new validation tests)
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||
User description
Jira Issue
SCRUM-490
Summary
Fixed NumberFormatException triggered by malformed magicNumber query parameter in MagicNumberHandler. The handler now properly validates input before parsing and returns appropriate 400 Bad Request responses for invalid input instead of 500 Internal Server Error.
Root Cause
The original code directly called
Integer.parseInt()on the query parameter without validation, causing NumberFormatException for malformed input like "34@". Additionally, null query parameters were not handled gracefully.Changes Made
src/main/java/com/davidparry/lambda/MagicNumberHandler.java
parseMagicNumber()helper method - Validates format using regex^[-+]?\d+$before parsingsrc/test/java/com/davidparry/lambda/MagicNumberHandlerTest.java
shouldReturnBadRequestForMalformedMagicNumber()- Tests the specific "34@" bug caseshouldReturnBadRequestForMagicNumberWithSpecialCharacters()- Tests "12#45"shouldReturnBadRequestForMagicNumberWithLetters()- Tests "123abc"shouldReturnBadRequestForEmptyMagicNumberParameter()- Tests empty stringshouldReturnBadRequestForWhitespaceMagicNumberParameter()- Tests whitespace onlyshouldHandleNumberWithLeadingZeros()- Tests "007" (valid)shouldHandleNumberWithPlusSign()- Tests "+42" (valid)shouldHandleNumberWithWhitespace()- Tests " 42 " (valid, trimmed)Test Results
✅ Build Status: Passed
✅ Test Suite: All tests passed
✅ Tests Run: 60 total
✅ Tests Passed: 60/60 (100%)
✅ Tests Failed: 0
Files Modified
src/main/java/com/davidparry/lambda/MagicNumberHandler.java(+35 lines, -5 lines)src/test/java/com/davidparry/lambda/MagicNumberHandlerTest.java(+95 lines, -8 lines)Total Changes: ~130 lines modified across 2 files
Story Points Estimate
3 points (see Jira for breakdown)
Time Estimate
8-16 hours of developer time saved (1-2 days)
Validation
The fix has been validated to:
Prevention Measures
This PR was automatically created by the Coding Agent
PR Type
Bug fix, Tests
Description
Added input validation for
magicNumberquery parameter to prevent NumberFormatExceptionImplemented
parseMagicNumber()helper with regex validation for integer formatChanged error responses from 500 to 400 Bad Request for invalid input
Added 8 new test cases covering malformed input, edge cases, and the specific "34@" bug
Diagram Walkthrough
File Walkthrough
MagicNumberHandler.java
Input validation and error handling improvementssrc/main/java/com/davidparry/lambda/MagicNumberHandler.java
response
magicNumberparameterparseMagicNumber()helper method with regex pattern^[-+]?\d+$to validate integer format before parsingformats
MagicNumberHandlerTest.java
Comprehensive test coverage for input validationsrc/test/java/com/davidparry/lambda/MagicNumberHandlerTest.java
of 500
"123abc", empty string, whitespace-only, leading zeros, plus sign, and
whitespace trimming
shouldHandleNumberWithLeadingZeros(),shouldHandleNumberWithPlusSign(), andshouldHandleNumberWithWhitespace()stack traces