Address PR review findings: renew session tokens on auth, sniff/re-encode avatars, serialize last-admin checks, bound server timeouts, rune-safe truncation, and TEST_DATABASE_URL-only integration tests.
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package store
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSessionStoreCommitFindDelete(t *testing.T) {
|
|
url := os.Getenv("TEST_DATABASE_URL")
|
|
if url == "" {
|
|
t.Skip("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")
|
|
}
|
|
}
|