42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { blockchainTests, expect, randomAddress, verifyEventsFromLogs } from '@0x/contracts-test-utils';
|
|
import { OwnableRevertErrors } from '@0x/utils';
|
|
|
|
import { basicMigrateAsync } from '../utils/migration';
|
|
import { IOwnableContract, IOwnableEvents } from '../wrappers';
|
|
|
|
blockchainTests.resets('Ownable feature', env => {
|
|
const notOwner = randomAddress();
|
|
let owner: string;
|
|
let auth: IOwnableContract;
|
|
|
|
before(async () => {
|
|
[owner] = await env.getAccountAddressesAsync();
|
|
const zeroEx = await basicMigrateAsync(owner, env.provider, env.txDefaults);
|
|
auth = new IOwnableContract(zeroEx.address, env.provider, env.txDefaults);
|
|
});
|
|
|
|
describe('transferOwnership()', () => {
|
|
it('non-owner cannot transfer ownership', async () => {
|
|
const newOwner = randomAddress();
|
|
const tx = auth.transferOwnership(newOwner).callAsync({ from: notOwner });
|
|
return expect(tx).to.revertWith(new OwnableRevertErrors.OnlyOwnerError(notOwner, owner));
|
|
});
|
|
|
|
it('owner can transfer ownership', async () => {
|
|
const newOwner = randomAddress();
|
|
const receipt = await auth.transferOwnership(newOwner).awaitTransactionSuccessAsync({ from: owner });
|
|
verifyEventsFromLogs(
|
|
receipt.logs,
|
|
[
|
|
{
|
|
previousOwner: owner,
|
|
newOwner,
|
|
},
|
|
],
|
|
IOwnableEvents.OwnershipTransferred,
|
|
);
|
|
expect(await auth.getOwner().callAsync()).to.eq(newOwner);
|
|
});
|
|
});
|
|
});
|