go_study/fabric-main/internal/peer/channel/list_test.go

99 lines
2.6 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package channel
import (
"errors"
"testing"
"github.com/golang/protobuf/proto"
pb "github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric/internal/peer/common"
"github.com/hyperledger/fabric/msp"
"github.com/stretchr/testify/require"
)
func TestListChannels(t *testing.T) {
InitMSP()
mockChannelResponse := &pb.ChannelQueryResponse{
Channels: []*pb.ChannelInfo{{
ChannelId: "TEST_LIST_CHANNELS",
}},
}
mockPayload, err := proto.Marshal(mockChannelResponse)
require.NoError(t, err)
mockResponse := &pb.ProposalResponse{
Response: &pb.Response{
Status: 200,
Payload: mockPayload,
},
Endorsement: &pb.Endorsement{},
}
signer, err := common.GetDefaultSigner()
require.NoError(t, err)
mockCF := &ChannelCmdFactory{
EndorserClient: common.GetMockEndorserClient(mockResponse, nil),
BroadcastFactory: mockBroadcastClientFactory,
Signer: signer,
}
cmd := listCmd(mockCF)
AddFlags(cmd)
if err := cmd.Execute(); err != nil {
t.Fail()
t.Error(err)
}
testListChannelsEmptyCF(t, mockCF)
}
func testListChannelsEmptyCF(t *testing.T, mockCF *ChannelCmdFactory) {
cmd := listCmd(nil)
AddFlags(cmd)
// Error case 1: no orderer endpoints
getEndorserClient := common.GetEndorserClientFnc
getBroadcastClient := common.GetBroadcastClientFnc
getDefaultSigner := common.GetDefaultSignerFnc
defer func() {
common.GetEndorserClientFnc = getEndorserClient
common.GetBroadcastClientFnc = getBroadcastClient
common.GetDefaultSignerFnc = getDefaultSigner
}()
common.GetDefaultSignerFnc = func() (msp.SigningIdentity, error) {
return nil, errors.New("error")
}
common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) {
return mockCF.EndorserClient, nil
}
common.GetBroadcastClientFnc = func() (common.BroadcastClient, error) {
broadcastClient := common.GetMockBroadcastClient(nil)
return broadcastClient, nil
}
err := cmd.Execute()
require.Error(t, err, "Error expected because GetDefaultSignerFnc returns an error")
common.GetDefaultSignerFnc = getDefaultSigner
common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) {
return nil, errors.New("error")
}
err = cmd.Execute()
require.Error(t, err, "Error expected because GetEndorserClientFnc returns an error")
common.GetEndorserClientFnc = func(string, string) (pb.EndorserClient, error) {
return mockCF.EndorserClient, nil
}
err = cmd.Execute()
require.NoError(t, err, "Error occurred while executing list command")
}