Commit 7f6dddc

mo khan <mo@mokhan.ca>
2025-04-02 03:03:39
test: start an RPC server and run a smoke test
1 parent 0a407b3
Changed files (1)
pkg/rpc/server_test.go
@@ -5,25 +5,45 @@ import (
 	"net/http"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gitlab.com/mokhax/spike/pkg/authz"
+	grpc "google.golang.org/grpc"
+	"google.golang.org/grpc/credentials/insecure"
 )
 
 func TestServer(t *testing.T) {
-	t.Run("returns a result", func(t *testing.T) {
-		authorizer := authz.AuthorizerFunc(func(r *http.Request) bool {
-			return true
-		})
+	authorizer := authz.AuthorizerFunc(func(r *http.Request) bool {
+		return true
+	})
 
-		listener, err := net.Listen("tcp", ":0")
-		require.NoError(t, err)
+	listener, err := net.Listen("tcp", "localhost:0")
+	require.NoError(t, err)
+	defer listener.Close()
+
+	server := New(authorizer)
+	defer server.Stop()
 
-		server := New(authorizer)
-		defer server.Stop()
-		defer listener.Close()
+	go func() {
+		require.NoError(t, server.Serve(listener))
+	}()
 
-		go func() {
-			require.NoError(t, server.Serve(listener))
-		}()
+	connection, err := grpc.NewClient(
+		listener.Addr().String(),
+		grpc.WithTransportCredentials(insecure.NewCredentials()),
+	)
+	require.NoError(t, err)
+
+	defer connection.Close()
+	client := NewAbilityClient(connection)
+
+	t.Run("returns a result", func(t *testing.T) {
+		reply, err := client.Allowed(t.Context(), &AllowRequest{
+			Subject:    "",
+			Permission: "",
+			Resource:   "",
+		})
+		require.NoError(t, err)
+		assert.True(t, reply.Result)
 	})
 }