github.com/lzy4123/fabric@v2.1.1+incompatible/internal/peer/channel/list_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package channel 8 9 import ( 10 "errors" 11 "testing" 12 13 "github.com/golang/protobuf/proto" 14 pb "github.com/hyperledger/fabric-protos-go/peer" 15 "github.com/hyperledger/fabric/internal/peer/common" 16 "github.com/hyperledger/fabric/msp" 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func TestListChannels(t *testing.T) { 21 InitMSP() 22 23 mockChannelResponse := &pb.ChannelQueryResponse{ 24 Channels: []*pb.ChannelInfo{{ 25 ChannelId: "TEST_LIST_CHANNELS", 26 }}, 27 } 28 29 mockPayload, err := proto.Marshal(mockChannelResponse) 30 assert.NoError(t, err) 31 32 mockResponse := &pb.ProposalResponse{ 33 Response: &pb.Response{ 34 Status: 200, 35 Payload: mockPayload, 36 }, 37 Endorsement: &pb.Endorsement{}, 38 } 39 40 signer, err := common.GetDefaultSigner() 41 assert.NoError(t, err) 42 43 mockCF := &ChannelCmdFactory{ 44 EndorserClient: common.GetMockEndorserClient(mockResponse, nil), 45 BroadcastFactory: mockBroadcastClientFactory, 46 Signer: signer, 47 } 48 49 cmd := listCmd(mockCF) 50 AddFlags(cmd) 51 if err := cmd.Execute(); err != nil { 52 t.Fail() 53 t.Error(err) 54 } 55 56 testListChannelsEmptyCF(t, mockCF) 57 } 58 59 func testListChannelsEmptyCF(t *testing.T, mockCF *ChannelCmdFactory) { 60 cmd := listCmd(nil) 61 AddFlags(cmd) 62 63 // Error case 1: no orderer endpoints 64 getEndorserClient := common.GetEndorserClientFnc 65 getBroadcastClient := common.GetBroadcastClientFnc 66 getDefaultSigner := common.GetDefaultSignerFnc 67 defer func() { 68 common.GetEndorserClientFnc = getEndorserClient 69 common.GetBroadcastClientFnc = getBroadcastClient 70 common.GetDefaultSignerFnc = getDefaultSigner 71 }() 72 common.GetDefaultSignerFnc = func() (msp.SigningIdentity, error) { 73 return nil, errors.New("error") 74 } 75 common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) { 76 return mockCF.EndorserClient, nil 77 } 78 common.GetBroadcastClientFnc = func() (common.BroadcastClient, error) { 79 broadcastClient := common.GetMockBroadcastClient(nil) 80 return broadcastClient, nil 81 } 82 83 err := cmd.Execute() 84 assert.Error(t, err, "Error expected because GetDefaultSignerFnc returns an error") 85 86 common.GetDefaultSignerFnc = getDefaultSigner 87 common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) { 88 return nil, errors.New("error") 89 } 90 err = cmd.Execute() 91 assert.Error(t, err, "Error expected because GetEndorserClientFnc returns an error") 92 93 common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) { 94 return mockCF.EndorserClient, nil 95 } 96 err = cmd.Execute() 97 assert.NoError(t, err, "Error occurred while executing list command") 98 }