axiom/sessions/sessions_test.go

45 lines
990 B
Go

package sessions_test
import (
"testing"
"time"
"git.tavo.one/tavo/axiom/sessions"
)
type DummyData struct {
UserID string
}
func TestMaxSessionLimit(t *testing.T) {
const max = 10
store := sessions.NewStore[DummyData](24, max)
// Try creating maxSessions
for i := 0; i < max; i++ {
_, _, err := store.New(30*time.Minute, DummyData{UserID: "user"})
if err != nil {
t.Fatalf("unexpected error on session %d: %v", i, err)
}
}
// Now create one more, which should fail
_, _, err := store.New(30*time.Minute, DummyData{UserID: "extra"})
if err == nil {
t.Fatal("expected error when exceeding max sessions, but got nil")
}
}
func BenchmarkSessionCreation(b *testing.B) {
const maxSessions = 1_000_000
store := sessions.NewStore[DummyData](24, maxSessions)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _, err := store.New(10*time.Minute, DummyData{UserID: "u"})
if err != nil {
b.Fatalf("failed to create session at iteration %d: %v", i, err)
}
}
}