Adding upstream version 0.28.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
88f1d47ab6
commit
e28c88ef14
933 changed files with 194711 additions and 0 deletions
168
tools/router/route_test.go
Normal file
168
tools/router/route_test.go
Normal file
|
@ -0,0 +1,168 @@
|
|||
package router
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
"github.com/pocketbase/pocketbase/tools/hook"
|
||||
)
|
||||
|
||||
func TestRouteBindFunc(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
r := Route[*Event]{}
|
||||
|
||||
calls := ""
|
||||
|
||||
// append one function
|
||||
r.BindFunc(func(e *Event) error {
|
||||
calls += "a"
|
||||
return nil
|
||||
})
|
||||
|
||||
// append multiple functions
|
||||
r.BindFunc(
|
||||
func(e *Event) error {
|
||||
calls += "b"
|
||||
return nil
|
||||
},
|
||||
func(e *Event) error {
|
||||
calls += "c"
|
||||
return nil
|
||||
},
|
||||
)
|
||||
|
||||
if total := len(r.Middlewares); total != 3 {
|
||||
t.Fatalf("Expected %d middlewares, got %v", 3, total)
|
||||
}
|
||||
|
||||
for _, h := range r.Middlewares {
|
||||
_ = h.Func(nil)
|
||||
}
|
||||
|
||||
if calls != "abc" {
|
||||
t.Fatalf("Expected calls sequence %q, got %q", "abc", calls)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRouteBind(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
r := Route[*Event]{
|
||||
// mock excluded middlewares to check whether the entry will be deleted
|
||||
excludedMiddlewares: map[string]struct{}{"test2": {}},
|
||||
}
|
||||
|
||||
calls := ""
|
||||
|
||||
// append one handler
|
||||
r.Bind(&hook.Handler[*Event]{
|
||||
Func: func(e *Event) error {
|
||||
calls += "a"
|
||||
return nil
|
||||
},
|
||||
})
|
||||
|
||||
// append multiple handlers
|
||||
r.Bind(
|
||||
&hook.Handler[*Event]{
|
||||
Id: "test1",
|
||||
Func: func(e *Event) error {
|
||||
calls += "b"
|
||||
return nil
|
||||
},
|
||||
},
|
||||
&hook.Handler[*Event]{
|
||||
Id: "test2",
|
||||
Func: func(e *Event) error {
|
||||
calls += "c"
|
||||
return nil
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
if total := len(r.Middlewares); total != 3 {
|
||||
t.Fatalf("Expected %d middlewares, got %v", 3, total)
|
||||
}
|
||||
|
||||
for _, h := range r.Middlewares {
|
||||
_ = h.Func(nil)
|
||||
}
|
||||
|
||||
if calls != "abc" {
|
||||
t.Fatalf("Expected calls %q, got %q", "abc", calls)
|
||||
}
|
||||
|
||||
// ensures that the previously excluded middleware was removed
|
||||
if len(r.excludedMiddlewares) != 0 {
|
||||
t.Fatalf("Expected test2 to be removed from the excludedMiddlewares list, got %v", r.excludedMiddlewares)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRouteUnbind(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
r := Route[*Event]{}
|
||||
|
||||
calls := ""
|
||||
|
||||
// anonymous middlewares
|
||||
r.Bind(&hook.Handler[*Event]{
|
||||
Func: func(e *Event) error {
|
||||
calls += "a"
|
||||
return nil // unused value
|
||||
},
|
||||
})
|
||||
|
||||
// middlewares with id
|
||||
r.Bind(&hook.Handler[*Event]{
|
||||
Id: "test1",
|
||||
Func: func(e *Event) error {
|
||||
calls += "b"
|
||||
return nil // unused value
|
||||
},
|
||||
})
|
||||
r.Bind(&hook.Handler[*Event]{
|
||||
Id: "test2",
|
||||
Func: func(e *Event) error {
|
||||
calls += "c"
|
||||
return nil // unused value
|
||||
},
|
||||
})
|
||||
r.Bind(&hook.Handler[*Event]{
|
||||
Id: "test3",
|
||||
Func: func(e *Event) error {
|
||||
calls += "d"
|
||||
return nil // unused value
|
||||
},
|
||||
})
|
||||
|
||||
// remove
|
||||
r.Unbind("") // should be no-op
|
||||
r.Unbind("test1", "test3")
|
||||
|
||||
if total := len(r.Middlewares); total != 2 {
|
||||
t.Fatalf("Expected %d middlewares, got %v", 2, total)
|
||||
}
|
||||
|
||||
for _, h := range r.Middlewares {
|
||||
if err := h.Func(nil); err != nil {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if calls != "ac" {
|
||||
t.Fatalf("Expected calls %q, got %q", "ac", calls)
|
||||
}
|
||||
|
||||
// ensure that the id was added in the exclude list
|
||||
excluded := []string{"test1", "test3"}
|
||||
if len(r.excludedMiddlewares) != len(excluded) {
|
||||
t.Fatalf("Expected excludes %v, got %v", excluded, r.excludedMiddlewares)
|
||||
}
|
||||
for id := range r.excludedMiddlewares {
|
||||
if !slices.Contains(excluded, id) {
|
||||
t.Fatalf("Expected %q to be marked as excluded", id)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue