github.com/true-sqn/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  }