github.com/iotexproject/iotex-core@v1.14.1-rc1/ioctl/newcmd/alias/aliasimport_test.go (about)

     1  // Copyright (c) 2022 IoTeX Foundation
     2  // This source code is provided 'as is' and no warranties are given as to title or non-infringement, merchantability
     3  // or fitness for purpose and, to the extent permitted by law, all liability for your use of the code is disclaimed.
     4  // This source code is governed by Apache License 2.0 that can be found in the LICENSE file.
     5  package alias
     6  
     7  import (
     8  	"testing"
     9  
    10  	"github.com/golang/mock/gomock"
    11  	"github.com/stretchr/testify/require"
    12  
    13  	"github.com/iotexproject/iotex-core/ioctl/config"
    14  	"github.com/iotexproject/iotex-core/ioctl/util"
    15  	"github.com/iotexproject/iotex-core/test/mock/mock_ioctlclient"
    16  )
    17  
    18  func TestNewAliasImportCmd(t *testing.T) {
    19  	require := require.New(t)
    20  	ctrl := gomock.NewController(t)
    21  	client := mock_ioctlclient.NewMockClient(ctrl)
    22  	client.EXPECT().SelectTranslation(gomock.Any()).Return("mockTranslation", config.English).Times(30)
    23  	client.EXPECT().WriteConfig().Return(nil).Times(3)
    24  	client.EXPECT().Config().Return(config.Config{
    25  		Aliases: map[string]string{
    26  			"mhs2": "io19sdfxkwegeaenvxk2kjqf98al52gm56wa2eqks",
    27  			"yqr":  "io1cl6rl2ev5dfa988qmgzg2x4hfazmp9vn2g66ng",
    28  			"mhs":  "io1tyc2yt68qx7hmxl2rhssm99jxnhrccz9sneh08",
    29  		},
    30  	}).Times(4)
    31  
    32  	t.Run("invalid flag", func(t *testing.T) {
    33  		cmd := NewAliasImport(client)
    34  		_, err := util.ExecuteCmd(cmd, "-f", "test", "test")
    35  		require.Error(err)
    36  		require.Contains(err.Error(), "invalid flag")
    37  	})
    38  
    39  	t.Run("import alias with json format", func(t *testing.T) {
    40  		cmd := NewAliasImport(client)
    41  		result, err := util.ExecuteCmd(cmd, `{"aliases":[{"name":"mhs2","address":"io19sdfxkwegeaenvxk2kjqf98al52gm56wa2eqks"}]}`)
    42  		require.NoError(err)
    43  		require.Contains(result, "Existed aliases: mhs2")
    44  	})
    45  
    46  	t.Run("import alias with yaml format", func(t *testing.T) {
    47  		cmd := NewAliasImport(client)
    48  		result, err := util.ExecuteCmd(cmd, "-f", "yaml", `aliases:
    49  - name: mhs2
    50    address: io19sdfxkwegeaenvxk2kjqf98al52gm56wa2eqks
    51  - name: yqr
    52    address: io1cl6rl2ev5dfa988qmgzg2x4hfazmp9vn2g66ng
    53  - name: mhs
    54    address: io1tyc2yt68qx7hmxl2rhssm99jxnhrccz9sneh08`)
    55  		require.NoError(err)
    56  		require.Contains(result, "Existed aliases: mhs2")
    57  	})
    58  
    59  	t.Run("force import", func(t *testing.T) {
    60  		client.EXPECT().SetAlias(gomock.Any(), gomock.Any()).Times(1)
    61  
    62  		cmd := NewAliasImport(client)
    63  		result, err := util.ExecuteCmd(cmd, "-F", `{"aliases":[{"name":"mhs2","address":"io19sdfxkwegeaenvxk2kjqf98al52gm56wa2eqks"}]}`)
    64  		require.NoError(err)
    65  		require.Contains(result, "1/1 aliases imported")
    66  	})
    67  
    68  	t.Run("failed to unmarshal json imported aliases", func(t *testing.T) {
    69  		cmd := NewAliasImport(client)
    70  		_, err := util.ExecuteCmd(cmd, `""{"name":"d","address":""}""`)
    71  		require.Error(err)
    72  		require.Contains(err.Error(), "failed to unmarshal imported aliases")
    73  	})
    74  
    75  	t.Run("failed to unmarshal yaml imported aliases", func(t *testing.T) {
    76  		cmd := NewAliasImport(client)
    77  		_, err := util.ExecuteCmd(cmd, "-f", "yaml", `aliases:
    78  			name: mhs2
    79  			address: io19sdfxkwegeaenvxk2kjqf98al52gm56wa2eqks`)
    80  		require.Error(err)
    81  		require.Contains(err.Error(), "failed to unmarshal imported aliases")
    82  	})
    83  }