mirror of
https://github.com/azaion/detections.git
synced 2026-04-22 23:16:32 +00:00
[AZ-137] [AZ-138] Decompose test tasks and scaffold E2E test infrastructure
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user