feat(store): ListAllUsers for scheduler user enumeration
The in-process scheduler (ADR-018) needs to enumerate every user to run a discovery pass each. user_identities is the un-RLS'd map; add ListAllUsers as a plain pool query (no withUser) — the same enumerate-then-act pattern UserBySubject and the login_events gate query established. Scoping it to a single user would defeat the point; user_identities carries no RLS by design. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,39 @@ func TestRegisterUserRejectsDuplicateSubject(t *testing.T) {
|
||||
require.Equal(t, first, got)
|
||||
}
|
||||
|
||||
func TestListAllUsersReturnsEveryIdentity(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
s := newStore(t)
|
||||
resetDB(t, rawPool(t))
|
||||
|
||||
empty, err := s.ListAllUsers(ctx)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, empty, "no registrations yet → empty slice")
|
||||
|
||||
const subjectC = "dex|carol-789"
|
||||
idA, err := s.RegisterUser(ctx, subjectA, "Alice")
|
||||
require.NoError(t, err)
|
||||
idB, err := s.RegisterUser(ctx, subjectB, "Bob")
|
||||
require.NoError(t, err)
|
||||
idC, err := s.RegisterUser(ctx, subjectC, "Carol")
|
||||
require.NoError(t, err)
|
||||
|
||||
users, err := s.ListAllUsers(ctx)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, users, 3)
|
||||
|
||||
// Order is unspecified; compare as a set of (userID, subject) pairs.
|
||||
got := make(map[string]string, len(users))
|
||||
for _, u := range users {
|
||||
got[u.DexSubject] = u.UserID
|
||||
}
|
||||
require.Equal(t, map[string]string{
|
||||
subjectA: idA,
|
||||
subjectB: idB,
|
||||
subjectC: idC,
|
||||
}, got)
|
||||
}
|
||||
|
||||
func TestRegisterUserDistinctSubjectsGetDistinctUsers(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
s := newStore(t)
|
||||
|
||||
Reference in New Issue
Block a user