源码索引 / CURRENT IMPLEMENTATION
learning/go-patterns/patterns/middleware/middleware_test.go
38 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
跳到函数 / 声明
package middleware
import (
"reflect"
"testing"
)
func TestChainRunsMiddlewareOuterToInner(t *testing.T) {
endpoint := func(Request) Response {
return Response{Status: 200, Body: "ok"}
}
handler := Chain(endpoint, PrefixBody("outer"), PrefixBody("inner"))
got := handler(Request{Path: "/health"})
if got.Body != "outer:inner:ok" {
t.Fatalf("Body = %q, want %q", got.Body, "outer:inner:ok")
}
}
func TestAddHeaderInitializesAndPreservesResponseHeaders(t *testing.T) {
endpoint := func(Request) Response {
return Response{Status: 204, Headers: map[string]string{"X-Endpoint": "yes"}}
}
got := Chain(endpoint, AddHeader("X-Request-ID", "fixed-id"))(Request{})
want := map[string]string{"X-Endpoint": "yes", "X-Request-ID": "fixed-id"}
if !reflect.DeepEqual(got.Headers, want) {
t.Fatalf("Headers = %#v, want %#v", got.Headers, want)
}
}
func TestChainIgnoresNilMiddleware(t *testing.T) {
got := Chain(func(Request) Response { return Response{Body: "ok"} }, nil)(Request{})
if got.Body != "ok" {
t.Fatalf("Body = %q, want %q", got.Body, "ok")
}
}