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  }