@@ -57,6 +57,10 @@ contract EVCClient is EVCUtil {
57
57
return _msgSenderForBorrow ();
58
58
}
59
59
60
+ function msgSenderOnlyEVCAccountOwner () external view returns (address ) {
61
+ return _msgSenderOnlyEVCAccountOwner ();
62
+ }
63
+
60
64
fallback (bytes calldata ) external returns (bytes memory ) {
61
65
return abi.encode (IVault.checkAccountStatus.selector );
62
66
}
@@ -191,7 +195,10 @@ contract EVCUtilTest is Test {
191
195
evcClient.calledByEVCWithChecksInProgress ();
192
196
}
193
197
194
- function test_calledByEVCAccount_calledByEVCAccountOwner (address caller , uint8 id ) external {
198
+ function test_calledByEVCAccount_calledByEVCAccountOwner_msgSenderOnlyEVCAccountOwner (
199
+ address caller ,
200
+ uint8 id
201
+ ) external {
195
202
vm.assume (! evc.haveCommonOwner (caller, address (0 )) && ! evc.haveCommonOwner (caller, address (evc)));
196
203
vm.assume (id != 0 );
197
204
@@ -203,6 +210,9 @@ contract EVCUtilTest is Test {
203
210
vm.prank (caller);
204
211
evcClient.calledByEVCAccountOwner ();
205
212
213
+ vm.prank (caller);
214
+ assertEq (evcClient.msgSenderOnlyEVCAccountOwner (), caller);
215
+
206
216
// msg.sender is EVC and operator is authenticated
207
217
evc.setOperatorAuthenticated (true );
208
218
vm.prank (address (evc));
@@ -213,6 +223,10 @@ contract EVCUtilTest is Test {
213
223
vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
214
224
evcClient.calledByEVCAccountOwner ();
215
225
226
+ vm.prank (address (evc));
227
+ vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
228
+ evcClient.msgSenderOnlyEVCAccountOwner ();
229
+
216
230
// msg.sender is EVC and control collateral is in progress
217
231
evc.setOperatorAuthenticated (false );
218
232
evc.setControlCollateralInProgress (true );
@@ -224,6 +238,10 @@ contract EVCUtilTest is Test {
224
238
vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
225
239
evcClient.calledByEVCAccountOwner ();
226
240
241
+ vm.prank (address (evc));
242
+ vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
243
+ evcClient.msgSenderOnlyEVCAccountOwner ();
244
+
227
245
// msg.sender is EVC and checks are in progress
228
246
evc.setControlCollateralInProgress (false );
229
247
evc.setChecksInProgress (true );
@@ -235,6 +253,10 @@ contract EVCUtilTest is Test {
235
253
vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
236
254
evcClient.calledByEVCAccountOwner ();
237
255
256
+ vm.prank (address (evc));
257
+ vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
258
+ evcClient.msgSenderOnlyEVCAccountOwner ();
259
+
238
260
// msg.sender is EVC, the owner is not registered yet
239
261
evc.setChecksInProgress (false );
240
262
evc.setOnBehalfOfAccount (caller);
@@ -246,6 +268,10 @@ contract EVCUtilTest is Test {
246
268
vm.prank (address (evc));
247
269
evcClient.calledByEVCAccountOwner ();
248
270
271
+ assertEq (evc.getAccountOwner (caller), address (0 ));
272
+ vm.prank (address (evc));
273
+ assertEq (evcClient.msgSenderOnlyEVCAccountOwner (), caller);
274
+
249
275
// msg.sender is EVC, the owner is registered and the authenticated account is the owner
250
276
evc.setOnBehalfOfAccount (address (0 ));
251
277
vm.prank (caller);
@@ -256,10 +282,13 @@ contract EVCUtilTest is Test {
256
282
evcClient.calledByEVCAccount ();
257
283
258
284
assertEq (evc.getAccountOwner (caller), caller);
259
- evc.setOnBehalfOfAccount (caller);
260
285
vm.prank (address (evc));
261
286
evcClient.calledByEVCAccountOwner ();
262
287
288
+ assertEq (evc.getAccountOwner (caller), caller);
289
+ vm.prank (address (evc));
290
+ assertEq (evcClient.msgSenderOnlyEVCAccountOwner (), caller);
291
+
263
292
// msg.sender is EVC, the owner is registered but the authenticated account is not the owner
264
293
evc.setOnBehalfOfAccount (address (uint160 (uint160 (caller) ^ id)));
265
294
vm.prank (address (evc));
@@ -268,6 +297,10 @@ contract EVCUtilTest is Test {
268
297
vm.prank (address (evc));
269
298
vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
270
299
evcClient.calledByEVCAccountOwner ();
300
+
301
+ vm.prank (address (evc));
302
+ vm.expectRevert (abi.encodeWithSelector (EVCUtil.NotAuthorized.selector ));
303
+ evcClient.msgSenderOnlyEVCAccountOwner ();
271
304
}
272
305
273
306
function test_msgSender (address caller ) external {
0 commit comments