github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/internal/peer/snapshot/submitrequest_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package snapshot
     8  
     9  import (
    10  	"fmt"
    11  	"testing"
    12  
    13  	"github.com/golang/protobuf/ptypes/empty"
    14  	"github.com/hechain20/hechain/internal/peer/snapshot/mock"
    15  	"github.com/onsi/gomega/gbytes"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestSubmitRequestCmd(t *testing.T) {
    20  	mockSigner := &mock.Signer{}
    21  	mockSigner.SignReturns([]byte("snapshot-request-signature"), nil)
    22  	mockSnapshotClient := &mock.SnapshotClient{}
    23  	mockSnapshotClient.GenerateReturns(&empty.Empty{}, nil)
    24  	buffer := gbytes.NewBuffer()
    25  	mockClient := &client{mockSnapshotClient, mockSigner, buffer}
    26  
    27  	resetFlags()
    28  	cmd := submitRequestCmd(mockClient, nil)
    29  	cmd.SetArgs([]string{"-c", "mychannel"})
    30  	require.NoError(t, cmd.Execute())
    31  	require.Equal(t, []byte("Snapshot request submitted successfully\n"), buffer.Contents())
    32  
    33  	// use a new buffer to verify new command execution
    34  	buffer2 := gbytes.NewBuffer()
    35  	mockClient.writer = buffer2
    36  	resetFlags()
    37  	cmd = submitRequestCmd(mockClient, nil)
    38  	cmd.SetArgs([]string{"-c", "mychannel", "-b", "100"})
    39  	require.NoError(t, cmd.Execute())
    40  	require.Equal(t, []byte("Snapshot request submitted successfully\n"), buffer2.Contents())
    41  
    42  	// error tests
    43  	mockSnapshotClient.GenerateReturns(nil, fmt.Errorf("fake-generate-error"))
    44  	require.EqualError(t, cmd.Execute(), "failed to submit the request: fake-generate-error")
    45  
    46  	mockSigner.SignReturns(nil, fmt.Errorf("fake-sign-error"))
    47  	require.EqualError(t, cmd.Execute(), "fake-sign-error")
    48  
    49  	mockSigner.SerializeReturns(nil, fmt.Errorf("fake-serialize-error"))
    50  	require.EqualError(t, cmd.Execute(), "fake-serialize-error")
    51  
    52  	resetFlags()
    53  	cmd.SetArgs([]string{})
    54  	require.EqualError(t, cmd.Execute(), "the required parameter 'channelID' is empty. Rerun the command with -c flag")
    55  }