TestUserWithoutSessionUUID tests users that existed before we stamped SessionUUID into user docs
(t *testing.T)
| 286 | |
| 287 | // TestUserWithoutSessionUUID tests users that existed before we stamped SessionUUID into user docs |
| 288 | func 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. |
| 334 | func TestUserDeleteAllSessions(t *testing.T) { |
nothing calls this directly
no test coverage detected