github.com/cloudwego/hertz@v0.9.3/pkg/app/middlewares/server/recovery/option_test.go (about) 1 /* 2 * Copyright 2022 CloudWeGo Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package recovery 18 19 import ( 20 "context" 21 "fmt" 22 "testing" 23 24 "github.com/cloudwego/hertz/pkg/app" 25 "github.com/cloudwego/hertz/pkg/common/hlog" 26 "github.com/cloudwego/hertz/pkg/common/test/assert" 27 "github.com/cloudwego/hertz/pkg/common/utils" 28 "github.com/cloudwego/hertz/pkg/protocol/consts" 29 ) 30 31 func TestDefaultOption(t *testing.T) { 32 opts := newOptions() 33 assert.DeepEqual(t, fmt.Sprintf("%p", defaultRecoveryHandler), fmt.Sprintf("%p", opts.recoveryHandler)) 34 } 35 36 func newRecoveryHandler(c context.Context, ctx *app.RequestContext, err interface{}, stack []byte) { 37 hlog.SystemLogger().CtxErrorf(c, "[New Recovery] panic recovered:\n%s\n%s\n", 38 err, stack) 39 ctx.JSON(consts.StatusNotImplemented, utils.H{"msg": err.(string)}) 40 } 41 42 func TestOption(t *testing.T) { 43 opts := newOptions(WithRecoveryHandler(newRecoveryHandler)) 44 assert.DeepEqual(t, fmt.Sprintf("%p", newRecoveryHandler), fmt.Sprintf("%p", opts.recoveryHandler)) 45 }