diff options
Diffstat (limited to 'wrap_test.go')
-rw-r--r-- | wrap_test.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/wrap_test.go b/wrap_test.go new file mode 100644 index 0000000..31b831e --- /dev/null +++ b/wrap_test.go @@ -0,0 +1,45 @@ +package muxtool + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" +) + +func ExampleWrap() { + rr := httptest.NewRecorder() + + // Sample request + req := reqHello{ + Name: "NeonXP", + } + b, _ := json.Marshal(req) + request, _ := http.NewRequest(http.MethodPost, "/hello", bytes.NewReader(b)) + + // Handler + mux := http.NewServeMux() + // Handle wrapped `handleHello(context.Context, *reqHello) (*respHello, error)` + mux.Handle("POST /hello", Wrap(handleHello)) + + mux.ServeHTTP(rr, request) + + fmt.Println(rr.Body.String()) + // Output: {"message":"Hello, NeonXP!"} +} + +type reqHello struct { + Name string `json:"name"` +} + +type respHello struct { + Message string `json:"message"` +} + +func handleHello(ctx context.Context, req *reqHello) (*respHello, error) { + return &respHello{ + Message: fmt.Sprintf("Hello, %s!", req.Name), + }, nil +} |