Home / Function/ Test_Response_Save() — fiber Function Reference

Test_Response_Save() — fiber Function Reference

Architecture documentation for the Test_Response_Save() function in response_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  ba75004a_ae69_42a2_15ae_f993a83b1730["Test_Response_Save()"]
  9a680627_ad54_340e_3faa_64ead9b39aef["response_test.go"]
  ba75004a_ae69_42a2_15ae_f993a83b1730 -->|defined in| 9a680627_ad54_340e_3faa_64ead9b39aef
  style ba75004a_ae69_42a2_15ae_f993a83b1730 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

client/response_test.go lines 575–687

func Test_Response_Save(t *testing.T) {
	t.Parallel()

	setupApp := func() *testServer {
		server := startTestServer(t, func(app *fiber.App) {
			app.Get("/json", func(c fiber.Ctx) error {
				return c.SendString("{\"status\":\"success\"}")
			})
		})

		return server
	}

	t.Run("file path", func(t *testing.T) {
		t.Parallel()

		server := setupApp()
		defer server.stop()

		client := New().SetDial(server.dial())

		resp, err := AcquireRequest().
			SetClient(client).
			Get("http://example.com/json")

		require.NoError(t, err)

		err = resp.Save("./test/tmp.json")
		require.NoError(t, err)
		defer func() {
			_, statErr := os.Stat("./test/tmp.json")
			require.NoError(t, statErr)

			statErr = os.RemoveAll("./test")
			require.NoError(t, statErr)
		}()

		file, err := os.Open("./test/tmp.json")
		require.NoError(t, err)
		defer func(file *os.File) {
			closeErr := file.Close()
			require.NoError(t, closeErr)
		}(file)

		data, err := io.ReadAll(file)
		require.NoError(t, err)
		require.JSONEq(t, "{\"status\":\"success\"}", string(data))
	})

	t.Run("io.Writer", func(t *testing.T) {
		t.Parallel()

		server := setupApp()
		defer server.stop()

		client := New().SetDial(server.dial())

		resp, err := AcquireRequest().
			SetClient(client).
			Get("http://example.com/json")

		require.NoError(t, err)

		buf := &bytes.Buffer{}

		err = resp.Save(buf)
		require.NoError(t, err)
		require.JSONEq(t, "{\"status\":\"success\"}", buf.String())
	})

	t.Run("io.Copy error when saving to file is surfaced", func(t *testing.T) {
		t.Parallel()

		resp := AcquireResponse()
		defer ReleaseResponse(resp)

		resp.RawResponse.SetBodyStream(&errorReader{err: errors.New("copy failure")}, -1)

		target := filepath.Join(t.TempDir(), "out.txt")
		err := resp.Save(target)
		require.ErrorContains(t, err, "failed to write response body to file: copy failure")

Domain

Subdomains

Frequently Asked Questions

What does Test_Response_Save() do?
Test_Response_Save() is a function in the fiber codebase, defined in client/response_test.go.
Where is Test_Response_Save() defined?
Test_Response_Save() is defined in client/response_test.go at line 575.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free