Skip to content

Commit bfe86c2

Browse files
committed
Add check to make sure all extensions are removed before changing manager address.
1 parent bbd27d9 commit bfe86c2

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

contracts/manager/DelegatedManager.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ contract DelegatedManager is Ownable {
366366
*/
367367
function setManager(address _newManager) external onlyOwner {
368368
require(_newManager != address(0), "Zero address not valid");
369+
require(extensions.length == 0, "Must remove all extensions");
369370
setToken.setManager(_newManager);
370371
}
371372

test/manager/delegatedManager.spec.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,7 @@ describe("DelegatedManager", () => {
898898
});
899899
});
900900

901-
describe("#setManager", async () => {
901+
describe.only("#setManager", async () => {
902902
let subjectNewManager: Address;
903903
let subjectCaller: Account;
904904

@@ -918,6 +918,16 @@ describe("DelegatedManager", () => {
918918
expect(manager).to.eq(newManager.address);
919919
});
920920

921+
describe("when manager still has extension initialized", async () => {
922+
beforeEach(async () => {
923+
await baseExtension.initializeExtension(setToken.address, delegatedManager.address);
924+
});
925+
926+
it("should revert", async () => {
927+
await expect(subject()).to.be.revertedWith("Must remove all extensions");
928+
});
929+
});
930+
921931
describe("when passed manager is the zero address", async () => {
922932
beforeEach(async () => {
923933
subjectNewManager = ADDRESS_ZERO;

0 commit comments

Comments
 (0)