Skip to content

Commit

Permalink
Merge pull request #43 from morpho-labs/feat/owner
Browse files Browse the repository at this point in the history
Add owner
  • Loading branch information
MerlinEgalite authored Jul 6, 2023
2 parents f0646f3 + d36f6a0 commit 2ee005b
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
21 changes: 21 additions & 0 deletions src/Blue.sol
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ contract Blue {

// Storage.

// Owner.
address public owner;
// User' supply balances.
mapping(Id => mapping(address => uint)) public supplyShare;
// User' borrow balances.
Expand All @@ -56,6 +58,25 @@ contract Blue {
// Interests last update (used to check if a market has been created).
mapping(Id => uint) public lastUpdate;

// Constructor.

constructor(address newOwner) {
owner = newOwner;
}

// Modifiers.

modifier onlyOwner() {
require(msg.sender == owner, "not owner");
_;
}

// Only owner functions.

function transferOwnership(address newOwner) external onlyOwner {
owner = newOwner;
}

// Markets management.

function createMarket(Market calldata market) external {
Expand Down
26 changes: 25 additions & 1 deletion test/forge/Blue.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ contract BlueTest is Test {

function setUp() public {
// Create Blue.
blue = new Blue();
blue = new Blue(msg.sender);

// List a market.
borrowableAsset = new ERC20("borrowable", "B", 18);
Expand Down Expand Up @@ -91,6 +91,30 @@ contract BlueTest is Test {

// Tests

function testOwner(address owner) public {
Blue blue2 = new Blue(owner);

assertEq(blue2.owner(), owner, "owner");
}

function testTransferOwnership(address oldOwner, address newOwner) public {
Blue blue2 = new Blue(oldOwner);

vm.prank(oldOwner);
blue2.transferOwnership(newOwner);
assertEq(blue2.owner(), newOwner, "owner");
}

function testTransferOwnershipWhenNotOwner(address attacker, address newOwner) public {
vm.assume(attacker != address(0xdead));

Blue blue2 = new Blue(address(0xdead));

vm.prank(attacker);
vm.expectRevert("not owner");
blue2.transferOwnership(newOwner);
}

function testSupply(uint amount) public {
amount = bound(amount, 1, 2 ** 64);

Expand Down

0 comments on commit 2ee005b

Please sign in to comment.