github.com/newrelic/newrelic-client-go@v1.1.0/pkg/synthetics/synthetics_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package synthetics
     5  
     6  import (
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  
    14  	mock "github.com/newrelic/newrelic-client-go/pkg/testhelpers"
    15  )
    16  
    17  // TestError checks that messages are reported in the correct
    18  // order by going through priorities backwards
    19  func TestError(t *testing.T) {
    20  	t.Parallel()
    21  
    22  	// Default empty
    23  	e := ErrorResponse{}
    24  	assert.Equal(t, "", e.Error())
    25  
    26  	// 3rd Messages concat
    27  	e.Messages = []ErrorDetail{
    28  		{Message: "detail message"},
    29  		{Message: "another detail"},
    30  	}
    31  	assert.Equal(t, "detail message, another detail", e.Error())
    32  
    33  	// 2nd Message
    34  	e.Message = "message"
    35  	assert.Equal(t, "message", e.Error())
    36  
    37  	// 1st Server Error Message
    38  	e.ServerErrorMessage = "server message"
    39  	assert.Equal(t, "server message", e.Error())
    40  }
    41  
    42  func newTestClient(t *testing.T, handler http.Handler) Synthetics {
    43  	ts := httptest.NewServer(handler)
    44  	tc := mock.NewTestConfig(t, ts)
    45  
    46  	return New(tc)
    47  }
    48  
    49  func newMockResponse(t *testing.T, mockJSONResponse string, statusCode int) Synthetics {
    50  	return newTestClient(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    51  		w.Header().Set("Content-Type", "application/json")
    52  		w.WriteHeader(statusCode)
    53  
    54  		_, err := w.Write([]byte(mockJSONResponse))
    55  
    56  		require.NoError(t, err)
    57  	}))
    58  }