package client_test import ( "context" "net/http/httptest" "testing" "github.com/foomo/contentserver/client" "github.com/foomo/contentserver/content" "github.com/foomo/contentserver/pkg/handler" "github.com/foomo/contentserver/requests" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest" ) const pathContentserver = "/contentserver" func TestInvalidHTTPClientInit(t *testing.T) { c, err := client.NewHTTPClient("") assert.Nil(t, c) assert.Error(t, err) c, err = client.NewHTTPClient("bogus") assert.Nil(t, c) assert.Error(t, err) c, err = client.NewHTTPClient("htt:/notaurl") assert.Nil(t, c) assert.Error(t, err) c, err = client.NewHTTPClient("htts://notaurl") assert.Nil(t, c) assert.Error(t, err) c, err = client.NewHTTPClient("/path/segment/only") assert.Nil(t, c) assert.Error(t, err) } func BenchmarkWebClientAndServerGetContent(b *testing.B) { l := zaptest.NewLogger(b) server := initHTTPRepoServer(b, l) httpClient := newHTTPClient(b, server) benchmarkServerAndClientGetContent(b, 30, 100, httpClient) } type GetContentClient interface { GetContent(ctx context.Context, request *requests.Content) (response *content.SiteContent, err error) } func newHTTPClient(tb testing.TB, server *httptest.Server) *client.Client { tb.Helper() c, err := client.NewHTTPClient(server.URL + pathContentserver) require.NoError(tb, err) return c } func testWithClients(t *testing.T, testFunc func(c *client.Client)) { t.Helper() l := zaptest.NewLogger(t) httpRepoServer := initHTTPRepoServer(t, l) socketRepoServer := initSocketRepoServer(t, l) httpClient := newHTTPClient(t, httpRepoServer) socketClient := newSocketClient(t, socketRepoServer) defer httpClient.Close() defer socketClient.Close() testFunc(httpClient) testFunc(socketClient) } func initHTTPRepoServer(tb testing.TB, l *zap.Logger) *httptest.Server { tb.Helper() r := initRepo(tb, l) return httptest.NewServer(handler.NewHTTP(l, r)) }