Skip to content
Snippets Groups Projects
Commit 938a89e4 authored by Christian Pointner's avatar Christian Pointner
Browse files

some more session test-cases

parent 983ffdad
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ func (os *OIDCSession) refresh(ctx context.Context, in *Session) (*Session, erro
if err := userInfo.Claims(out); err != nil {
return nil, errors.New("parsing OIDC UserInfo failed: " + err.Error())
}
if err = auth.sessions.update(in.ID(), out); err != nil {
if err = auth.sessions.update(out); err != nil {
return nil, errors.New("updating session failed: " + err.Error())
}
return out, nil
......
......@@ -324,11 +324,11 @@ func (sm *SessionManager) getAndSubscribe(id string) (*Session, <-chan struct{})
return s, s.subscribe()
}
func (sm *SessionManager) update(id string, s *Session) error {
func (sm *SessionManager) update(s *Session) error {
sm.mutex.Lock()
defer sm.mutex.Unlock()
old, ok := sm.sessions[id]
old, ok := sm.sessions[s.id]
if !ok {
return errors.New("session not found.")
}
......@@ -338,9 +338,9 @@ func (sm *SessionManager) update(id string, s *Session) error {
old.signalSubscribers()
sm.sessions[id] = s
sm.sessions[s.id] = s
old.setState(SessionStateStale)
auth.dbgLog.Printf("authentication: updated session %s", id)
auth.dbgLog.Printf("authentication: updated session %s", s.id)
return nil
}
......
......@@ -44,6 +44,65 @@ func TestCreateSessionManager(t *testing.T) {
}
}
func TestSessionNewAndUpdate(t *testing.T) {
sm, err := NewSessionManager(SessionsConfig{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
s1, err := sm.new()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if err = sm.update(&Session{id: "unknown"}); err == nil {
t.Fatalf("updating non-existing session should fail")
}
s2 := s1.emptyCopy()
s2.Username = "foo"
if err = sm.update(s2); err != nil {
t.Fatalf("updating session failed: %v", err)
}
}
func TestSessionCleanup(t *testing.T) {
sm, err := NewSessionManager(SessionsConfig{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
s1, err := sm.new()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if !s1.updateState(SessionStateNew, SessionStateLoggedOut) {
t.Fatalf("updating session state should have worked")
}
s2, err := sm.new()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
s3, err := sm.new()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
s3.cancel()
sm.cleanup()
if sm.get(s1.id) != nil || sm.get(s3.id) != nil {
t.Fatalf("dead sessions should have been cleaned up")
}
if sm.get(s2.id) != s2 {
t.Fatalf("alive sessions shouldn't have been cleaned up")
}
}
func TestSessionExpiry(t *testing.T) {
cfg := SessionsConfig{}
cfg.MaxAge = time.Second
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment