github.com/iotexproject/iotex-core@v1.14.1-rc1/ioctl/newcmd/jwt/jwtsign_test.go (about) 1 package jwt 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/ethereum/go-ethereum/accounts/keystore" 8 "github.com/golang/mock/gomock" 9 "github.com/iotexproject/iotex-address/address" 10 "github.com/stretchr/testify/require" 11 12 "github.com/iotexproject/iotex-core/ioctl/config" 13 "github.com/iotexproject/iotex-core/ioctl/util" 14 "github.com/iotexproject/iotex-core/test/mock/mock_ioctlclient" 15 ) 16 17 func TestNewJwtSignCmd(t *testing.T) { 18 require := require.New(t) 19 ctrl := gomock.NewController(t) 20 defer ctrl.Finish() 21 client := mock_ioctlclient.NewMockClient(ctrl) 22 23 ks := keystore.NewKeyStore(t.TempDir(), 2, 1) 24 acc, err := ks.NewAccount("") 25 require.NoError(err) 26 accAddr, err := address.FromBytes(acc.Address.Bytes()) 27 require.NoError(err) 28 29 client.EXPECT().SelectTranslation(gomock.Any()).Return("jwt", config.English).AnyTimes() 30 client.EXPECT().IsCryptoSm2().Return(false).Times(4) 31 client.EXPECT().ReadSecret().Return("", nil).Times(2) 32 client.EXPECT().NewKeyStore().Return(ks).Times(4) 33 client.EXPECT().AddressWithDefaultIfNotExist(gomock.Any()).Return(accAddr.String(), nil).Times(2) 34 client.EXPECT().Address(gomock.Any()).Return(accAddr.String(), nil).AnyTimes() 35 36 t.Run("sign jwt with no arg", func(t *testing.T) { 37 cmd := NewJwtSignCmd(client) 38 result, err := util.ExecuteCmd(cmd) 39 require.NoError(err) 40 require.Contains(result, "address: "+accAddr.String()) 41 require.Contains(result, `"exp": "0"`) 42 }) 43 44 t.Run("sign jwt with arg", func(t *testing.T) { 45 cmd := NewJwtSignCmd(client) 46 result, err := util.ExecuteCmd(cmd, "--with-arguments", `{"exp":"-10"}`) 47 require.NoError(err) 48 require.Contains(result, "address: "+accAddr.String()) 49 require.Contains(result, `"exp": "-10"`) 50 }) 51 52 t.Run("failed to get signer address", func(t *testing.T) { 53 expectedErr := errors.New("failed to get signer address") 54 client.EXPECT().AddressWithDefaultIfNotExist(gomock.Any()).Return("", expectedErr) 55 56 cmd := NewJwtSignCmd(client) 57 _, err := util.ExecuteCmd(cmd) 58 require.Contains(err.Error(), expectedErr.Error()) 59 }) 60 61 t.Run("failed to unmarshal arguments", func(t *testing.T) { 62 expectedErr := errors.New("failed to unmarshal arguments") 63 64 cmd := NewJwtSignCmd(client) 65 _, err := util.ExecuteCmd(cmd, "--with-arguments", "test") 66 require.Contains(err.Error(), expectedErr.Error()) 67 }) 68 }