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  }