@@ -73,20 +73,40 @@ contract PublicAllocatorTest is IntegrationTest {
73
73
_sortSupplyQueueIdleLast ();
74
74
}
75
75
76
- function testOwner () public {
77
- assertEq (publicAllocator.owner (address (vault)), address (0 ));
76
+ function testAdmin () public {
77
+ assertEq (publicAllocator.admin (address (vault)), address (0 ));
78
78
}
79
79
80
- function testSetOwner () public {
80
+ function testSetAdmin () public {
81
81
vm.prank (OWNER);
82
- publicAllocator.setOwner (address (vault), address (1 ));
83
- assertEq (publicAllocator.owner (address (vault)), address (1 ));
82
+ publicAllocator.setAdmin (address (vault), address (1 ));
83
+ assertEq (publicAllocator.admin (address (vault)), address (1 ));
84
84
}
85
85
86
- function testSetOwnerFail () public {
86
+ function testSetAdminByAdmin (address sender , address newAdmin ) public {
87
+ vm.assume (publicAllocator.admin (address (vault)) != sender);
88
+ vm.assume (sender != newAdmin);
89
+ vm.prank (OWNER);
90
+ publicAllocator.setAdmin (address (vault), sender);
91
+ vm.prank (sender);
92
+ publicAllocator.setAdmin (address (vault), newAdmin);
93
+ assertEq (publicAllocator.admin (address (vault)), newAdmin);
94
+ }
95
+
96
+ function testSetAdminAlreadySet () public {
87
97
vm.expectRevert (ErrorsLib.AlreadySet.selector );
88
98
vm.prank (OWNER);
89
- publicAllocator.setOwner (address (vault), address (0 ));
99
+ publicAllocator.setAdmin (address (vault), address (0 ));
100
+ }
101
+
102
+ function testSetAdminAccessFail (address sender , address newAdmin ) public {
103
+ vm.assume (sender != OWNER);
104
+ vm.assume (publicAllocator.admin (address (vault)) != sender);
105
+ vm.assume (publicAllocator.admin (address (vault)) != newAdmin);
106
+
107
+ vm.expectRevert (ErrorsLib.NotAdminNorVaultOwner.selector );
108
+ vm.prank (sender);
109
+ publicAllocator.setAdmin (address (vault), newAdmin);
90
110
}
91
111
92
112
function testReallocateCapZeroOutflowByDefault (uint128 flow ) public {
@@ -112,28 +132,28 @@ contract PublicAllocatorTest is IntegrationTest {
112
132
113
133
function testConfigureFlowAccessFail (address sender ) public {
114
134
vm.assume (sender != OWNER);
115
- vm.assume (sender != address ( 0 ) );
135
+ vm.assume (publicAllocator. admin ( address (vault)) != sender );
116
136
117
137
flowCaps.push (FlowCapsConfig (idleParams.id (), FlowCaps (0 , 0 )));
118
138
119
139
vm.prank (sender);
120
- vm.expectRevert (ErrorsLib.NotOwner .selector );
140
+ vm.expectRevert (ErrorsLib.NotAdminNorVaultOwner .selector );
121
141
publicAllocator.setFlowCaps (address (vault), flowCaps);
122
142
}
123
143
124
144
function testTransferFeeAccessFail (address sender , address payable recipient ) public {
125
145
vm.assume (sender != OWNER);
126
- vm.assume (sender != address ( 0 ) );
146
+ vm.assume (publicAllocator. admin ( address (vault)) != sender );
127
147
vm.prank (sender);
128
- vm.expectRevert (ErrorsLib.NotOwner .selector );
148
+ vm.expectRevert (ErrorsLib.NotAdminNorVaultOwner .selector );
129
149
publicAllocator.transferFee (address (vault), recipient);
130
150
}
131
151
132
152
function testSetFeeAccessFail (address sender , uint256 fee ) public {
133
153
vm.assume (sender != OWNER);
134
- vm.assume (sender != address ( 0 ) );
154
+ vm.assume (publicAllocator. admin ( address (vault)) != sender );
135
155
vm.prank (sender);
136
- vm.expectRevert (ErrorsLib.NotOwner .selector );
156
+ vm.expectRevert (ErrorsLib.NotAdminNorVaultOwner .selector );
137
157
publicAllocator.setFee (address (vault), fee);
138
158
}
139
159
@@ -146,6 +166,18 @@ contract PublicAllocatorTest is IntegrationTest {
146
166
assertEq (publicAllocator.fee (address (vault)), fee);
147
167
}
148
168
169
+ function testSetFeeByAdmin (uint256 fee , address sender ) public {
170
+ vm.assume (publicAllocator.admin (address (vault)) != sender);
171
+ vm.assume (fee != publicAllocator.fee (address (vault)));
172
+ vm.prank (OWNER);
173
+ publicAllocator.setAdmin (address (vault), sender);
174
+ vm.prank (sender);
175
+ vm.expectEmit (address (publicAllocator));
176
+ emit EventsLib.SetFee (sender, address (vault), fee);
177
+ publicAllocator.setFee (address (vault), fee);
178
+ assertEq (publicAllocator.fee (address (vault)), fee);
179
+ }
180
+
149
181
function testSetFeeAlreadySet (uint256 fee ) public {
150
182
vm.assume (fee != publicAllocator.fee (address (vault)));
151
183
vm.prank (OWNER);
@@ -180,6 +212,35 @@ contract PublicAllocatorTest is IntegrationTest {
180
212
assertEq (flowCap.maxOut, out1);
181
213
}
182
214
215
+ function testSetFlowCapsByAdmin (uint128 in0 , uint128 out0 , uint128 in1 , uint128 out1 , address sender ) public {
216
+ vm.assume (publicAllocator.admin (address (vault)) != sender);
217
+ in0 = uint128 (bound (in0, 0 , MAX_SETTABLE_FLOW_CAP));
218
+ out0 = uint128 (bound (out0, 0 , MAX_SETTABLE_FLOW_CAP));
219
+ in1 = uint128 (bound (in1, 0 , MAX_SETTABLE_FLOW_CAP));
220
+ out1 = uint128 (bound (out1, 0 , MAX_SETTABLE_FLOW_CAP));
221
+
222
+ flowCaps.push (FlowCapsConfig (idleParams.id (), FlowCaps (in0, out0)));
223
+ flowCaps.push (FlowCapsConfig (allMarkets[0 ].id (), FlowCaps (in1, out1)));
224
+
225
+ vm.prank (OWNER);
226
+ publicAllocator.setAdmin (address (vault), sender);
227
+
228
+ vm.expectEmit (address (publicAllocator));
229
+ emit EventsLib.SetFlowCaps (sender, address (vault), flowCaps);
230
+
231
+ vm.prank (sender);
232
+ publicAllocator.setFlowCaps (address (vault), flowCaps);
233
+
234
+ FlowCaps memory flowCap;
235
+ flowCap = publicAllocator.flowCaps (address (vault), idleParams.id ());
236
+ assertEq (flowCap.maxIn, in0);
237
+ assertEq (flowCap.maxOut, out0);
238
+
239
+ flowCap = publicAllocator.flowCaps (address (vault), allMarkets[0 ].id ());
240
+ assertEq (flowCap.maxIn, in1);
241
+ assertEq (flowCap.maxOut, out1);
242
+ }
243
+
183
244
function testPublicReallocateEvent (uint128 flow , address sender ) public {
184
245
flow = uint128 (bound (flow, 1 , CAP2 / 2 ));
185
246
@@ -298,6 +359,30 @@ contract PublicAllocatorTest is IntegrationTest {
298
359
assertEq (address (this ).balance - before, 2 * 0.001 ether, "wrong fee transferred " );
299
360
}
300
361
362
+ function testTransferFeeByAdminSuccess (address sender ) public {
363
+ vm.assume (publicAllocator.admin (address (vault)) != sender);
364
+ vm.prank (OWNER);
365
+ publicAllocator.setAdmin (address (vault), sender);
366
+ vm.prank (sender);
367
+ publicAllocator.setFee (address (vault), 0.001 ether);
368
+
369
+ flowCaps.push (FlowCapsConfig (idleParams.id (), FlowCaps (0 , 2 ether)));
370
+ flowCaps.push (FlowCapsConfig (allMarkets[0 ].id (), FlowCaps (2 ether, 0 )));
371
+ vm.prank (OWNER);
372
+ publicAllocator.setFlowCaps (address (vault), flowCaps);
373
+ withdrawals.push (Withdrawal (idleParams, 1 ether));
374
+
375
+ publicAllocator.reallocateTo {value: 0.001 ether }(address (vault), withdrawals, allMarkets[0 ]);
376
+ publicAllocator.reallocateTo {value: 0.001 ether }(address (vault), withdrawals, allMarkets[0 ]);
377
+
378
+ uint256 before = address (this ).balance;
379
+
380
+ vm.prank (sender);
381
+ publicAllocator.transferFee (address (vault), payable (address (this )));
382
+
383
+ assertEq (address (this ).balance - before, 2 * 0.001 ether, "wrong fee transferred " );
384
+ }
385
+
301
386
function testTransferFeeFail () public {
302
387
vm.prank (OWNER);
303
388
publicAllocator.setFee (address (vault), 0.001 ether);
0 commit comments