feat: Users API, ownership transfer and removal of the legacy role string

This commit is contained in:
Florian Sylvain committed 2026-10-27 03:08:15 +01:00
1 parent 094df63a7f
commit 80f7037d3a
124 files changed
+4644 -824

No files matched your search

+6 -6
View File
@@ -67,7 +67,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
userRepo.users[7] = user.User{
ID: 7,
Username: "alice",
Role: user.RoleOwner,
RoleID: ownerRoleID,
Email: "alice@example.com",
IsVerified: true,
TokenVersion: 0,
@@ -98,7 +98,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
userRepo.users[8] = user.User{
ID: 8,
Username: "bob",
Role: user.RoleOwner,
RoleID: ownerRoleID,
Email: "bob@example.com",
IsVerified: false,
TokenVersion: 0,
@@ -126,7 +126,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
t.Run("No jwt cookie at all is refused", func(t *testing.T) {
token := authtoken.New([]byte("test-secret"))
userRepo := newMockUserRepo()
userRepo.users[7] = user.User{ID: 7, Username: "alice", Role: user.RoleAdmin, IsVerified: true, TokenVersion: 0}
userRepo.users[7] = user.User{ID: 7, Username: "alice", RoleID: adminRoleID, IsVerified: true, TokenVersion: 0}
router := newGetCurrentUserRouter(userRepo, &stubHasher{}, token)
rec := sendGetCurrentUserRequest(router, http.MethodGet, "/v1/auth/me", nil)
@@ -139,7 +139,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
t.Run("A jwt whose token_version no longer matches the stored user is refused", func(t *testing.T) {
token := authtoken.New([]byte("test-secret"))
userRepo := newMockUserRepo()
userRepo.users[7] = user.User{ID: 7, Username: "alice", Role: user.RoleAdmin, IsVerified: true, TokenVersion: 1}
userRepo.users[7] = user.User{ID: 7, Username: "alice", RoleID: adminRoleID, IsVerified: true, TokenVersion: 1}
router := newGetCurrentUserRouter(userRepo, &stubHasher{}, token)
cookie := mintGetCurrentUserCookie(t, token, 7, 0)
@@ -156,7 +156,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
t.Run("A jwt minted for a since-deleted account is refused", func(t *testing.T) {
token := authtoken.New([]byte("test-secret"))
userRepo := newMockUserRepo()
userRepo.users[7] = user.User{ID: 7, Username: "alice", Role: user.RoleAdmin, IsVerified: false, TokenVersion: 0}
userRepo.users[7] = user.User{ID: 7, Username: "alice", RoleID: adminRoleID, IsVerified: false, TokenVersion: 0}
router := newGetCurrentUserRouter(userRepo, &stubHasher{}, token)
cookie := mintGetCurrentUserCookie(t, token, 7, 0)
@@ -177,7 +177,7 @@ func TestGetCurrentUserHttp(t *testing.T) {
t.Run("The route is never rate-limited, unlike login and password reset", func(t *testing.T) {
token := authtoken.New([]byte("test-secret"))
userRepo := newMockUserRepo()
userRepo.users[7] = user.User{ID: 7, Username: "alice", Role: user.RoleAdmin, IsVerified: true, TokenVersion: 0}
userRepo.users[7] = user.User{ID: 7, Username: "alice", RoleID: adminRoleID, IsVerified: true, TokenVersion: 0}
router := newGetCurrentUserRouter(userRepo, &stubHasher{}, token)
cookie := mintGetCurrentUserCookie(t, token, 7, 0)