Skip to content

Commit

Permalink
fix handler order in routing
Browse files Browse the repository at this point in the history
  • Loading branch information
ReneWerner87 committed Feb 22, 2025
1 parent 4937104 commit 3a588a2
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 65 deletions.
40 changes: 12 additions & 28 deletions app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -479,16 +479,10 @@ func Test_App_Use_Params(t *testing.T) {
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")

defer func() {
if err := recover(); err != nil {
require.Equal(t, "use: invalid handler func()\n", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()

app.Use("/:param/*", func() {
// this should panic
require.PanicsWithValue(t, "use: invalid handler func()\n", func() {
app.Use("/:param/*", func() {
// this should panic
})
})
}

Expand Down Expand Up @@ -1057,14 +1051,10 @@ func Test_App_Mixed_Routes_WithSameLen(t *testing.T) {

func Test_App_Group_Invalid(t *testing.T) {
t.Parallel()
defer func() {
if err := recover(); err != nil {
require.Equal(t, "use: invalid handler int\n", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()
New().Group("/").Use(1)

require.PanicsWithValue(t, "use: invalid handler int\n", func() {
New().Group("/").Use(1)
})
}

func Test_App_Group(t *testing.T) {
Expand Down Expand Up @@ -1289,16 +1279,10 @@ func Test_App_Init_Error_View(t *testing.T) {
t.Parallel()
app := New(Config{Views: invalidView{}})

defer func() {
if err := recover(); err != nil {
require.Equal(t, "implement me", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()

err := app.config.Views.Render(nil, "", nil)
require.NoError(t, err)
require.PanicsWithValue(t, "implement me", func() {
//nolint:errcheck // not needed
_ = app.config.Views.Render(nil, "", nil)
})
}

// go test -run Test_App_Stack
Expand Down
24 changes: 6 additions & 18 deletions hooks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package fiber

import (
"errors"
"fmt"
"testing"
"time"

Expand Down Expand Up @@ -83,19 +82,14 @@ func Test_Hook_OnName(t *testing.T) {
func Test_Hook_OnName_Error(t *testing.T) {
t.Parallel()
app := New()
defer func() {
if err := recover(); err != nil {
require.Equal(t, "unknown error", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()

app.Hooks().OnName(func(_ Route) error {
return errors.New("unknown error")
})

app.Get("/", testSimpleHandler).Name("index")
require.PanicsWithError(t, "unknown error", func() {
app.Get("/", testSimpleHandler).Name("index")
})
}

func Test_Hook_OnGroup(t *testing.T) {
Expand Down Expand Up @@ -169,20 +163,14 @@ func Test_Hook_OnGroupName(t *testing.T) {
func Test_Hook_OnGroupName_Error(t *testing.T) {
t.Parallel()
app := New()
defer func() {
if err := recover(); err != nil {
require.Equal(t, "unknown error", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()

app.Hooks().OnGroupName(func(_ Group) error {
return errors.New("unknown error")
})

grp := app.Group("/x").Name("x.")
grp.Get("/test", testSimpleHandler)
require.PanicsWithError(t, "unknown error", func() {
_ = app.Group("/x").Name("x.")
})
}

func Test_Hook_OnShutdown(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions router.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,12 +321,12 @@ func (*App) copyRoute(route *Route) *Route {
func (app *App) register(methods []string, pathRaw string, group *Group, handlers ...Handler) {
// A regular route requires at least one ctx handler
if len(handlers) == 0 && group == nil {
panic(fmt.Sprintf("missing handler/middleware in route: %s", pathRaw))
panic(fmt.Sprintf("missing handler/middleware in route: %s\n", pathRaw))
}
// No nil handlers allowed
for _, h := range handlers {
if nil == h {
panic(fmt.Sprintf("nil handler in route: %s", pathRaw))
panic(fmt.Sprintf("nil handler in route: %s\n", pathRaw))
}
}

Expand Down
27 changes: 10 additions & 17 deletions router_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package fiber
import (
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
"net/http/httptest"
Expand Down Expand Up @@ -329,25 +328,19 @@ func Test_Router_Register_Missing_Handler(t *testing.T) {
app := New()

t.Run("No Handler", func(t *testing.T) {
defer func() {
if err := recover(); err != nil {
require.Equal(t, "missing handler/middleware in route: /doe", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()
app.register([]string{"USE"}, "/doe", nil)
t.Parallel()

require.PanicsWithValue(t, "missing handler/middleware in route: /doe\n", func() {
app.register([]string{"USE"}, "/doe", nil)
})
})

t.Run("Nil Handler", func(t *testing.T) {
defer func() {
if err := recover(); err != nil {
require.Equal(t, "nil handler in route: /doe", fmt.Sprintf("%v", err))
} else {
t.Fatalf("expected panic, but no panic occurred")
}
}()
app.register([]string{"USE"}, "/doe", nil, nil)
t.Parallel()

require.PanicsWithValue(t, "nil handler in route: /doe\n", func() {
app.register([]string{"USE"}, "/doe", nil, nil)
})
})
}

Expand Down

0 comments on commit 3a588a2

Please sign in to comment.