Skip to content

Commit c7d1e06

Browse files
authored
Cover UpdateSessionUUID with auth unit test (#7194)
1 parent ab74ed7 commit c7d1e06

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

auth/session_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,3 +312,40 @@ func TestUserWithoutSessionUUID(t *testing.T) {
312312
require.NoError(t, err)
313313

314314
}
315+
316+
// TestUserDeleteAllSessions changes the session UUID on a user such that existing sessions should not be usable.
317+
func TestUserDeleteAllSessions(t *testing.T) {
318+
ctx := base.TestCtx(t)
319+
testBucket := base.GetTestBucket(t)
320+
defer testBucket.Close(ctx)
321+
dataStore := testBucket.GetSingleDataStore()
322+
auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(ctx))
323+
const username = "Alice"
324+
user, err := auth.NewUser(username, "password", base.Set{})
325+
require.NoError(t, err)
326+
require.NotNil(t, user)
327+
require.NoError(t, auth.Save(user))
328+
329+
// Create session with a username and valid TTL of 2 hours.
330+
session, err := auth.CreateSession(ctx, user, 2*time.Hour)
331+
require.NoError(t, err)
332+
333+
session, err = auth.GetSession(session.ID)
334+
require.NoError(t, err)
335+
336+
request, err := http.NewRequest(http.MethodGet, "", nil)
337+
require.NoError(t, err)
338+
request.AddCookie(auth.MakeSessionCookie(session, true, true))
339+
recorder := httptest.NewRecorder()
340+
341+
_, err = auth.AuthenticateCookie(request, recorder)
342+
require.NoError(t, err)
343+
344+
// h.deleteUserSessions() equivalent
345+
user.UpdateSessionUUID()
346+
err = auth.Save(user)
347+
require.NoError(t, err)
348+
349+
_, err = auth.AuthenticateCookie(request, recorder)
350+
require.EqualError(t, err, "401 Session no longer valid for user")
351+
}

0 commit comments

Comments
 (0)