@@ -33,6 +33,47 @@ contract HubReportDeficitTest is HubBase {
3333 _addLiquidity (usdxAssetId, MAX_SUPPLY_AMOUNT);
3434 }
3535
36+ function test_reportDeficit_active_paused_scenarios () public {
37+ // draw usdx liquidity to be restored
38+ _drawLiquidity ({
39+ assetId: usdxAssetId,
40+ amount: 1 ,
41+ withPremium: true ,
42+ skipTime: true ,
43+ spoke: address (spoke1)
44+ });
45+
46+ // set spoke to active and paused
47+ _updateSpokePaused (hub1, usdxAssetId, address (spoke1), true );
48+ _updateSpokeActive (hub1, usdxAssetId, address (spoke1), true );
49+
50+ vm.prank (address (spoke1));
51+ hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
52+
53+ // set spoke to inactive and paused
54+ _updateSpokePaused (hub1, usdxAssetId, address (spoke1), true );
55+ _updateSpokeActive (hub1, usdxAssetId, address (spoke1), false );
56+
57+ vm.expectRevert (IHub.SpokeNotActive.selector );
58+ vm.prank (address (spoke1));
59+ hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
60+
61+ // set spoke to active and not paused
62+ _updateSpokePaused (hub1, usdxAssetId, address (spoke1), false );
63+ _updateSpokeActive (hub1, usdxAssetId, address (spoke1), true );
64+
65+ vm.prank (address (spoke1));
66+ hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
67+
68+ // set spoke to inactive and not paused
69+ _updateSpokePaused (hub1, usdxAssetId, address (spoke1), false );
70+ _updateSpokeActive (hub1, usdxAssetId, address (spoke1), false );
71+
72+ vm.expectRevert (IHub.SpokeNotActive.selector );
73+ vm.prank (address (spoke1));
74+ hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
75+ }
76+
3677 function test_reportDeficit_revertsWith_SpokeNotActive (address caller ) public {
3778 vm.assume (! hub1.getSpoke (usdxAssetId, caller).active);
3879
@@ -49,24 +90,6 @@ contract HubReportDeficitTest is HubBase {
4990 hub1.reportDeficit (usdxAssetId, 0 , ZERO_PREMIUM_DELTA);
5091 }
5192
52- /// @dev paused spoke can still report deficit
53- function test_reportDeficit_paused () public {
54- // draw usdx liquidity to be restored
55- _drawLiquidity ({
56- assetId: usdxAssetId,
57- amount: 1 ,
58- withPremium: true ,
59- skipTime: true ,
60- spoke: address (spoke1)
61- });
62-
63- _updateSpokePaused (hub1, usdxAssetId, address (spoke1), true );
64-
65- // even if spoke is paused, it can report deficit
66- vm.prank (address (spoke1));
67- hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
68- }
69-
7093 function test_reportDeficit_fuzz_revertsWith_SurplusDrawnDeficitReported (
7194 uint256 drawnAmount
7295 ) public {
@@ -154,6 +177,24 @@ contract HubReportDeficitTest is HubBase {
154177 );
155178 }
156179
180+ /// @dev paused spoke can still report deficit
181+ function test_reportDeficit_paused () public {
182+ // draw usdx liquidity to be restored
183+ _drawLiquidity ({
184+ assetId: usdxAssetId,
185+ amount: 1 ,
186+ withPremium: true ,
187+ skipTime: true ,
188+ spoke: address (spoke1)
189+ });
190+
191+ _updateSpokePaused (hub1, usdxAssetId, address (spoke1), true );
192+
193+ // even if spoke is paused, it can report deficit
194+ vm.prank (address (spoke1));
195+ hub1.reportDeficit (usdxAssetId, 1 , ZERO_PREMIUM_DELTA);
196+ }
197+
157198 function test_reportDeficit_with_premium () public {
158199 uint256 drawnAmount = 10_000e6 ;
159200 test_reportDeficit_fuzz_with_premium ({
0 commit comments