(t *testing.T)
| 122 | } |
| 123 | |
| 124 | func 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) |
nothing calls this directly
no test coverage detected