8
8
"github.com/golang/mock/gomock"
9
9
"google.golang.org/grpc"
10
10
"pkg.world.dev/world-engine/assert"
11
+ "pkg.world.dev/world-engine/cardinal/persona/component"
11
12
"pkg.world.dev/world-engine/cardinal/router/mocks"
12
13
"pkg.world.dev/world-engine/cardinal/types"
13
14
routerv1 "pkg.world.dev/world-engine/rift/router/v1"
@@ -104,13 +105,14 @@ func TestRouter_SendMessage_PersonaNotFound(t *testing.T) {
104
105
}
105
106
name := "foo"
106
107
sender := "0xtyler"
108
+ persona := "tyler"
107
109
108
110
provider .EXPECT ().GetMessageByName (name ).Return (msg , true ).Times (1 )
109
- provider .EXPECT ().GetPersonaForEVMAddress ( sender ).Return ("" , fmt .Errorf ("not found" )).Times (1 )
111
+ provider .EXPECT ().GetSignerComponentForPersona ( persona ).Return (nil , fmt .Errorf ("not found" )).Times (1 )
110
112
111
113
res , err := router .server .SendMessage (
112
114
context .Background (),
113
- & routerv1.SendMessageRequest {MessageId : name , Sender : sender },
115
+ & routerv1.SendMessageRequest {MessageId : name , PersonaTag : persona , Sender : sender },
114
116
)
115
117
assert .NilError (t , err )
116
118
assert .Equal (t , res .Code , CodeUnauthorized )
@@ -130,13 +132,17 @@ func TestRouter_SendMessage_ResultDoesNotExist(t *testing.T) {
130
132
evmTxHash := "0xFooBarBaz"
131
133
132
134
req := & routerv1.SendMessageRequest {
133
- Sender : sender ,
134
- MessageId : msgName ,
135
- EvmTxHash : evmTxHash ,
135
+ Sender : sender ,
136
+ MessageId : msgName ,
137
+ PersonaTag : persona ,
138
+ EvmTxHash : evmTxHash ,
136
139
}
137
140
138
141
provider .EXPECT ().GetMessageByName (msgName ).Return (msg , true ).Times (1 )
139
- provider .EXPECT ().GetPersonaForEVMAddress (sender ).Return (persona , nil ).Times (1 )
142
+ provider .EXPECT ().
143
+ GetSignerComponentForPersona (persona ).
144
+ Return (& component.SignerComponent {AuthorizedAddresses : []string {sender }}, nil ).
145
+ Times (1 )
140
146
provider .EXPECT ().AddEVMTransaction (msg .id , msgValue , & sign.Transaction {PersonaTag : persona }, evmTxHash ).Times (1 )
141
147
provider .EXPECT ().WaitForNextTick ().Return (true ).Times (1 )
142
148
provider .EXPECT ().ConsumeEVMMsgResult (evmTxHash ).Return (nil , nil , "" , false ).Times (1 )
@@ -160,13 +166,17 @@ func TestRouter_SendMessage_TxSuccess(t *testing.T) {
160
166
evmTxHash := "0xFooBarBaz"
161
167
162
168
req := & routerv1.SendMessageRequest {
163
- Sender : sender ,
164
- MessageId : msgName ,
165
- EvmTxHash : evmTxHash ,
169
+ Sender : sender ,
170
+ PersonaTag : persona ,
171
+ MessageId : msgName ,
172
+ EvmTxHash : evmTxHash ,
166
173
}
167
174
168
175
provider .EXPECT ().GetMessageByName (msgName ).Return (msg , true ).Times (1 )
169
- provider .EXPECT ().GetPersonaForEVMAddress (sender ).Return (persona , nil ).Times (1 )
176
+ provider .EXPECT ().
177
+ GetSignerComponentForPersona (persona ).
178
+ Return (& component.SignerComponent {AuthorizedAddresses : []string {sender }}, nil ).
179
+ Times (1 )
170
180
provider .EXPECT ().AddEVMTransaction (msg .id , msgValue , & sign.Transaction {PersonaTag : persona }, evmTxHash ).Times (1 )
171
181
provider .EXPECT ().WaitForNextTick ().Return (true ).Times (1 )
172
182
provider .EXPECT ().ConsumeEVMMsgResult (evmTxHash ).Return ([]byte ("response" ), nil , evmTxHash , true ).Times (1 )
@@ -176,6 +186,37 @@ func TestRouter_SendMessage_TxSuccess(t *testing.T) {
176
186
assert .Equal (t , res .Code , CodeSuccess )
177
187
}
178
188
189
+ func TestRouter_SendMessage_NoAuthorizedAddress (t * testing.T ) {
190
+ router , provider := getTestRouterAndProvider (t )
191
+ msgValue := []byte ("hello" )
192
+ msg := & mockMsg {
193
+ id : 5 , evmCompat : true , decodeEVMBytes : func () ([]byte , error ) {
194
+ return msgValue , nil
195
+ },
196
+ }
197
+ msgName := "foo"
198
+ sender := "0xtyler"
199
+ persona := "tyler"
200
+ evmTxHash := "0xFooBarBaz"
201
+
202
+ req := & routerv1.SendMessageRequest {
203
+ Sender : sender ,
204
+ MessageId : msgName ,
205
+ PersonaTag : persona ,
206
+ EvmTxHash : evmTxHash ,
207
+ }
208
+
209
+ provider .EXPECT ().GetMessageByName (msgName ).Return (msg , true ).Times (1 )
210
+ provider .EXPECT ().
211
+ GetSignerComponentForPersona (persona ).
212
+ Return (& component.SignerComponent {AuthorizedAddresses : []string {"bogus" }}, nil ).
213
+ Times (1 )
214
+
215
+ res , err := router .server .SendMessage (context .Background (), req )
216
+ assert .NilError (t , err )
217
+ assert .Equal (t , res .Code , CodeUnauthorized )
218
+ }
219
+
179
220
func TestRouter_SendMessage_TxFailed (t * testing.T ) {
180
221
router , provider := getTestRouterAndProvider (t )
181
222
msgValue := []byte ("hello" )
@@ -190,13 +231,17 @@ func TestRouter_SendMessage_TxFailed(t *testing.T) {
190
231
evmTxHash := "0xFooBarBaz"
191
232
192
233
req := & routerv1.SendMessageRequest {
193
- Sender : sender ,
194
- MessageId : msgName ,
195
- EvmTxHash : evmTxHash ,
234
+ Sender : sender ,
235
+ MessageId : msgName ,
236
+ PersonaTag : persona ,
237
+ EvmTxHash : evmTxHash ,
196
238
}
197
239
198
240
provider .EXPECT ().GetMessageByName (msgName ).Return (msg , true ).Times (1 )
199
- provider .EXPECT ().GetPersonaForEVMAddress (sender ).Return (persona , nil ).Times (1 )
241
+ provider .EXPECT ().
242
+ GetSignerComponentForPersona (persona ).
243
+ Return (& component.SignerComponent {AuthorizedAddresses : []string {sender }}, nil ).
244
+ Times (1 )
200
245
provider .EXPECT ().AddEVMTransaction (msg .id , msgValue , & sign.Transaction {PersonaTag : persona }, evmTxHash ).Times (1 )
201
246
provider .EXPECT ().WaitForNextTick ().Return (true ).Times (1 )
202
247
provider .EXPECT ().
0 commit comments