MCPcopy
hub / github.com/gin-gonic/gin / TestRecoveryWithWriterWithCustomRecovery

Function TestRecoveryWithWriterWithCustomRecovery

recovery_test.go:224–257  ·  recovery_test.go::TestRecoveryWithWriterWithCustomRecovery
(t *testing.T)

Source from the content-addressed store, hash-verified

222}
223
224func TestRecoveryWithWriterWithCustomRecovery(t *testing.T) {
225 errBuffer := new(strings.Builder)
226 buffer := new(strings.Builder)
227 router := New()
228 DefaultErrorWriter = buffer
229 handleRecovery := func(c *Context, err any) {
230 errBuffer.WriteString(err.(string))
231 c.AbortWithStatus(http.StatusBadRequest)
232 }
233 router.Use(RecoveryWithWriter(DefaultErrorWriter, handleRecovery))
234 router.GET("/recovery", func(_ *Context) {
235 panic("Oops, Houston, we have a problem")
236 })
237 // RUN
238 w := PerformRequest(router, http.MethodGet, "/recovery")
239 // TEST
240 assert.Equal(t, http.StatusBadRequest, w.Code)
241 assert.Contains(t, buffer.String(), "panic recovered")
242 assert.Contains(t, buffer.String(), "Oops, Houston, we have a problem")
243 assert.Contains(t, buffer.String(), t.Name())
244 assert.NotContains(t, buffer.String(), "GET /recovery")
245
246 // Debug mode prints the request
247 SetMode(DebugMode)
248 // RUN
249 w = PerformRequest(router, http.MethodGet, "/recovery")
250 // TEST
251 assert.Equal(t, http.StatusBadRequest, w.Code)
252 assert.Contains(t, buffer.String(), "GET /recovery")
253
254 assert.Equal(t, strings.Repeat("Oops, Houston, we have a problem", 2), errBuffer.String())
255
256 SetMode(TestMode)
257}
258
259func TestSecureRequestDump(t *testing.T) {
260 tests := []struct {

Callers

nothing calls this directly

Calls 10

NewFunction · 0.85
RecoveryWithWriterFunction · 0.85
PerformRequestFunction · 0.85
SetModeFunction · 0.85
AbortWithStatusMethod · 0.80
WriteStringMethod · 0.65
UseMethod · 0.65
GETMethod · 0.65
StringMethod · 0.65
NameMethod · 0.65

Tested by

no test coverage detected