mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-08 08:32:16 +01:00
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func TestHardTimeoutMiddleware_MissingLoggerReturnsErrorInsteadOfPanicking(t *testing.T) {
|
|
mw := hardTimeoutMiddleware(100 * time.Millisecond)
|
|
handler := mw(func(c echo.Context) error { return nil })
|
|
|
|
e := echo.New()
|
|
req := httptest.NewRequest(http.MethodGet, "/", nil)
|
|
rec := httptest.NewRecorder()
|
|
c := e.NewContext(req, rec)
|
|
|
|
// c has no "logger" key, mimicking a pooled context whose store was
|
|
// recycled under a concurrently running webhook goroutine. The
|
|
// middleware must surface an error instead of panicking on the
|
|
// unchecked type assertion the pre-fix code relied on.
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Fatalf("hardTimeoutMiddleware panicked: %v", r)
|
|
}
|
|
}()
|
|
|
|
err := handler(c)
|
|
if err == nil {
|
|
t.Fatal("expected an error for missing logger, got nil")
|
|
}
|
|
if !strings.Contains(err.Error(), "logger") {
|
|
t.Fatalf("error = %q, want a message mentioning logger", err)
|
|
}
|
|
}
|