Skip to content

Commit

Permalink
add unit test for common/deliverclient/blocksprovider/delivery_requester
Browse files Browse the repository at this point in the history
  • Loading branch information
solo-daemon committed Apr 7, 2024
1 parent efd76c8 commit 9756361
Showing 1 changed file with 188 additions and 0 deletions.
188 changes: 188 additions & 0 deletions common/deliverclient/blocksprovider/delivery_requester_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package blocksprovider_test

import (
"testing"

"github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric/common/deliverclient/blocksprovider"
"github.com/hyperledger/fabric/common/deliverclient/blocksprovider/fake"
"github.com/hyperledger/fabric/common/deliverclient/orderers"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc"
)

func TestDeliveryRequester_Connect_Success(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.NoError(t, err)
assert.NotNil(t, deliverClient)
assert.NotNil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DialerError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
dialError := errors.New("dialer-error")
fakeDialer.DialReturns(nil, dialError)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Equal(t, dialError, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DeliverStreamerError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
deliverStreamerError := errors.New("deliver-streamer-error")
fakeDeliverStreamer.DeliverReturns(nil, deliverStreamerError)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Equal(t, deliverStreamerError, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_Connect_DeliverClientError(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
deliverClientError := errors.New("deliver-client-error")
fakeDeliverClient.SendReturns(deliverClientError)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

seekInfoEnv := &common.Envelope{}
endpoint := &orderers.Endpoint{
Address: "orderer-address-1",
RootCerts: [][]byte{[]byte("root-cert")},
Refreshed: make(chan struct{}),
}

deliverClient, cancelFunc, err := dr.Connect(seekInfoEnv, endpoint)
assert.Error(t, err)
assert.Equal(t, deliverClientError, err)
assert.Nil(t, deliverClient)
assert.Nil(t, cancelFunc)
}

func TestDeliveryRequester_SeekInfoBlocksFrom(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

envelope, err := dr.SeekInfoBlocksFrom(1000)
assert.NoError(t, err)
assert.NotNil(t, envelope)
}

func TestDeliveryRequester_SeekInfoHeadersFrom(t *testing.T) {
fakeSigner := &fake.Signer{}
fakeSigner.SignReturns([]byte("good-sig"), nil)

fakeDialer := &fake.Dialer{}
cc := &grpc.ClientConn{}
fakeDialer.DialReturns(cc, nil)

fakeDeliverClient := &fake.DeliverClient{}
fakeDeliverClient.SendReturns(nil)

fakeDeliverStreamer := &fake.DeliverStreamer{}
fakeDeliverStreamer.DeliverReturns(fakeDeliverClient, nil)

dr := blocksprovider.NewDeliveryRequester("channel-id", fakeSigner, []byte("tls-cert-hash"), fakeDialer, fakeDeliverStreamer)
assert.NotNil(t, dr)

envelope, err := dr.SeekInfoHeadersFrom(1000)
assert.NoError(t, err)
assert.NotNil(t, envelope)
}

0 comments on commit 9756361

Please sign in to comment.