@@ -10,13 +10,17 @@ contract KeyperSetManagerTest is Test {
10
10
KeyperSet public members0;
11
11
KeyperSet public members1;
12
12
address public owner;
13
+ address public dao;
14
+ address public sequencer;
13
15
14
16
function setUp () public {
15
17
owner = vm.addr (42 );
18
+ dao = address (420 );
19
+ sequencer = address (4200 );
16
20
vm.prank (owner);
17
21
keyperSetManager = new KeyperSetManager (owner);
18
22
vm.prank (owner);
19
- keyperSetManager.initialize (owner, owner );
23
+ keyperSetManager.initialize (dao, sequencer );
20
24
members0 = new KeyperSet ();
21
25
members0.setFinalized ();
22
26
members1 = new KeyperSet ();
@@ -25,10 +29,10 @@ contract KeyperSetManagerTest is Test {
25
29
26
30
function testGetNumKeyperSets () public {
27
31
assertEq (keyperSetManager.getNumKeyperSets (), 0 );
28
- vm.prank (owner );
32
+ vm.prank (dao );
29
33
keyperSetManager.addKeyperSet (1 , address (members0));
30
34
assertEq (keyperSetManager.getNumKeyperSets (), 1 );
31
- vm.prank (owner );
35
+ vm.prank (dao );
32
36
keyperSetManager.addKeyperSet (2 , address (members0));
33
37
assertEq (keyperSetManager.getNumKeyperSets (), 2 );
34
38
}
@@ -48,17 +52,17 @@ contract KeyperSetManagerTest is Test {
48
52
function testAddKeyperSetRequiresFinalizedSet () public {
49
53
KeyperSet ks = new KeyperSet ();
50
54
vm.expectRevert (KeyperSetNotFinalized.selector );
51
- vm.prank (owner );
55
+ vm.prank (dao );
52
56
keyperSetManager.addKeyperSet (0 , address (ks));
53
57
}
54
58
55
59
function testAddKeyperSetRequiresIncreasingActivationBlock () public {
56
- vm.prank (owner );
60
+ vm.prank (dao );
57
61
keyperSetManager.addKeyperSet (1000 , address (members0));
58
62
vm.expectRevert (AlreadyHaveKeyperSet.selector );
59
- vm.prank (owner );
63
+ vm.prank (dao );
60
64
keyperSetManager.addKeyperSet (999 , address (members1));
61
- vm.prank (owner );
65
+ vm.prank (dao );
62
66
keyperSetManager.addKeyperSet (1000 , address (members1));
63
67
}
64
68
@@ -80,7 +84,7 @@ contract KeyperSetManagerTest is Test {
80
84
0 ,
81
85
0
82
86
);
83
- vm.prank (owner );
87
+ vm.prank (dao );
84
88
keyperSetManager.addKeyperSet (
85
89
1000 ,
86
90
address (members0)
@@ -93,9 +97,9 @@ contract KeyperSetManagerTest is Test {
93
97
}
94
98
95
99
function testGetKeyperSetIndexByBlock () public {
96
- vm.prank (owner );
100
+ vm.prank (dao );
97
101
keyperSetManager.addKeyperSet (1000 , address (members0));
98
- vm.prank (owner );
102
+ vm.prank (dao );
99
103
keyperSetManager.addKeyperSet (1100 , address (members1));
100
104
101
105
vm.expectRevert (NoActiveKeyperSet.selector );
@@ -112,20 +116,84 @@ contract KeyperSetManagerTest is Test {
112
116
}
113
117
114
118
function testGetKeyperSetActivationBlock () public {
115
- vm.prank (owner );
119
+ vm.prank (dao );
116
120
keyperSetManager.addKeyperSet (1000 , address (members0));
117
- vm.prank (owner );
121
+ vm.prank (dao );
118
122
keyperSetManager.addKeyperSet (1100 , address (members1));
119
123
assertEq (keyperSetManager.getKeyperSetActivationBlock (0 ), 1000 );
120
124
assertEq (keyperSetManager.getKeyperSetActivationBlock (1 ), 1100 );
121
125
}
122
126
123
127
function testGetKeyperSetAddress () public {
124
- vm.prank (owner );
128
+ vm.prank (dao );
125
129
keyperSetManager.addKeyperSet (1000 , address (members0));
126
- vm.prank (owner );
130
+ vm.prank (dao );
127
131
keyperSetManager.addKeyperSet (1100 , address (members1));
128
132
assertEq (keyperSetManager.getKeyperSetAddress (0 ), address (members0));
129
133
assertEq (keyperSetManager.getKeyperSetAddress (1 ), address (members1));
130
134
}
135
+
136
+ function testAddKeyperSetRequiresFutureActivationBlock () public {
137
+ vm.prank (dao);
138
+ keyperSetManager.addKeyperSet (10 , address (members0));
139
+ vm.roll (15 );
140
+ uint64 currentEon = keyperSetManager.getKeyperSetIndexByBlock (15 );
141
+ assertEq (10 , keyperSetManager.getKeyperSetActivationBlock (currentEon));
142
+ vm.prank (dao);
143
+ vm.expectRevert (AlreadyHaveKeyperSet.selector );
144
+ keyperSetManager.addKeyperSet (15 , address (members1));
145
+ vm.prank (dao);
146
+ keyperSetManager.addKeyperSet (16 , address (members1));
147
+ }
148
+
149
+ function testPauseShutter () public {
150
+ bytes32 pauserRole = keyperSetManager.PAUSER_ROLE ();
151
+ address unauthorized = address (777 );
152
+ vm.startPrank (unauthorized);
153
+ vm.expectRevert (
154
+ abi.encodeWithSelector (
155
+ IAccessControl.AccessControlUnauthorizedAccount.selector ,
156
+ unauthorized,
157
+ pauserRole
158
+ )
159
+ );
160
+ keyperSetManager.pause ();
161
+ vm.startPrank (address (2 ));
162
+ vm.expectRevert (
163
+ abi.encodeWithSelector (
164
+ IAccessControl.AccessControlUnauthorizedAccount.selector ,
165
+ address (2 ),
166
+ pauserRole
167
+ )
168
+ );
169
+ keyperSetManager.pause ();
170
+
171
+ vm.startPrank (sequencer);
172
+ keyperSetManager.pause ();
173
+ assert (keyperSetManager.paused ());
174
+ vm.expectRevert (Pausable.EnforcedPause.selector );
175
+ keyperSetManager.pause ();
176
+ }
177
+
178
+ function testUnpauseShutter () public {
179
+ bytes32 adminRole = keyperSetManager.DEFAULT_ADMIN_ROLE ();
180
+
181
+ vm.startPrank (sequencer);
182
+ keyperSetManager.pause ();
183
+ assert (keyperSetManager.paused ());
184
+ vm.expectRevert (
185
+ abi.encodeWithSelector (
186
+ IAccessControl.AccessControlUnauthorizedAccount.selector ,
187
+ sequencer,
188
+ adminRole
189
+ )
190
+ );
191
+ keyperSetManager.unpause ();
192
+
193
+ vm.startPrank (dao);
194
+ keyperSetManager.unpause ();
195
+ assert (! keyperSetManager.paused ());
196
+ vm.expectRevert (Pausable.ExpectedPause.selector );
197
+ keyperSetManager.unpause ();
198
+ }
131
199
}
0 commit comments