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 }