Files
detections/_docs/02_tasks/done/AZ-144_test_negative.md
T

3.0 KiB

Negative Input Tests

Task: AZ-144_test_negative Name: Negative Input Tests Description: Implement E2E tests verifying proper error responses for invalid inputs, unavailable engine, and missing configuration Complexity: 2 points Dependencies: AZ-138_test_infrastructure Component: Integration Tests Jira: AZ-144 Epic: AZ-137

Problem

The system must handle invalid and edge-case inputs gracefully, returning appropriate HTTP error codes without crashing. Tests must verify error responses for empty files, corrupt data, engine unavailability, and missing configuration.

Outcome

  • Empty image returns 400 Bad Request
  • Corrupt/non-image data returns 400 Bad Request
  • Detection when engine unavailable returns 503 or 422
  • Missing classes.json prevents normal operation
  • Service remains healthy after all negative inputs

Scope

Included

  • FT-N-01: Empty image returns 400
  • FT-N-02: Invalid image data returns 400
  • FT-N-03: Detection when engine unavailable returns 503
  • FT-N-05: Missing classes.json prevents startup

Excluded

  • Duplicate media_id (covered in async/SSE tests)
  • Service outage scenarios (covered in resilience tests)
  • Malformed multipart payloads (covered in security tests)

Acceptance Criteria

AC-1: Empty image Given the detections service is running When POST /detect is called with a zero-byte file Then response is 400 Bad Request with error message

AC-2: Corrupt image Given the detections service is running When POST /detect is called with random binary data Then response is 400 Bad Request (not 500)

AC-3: Engine unavailable Given mock-loader is configured to fail model requests When POST /detect is called Then response is 503 or 422 with no crash or unhandled exception

AC-4: Missing classes.json Given detections service started without classes.json volume mount When the service runs or a detection is attempted Then service either fails to start or returns empty/error results without crashing

Non-Functional Requirements

Reliability

  • Service must remain operational after processing invalid inputs (AC-1, AC-2)

Integration Tests

AC Ref Initial Data/Conditions What to Test Expected Behavior NFR References
AC-1 Service running POST /detect with empty file 400 Bad Request Max 5s
AC-2 Service running POST /detect with corrupt binary 400 Bad Request Max 5s
AC-3 mock-loader returns 503 POST /detect with valid image 503 or 422 Max 30s
AC-4 No classes.json mounted Start service or detect Fail gracefully Max 30s

Constraints

  • AC-4 requires a separate Docker Compose configuration without the classes.json volume
  • AC-3 requires mock-loader control API to simulate failure

Risks & Mitigation

Risk 1: AC-4 service start behavior

  • Risk: Behavior when classes.json is missing may vary (fail at start vs. fail at detection)
  • Mitigation: Test both paths; accept either as valid graceful handling