summaryrefslogtreecommitdiff
path: root/test/integration/http.go
blob: 452c56d584bd05cb963f4950def45bf84d029c45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 *testing.T, r *http.Response) map[string]interface{} {
	item, err := serde.FromJSON[map[string]interface{}](r.Body)
	require.NoError(t, err)
	return item
}