forked from mirror/codeberg-forgejo
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
// Copyright 2022 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package ping
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
pingv1 "code.gitea.io/actions-proto-go/ping/v1"
|
|
"code.gitea.io/actions-proto-go/ping/v1/pingv1connect"
|
|
"github.com/bufbuild/connect-go"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestService(t *testing.T) {
|
|
mux := http.NewServeMux()
|
|
mux.Handle(pingv1connect.NewPingServiceHandler(
|
|
&Service{},
|
|
))
|
|
MainServiceTest(t, mux)
|
|
}
|
|
|
|
func MainServiceTest(t *testing.T, h http.Handler) {
|
|
t.Parallel()
|
|
server := httptest.NewUnstartedServer(h)
|
|
server.EnableHTTP2 = true
|
|
server.StartTLS()
|
|
defer server.Close()
|
|
|
|
connectClient := pingv1connect.NewPingServiceClient(
|
|
server.Client(),
|
|
server.URL,
|
|
)
|
|
|
|
grpcClient := pingv1connect.NewPingServiceClient(
|
|
server.Client(),
|
|
server.URL,
|
|
connect.WithGRPC(),
|
|
)
|
|
|
|
grpcWebClient := pingv1connect.NewPingServiceClient(
|
|
server.Client(),
|
|
server.URL,
|
|
connect.WithGRPCWeb(),
|
|
)
|
|
|
|
clients := []pingv1connect.PingServiceClient{connectClient, grpcClient, grpcWebClient}
|
|
t.Run("ping request", func(t *testing.T) {
|
|
for _, client := range clients {
|
|
result, err := client.Ping(context.Background(), connect.NewRequest(&pingv1.PingRequest{
|
|
Data: "foobar",
|
|
}))
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "Hello, foobar!", result.Msg.Data)
|
|
}
|
|
})
|
|
}
|