Files
plumber/internal/store/sessions_test.go
T
codegirl007 247fb05281 Replace scs postgresstore with a sqlc-backed SessionStore.
Keep scs for cookies and session API while sessions DDL and queries live in the same sqlc stack as the rest of Postgres.
2026-08-22 07:11:47 -07:00

56 lines
1.2 KiB
Go

package store
import (
"os"
"testing"
"time"
)
func TestSessionStoreCommitFindDelete(t *testing.T) {
url := os.Getenv("TEST_DATABASE_URL")
if url == "" {
url = os.Getenv("DATABASE_URL")
}
if url == "" {
t.Skip("DATABASE_URL or TEST_DATABASE_URL not set")
}
schema, err := os.ReadFile("../../schema.sql")
if err != nil {
t.Fatal(err)
}
db, sessions, err := OpenPostgres(url, string(schema))
if err != nil {
t.Fatal(err)
}
defer db.Close()
defer sessions.Close()
token := "test-session-" + time.Now().Format("20060102150405.000000000")
data := []byte("hello-session")
expiry := time.Now().Add(time.Hour)
if err := sessions.Commit(token, data, expiry); err != nil {
t.Fatalf("Commit: %v", err)
}
got, found, err := sessions.Find(token)
if err != nil {
t.Fatalf("Find: %v", err)
}
if !found {
t.Fatal("expected found")
}
if string(got) != string(data) {
t.Fatalf("data = %q, want %q", got, data)
}
if err := sessions.Delete(token); err != nil {
t.Fatalf("Delete: %v", err)
}
_, found, err = sessions.Find(token)
if err != nil {
t.Fatalf("Find after delete: %v", err)
}
if found {
t.Fatal("expected not found after delete")
}
}