docs: record manual test pass of auth and encrypted URL flows (closes #49)
All checks were successful
check / check (push) Successful in 1m34s

All six checks from issue #49 executed against a locally built and
running pixad (main at 6573b9d, port 18099, throwaway local config):
login form, wrong-key error, generator form after login, encrypted URL
serving an image, expired URL returning 410, and logout redirect. All
passed, as did the nine checks in scripts/manual-test.sh. Evidence
recorded as a checklist in TODO.md per its Workflow section; the cache
size management and eviction item is promoted to Next Step.
This commit is contained in:
2026-08-07 23:06:06 +07:00
parent 6573b9d1ef
commit b045de945f

32
TODO.md
View File

@@ -19,14 +19,34 @@ on main.
# Next Step
P0: manual test pass of the auth and encrypted URL flows, then commit
the checked-off results to TODO.md: visit / and see the login form;
wrong key shows an error; correct signing key shows the generator form;
a generated encrypted URL serves the image; an expired URL (short TTL)
returns 410; logout redirects back to login
P0: implement cache size management and eviction so the disk cannot
fill up
# Completed Steps
- 2026-08-07 manual test pass of the auth and encrypted URL flows
against a locally built and running `pixad` (built from `main` at
`6573b9d`, port 18099, local throwaway config); all six checks
passed, plus all nine tests in `scripts/manual-test.sh` (closes #49):
- [x] visit `/` and see the login form: HTTP 200, `Pixa - Login`
page with `name="key"` password form
- [x] wrong key shows an error: POST `/` with `key=wrong-key`
returned HTTP 200 login page containing "Invalid signing key"
- [x] correct signing key shows the generator form: POST `/`
returned HTTP 303 to `/` with
`Set-Cookie: pixa_session=...; HttpOnly; Secure; SameSite=Strict`;
GET `/` with that cookie rendered `Pixa - URL Generator` with the
`/generate` form and logout link
- [x] a generated encrypted URL serves the image: POST `/generate`
(ttl=3600) produced a `/v1/e/<token>/img.jpeg` URL that returned
HTTP 200, `Content-Type: image/jpeg`, an 800x600 baseline JPEG of
61706 bytes
- [x] an expired URL (short TTL) returns 410: a ttl=1 URL fetched
after 3 s returned HTTP 410 Gone with
`{"error":"URL has expired","status":410,...}`
- [x] logout redirects back to login: GET `/logout` returned HTTP
303 to `/` with `Set-Cookie: pixa_session=; Max-Age=0`;
subsequent GET `/` rendered the login form again
- 2026-08-07 fix the two remaining gosec findings (G124 in
internal/session): session cookies now always carry
Secure/HttpOnly/SameSite=Strict on both the set and clear paths;
@@ -53,8 +73,6 @@ returns 410; logout redirects back to login
# Future Steps
- P0: implement cache size management and eviction so the disk cannot
fill up
- P0: validate configuration on startup, fail fast on bad config
- P1: implement blocked networks configuration to extend SSRF
protection