| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- const RBACMock = artifacts.require('./helpers/RBACMock.sol')
- import expectThrow from './helpers/expectThrow'
- require('chai')
- .use(require('chai-as-promised'))
- .should()
- contract('RBAC', function(accounts) {
- let mock
- const [
- owner,
- anyone,
- ...advisors
- ] = accounts
- before(async () => {
- mock = await RBACMock.new(advisors, { from: owner })
- })
- context('in normal conditions', () => {
- it('allows owner to call #onlyOwnersCanDoThis', async () => {
- await mock.onlyOwnersCanDoThis({ from: owner })
- .should.be.fulfilled
- })
- it('allows owner to call #onlyAdvisorsCanDoThis', async () => {
- await mock.onlyAdvisorsCanDoThis({ from: owner })
- .should.be.fulfilled
- })
- it('allows advisors to call #onlyAdvisorsCanDoThis', async () => {
- await mock.onlyAdvisorsCanDoThis({ from: advisors[0] })
- .should.be.fulfilled
- })
- it('allows owner to call #eitherOwnerOrAdvisorCanDoThis', async () => {
- await mock.eitherOwnerOrAdvisorCanDoThis({ from: owner })
- .should.be.fulfilled
- })
- it('allows advisors to call #eitherOwnerOrAdvisorCanDoThis', async () => {
- await mock.eitherOwnerOrAdvisorCanDoThis({ from: advisors[0] })
- .should.be.fulfilled
- })
- it('does not allow owners to call #nobodyCanDoThis', async () => {
- expectThrow(
- mock.nobodyCanDoThis({ from: owner })
- )
- })
- it('does not allow advisors to call #nobodyCanDoThis', async () => {
- expectThrow(
- mock.nobodyCanDoThis({ from: advisors[0] })
- )
- })
- it('does not allow anyone to call #nobodyCanDoThis', async () => {
- expectThrow(
- mock.nobodyCanDoThis({ from: anyone })
- )
- })
- it('allows an owner to remove an advisor\'s role', async () => {
- await mock.removeAdvisor(advisors[0], { from: owner })
- .should.be.fulfilled
- })
- })
- context('in adversarial conditions', () => {
- it('does not allow an advisor to remove another advisor', async () => {
- expectThrow(
- mock.removeAdvisor(advisors[1], { from: advisors[0] })
- )
- })
- it('does not allow "anyone" to remove an advisor', async () => {
- expectThrow(
- mock.removeAdvisor(advisors[0], { from: anyone })
- )
- })
- })
- })
|