@@ -50,19 +50,42 @@ func TestDecode(t *testing.T) {
5050 require .NoError (t , err )
5151
5252 testCases := []struct {
53- name string
54- msg proto.Message
55- error string
53+ name string
54+ msg proto.Message
55+ feePayer string
56+ error string
57+ expectedSigners int
5658 }{
5759 {
58- name : "happy path" ,
59- msg : & bankv1beta1.MsgSend {},
60+ name : "happy path" ,
61+ msg : & bankv1beta1.MsgSend {},
62+ expectedSigners : 1 ,
6063 },
6164 {
6265 name : "empty signer option" ,
6366 msg : & testpb.A {},
6467 error : "no cosmos.msg.v1.signer option found for message A; use DefineCustomGetSigners to specify a custom getter: tx parse error" ,
6568 },
69+ {
70+ name : "invalid feePayer" ,
71+ msg : & bankv1beta1.MsgSend {},
72+ feePayer : "payer" ,
73+ error : `encoding/hex: invalid byte: U+0070 'p': tx parse error` ,
74+ },
75+ {
76+ name : "valid feePayer" ,
77+ msg : & bankv1beta1.MsgSend {},
78+ feePayer : "636f736d6f733168363935356b3836397a72306770383975717034337a373263393033666d35647a366b75306c" , // hexadecimal to work with dummyAddressCodec
79+ expectedSigners : 2 ,
80+ },
81+ {
82+ name : "same msg signer and feePayer" ,
83+ msg : & bankv1beta1.MsgSend {
84+ FromAddress : "636f736d6f733168363935356b3836397a72306770383975717034337a373263393033666d35647a366b75306c" ,
85+ },
86+ feePayer : "636f736d6f733168363935356b3836397a72306770383975717034337a373263393033666d35647a366b75306c" ,
87+ expectedSigners : 1 ,
88+ },
6689 }
6790
6891 for _ , tc := range testCases {
@@ -83,7 +106,7 @@ func TestDecode(t *testing.T) {
83106 Fee : & txv1beta1.Fee {
84107 Amount : []* basev1beta1.Coin {{Amount : "100" , Denom : "denom" }},
85108 GasLimit : 100 ,
86- Payer : "payer" ,
109+ Payer : tc . feePayer ,
87110 Granter : "" ,
88111 },
89112 },
@@ -98,6 +121,7 @@ func TestDecode(t *testing.T) {
98121 return
99122 }
100123 require .NoError (t , err )
124+ require .Equal (t , len (decodeTx .Signers ), tc .expectedSigners )
101125
102126 require .Equal (t ,
103127 fmt .Sprintf ("/%s" , tc .msg .ProtoReflect ().Descriptor ().FullName ()),
0 commit comments