Openstatus www.openstatus.dev
at 552ff64ccfdc1d64cbb4ed6bec9b157e937e2ed3 76 lines 1.9 kB view raw
1package tinybird_test 2 3import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/openstatushq/openstatus/apps/checker/pkg/tinybird" 9 "github.com/stretchr/testify/require" 10) 11 12type interceptorHTTPClient struct { 13 f func(req *http.Request) (*http.Response, error) 14} 15 16func (i *interceptorHTTPClient) RoundTrip(req *http.Request) (*http.Response, error) { 17 return i.f(req) 18} 19 20func (i *interceptorHTTPClient) GetHTTPClient() *http.Client { 21 return &http.Client{ 22 Transport: i, 23 } 24} 25 26func TestSendEvent(t *testing.T) { 27 t.Parallel() 28 29 ctx := t.Context() 30 31 t.Run("it should return an error if it can not send the event", func(t *testing.T) { 32 interceptor := &interceptorHTTPClient{ 33 f: func(req *http.Request) (*http.Response, error) { 34 return nil, fmt.Errorf("unable to send request") 35 }, 36 } 37 38 client := tinybird.NewClient(interceptor.GetHTTPClient(), "apiKey") 39 40 err := client.SendEvent(ctx, "event", "test") 41 require.Error(t, err) 42 }) 43 44 t.Run("it should return an error if the response status code is not 200", func(t *testing.T) { 45 interceptor := &interceptorHTTPClient{ 46 f: func(req *http.Request) (*http.Response, error) { 47 return &http.Response{ 48 StatusCode: http.StatusInternalServerError, 49 }, nil 50 }, 51 } 52 53 client := tinybird.NewClient(interceptor.GetHTTPClient(), "apiKey") 54 55 err := client.SendEvent(ctx, "event", "test") 56 require.Error(t, err) 57 }) 58 59 t.Run("it should succeed and return nothing", func(t *testing.T) { 60 var url string 61 interceptor := &interceptorHTTPClient{ 62 f: func(req *http.Request) (*http.Response, error) { 63 url = req.URL.String() 64 return &http.Response{ 65 StatusCode: http.StatusAccepted, 66 }, nil 67 }, 68 } 69 70 client := tinybird.NewClient(interceptor.GetHTTPClient(), "apiKey") 71 72 err := client.SendEvent(ctx, "event", "test") 73 require.NoError(t, err) 74 require.Equal(t, "https://api.tinybird.co/v0/events?name=test", url) 75 }) 76}