=== ERROR HANDLING TESTS === PASS: Missing cam returns error PASS: Missing cam error message correct PASS: Missing mode returns error PASS: Missing mode error message correct PASS: Invalid mode returns error PASS: Invalid mode error message lists valid modes PASS: Invalid cam format returns error PASS: Invalid cam format error message correct PASS: Custom mode without dates returns error PASS: Custom mode error mentions parameters PASS: SQL injection in cam returns error === RESPONSE STRUCTURE TESTS === PASS: Yesterday mode returns success PASS: Response has camera field PASS: Camera field matches input PASS: Response has mode field PASS: Mode field matches input PASS: Response has time_range PASS: time_range has start PASS: time_range has stop PASS: Response has image_size PASS: Default image_size is 980x655 PASS: Response has image_count PASS: Response has images array PASS: image_count matches images array length === YESTERDAY MODE TESTS === PASS: Yesterday returns images PASS: Start date is yesterday PASS: URL starts with https:// FAIL: URL contains backblazeb2.com PASS: URL contains camera name PASS: URL contains .jpg PASS: URL contains 980x655 PASS: URL uses hyphenated bucket name === TODAY MODE TESTS === PASS: Today mode returns success PASS: Today mode has images PASS: Today start date is today PASS: Today start hour is 6am === LAST2HOURS MODE TESTS === PASS: Last2hours mode returns success PASS: Last2hours has images PASS: Last2hours time range <= 2.5 hours (includes rounding) === CUSTOM MODE TESTS === PASS: Custom mode returns success PASS: Custom mode has images PASS: Custom start is Feb 6 PASS: Custom start is 10:00 PASS: Custom stop is 12:00 PASS: Custom URLs have correct date path === PROJECT MODE TESTS === PASS: Project mode returns success PASS: Project mode has images FAIL: Project mode respects max (approx) PASS: Project mode spans multiple days === PROJECT LIMIT HOURS TESTS === PASS: Project with limit hours returns success PASS: Project limit hours filters images correctly === IMAGE SIZE OVERRIDE TEST === PASS: Image size override reflected in response === UNKNOWN CAMERA TEST === FAIL: Unknown camera returns error FAIL: Unknown camera mentions not found === RESULTS === Total: 54 Passed: 50 Failed: 4 SOME TESTS FAILED!