Skip to content

Commit 7613b5e

Browse files
committed
Let Junie write detailed test TODOs.
1 parent a26d665 commit 7613b5e

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

docs/tasks.md

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,75 @@ This document contains a list of potential improvements for the S3Mock project.
1717

1818
## Code Quality Improvements
1919

20-
11. [ ] Increase unit test coverage for service and store layers
20+
11. [ ] Increase unit test coverage for controller, service and store layers
21+
22+
### Task 11 – Test Coverage Plan (Components and Actions)
23+
24+
Scope and components to cover:
25+
- Controllers (HTTP): BucketController, ObjectController, MultipartController
26+
- Services (business logic): BucketService, ObjectService, MultipartService, Kms* services
27+
- Stores (persistence): BucketStore, ObjectStore, MultipartStore, KmsKeyStore
28+
- XML/DTOs and mappers: request/response XML models, serialization utils
29+
- Utilities: digest, ETag, headers, Range requests, SSE
30+
- Configuration: StoreConfiguration, controller advice/error mapping
31+
32+
Priorities (short-to-long horizon):
33+
1) High-value happy-path and error-path coverage for controllers with mocked services (fast feedback).
34+
2) Store layer correctness with Spring Boot WebEnvironment.NONE tests (file IO, metadata persistence, edge cases).
35+
3) Service layer behavior with mocked stores (parameter validation, branching, SSE/KMS interactions).
36+
4) XML serialization/deserialization fidelity for commonly used operations.
37+
5) Regression tests for known corner cases (range requests, conditional headers, multipart completion ordering, KMS key validation).
38+
39+
Concrete test additions (incremental):
40+
- Controllers
41+
- BucketController
42+
- listBuckets returns empty and non-empty results; XML schema shape
43+
- createBucket duplicate name -> proper S3 error code
44+
- deleteBucket non-empty -> proper error
45+
- ObjectController
46+
- putObject with/without Content-MD5; mismatched MD5 -> error
47+
- getObject with Range header (single range) -> 206 + Content-Range
48+
- getObject nonexistent -> 404 S3-style error
49+
- headObject verifies metadata and headers (ETag, Content-Length)
50+
- MultipartController
51+
- initiateMultipartUpload returns uploadId
52+
- uploadPart with invalid partNumber -> error mapping
53+
- completeMultipartUpload out-of-order parts -> consistent ETag behavior
54+
- Services
55+
- ObjectService.storeObject validates metadata, handles SSE headers routing to KMS
56+
- BucketService.deleteBucket checks emptiness guard
57+
- Stores
58+
- ObjectStore
59+
- storeS3ObjectMetadata and getS3ObjectMetadata roundtrip
60+
- list with prefix/delimiter, max-keys, continuation
61+
- delete removes metadata and data file
62+
- BucketStore
63+
- create, list, delete, exist checks
64+
- MultipartStore
65+
- init, addPart, complete, abort state transitions
66+
- XML/DTOs
67+
- Serialize/deserialize ListAllMyBucketsResult, CompleteMultipartUploadResult
68+
69+
Suggested file locations (server module):
70+
- Controllers: server/src/test/kotlin/com/adobe/testing/s3mock/itlike/controller/*Test.kt (extending BaseControllerTest)
71+
- Services: server/src/test/kotlin/com/adobe/testing/s3mock/service/*Test.kt
72+
- Stores: server/src/test/kotlin/com/adobe/testing/s3mock/store/*Test.kt (extend StoreTestBase)
73+
- DTOs: server/src/test/kotlin/com/adobe/testing/s3mock/xml/*Test.kt
74+
75+
Execution (fast path per repo guidelines):
76+
- One test class: ./mvnw -pl server test -Dtest=ObjectStoreTest
77+
- One method: ./mvnw -pl server test -Dtest=ObjectStoreTest#testStoreAndGetObject
78+
- Or via tool: run_test server/src/test/kotlin/com/adobe/testing/s3mock/store/ObjectStoreTest.kt
79+
80+
Acceptance targets for Task 11 completion:
81+
- +10–15% line coverage increase in server module, focusing on controllers and stores
82+
- At least one new test per component category listed above
83+
- Error-path assertions include correct HTTP status and S3 error codes/messages
84+
85+
Notes:
86+
- Avoid ITs unless Docker available; prefer WebEnvironment.RANDOM_PORT controller tests with mocked services.
87+
- Use provided test bases: BaseControllerTest, StoreTestBase, ServiceTestBase.
88+
- Reuse existing sample files: server/src/test/resources/sampleFile.txt, sampleFile_large.txt, sampleKMSFile.txt.
2189
12. [ ] Refactor synchronization mechanisms in store classes to improve concurrency handling
2290
13. [ ] Implement more comprehensive input validation for S3 API parameters
2391
14. [ ] Add more detailed logging throughout the application for better debugging

0 commit comments

Comments
 (0)