Here is my recommended test plan.
Test out https://pulp.plan.io/issues/4196. See the docs at https://docs.pulpproject.org/en/3.0/nightly/workflows/upload-publish.html for how to perform chunked uploads.
Test Case 1¶
Follow the steps in the docs to upload a file and create an artifact. Assert that an artifact is successfully created. You could also create a content unit from it (e.g. FileContent).
Test Case 2¶
1. Create an upload (POST /api/v3/uploads/)
2. Try to import this upload into artifacts (POST :8000/pulp/api/v3/artifacts/ upload=/pulp/api/v3/uploads/a8b5a7f7-2f22-460d-ab20-d5616cb71cdd/)
This should fail (400 error) because the upload is not committed.
Test Case 3¶
1. Create an upload (POST /api/v3/uploads/)
2. Upload your file in chunks
3. Commit your upload but specify a bad sha256
The commit action should fail.
Test Case 4¶
1. Create an upload of a particular size (eg 1024 bytes)
2. Try to upload a chunk that it out of range (eg offset is 1025 bytes or the chunk size + offset > 1024)
Test Case 5¶
Attempt to create an artifact by supplying BOTH file and upload parameters. It should fail (400 error).
Also, optionally supply neither file nor upload parameters. This should also fail (400 error).
Test Case 6¶
Perform test case 1. Then try to create an artifact again by POSTing to /api/v3/artifacts/ again. It should fail (400 error) as the upload gets removed after it's imported.
Test Case 7¶
Create an upload. Delete the upload (DELETE /api/v3/uploads/abc123../). Confirm that the upload is deleted. Optionally, try to create an artifact from the upload which should fail.
Test Case 8¶
Create an upload. Filter by incomplete uploads to verify the upload is there (GET /api/v3/uploads/?completed__isnull=True). Commit the upload and then filter by GET /api/v3/uploads/?completed__isnull=True to verify the upload is no longer listed.
Add test to create artifact using chunk uplpoad
Add test to create artifact using chunk upload.
https://pulp.plan.io/issues/4197 ref: #4197