package test import ( "context" "net/http" "testing" "time" "github.com/stretchr/testify/require" "github.com/xlgmokha/x/pkg/serde" ) type testTransport struct { t *testing.T } func (r *testTransport) RoundTrip(request *http.Request) (*http.Response, error) { response, err := http.DefaultTransport.RoundTrip(request) require.NoError(r.t, err) r.t.Logf("%v %v %v\n", response.StatusCode, request.Method, request.URL) return response, err } func HttpGet(t *testing.T, ctx context.Context, path string) *http.Response { client := &http.Client{ Timeout: 5 * time.Second, Transport: &testTransport{t: t}, } request, err := http.NewRequestWithContext(ctx, http.MethodGet, path, nil) require.NoError(t, err) response, err := client.Do(request) require.NoError(t, err) return response } func JSONBody[T any](t *testing.T, r *http.Response) T { item, err := serde.FromJSON[T](r.Body) require.NoError(t, err) return item }