| 749 | } |
| 750 | |
| 751 | func Test_App_serverErrorHandler_Unsupported_Method_Request(t *testing.T) { |
| 752 | t.Parallel() |
| 753 | |
| 754 | app := New() |
| 755 | app.Get("/bar", func(c Ctx) error { |
| 756 | return c.SendString("bar") |
| 757 | }) |
| 758 | |
| 759 | ln := fasthttputil.NewInmemoryListener() |
| 760 | |
| 761 | serverStarted := make(chan struct{}, 1) |
| 762 | serverErr := make(chan error, 1) |
| 763 | |
| 764 | go func() { |
| 765 | serverStarted <- struct{}{} |
| 766 | if err := app.Listener(ln); err != nil && !errors.Is(err, http.ErrServerClosed) { |
| 767 | serverErr <- err |
| 768 | return |
| 769 | } |
| 770 | serverErr <- nil |
| 771 | }() |
| 772 | |
| 773 | <-serverStarted |
| 774 | |
| 775 | conn, err := ln.Dial() |
| 776 | require.NoError(t, err) |
| 777 | require.NoError(t, conn.SetDeadline(time.Now().Add(5*time.Second))) |
| 778 | |
| 779 | _, err = conn.Write([]byte("FOO /bar HTTP/1.1\r\nHost: example.com\r\n\r\n")) |
| 780 | require.NoError(t, err) |
| 781 | |
| 782 | resp, err := http.ReadResponse(bufio.NewReader(conn), nil) |
| 783 | require.NoError(t, err) |
| 784 | require.Equal(t, StatusNotImplemented, resp.StatusCode) |
| 785 | |
| 786 | body, err := io.ReadAll(resp.Body) |
| 787 | require.NoError(t, err) |
| 788 | require.Equal(t, utils.StatusMessage(StatusNotImplemented), string(body)) |
| 789 | require.NoError(t, resp.Body.Close()) |
| 790 | require.NoError(t, conn.Close()) |
| 791 | |
| 792 | require.NoError(t, app.Shutdown()) |
| 793 | require.NoError(t, <-serverErr) |
| 794 | } |
| 795 | |
| 796 | func Test_App_Nested_Params(t *testing.T) { |
| 797 | t.Parallel() |