// Package middlewaretest builds a Middleware for tests in other // packages. package middlewaretest import ( "log/slog" "testing" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/fx/fxtest" "sneak.berlin/go/webhooker/internal/config" "sneak.berlin/go/webhooker/internal/middleware" "sneak.berlin/go/webhooker/internal/session" ) // New builds a Middleware through middleware.New, on a // lifecycle that is never started. // // Its metrics recorder writes to a fresh registry of its own, so // Metrics() works on it and two of them never collide. func New( t *testing.T, log *slog.Logger, cfg *config.Config, sess *session.Session, ) *middleware.Middleware { t.Helper() m, err := middleware.New( fxtest.NewLifecycle(t), middleware.MiddlewareParams{ Logger: log, Config: cfg, Session: sess, Registry: prometheus.NewRegistry(), }, ) require.NoError(t, err) return m }