Home / Function/ TestResponseTimeMiddleware() — fiber Function Reference

TestResponseTimeMiddleware() — fiber Function Reference

Architecture documentation for the TestResponseTimeMiddleware() function in responsetime_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  725057f8_d16c_e9ce_d05e_5dd4d2b4a661["TestResponseTimeMiddleware()"]
  52de1faa_55e4_78d1_8dce_7c80d053db1b["responsetime_test.go"]
  725057f8_d16c_e9ce_d05e_5dd4d2b4a661 -->|defined in| 52de1faa_55e4_78d1_8dce_7c80d053db1b
  style 725057f8_d16c_e9ce_d05e_5dd4d2b4a661 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

middleware/responsetime/responsetime_test.go lines 14–99

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

	boom := errors.New("boom")

	tests := []struct {
		name                  string
		expectedStatus        int
		useCustomErrorHandler bool
		returnError           bool
		expectHeader          bool
		skipWithNext          bool
	}{
		{
			name:           "sets duration header",
			expectedStatus: fiber.StatusOK,
			expectHeader:   true,
		},
		{
			name:           "skips when Next returns true",
			expectedStatus: fiber.StatusOK,
			expectHeader:   false,
			skipWithNext:   true,
		},
		{
			name:                  "propagates errors",
			expectedStatus:        fiber.StatusTeapot,
			useCustomErrorHandler: true,
			returnError:           true,
			expectHeader:          true,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			t.Parallel()

			configs := []Config(nil)
			if tt.skipWithNext {
				configs = []Config{{
					Next: func(fiber.Ctx) bool {
						return true
					},
				}}
			}

			appConfig := fiber.Config{}
			if tt.useCustomErrorHandler {
				appConfig.ErrorHandler = func(c fiber.Ctx, err error) error {
					t.Helper()
					require.ErrorIs(t, err, boom)

					return c.Status(fiber.StatusTeapot).SendString(err.Error())
				}
			}

			app := fiber.New(appConfig)
			app.Use(New(configs...))

			app.Get("/", func(c fiber.Ctx) error {
				if tt.returnError {
					return boom
				}

				return c.SendStatus(fiber.StatusOK)
			})

			resp, err := app.Test(httptest.NewRequest(fiber.MethodGet, "/", http.NoBody))

			require.NoError(t, err)
			require.Equal(t, tt.expectedStatus, resp.StatusCode)

			header := resp.Header.Get(fiber.HeaderXResponseTime)
			if tt.expectHeader {
				require.NotEmpty(t, header)

				_, parseErr := time.ParseDuration(header)
				require.NoError(t, parseErr)

				return
			}

Domain

Subdomains

Frequently Asked Questions

What does TestResponseTimeMiddleware() do?
TestResponseTimeMiddleware() is a function in the fiber codebase, defined in middleware/responsetime/responsetime_test.go.
Where is TestResponseTimeMiddleware() defined?
TestResponseTimeMiddleware() is defined in middleware/responsetime/responsetime_test.go at line 14.

Analyze Your Own Codebase

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

Try Supermodel Free