github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/peer/channel/joinbysnapshot_test.go (about)

     1  /*
     2  Copyright Digital Asset Holdings, LLC 2017 All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package channel
     8  
     9  import (
    10  	"testing"
    11  	"time"
    12  
    13  	"github.com/hechain20/hechain/internal/peer/common"
    14  	pb "github.com/hyperledger/fabric-protos-go/peer"
    15  	"github.com/spf13/viper"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestJoinBySnapshot(t *testing.T) {
    20  	defer viper.Reset()
    21  	defer resetFlags()
    22  
    23  	InitMSP()
    24  	signer, err := common.GetDefaultSigner()
    25  	require.NoError(t, err)
    26  
    27  	mockResponse := &pb.ProposalResponse{
    28  		Response:    &pb.Response{Status: 200},
    29  		Endorsement: &pb.Endorsement{},
    30  	}
    31  	mockEndorserClient := common.GetMockEndorserClient(mockResponse, nil)
    32  	mockCF := &ChannelCmdFactory{
    33  		EndorserClient:   mockEndorserClient,
    34  		BroadcastFactory: mockBroadcastClientFactory,
    35  		Signer:           signer,
    36  	}
    37  
    38  	// successful test
    39  	resetFlags()
    40  	cmd := joinBySnapshotCmd(mockCF)
    41  	AddFlags(cmd)
    42  	cmd.SetArgs([]string{"--snapshotpath", "path_to_snapshot_directory"})
    43  	require.NoError(t, cmd.Execute())
    44  
    45  	// error due to missing snapshotpath
    46  	resetFlags()
    47  	cmd = joinBySnapshotCmd(mockCF)
    48  	AddFlags(cmd)
    49  	cmd.SetArgs([]string{})
    50  	require.EqualError(t, cmd.Execute(), "the required parameter 'snapshotpath' is empty. Rerun the command with --snapshotpath flag")
    51  
    52  	// error due to EndoserClient returning bad response
    53  	mockResponse.Response = &pb.Response{Status: 500}
    54  	resetFlags()
    55  	cmd = joinBySnapshotCmd(mockCF)
    56  	AddFlags(cmd)
    57  	args := []string{"--snapshotpath", "snapshot_path"}
    58  	cmd.SetArgs(args)
    59  	err = cmd.Execute()
    60  	require.EqualError(t, err, "proposal failed (err: bad proposal response 500: )")
    61  	require.IsType(t, ProposalFailedErr(err.Error()), err, "expected error type of ProposalFailedErr")
    62  
    63  	// error due to connection failure to endorser client
    64  	viper.Set("peer.client.connTimeout", 10*time.Millisecond)
    65  	resetFlags()
    66  	cmd = joinBySnapshotCmd(nil)
    67  	AddFlags(cmd)
    68  	cmd.SetArgs([]string{"--snapshotpath", "snapshot_path"})
    69  	err = cmd.Execute()
    70  	require.Error(t, err)
    71  	require.Contains(t, err.Error(), "endorser client failed to connect to")
    72  }