responsetime_test.go — fiber Source File
Architecture documentation for responsetime_test.go, a go file in the fiber codebase. 1 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 52de1faa_55e4_78d1_8dce_7c80d053db1b["responsetime_test.go"] fcef1725_af89_d6cd_36cd_b228cdcc5acd["errors"] 52de1faa_55e4_78d1_8dce_7c80d053db1b --> fcef1725_af89_d6cd_36cd_b228cdcc5acd style 52de1faa_55e4_78d1_8dce_7c80d053db1b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
package responsetime
import (
"errors"
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/gofiber/fiber/v3"
"github.com/stretchr/testify/require"
)
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
}
require.Empty(t, header)
})
}
}
Domain
Subdomains
Functions
Types
Dependencies
- errors
Source
Frequently Asked Questions
What does responsetime_test.go do?
responsetime_test.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in responsetime_test.go?
responsetime_test.go defines 1 function(s): TestResponseTimeMiddleware.
What does responsetime_test.go depend on?
responsetime_test.go imports 1 module(s): errors.
Where is responsetime_test.go in the architecture?
responsetime_test.go is located at middleware/responsetime/responsetime_test.go (domain: FiberCore, subdomain: Adapters, directory: middleware/responsetime).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free