github.com/twilio/twilio-go@v1.20.1/client/error_test.go (about)

     1  package client_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"strings"
     6  	"testing"
     7  
     8  	assert "github.com/stretchr/testify/require"
     9  	"github.com/twilio/twilio-go/client"
    10  )
    11  
    12  const (
    13  	errorCode     = 20001
    14  	errorMessage  = "Bad request"
    15  	errorMoreInfo = "https://www.twilio.com/docs/errors/20001"
    16  	errorStatus   = 400
    17  )
    18  
    19  func TestTwilioRestError_Error(t *testing.T) {
    20  	details := make(map[string]interface{})
    21  	details["foo"] = "bar"
    22  	err := &client.TwilioRestError{
    23  		Code:     errorCode,
    24  		Details:  details,
    25  		Message:  errorMessage,
    26  		MoreInfo: errorMoreInfo,
    27  		Status:   errorStatus,
    28  	}
    29  	expected := "Status: 400 - ApiError 20001: Bad request ({\"foo\":\"bar\"}) More info: https://www.twilio.com/docs/errors/20001"
    30  	assert.Equal(t, expected, err.Error())
    31  }
    32  
    33  func TestTwilioRestError_NoDetails(t *testing.T) {
    34  	err := &client.TwilioRestError{}
    35  	response := `{"code":20001,"message":"Bad request","more_info":"https://www.twilio.com/docs/errors/20001","status":400}`
    36  	responseReader := strings.NewReader(response)
    37  	decodeErr := json.NewDecoder(responseReader).Decode(err)
    38  	assert.Nil(t, decodeErr)
    39  	assert.Equal(t, err.Code, errorCode)
    40  	assert.Equal(t, err.Status, errorStatus)
    41  	assert.Equal(t, err.Message, errorMessage)
    42  	assert.Equal(t, err.MoreInfo, errorMoreInfo)
    43  	assert.Nil(t, err.Details)
    44  }