- go.mod module path (and every internal/vibetree import) inventree -> vibetree - cmd/inventree/ -> cmd/vibetree/, deploy/inventree.service -> vibetree.service - Default site name (seed data + the siteName template func's fallback) is now "vibetree", shown in the navbar, <title>, and login page - Session cookie renamed inventree_session -> vibetree_session - Default DB path data/inventree.db -> data/vibetree.db, CLI/log text, Dockerfile, docker-compose.yml, README, .gitignore/.dockerignore all updated to match Existing installs: this changes the session cookie name (users will be signed out once) and the default DB filename (point -db at your existing file, or rename it, to keep your data).
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package auth_test
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"vibetree/internal/auth"
|
|
"vibetree/internal/database"
|
|
"vibetree/internal/users"
|
|
)
|
|
|
|
func testDB(t *testing.T) *sql.DB {
|
|
t.Helper()
|
|
dir := t.TempDir()
|
|
db, err := database.Open(filepath.Join(dir, "test.db"))
|
|
if err != nil {
|
|
t.Fatalf("open db: %v", err)
|
|
}
|
|
t.Cleanup(func() { db.Close() })
|
|
return db
|
|
}
|
|
|
|
func TestSessionLifecycle(t *testing.T) {
|
|
ctx := context.Background()
|
|
db := testDB(t)
|
|
userStore := users.NewStore(db)
|
|
authStore := auth.NewStore(db, userStore)
|
|
|
|
admin, err := userStore.GetByUsername(ctx, "admin")
|
|
if err != nil {
|
|
t.Fatalf("get admin: %v", err)
|
|
}
|
|
|
|
token, _, err := authStore.CreateSession(ctx, admin.ID)
|
|
if err != nil {
|
|
t.Fatalf("create session: %v", err)
|
|
}
|
|
|
|
u, err := authStore.UserForToken(ctx, token)
|
|
if err != nil {
|
|
t.Fatalf("resolve session: %v", err)
|
|
}
|
|
if u.Username != "admin" {
|
|
t.Fatalf("expected admin, got %s", u.Username)
|
|
}
|
|
|
|
if err := authStore.DestroySession(ctx, token); err != nil {
|
|
t.Fatalf("destroy session: %v", err)
|
|
}
|
|
if _, err := authStore.UserForToken(ctx, token); err != auth.ErrNoSession {
|
|
t.Fatalf("expected ErrNoSession after destroy, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestUserForTokenRejectsUnknownToken(t *testing.T) {
|
|
db := testDB(t)
|
|
authStore := auth.NewStore(db, users.NewStore(db))
|
|
if _, err := authStore.UserForToken(context.Background(), "does-not-exist"); err != auth.ErrNoSession {
|
|
t.Fatalf("expected ErrNoSession, got %v", err)
|
|
}
|
|
}
|