add test hooks
This commit is contained in:
		| @@ -559,6 +559,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 	if r.Body != nil { | 	if r.Body != nil { | ||||||
| 		var buf []byte | 		var buf []byte | ||||||
| 		buf, err = io.ReadAll(r.Body) | 		buf, err = io.ReadAll(r.Body) | ||||||
|  | 		r.Body.Close() | ||||||
| 		if err != nil && err != io.EOF { | 		if err != nil && err != io.EOF { | ||||||
| 			h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError) | 			h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError) | ||||||
| 			return | 			return | ||||||
|   | |||||||
							
								
								
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							| @@ -3,6 +3,9 @@ package http | |||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"fmt" | ||||||
|  | 	"go.unistack.org/micro/v3/options" | ||||||
|  | 	"go.unistack.org/micro/v3/server" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"testing" | 	"testing" | ||||||
| @@ -54,3 +57,41 @@ func TestFillrequest(t *testing.T) { | |||||||
| 		t.Fatalf("FillRequest error: %#+v", req) | 		t.Fatalf("FillRequest error: %#+v", req) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func Test_Hook(t *testing.T) { | ||||||
|  | 	opts := server.Options{} | ||||||
|  |  | ||||||
|  | 	var fn server.HandlerFunc = func(fctx context.Context, req server.Request, rsp interface{}) (err error) { | ||||||
|  | 		fmt.Println("1") | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var fn2 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc { | ||||||
|  | 		return func(ctx context.Context, req server.Request, rsp interface{}) error { | ||||||
|  | 			fmt.Println("2") | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	var fn3 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc { | ||||||
|  | 		return func(ctx context.Context, req server.Request, rsp interface{}) error { | ||||||
|  | 			fmt.Println("3") | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	var fn4 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc { | ||||||
|  | 		return func(ctx context.Context, req server.Request, rsp interface{}) error { | ||||||
|  | 			fmt.Println("4") | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	opts.Hooks = append(opts.Hooks, fn2, fn3, fn4) | ||||||
|  |  | ||||||
|  | 	opts.Hooks.EachNext(func(hook options.Hook) { | ||||||
|  | 		if h, ok := hook.(server.HandlerWrapper); ok { | ||||||
|  | 			fn = h(fn) | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	fn(nil, nil, nil) | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user