MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestUserWithoutSessionUUID

Function TestUserWithoutSessionUUID

auth/session_test.go:288–331  ·  view source on GitHub ↗

TestUserWithoutSessionUUID tests users that existed before we stamped SessionUUID into user docs

(t *testing.T)

Source from the content-addressed store, hash-verified

286
287// TestUserWithoutSessionUUID tests users that existed before we stamped SessionUUID into user docs
288func TestUserWithoutSessionUUID(t *testing.T) {
289 ctx := base.TestCtx(t)
290 testBucket := base.GetTestBucket(t)
291 defer testBucket.Close(ctx)
292 dataStore := testBucket.GetSingleDataStore()
293 auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(ctx))
294 const username = "Alice"
295 user, err := auth.NewUser(username, "password", base.Set{})
296 require.NoError(t, err)
297 require.NotNil(t, user)
298 require.NoError(t, auth.Save(user))
299
300 var rawUser map[string]interface{}
301 _, err = auth.datastore.Get(user.DocID(), &rawUser)
302 require.NoError(t, err)
303
304 sessionUUIDKey := "session_uuid"
305 _, exists := rawUser[sessionUUIDKey]
306 require.True(t, exists)
307 delete(rawUser, sessionUUIDKey)
308
309 err = auth.datastore.Set(user.DocID(), 0, nil, rawUser)
310 require.NoError(t, err)
311
312 user, err = auth.GetUser(username)
313 require.NoError(t, err)
314 require.NotNil(t, user)
315
316 oneTime := false
317 session, err := auth.CreateSession(ctx, user, 2*time.Hour, oneTime)
318 require.NoError(t, err)
319
320 session, _, err = auth.GetSession(session.ID)
321 require.NoError(t, err)
322
323 request, err := http.NewRequest(http.MethodGet, "", nil)
324 require.NoError(t, err)
325 request.AddCookie(auth.MakeSessionCookie(session, true, true, http.SameSiteDefaultMode))
326
327 recorder := httptest.NewRecorder()
328 _, err = auth.AuthenticateCookie(request, recorder)
329 require.NoError(t, err)
330
331}
332
333// TestUserDeleteAllSessions changes the session UUID on a user such that existing sessions should not be usable.
334func TestUserDeleteAllSessions(t *testing.T) {

Callers

nothing calls this directly

Calls 15

TestCtxFunction · 0.92
GetTestBucketFunction · 0.92
NewTestAuthenticatorFunction · 0.85
NewUserMethod · 0.80
SaveMethod · 0.80
GetUserMethod · 0.80
CreateSessionMethod · 0.80
GetSessionMethod · 0.80
MakeSessionCookieMethod · 0.80
AuthenticateCookieMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected