@@ -3,6 +3,8 @@ pragma solidity ^0.8.28;
3
3
4
4
import {MockInbox} from "./mocks/MockInbox.sol " ;
5
5
import {MockVerifier} from "./mocks/MockVerifier.sol " ;
6
+
7
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol " ;
6
8
import "forge-std/Test.sol " ;
7
9
import {CheckpointTracker} from "src/protocol/CheckpointTracker.sol " ;
8
10
import {ICheckpointTracker} from "src/protocol/ICheckpointTracker.sol " ;
@@ -15,6 +17,7 @@ contract CheckpointTrackerTest is Test {
15
17
SignalService signalService;
16
18
address proverManager = makeAddr ("proverManager " );
17
19
bytes32 genesis = keccak256 (abi.encode ("genesis " ));
20
+ address deployer = makeAddr ("deployer " );
18
21
19
22
ICheckpointTracker.Checkpoint start;
20
23
ICheckpointTracker.Checkpoint end;
@@ -24,13 +27,15 @@ contract CheckpointTrackerTest is Test {
24
27
inbox = new MockInbox ();
25
28
verifier = new MockVerifier ();
26
29
signalService = new SignalService ();
27
- tracker =
28
- new CheckpointTracker (genesis, address (inbox), address (verifier), proverManager, address (signalService));
30
+ vm.startPrank (deployer);
31
+ tracker = new CheckpointTracker (genesis, address (inbox), address (verifier), address (signalService));
32
+ tracker.updateProverManager (address (proverManager));
33
+ vm.stopPrank ();
29
34
}
30
35
31
36
function test_constructor_shouldRevertWithZeroGenesis () public {
32
37
vm.expectRevert (ICheckpointTracker.ZeroGenesisCommitment.selector );
33
- new CheckpointTracker (bytes32 (0 ), address (inbox), address ( verifier), proverManager, address (signalService));
38
+ new CheckpointTracker (bytes32 (0 ), address (verifier), proverManager, address (signalService));
34
39
}
35
40
36
41
function test_constructor_shouldSetExternalContracts () public view {
@@ -49,6 +54,38 @@ contract CheckpointTrackerTest is Test {
49
54
assertEq (savedCommitment, genesis, "Did not save genesis " );
50
55
}
51
56
57
+ function test_updateProverManager_shouldSetProverManager () public {
58
+ vm.startPrank (deployer);
59
+ CheckpointTracker uninitializedTracker =
60
+ new CheckpointTracker (genesis, address (inbox), address (verifier), address (signalService));
61
+ uninitializedTracker.updateProverManager (proverManager);
62
+ assertEq (address (uninitializedTracker.proverManager ()), proverManager, "Did not set prover manager " );
63
+ }
64
+
65
+ function test_proveTransition_shouldSucceedWithNoProverManager () public {
66
+ CheckpointTracker uninitializedTracker =
67
+ new CheckpointTracker (genesis, address (inbox), address (verifier), address (signalService));
68
+ _constructValidTransition ();
69
+ uninitializedTracker.proveTransition (start, end, proof);
70
+ }
71
+
72
+ function test_initializeProverManager_onlyOwner () public {
73
+ vm.prank (deployer);
74
+ CheckpointTracker uninitializedTracker =
75
+ new CheckpointTracker (genesis, address (inbox), address (verifier), address (signalService));
76
+
77
+ address notDeployer = makeAddr ("notdeployer " );
78
+ vm.prank (notDeployer);
79
+ vm.expectRevert (abi.encodeWithSelector (Ownable.OwnableUnauthorizedAccount.selector , notDeployer));
80
+ uninitializedTracker.updateProverManager (proverManager);
81
+ }
82
+
83
+ function test_updateProverManager_shouldUpdateProverManager () public {
84
+ vm.prank (deployer);
85
+ tracker.updateProverManager (makeAddr ("newProverManager " ));
86
+ assertEq (address (tracker.proverManager ()), makeAddr ("newProverManager " ), "Did not update prover manager " );
87
+ }
88
+
52
89
function test_proveTransition_shouldRevertIfNotCalledByProverManager () public {
53
90
_constructValidTransition ();
54
91
vm.expectRevert (ICheckpointTracker.OnlyProverManager.selector );
0 commit comments