You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.7 KiB
Go

package main
import (
"testing"
"time"
)
func TestSessionManagersCreationAndUpdate(t *testing.T) {
// Create manager and new session
m := NewSessionManager()
sID, err := m.CreateSession()
if err != nil {
t.Error("Error CreateSession:", err)
}
data, err := m.GetSessionData(sID)
if err != nil {
t.Error("Error GetSessionData:", err)
}
// Modify and update data
data["website"] = "longhoang.de"
err = m.UpdateSessionData(sID, data)
if err != nil {
t.Error("Error UpdateSessionData:", err)
}
// Retrieve data from manager again
data, err = m.GetSessionData(sID)
if err != nil {
t.Error("Error GetSessionData:", err)
}
if data["website"] != "longhoang.de" {
t.Error("Expected website to be longhoang.de")
}
}
func TestSessionManagersCleaner(t *testing.T) {
m := NewSessionManager()
sID, err := m.CreateSession()
if err != nil {
t.Error("Error CreateSession:", err)
}
// Note that the cleaner is only running every 5s
time.Sleep(7 * time.Second)
_, err = m.GetSessionData(sID)
if err != ErrSessionNotFound {
t.Error("Session still in memory after 7 seconds")
}
}
func TestSessionManagersCleanerAfterUpdate(t *testing.T) {
m := NewSessionManager()
sID, err := m.CreateSession()
if err != nil {
t.Error("Error CreateSession:", err)
}
time.Sleep(3 * time.Second)
err = m.UpdateSessionData(sID, make(map[string]interface{}))
if err != nil {
t.Error("Error UpdateSessionData:", err)
}
time.Sleep(3 * time.Second)
_, err = m.GetSessionData(sID)
if err == ErrSessionNotFound {
t.Error("Session not found although has been updated 3 seconds earlier.")
}
time.Sleep(4 * time.Second)
_, err = m.GetSessionData(sID)
if err != ErrSessionNotFound {
t.Error("Session still in memory 7 seconds after update")
}
}