github.com/MetalBlockchain/metalgo@v1.11.9/vms/platformvm/warp/gwarp/signer_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package gwarp 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/MetalBlockchain/metalgo/ids" 12 "github.com/MetalBlockchain/metalgo/utils/constants" 13 "github.com/MetalBlockchain/metalgo/utils/crypto/bls" 14 "github.com/MetalBlockchain/metalgo/vms/platformvm/warp" 15 "github.com/MetalBlockchain/metalgo/vms/rpcchainvm/grpcutils" 16 17 pb "github.com/MetalBlockchain/metalgo/proto/pb/warp" 18 ) 19 20 type testSigner struct { 21 client *Client 22 server warp.Signer 23 sk *bls.SecretKey 24 networkID uint32 25 chainID ids.ID 26 } 27 28 func setupSigner(t testing.TB) *testSigner { 29 require := require.New(t) 30 31 sk, err := bls.NewSecretKey() 32 require.NoError(err) 33 34 chainID := ids.GenerateTestID() 35 36 s := &testSigner{ 37 server: warp.NewSigner(sk, constants.UnitTestID, chainID), 38 sk: sk, 39 networkID: constants.UnitTestID, 40 chainID: chainID, 41 } 42 43 listener, err := grpcutils.NewListener() 44 require.NoError(err) 45 serverCloser := grpcutils.ServerCloser{} 46 47 server := grpcutils.NewServer() 48 pb.RegisterSignerServer(server, NewServer(s.server)) 49 serverCloser.Add(server) 50 51 go grpcutils.Serve(listener, server) 52 53 conn, err := grpcutils.Dial(listener.Addr().String()) 54 require.NoError(err) 55 56 s.client = NewClient(pb.NewSignerClient(conn)) 57 58 t.Cleanup(func() { 59 serverCloser.Stop() 60 _ = conn.Close() 61 _ = listener.Close() 62 }) 63 64 return s 65 } 66 67 func TestInterface(t *testing.T) { 68 for name, test := range warp.SignerTests { 69 t.Run(name, func(t *testing.T) { 70 s := setupSigner(t) 71 test(t, s.client, s.sk, s.networkID, s.chainID) 72 }) 73 } 74 }