package rpc import ( "net" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" grpc "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) func TestServer(t *testing.T) { listener, err := net.Listen("tcp", "localhost:0") require.NoError(t, err) defer listener.Close() server := New() defer server.Stop() 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.False(t, reply.Result) }) }