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.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user