Keep scs for cookies and session API while sessions DDL and queries live in the same sqlc stack as the rest of Postgres.
56 lines
1.2 KiB
Go
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")
|
|
}
|
|
}
|