@@ -50,19 +50,42 @@ func TestDecode(t *testing.T) {
50
50
require .NoError (t , err )
51
51
52
52
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
56
58
}{
57
59
{
58
- name : "happy path" ,
59
- msg : & bankv1beta1.MsgSend {},
60
+ name : "happy path" ,
61
+ msg : & bankv1beta1.MsgSend {},
62
+ expectedSigners : 1 ,
60
63
},
61
64
{
62
65
name : "empty signer option" ,
63
66
msg : & testpb.A {},
64
67
error : "no cosmos.msg.v1.signer option found for message A; use DefineCustomGetSigners to specify a custom getter: tx parse error" ,
65
68
},
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
+ },
66
89
}
67
90
68
91
for _ , tc := range testCases {
@@ -83,7 +106,7 @@ func TestDecode(t *testing.T) {
83
106
Fee : & txv1beta1.Fee {
84
107
Amount : []* basev1beta1.Coin {{Amount : "100" , Denom : "denom" }},
85
108
GasLimit : 100 ,
86
- Payer : "payer" ,
109
+ Payer : tc . feePayer ,
87
110
Granter : "" ,
88
111
},
89
112
},
@@ -98,6 +121,7 @@ func TestDecode(t *testing.T) {
98
121
return
99
122
}
100
123
require .NoError (t , err )
124
+ require .Equal (t , len (decodeTx .Signers ), tc .expectedSigners )
101
125
102
126
require .Equal (t ,
103
127
fmt .Sprintf ("/%s" , tc .msg .ProtoReflect ().Descriptor ().FullName ()),
0 commit comments