github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/weberrors/weberrors_test.go (about) 1 package weberrors 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestWeberrors(t *testing.T) { 11 12 assert := assert.New(t) 13 14 // make sure regular errors act as expected 15 baseErr := fmt.Errorf("base error") 16 assert.Error(baseErr) 17 assert.Equal(0, ErrorCode(baseErr)) 18 assert.Equal("", ErrorMessage(baseErr)) 19 assert.Nil(ErrorData(baseErr)) 20 21 // now one with weberrors.Detail 22 err := New(baseErr, 501, "some error", "some data", nil) 23 assert.Error(err) 24 assert.Equal(501, ErrorCode(err)) 25 assert.Equal("some error", ErrorMessage(err)) 26 assert.Equal("some data", ErrorData(err)) 27 assert.NotEmpty(ErrorHeaders(err).Get("X-Id")) 28 29 // now wrap that with ErrLoc and make sure it still works 30 errLoc := ErrLoc(err) 31 assert.Error(errLoc) 32 assert.Equal(501, ErrorCode(errLoc)) 33 assert.Equal("some error", ErrorMessage(errLoc)) 34 assert.Equal("some data", ErrorData(errLoc)) 35 36 errPrefix := ErrPrefix("test error: ", errLoc) 37 assert.Error(errPrefix) 38 assert.Equal(501, ErrorCode(errLoc)) 39 assert.Contains(errPrefix.Error(), "test error: ") 40 41 // check RootCause 42 assert.Equal(baseErr, RootCause(errPrefix)) 43 assert.Equal(baseErr, RootCause(errLoc)) 44 assert.Equal(baseErr, RootCause(err)) 45 assert.Equal(baseErr, RootCause(baseErr)) 46 assert.Nil(RootCause(nil)) 47 }