github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/pkg/gateway/endpoint_test.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 SPDX-License-Identifier: Apache-2.0 4 */ 5 6 package gateway 7 8 import ( 9 "testing" 10 "time" 11 12 "github.com/hechain20/hechain/common/crypto/tlsgen" 13 "github.com/hechain20/hechain/gossip/common" 14 "github.com/hechain20/hechain/internal/pkg/comm" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestMutualTLS(t *testing.T) { 19 ca, err := tlsgen.NewCA() 20 require.NoError(t, err, "failed to create CA") 21 22 serverPair, err := ca.NewServerCertKeyPair("127.0.0.1") 23 require.NoError(t, err, "failed to create server key pair") 24 25 clientPair, err := ca.NewClientCertKeyPair() 26 require.NoError(t, err, "failed to create client key pair") 27 28 rootTLSCert := ca.CertBytes() 29 30 server, err := comm.NewGRPCServer("127.0.0.1:0", comm.ServerConfig{ 31 SecOpts: comm.SecureOptions{ 32 UseTLS: true, 33 RequireClientCert: true, 34 Certificate: serverPair.Cert, 35 Key: serverPair.Key, 36 ClientRootCAs: [][]byte{rootTLSCert}, 37 }, 38 }) 39 require.NoError(t, err) 40 41 go server.Start() 42 defer server.Stop() 43 44 factory := &endpointFactory{ 45 timeout: 10 * time.Second, 46 clientCert: clientPair.Cert, 47 clientKey: clientPair.Key, 48 } 49 50 endorser, err := factory.newEndorser(common.PKIidType{}, server.Address(), "msp1", [][]byte{rootTLSCert}) 51 require.NoError(t, err, "failed to make mTLS connection to server") 52 53 err = endorser.closeConnection() 54 require.NoError(t, err, "failed to close connection") 55 }