github.com/true-sqn/fabric@v2.1.1+incompatible/orderer/consensus/etcdraft/dispatcher_test.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package etcdraft_test
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/hyperledger/fabric-protos-go/orderer"
    13  	"github.com/hyperledger/fabric/common/flogging"
    14  	"github.com/hyperledger/fabric/orderer/consensus/etcdraft"
    15  	"github.com/hyperledger/fabric/orderer/consensus/etcdraft/mocks"
    16  	"github.com/pkg/errors"
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func TestDispatchConsensus(t *testing.T) {
    21  	expectedRequest := &orderer.ConsensusRequest{
    22  		Channel: "ignored value",
    23  	}
    24  
    25  	mr := &mocks.MessageReceiver{}
    26  	mr.On("Consensus", expectedRequest, uint64(1)).Return(nil).Once()
    27  
    28  	rg := &mocks.ReceiverGetter{}
    29  	rg.On("ReceiverByChain", "mychannel").Return(mr).Once()
    30  	rg.On("ReceiverByChain", "notmychannel").Return(nil).Once()
    31  
    32  	disp := &etcdraft.Dispatcher{ChainSelector: rg, Logger: flogging.MustGetLogger("test")}
    33  
    34  	t.Run("Channel exists", func(t *testing.T) {
    35  		err := disp.OnConsensus("mychannel", 1, expectedRequest)
    36  		assert.NoError(t, err)
    37  	})
    38  
    39  	t.Run("Channel does not exist", func(t *testing.T) {
    40  		err := disp.OnConsensus("notmychannel", 1, expectedRequest)
    41  		assert.EqualError(t, err, "channel notmychannel doesn't exist")
    42  	})
    43  }
    44  
    45  func TestDispatchSubmit(t *testing.T) {
    46  	expectedRequest := &orderer.SubmitRequest{
    47  		Channel: "ignored value - success",
    48  	}
    49  
    50  	expectedRequestForBackendError := &orderer.SubmitRequest{
    51  		Channel: "ignored value - backend error",
    52  	}
    53  
    54  	mr := &mocks.MessageReceiver{}
    55  	mr.On("Submit", expectedRequest, uint64(1)).Return(nil).Once()
    56  	mr.On("Submit", expectedRequestForBackendError, uint64(1)).Return(errors.New("backend error")).Once()
    57  
    58  	rg := &mocks.ReceiverGetter{}
    59  	rg.On("ReceiverByChain", "mychannel").Return(mr).Twice()
    60  	rg.On("ReceiverByChain", "notmychannel").Return(nil).Once()
    61  
    62  	disp := &etcdraft.Dispatcher{ChainSelector: rg, Logger: flogging.MustGetLogger("test")}
    63  
    64  	t.Run("Channel exists", func(t *testing.T) {
    65  		err := disp.OnSubmit("mychannel", 1, expectedRequest)
    66  		assert.NoError(t, err)
    67  	})
    68  
    69  	t.Run("Channel does not exist", func(t *testing.T) {
    70  		err := disp.OnSubmit("notmychannel", 1, expectedRequest)
    71  		assert.EqualError(t, err, "channel notmychannel doesn't exist")
    72  	})
    73  }