11const UFragmentsPolicy = artifacts . require ( 'UFragmentsPolicy.sol' ) ;
22const MockUFragments = artifacts . require ( 'MockUFragments.sol' ) ;
33const MockOracle = artifacts . require ( 'MockOracle.sol' ) ;
4+ const RebaseCallerContract = artifacts . require ( 'RebaseCallerContract.sol' ) ;
45
56const encodeCall = require ( 'zos-lib/lib/helpers/encodeCall' ) . default ;
67const BigNumber = web3 . BigNumber ;
@@ -12,7 +13,7 @@ require('chai')
1213 . use ( require ( 'chai-bignumber' ) ( BigNumber ) )
1314 . should ( ) ;
1415
15- let uFragmentsPolicy , mockUFragments , mockMarketOracle , mockCpiOracle ;
16+ let uFragmentsPolicy , mockUFragments , mockMarketOracle , mockCpiOracle , rebaseCallerContract ;
1617let r , prevEpoch , prevTime ;
1718let deployer , user ;
1819
@@ -45,6 +46,7 @@ async function setupContracts () {
4546 } ) ;
4647 await uFragmentsPolicy . setMarketOracle ( mockMarketOracle . address ) ;
4748 await uFragmentsPolicy . setCpiOracle ( mockCpiOracle . address ) ;
49+ rebaseCallerContract = await RebaseCallerContract . new ( uFragmentsPolicy . address ) ;
4850}
4951
5052async function setupContractsWithOpenRebaseWindow ( ) {
@@ -268,6 +270,30 @@ contract('UFragments:setRebaseTimingParameters:accessControl', function (account
268270 } ) ;
269271} ) ;
270272
273+ contract ( 'UFragmentsPolicy:Rebase:accessControl' , async function ( accounts ) {
274+ before ( 'setup UFragmentsPolicy contract' , async function ( ) {
275+ await setupContractsWithOpenRebaseWindow ( ) ;
276+ await mockExternalData ( INITIAL_RATE_30P_MORE , INITIAL_CPI , 1000 , true ) ;
277+ await chain . waitForSomeTime ( 60 ) ;
278+ } ) ;
279+
280+ describe ( 'when rebase called by an EOA' , function ( ) {
281+ it ( 'should succeed' , async function ( ) {
282+ expect (
283+ await chain . isEthException ( uFragmentsPolicy . rebase ( ) )
284+ ) . to . be . false ;
285+ } ) ;
286+ } ) ;
287+
288+ describe ( 'when rebase called by a contract' , function ( ) {
289+ it ( 'should fail' , async function ( ) {
290+ expect (
291+ await chain . isEthException ( rebaseCallerContract . callRebase ( ) )
292+ ) . to . be . true ;
293+ } ) ;
294+ } ) ;
295+ } ) ;
296+
271297contract ( 'UFragmentsPolicy:Rebase' , async function ( accounts ) {
272298 before ( 'setup UFragmentsPolicy contract' , setupContractsWithOpenRebaseWindow ) ;
273299
0 commit comments