xtablo-source/backend/internal/db/pool_test.go
Arthur Belleville 36e96015f5
feat(01-03): pgxpool wrapper, RequestID/slog middleware, slog handler switch
- Remove //go:build red_gate tag from internal/web/handlers_test.go and
  internal/db/pool_test.go now that consumer symbols are about to exist
- go mod tidy after real importers land (deferred from Plan 01-01 per
  Codex concern #1) — chi/v5, templ, pgx/v5, google/uuid now in require list
- internal/db/pool.go: NewPool(ctx, dsn) builds a pgxpool.Pool with
  MaxConns=10, MinConns=1; no eager Ping (RESEARCH Pitfall 2)
- internal/web/slog.go: NewSlogHandler returns JSON when env='production',
  text otherwise; pure helper, no slog.SetDefault side effect
- internal/web/middleware.go: RequestIDMiddleware (UUIDv4 → ctx +
  X-Request-ID header), LoggerFromContext helper, SlogLoggerMiddleware
  factory using chi WrapResponseWriter; field allowlist per V7/T-01-09
2026-05-14 19:24:16 +02:00

31 lines
742 B
Go

package db
import (
"context"
"os"
"testing"
"time"
)
// TestPool_Connects is an integration test that requires a live Postgres
// reachable via DATABASE_URL. Skipped in unit-test runs without the env var
// set. DSN value itself is never logged (info-disclosure T-01-06).
func TestPool_Connects(t *testing.T) {
dsn := os.Getenv("DATABASE_URL")
if dsn == "" {
t.Skip("DATABASE_URL not set — integration test skipped")
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
pool, err := NewPool(ctx, dsn)
if err != nil {
t.Fatalf("NewPool: unexpected error: %v", err)
}
defer pool.Close()
if err := pool.Ping(ctx); err != nil {
t.Fatalf("pool.Ping: unexpected error: %v", err)
}
}