22import unittest
33
44from brownie import accounts
5+ from brownie .exceptions import VirtualMachineError
56
67from . import ERC20Facet , TerminusFacet , TerminusInitializer
78from .core import facet_cut
@@ -32,6 +33,34 @@ def test_add_and_replace(self):
3233 self .assertEqual (controller , accounts [0 ].address )
3334
3435
36+ class TestController (TerminusTestCase ):
37+ def test_set_controller_fails_when_not_called_by_controller (self ):
38+ terminus_diamond_address = self .terminus_contracts ["Diamond" ]
39+ diamond_terminus = TerminusFacet .TerminusFacet (terminus_diamond_address )
40+
41+ with self .assertRaises (VirtualMachineError ):
42+ diamond_terminus .set_controller (accounts [1 ].address , {"from" : accounts [1 ]})
43+
44+ def test_set_controller_fails_when_not_called_by_controller_even_if_they_change_to_existing_controller (
45+ self ,
46+ ):
47+ terminus_diamond_address = self .terminus_contracts ["Diamond" ]
48+ diamond_terminus = TerminusFacet .TerminusFacet (terminus_diamond_address )
49+
50+ with self .assertRaises (VirtualMachineError ):
51+ diamond_terminus .set_controller (accounts [0 ].address , {"from" : accounts [1 ]})
52+
53+ def test_set_controller (self ):
54+ terminus_diamond_address = self .terminus_contracts ["Diamond" ]
55+ diamond_terminus = TerminusFacet .TerminusFacet (terminus_diamond_address )
56+
57+ self .assertEqual (diamond_terminus .terminus_controller (), accounts [0 ].address )
58+ diamond_terminus .set_controller (accounts [3 ].address , {"from" : accounts [0 ]})
59+ self .assertEqual (diamond_terminus .terminus_controller (), accounts [3 ].address )
60+ diamond_terminus .set_controller (accounts [0 ].address , {"from" : accounts [3 ]})
61+ self .assertEqual (diamond_terminus .terminus_controller (), accounts [0 ].address )
62+
63+
3564class TestContractURI (TerminusTestCase ):
3665 def test_contract_uri (self ):
3766 terminus_diamond_address = self .terminus_contracts ["Diamond" ]
@@ -64,12 +93,14 @@ def test_create_simple_pool(self):
6493 pool_base_price = diamond_terminus .pool_base_price ()
6594 self .assertEqual (pool_base_price , 1000 )
6695
96+ diamond_terminus .set_controller (accounts [1 ].address , {"from" : accounts [0 ]})
97+
6798 diamond_moonstream .mint (accounts [1 ], 1000 , {"from" : accounts [0 ]})
6899 initial_payer_balance = diamond_moonstream .balance_of (accounts [1 ].address )
69100 initial_terminus_balance = diamond_moonstream .balance_of (
70101 terminus_diamond_address
71102 )
72- initial_controller_balance = diamond_moonstream .balance_of (accounts [0 ].address )
103+ initial_controller_balance = diamond_moonstream .balance_of (accounts [1 ].address )
73104
74105 diamond_moonstream .approve (
75106 terminus_diamond_address , 1000 , {"from" : accounts [1 ]}
@@ -87,33 +118,35 @@ def test_create_simple_pool(self):
87118 terminus_diamond_address
88119 )
89120 intermediate_controller_balance = diamond_moonstream .balance_of (
90- accounts [0 ].address
121+ accounts [1 ].address
91122 )
92123 self .assertEqual (final_payer_balance , initial_payer_balance - 1000 )
93124 self .assertEqual (intermediate_terminus_balance , initial_terminus_balance + 1000 )
94- self .assertEqual (intermediate_controller_balance , initial_controller_balance )
125+ self .assertEqual (
126+ intermediate_controller_balance , initial_controller_balance - 1000
127+ )
95128
96129 with self .assertRaises (Exception ):
97130 diamond_terminus .withdraw_payments (
98- accounts [1 ].address , 1000 , {"from" : accounts [1 ]}
131+ accounts [0 ].address , 1000 , {"from" : accounts [0 ]}
99132 )
100133
101134 with self .assertRaises (Exception ):
102135 diamond_terminus .withdraw_payments (
103- accounts [0 ].address , 1000 , {"from" : accounts [1 ]}
136+ accounts [1 ].address , 1000 , {"from" : accounts [0 ]}
104137 )
105138
106139 with self .assertRaises (Exception ):
107140 diamond_terminus .withdraw_payments (
108- accounts [1 ].address , 1000 , {"from" : accounts [0 ]}
141+ accounts [0 ].address , 1000 , {"from" : accounts [1 ]}
109142 )
110143
111144 diamond_terminus .withdraw_payments (
112- accounts [0 ].address , 1000 , {"from" : accounts [0 ]}
145+ accounts [1 ].address , 1000 , {"from" : accounts [1 ]}
113146 )
114147
115148 final_terminus_balance = diamond_moonstream .balance_of (terminus_diamond_address )
116- final_controller_balance = diamond_moonstream .balance_of (accounts [0 ].address )
149+ final_controller_balance = diamond_moonstream .balance_of (accounts [1 ].address )
117150 self .assertEqual (final_terminus_balance , intermediate_terminus_balance - 1000 )
118151 self .assertEqual (
119152 final_controller_balance , intermediate_controller_balance + 1000
@@ -152,6 +185,8 @@ def setUpClass(cls) -> None:
152185 cls .diamond_terminus = diamond_terminus
153186 cls .diamond_moonstream = diamond_moonstream
154187
188+ cls .diamond_terminus .set_controller (accounts [1 ].address , {"from" : accounts [0 ]})
189+
155190 def setUp (self ) -> None :
156191 self .diamond_terminus .create_simple_pool (10 , {"from" : accounts [1 ]})
157192
0 commit comments