MCPcopy Create free account
hub / github.com/ericls/imgdd / TestLoginLogoutSessionToken

Function TestLoginLogoutSessionToken

httpserver/identity_test.go:124–229  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

122}
123
124func TestLoginLogoutSessionToken(t *testing.T) {
125 testDBConf := TestServiceMan.GetDBConfig()
126 conn := db.GetConnection(testDBConf)
127 identityRepo := identity.NewDBIdentityRepo(conn)
128 test_support.ResetDatabase(testDBConf)
129 contextUserManager := httpserver.NewContextUserManager("foo", identityRepo)
130 sessionTokenName := "x-session-token"
131 sessionPersister := persister.NewSessionPersister(TestServiceMan.GetRedisURI(), nil, nil, &sessionTokenName)
132 testIdentityManager := httpserver.IdentityManager{
133 IdentityRepo: identityRepo,
134 ContextUserManager: contextUserManager,
135 Persister: sessionPersister,
136 }
137 orgUser1, err := testIdentityManager.IdentityRepo.CreateUserWithOrganization("test@home.arpa", "test", "test")
138 if err != nil {
139 t.Fatal(err)
140 }
141 orgUser2, err := testIdentityManager.IdentityRepo.CreateUserWithOrganization(
142 "test2@home.arpa", "test2", "test2",
143 )
144 if err != nil {
145 t.Fatal(err)
146 }
147 r := mux.NewRouter()
148 r.StrictSlash(true)
149 r.Use(sessionPersister.Middleware)
150 // r.Use(httpserver.SessionMiddleware)
151 r.Use(httpserver.RWContextMiddleware)
152 r.Use(testIdentityManager.Middleware)
153 r.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
154 testIdentityManager.Authenticate(w, r, orgUser1.User.Id, orgUser1.Id)
155 w.Write([]byte(""))
156 })
157 r.HandleFunc("/loginContext", func(w http.ResponseWriter, r *http.Request) {
158 testIdentityManager.AuthenticateContext(r.Context(), orgUser2.User.Id, orgUser2.Id)
159 w.Write([]byte(""))
160 })
161 r.HandleFunc("/name", func(w http.ResponseWriter, r *http.Request) {
162 authenticationInfo := testIdentityManager.ContextUserManager.GetAuthenticationInfo(r.Context())
163 user := authenticationInfo.AuthenticatedUser.User
164 if user == nil {
165 w.Write([]byte("NO USER"))
166 } else {
167 w.Write([]byte("test-" + user.Id))
168 }
169 })
170
171 r.HandleFunc("/logout", func(w http.ResponseWriter, r *http.Request) {
172 testIdentityManager.Logout(w, r)
173 w.Write([]byte(""))
174 })
175 t.Run("can login and logout", func(t *testing.T) {
176 req := httptest.NewRequest(http.MethodGet, "/login", nil)
177 w := httptest.NewRecorder()
178 handler := r
179 handler.ServeHTTP(w, req)
180 res := w.Result()
181 token := res.Header.Get(sessionTokenName)

Callers

nothing calls this directly

Calls 14

AuthenticateMethod · 0.95
AuthenticateContextMethod · 0.95
LogoutMethod · 0.95
GetConnectionFunction · 0.92
NewDBIdentityRepoFunction · 0.92
ResetDatabaseFunction · 0.92
NewContextUserManagerFunction · 0.92
NewSessionPersisterFunction · 0.92
GetDBConfigMethod · 0.80
GetRedisURIMethod · 0.80
GetAuthenticationInfoMethod · 0.65

Tested by

no test coverage detected