package middleware import ( "errors" "net/http/httptest" "testing" "github.com/gofiber/fiber/v2" ) func TestErrorHandler(t *testing.T) { app := fiber.New() app.Use(ErrorHandler) app.Get("/error", func(c *fiber.Ctx) error { return fiber.NewError(fiber.StatusBadRequest, "Bad Request") }) app.Get("/panic", func(c *fiber.Ctx) error { return errors.New("some error") }) // Test Fiber error req := httptest.NewRequest("GET", "/error", nil) resp, err := app.Test(req) if err != nil { t.Fatalf("Test request failed: %v", err) } if resp.StatusCode != fiber.StatusBadRequest { t.Errorf("Expected status %d, got %d", fiber.StatusBadRequest, resp.StatusCode) } // Test generic error req = httptest.NewRequest("GET", "/panic", nil) resp, err = app.Test(req) if err != nil { t.Fatalf("Test request failed: %v", err) } if resp.StatusCode != fiber.StatusInternalServerError { t.Errorf("Expected status %d, got %d", fiber.StatusInternalServerError, resp.StatusCode) } } func TestRecoverHandler(t *testing.T) { app := fiber.New() app.Use(RecoverHandler()) app.Get("/panic", func(c *fiber.Ctx) error { panic("test panic") }) req := httptest.NewRequest("GET", "/panic", nil) resp, err := app.Test(req) if err != nil { t.Fatalf("Test request failed: %v", err) } if resp.StatusCode != fiber.StatusInternalServerError { t.Errorf("Expected status %d, got %d", fiber.StatusInternalServerError, resp.StatusCode) } }