feat: serve static upload app from axum
Introduce the first PLAN.md milestone: replace the hello-world binary with an Axum server that binds to localhost by default, exposes a health endpoint, and serves the static browser UI from the repository's static directory. The router is available through the library crate so integration tests can exercise server behavior without opening a network listener. Add a justfile for routine validation and document the initial project shape, configuration knobs, and reusable test checklist. The rustfmt config now uses only stable options so the new formatting recipe runs without nightly warnings. The upload API and resumable chunk behavior are intentionally left for later milestones; the UI currently handles file selection only. Test Plan: - just check Refs: PLAN.md milestone 1
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Test Scenarios
|
||||
|
||||
Keep this file as the reusable verification checklist while implementing
|
||||
`PLAN.md`.
|
||||
|
||||
## Automated
|
||||
|
||||
- `just check`
|
||||
- Runs formatting, all Rust tests, and clippy.
|
||||
- Current coverage:
|
||||
- `GET /` serves the static browser page.
|
||||
- `GET /healthz` reports `ok`.
|
||||
|
||||
## Manual
|
||||
|
||||
These scenarios come from `PLAN.md` and should be retested as the matching
|
||||
features land.
|
||||
|
||||
- Upload a small file in one pass.
|
||||
- Upload a file larger than one chunk.
|
||||
- Kill the browser tab mid-upload and resume.
|
||||
- Restart the Rust server mid-upload and resume.
|
||||
- Interrupt the network and resume.
|
||||
- Retry a duplicate chunk and confirm it is accepted idempotently.
|
||||
- Attempt an invalid chunk index and confirm it is rejected.
|
||||
- Attempt a wrong-size non-final chunk and confirm it is rejected.
|
||||
- Complete an upload and compare the final file with the source file:
|
||||
|
||||
```sh
|
||||
sha256sum source-file data/complete/uploaded-file
|
||||
```
|
||||
Reference in New Issue
Block a user