github.com/ava-labs/avalanchego@v1.11.11/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/ava-labs/avalanchego/ids" 12 "github.com/ava-labs/avalanchego/utils/constants" 13 "github.com/ava-labs/avalanchego/utils/crypto/bls" 14 "github.com/ava-labs/avalanchego/vms/platformvm/warp" 15 "github.com/ava-labs/avalanchego/vms/platformvm/warp/signertest" 16 "github.com/ava-labs/avalanchego/vms/rpcchainvm/grpcutils" 17 18 pb "github.com/ava-labs/avalanchego/proto/pb/warp" 19 ) 20 21 type testSigner struct { 22 client *Client 23 server warp.Signer 24 sk *bls.SecretKey 25 networkID uint32 26 chainID ids.ID 27 } 28 29 func setupSigner(t testing.TB) *testSigner { 30 require := require.New(t) 31 32 sk, err := bls.NewSecretKey() 33 require.NoError(err) 34 35 chainID := ids.GenerateTestID() 36 37 s := &testSigner{ 38 server: warp.NewSigner(sk, constants.UnitTestID, chainID), 39 sk: sk, 40 networkID: constants.UnitTestID, 41 chainID: chainID, 42 } 43 44 listener, err := grpcutils.NewListener() 45 require.NoError(err) 46 serverCloser := grpcutils.ServerCloser{} 47 48 server := grpcutils.NewServer() 49 pb.RegisterSignerServer(server, NewServer(s.server)) 50 serverCloser.Add(server) 51 52 go grpcutils.Serve(listener, server) 53 54 conn, err := grpcutils.Dial(listener.Addr().String()) 55 require.NoError(err) 56 57 s.client = NewClient(pb.NewSignerClient(conn)) 58 59 t.Cleanup(func() { 60 serverCloser.Stop() 61 _ = conn.Close() 62 _ = listener.Close() 63 }) 64 65 return s 66 } 67 68 func TestInterface(t *testing.T) { 69 for name, test := range signertest.SignerTests { 70 t.Run(name, func(t *testing.T) { 71 s := setupSigner(t) 72 test(t, s.client, s.sk, s.networkID, s.chainID) 73 }) 74 } 75 }