karbe/tests/lib
Ubuntu ea0e606735
All checks were successful
CI / test (pull_request) Successful in 2m45s
feat(ce): Sprint K — public badge + invites CE_MEMBER + tests
Public badge sur fiche carbet :
- carbet-public.ts charge les OrganizationCarbetMembership (org
  approuvée uniquement) + expose `organizations: {id,name,slug}[]`.
- /carbets/[slug] affiche « Géré par le CE <name> » sous le header
  si au moins 1 org liée.

Invites CE_MEMBER :
- Migration 20260603300000_org_invite_token : OrgInviteToken
  (tokenHash, organizationId, email?, createdByUserId, expiresAt,
  usedAt). Cascade sur Organization. Index expiresAt + organizationId.
- src/lib/ce-invites.ts : createOrgInviteToken (TTL 14j),
  listOrgInviteTokens, getOrgInviteByToken (validité + expiry),
  markOrgInviteConsumed, revokeOrgInviteToken. Token = 24 bytes
  base64url, hash sha256.
- /espace-ce/membres : liste membres (CE_MANAGER + CE_MEMBER actifs)
  + form de génération de lien (email optionnel = lock email côté
  signup) + liste des invitations avec statut actif/consommé/expiré +
  bouton révoquer.
- /espace-ce/membres/actions.ts : createInviteAction +
  revokeInviteAction. Audit log scope=ce.invite.
- API /api/signup étendue : zod accepte inviteToken, branche dédiée
  qui crée User CE_MEMBER + organizationId du token + marquage
  usedAt. Vérif email match si email fourni dans le token.
- /inscription?invite=TOKEN : récupère l'invite, pré-affiche org name,
  lock email si fourni, masque les fieldsets type de compte (forcé
  CE_MEMBER).

CTA marketing :
- /pour-comites-entreprise : section CTA « Créer mon espace CE » sous
  le rendu content-pages, conditionnée par plugin ce-management.

Tests vitest (tests/lib/ce-access.test.ts) :
- canManageCarbet : admin always, owner direct, CE_MANAGER via org
  match, refus si autre org / pas d'org / TOURIST / pas de membership.
- 9 tests, mocks next-auth + @/auth + @/lib/authorization pour éviter
  next/server (incompatible vitest sans setup).
- Total tests projet : 62/62 ✓.

Dashboard /espace-ce : lien vers /espace-ce/membres en bas.

Migration prod appliquée.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-03 00:03:03 +00:00
..
booking.test.ts feat(p2): vitest + 27 tests + /api/health enrichi + /api/metrics + workflow CI 2026-06-01 02:27:14 +00:00
ce-access.test.ts feat(ce): Sprint K — public badge + invites CE_MEMBER + tests 2026-06-03 00:03:03 +00:00
email.test.ts feat(p2): vitest + 27 tests + /api/health enrichi + /api/metrics + workflow CI 2026-06-01 02:27:14 +00:00
image-variants.test.ts feat: variantes responsives 320/800/1600 via sharp + srcset partout (Reels, cards, galerie, favoris) 2026-06-02 01:05:25 +00:00
password.test.ts feat(p2): vitest + 27 tests + /api/health enrichi + /api/metrics + workflow CI 2026-06-01 02:27:14 +00:00
rate-limit.test.ts feat(hardening): rate limit (signup/reset/bookings) + tâches cron + backup PostgreSQL nocturne 2026-06-01 20:16:57 +00:00
rentals.test.ts feat(rental): Sprint E — emails + plugin toggle + tests 2026-06-02 08:49:39 +00:00
reviews.test.ts feat(p2): vitest + 27 tests + /api/health enrichi + /api/metrics + workflow CI 2026-06-01 02:27:14 +00:00