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 }