(t *testing.T)
| 368 | } |
| 369 | |
| 370 | func TestCreateOneTimeSession(t *testing.T) { |
| 371 | ctx := base.TestCtx(t) |
| 372 | testBucket := base.GetTestBucket(t) |
| 373 | defer testBucket.Close(ctx) |
| 374 | dataStore := testBucket.GetSingleDataStore() |
| 375 | auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(ctx)) |
| 376 | const username = "Alice" |
| 377 | user, err := auth.NewUser(username, "password", base.Set{}) |
| 378 | require.NoError(t, err) |
| 379 | require.NoError(t, auth.Save(user)) |
| 380 | |
| 381 | oneTime := true |
| 382 | session, err := auth.CreateSession(ctx, user, 2*time.Hour, oneTime) |
| 383 | require.NoError(t, err) |
| 384 | |
| 385 | session, user, err = auth.GetSession(session.ID) |
| 386 | require.NoError(t, err) |
| 387 | require.Equal(t, username, session.Username) |
| 388 | require.Equal(t, username, user.Name()) |
| 389 | |
| 390 | // make sure this can be retrieved again if not through AuthenticateOneTimeSession |
| 391 | session, user, err = auth.GetSession(session.ID) |
| 392 | require.NoError(t, err) |
| 393 | require.Equal(t, username, session.Username) |
| 394 | require.Equal(t, username, user.Name()) |
| 395 | |
| 396 | // now test AuthenticateOneTimeSession deletes it |
| 397 | user, err = auth.AuthenticateOneTimeSession(ctx, session.ID) |
| 398 | require.NoError(t, err) |
| 399 | require.Equal(t, username, user.Name()) |
| 400 | |
| 401 | // make sure session is deleted |
| 402 | session, _, err = auth.GetSession(session.ID) |
| 403 | require.Nil(t, session) |
| 404 | base.RequireDocNotFoundError(t, err) |
| 405 | } |
nothing calls this directly
no test coverage detected