summaryrefslogtreecommitdiff
path: root/player-server/internal/repository
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-19 10:03:01 +0300
committerPaul Buetow <paul@buetow.org>2026-05-19 10:03:01 +0300
commit212e849475701d91d5f173c3638af540fab796dd (patch)
tree5cc6a4560c9e0785a1e6af7daf0482a7b1964933 /player-server/internal/repository
parentb857fd43f21082eecd29a04693aa8411c2c1aaa7 (diff)
Round 4-7 tests: 7 LLM scenarios + 10 Playwright UI tests
LLM e2e scenarios (S19-S25): S19 — permissions matrix (viewer vs owner across two sets). Flags a design mismatch: viewer role currently permits tags/favorites/ notes via verifyAccess instead of verifyModifyAccess, contrary to the model.RoleViewer doc comment. Not fixed; documented. S20 — HTTP Range and HEAD on /stream, /download, /thumbnail. Flags no-ETag (cacheability gap) and locks in stdlib Range semantics (single, suffix, open, 416, multi-range). S21 — upload negatives (missing parts, bad extension, traversal, 404, 403, dedup collisions, 413 skip note). S22 — share expiry (sqlite UPDATE on expires_at, then verify 410 on all three /s/{token}/... routes) + 5-token uniqueness via crypto/rand audit. S23 — user deletion cascade with schema audit: every user FK has ON DELETE CASCADE; tags are global by design. S24 — soft-delete persistence across rescan. Surfaces TWO real bugs in scanner: (1) re-INSERT of soft-deleted media hits UNIQUE constraint and fails the scan; (2) files deleted from disk leave orphan media rows that never get reconciled. S25 — SQL injection + XSS + path-traversal probes. SQL surface fully parameterised (audited repository/media.go); XSS storage is API-correct (UI escapes); share path traversal blocked by Go ServeMux path cleaning. Playwright e2e-web extensions (Round 7, 10 new tests): share-page.test.ts (4) — share metadata payload, audio/video stage elements, invalid-token 404 page. search-filter.test.ts (3) — search filter, like:1 favourites syntax, clearing input restores full grid. admin-panel.test.ts (3) — user list, permissions section, rescan button + scan-progress UI. Round 8 audit (Android): 24/24 Flutter widget tests pass; the app is currently a stub with UnimplementedError-only API client, so no additional test scaffolding is justified until production code lands. Verified: 25/25 LLM scenarios pass; 22/22 Playwright tests pass; full Go unit-test suite green. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'player-server/internal/repository')
0 files changed, 0 insertions, 0 deletions