(t *testing.T)
| 687 | } |
| 688 | |
| 689 | func Test_Response_BodyStream(t *testing.T) { |
| 690 | t.Parallel() |
| 691 | |
| 692 | t.Run("basic streaming", func(t *testing.T) { |
| 693 | t.Parallel() |
| 694 | |
| 695 | server := startTestServer(t, func(app *fiber.App) { |
| 696 | app.Get("/stream", func(c fiber.Ctx) error { |
| 697 | return c.SendStream(bytes.NewReader([]byte("streaming data"))) |
| 698 | }) |
| 699 | }) |
| 700 | defer server.stop() |
| 701 | |
| 702 | client := New().SetDial(server.dial()).SetStreamResponseBody(true) |
| 703 | |
| 704 | resp, err := client.Get("http://example.com/stream") |
| 705 | require.NoError(t, err) |
| 706 | defer resp.Close() |
| 707 | bodyStream := resp.BodyStream() |
| 708 | require.NotNil(t, bodyStream) |
| 709 | data, err := io.ReadAll(bodyStream) |
| 710 | require.NoError(t, err) |
| 711 | require.Equal(t, "streaming data", string(data)) |
| 712 | }) |
| 713 | |
| 714 | t.Run("large response streaming", func(t *testing.T) { |
| 715 | t.Parallel() |
| 716 | |
| 717 | server := startTestServer(t, func(app *fiber.App) { |
| 718 | app.Get("/large", func(c fiber.Ctx) error { |
| 719 | data := make([]byte, 1024) |
| 720 | for i := range data { |
| 721 | data[i] = byte('A' + i%26) |
| 722 | } |
| 723 | return c.SendStream(bytes.NewReader(data)) |
| 724 | }) |
| 725 | }) |
| 726 | defer server.stop() |
| 727 | |
| 728 | client := New().SetDial(server.dial()).SetStreamResponseBody(true) |
| 729 | resp, err := client.Get("http://example.com/large") |
| 730 | require.NoError(t, err) |
| 731 | defer resp.Close() |
| 732 | bodyStream := resp.BodyStream() |
| 733 | require.NotNil(t, bodyStream) |
| 734 | buffer := make([]byte, 256) |
| 735 | var totalRead []byte |
| 736 | for { |
| 737 | n, err := bodyStream.Read(buffer) |
| 738 | if n > 0 { |
| 739 | totalRead = append(totalRead, buffer[:n]...) |
| 740 | } |
| 741 | if err == io.EOF { |
| 742 | break |
| 743 | } |
| 744 | require.NoError(t, err) |
| 745 | } |
| 746 | require.Len(t, totalRead, 1024) |
nothing calls this directly
no test coverage detected