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

Function TestCreateSession

auth/session_test.go:26–87  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24)
25
26func TestCreateSession(t *testing.T) {
27 base.SetUpTestLogging(t, base.LevelDebug, base.KeyAuth)
28 for _, oneTime := range []bool{true, false} {
29 t.Run(fmt.Sprintf("oneTime=%t", oneTime), func(t *testing.T) {
30 const username = "Alice"
31 const invalidSessionTTLError = "400 Invalid session time-to-live"
32 ctx := base.TestCtx(t)
33 testBucket := base.GetTestBucket(t)
34 defer testBucket.Close(ctx)
35 dataStore := testBucket.GetSingleDataStore()
36 auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(ctx))
37
38 user, err := auth.NewUser(username, "password", base.Set{})
39 require.NoError(t, err)
40 require.NotNil(t, user)
41 require.NoError(t, auth.Save(user))
42
43 // Create session with a username and valid TTL of 2 hours.
44 session, err := auth.CreateSession(ctx, user, 2*time.Hour, oneTime)
45 require.NoError(t, err)
46
47 assert.Equal(t, username, session.Username)
48 assert.Equal(t, 2*time.Hour, session.Ttl)
49 assert.NotEmpty(t, session.ID)
50 assert.NotEmpty(t, session.Expiration)
51 if oneTime {
52 require.NotNil(t, session.OneTime)
53 require.True(t, *session.OneTime)
54 } else {
55 assert.Empty(t, session.OneTime)
56 }
57
58 // Once the session is created, the details should be persisted on the bucket
59 // and it must be accessible anytime later within the session expiration time.
60 session, _, err = auth.GetSession(session.ID)
61 assert.NoError(t, err)
62
63 assert.Equal(t, username, session.Username)
64 assert.Equal(t, 2*time.Hour, session.Ttl)
65 assert.NotEmpty(t, session.ID)
66 assert.NotEmpty(t, session.Expiration)
67 if oneTime {
68 require.NotNil(t, session.OneTime)
69 require.True(t, *session.OneTime)
70 } else {
71 assert.Empty(t, session.OneTime)
72 }
73
74 // Session must not be created with zero TTL; it's illegal.
75 session, err = auth.CreateSession(ctx, user, time.Duration(0), oneTime)
76 assert.Nil(t, session)
77 assert.Error(t, err)
78 assert.Contains(t, err.Error(), invalidSessionTTLError)
79
80 // Session must not be created with negative TTL; it's illegal.
81 session, err = auth.CreateSession(ctx, user, time.Duration(-1), oneTime)
82 assert.Nil(t, session)
83 assert.Error(t, err)

Callers

nothing calls this directly

Calls 15

SetUpTestLoggingFunction · 0.92
TestCtxFunction · 0.92
GetTestBucketFunction · 0.92
NewTestAuthenticatorFunction · 0.85
NewUserMethod · 0.80
SaveMethod · 0.80
CreateSessionMethod · 0.80
GetSessionMethod · 0.80
RunMethod · 0.65
CloseMethod · 0.65
ContainsMethod · 0.65

Tested by

no test coverage detected