mitbringsl/backend/internal
Tronax 67033e561c
Tests for shared lists & docs catch-up to post-MVP state
Integration tests for the invite/join/membership feature that shipped
without any coverage:

- internal/store/liststore_test.go: CreateList adds owner as member with
  invite code, GetLists returns owned+joined but not foreign lists,
  GetList access control (owner/member yes, stranger and soft-deleted no),
  JoinByInviteCode normalization/idempotency/role-keeping, lazy invite
  code generation. Runs against TEST_DATABASE_URL, skips otherwise.
- internal/httpapi/api_test.go: full E2E over the real router — register,
  create list (code in response), invite endpoint, join (lowercase),
  cross-member op push/pull sync, stranger gets 404 on every list
  endpoint, invalid code 400, idempotent re-join, and 401 gating of all
  protected routes.
- lists.go Invite handler: store errors now map through apiError, so
  non-members get 404 instead of 400 (consistent with Get/Push/Pull).

Docs updated to the actual post-MVP state: AGENTS.md (post-MVP features,
repo structure, roadmap with open points like join rate limiting),
API.md (join/invite endpoints, invite_code fields, membership rules),
SYNC.md (shared lists section), README (local-only default, sharing,
integration test recipe).
2026-08-22 09:40:57 +02:00
..
auth Feature: Settings screen with account, theme, profile, reset + credits 2026-08-06 10:39:12 +02:00
config Feature: Server-driven auth method discovery + OIDC-only enforcement 2026-08-06 10:28:12 +02:00
httpapi Tests for shared lists & docs catch-up to post-MVP state 2026-08-22 09:40:57 +02:00
logging Backend Phase A: foundation, migrations, Docker setup 2026-08-05 15:14:37 +02:00
store Tests for shared lists & docs catch-up to post-MVP state 2026-08-22 09:40:57 +02:00
sync Backend Phase C: Sync-Kern + Caddy behind-proxy 2026-08-05 19:56:05 +02:00