RSpec::Authorization

GitHub Documentation

Gem Version Build Status Code Climate Test Coverage Dependency Status security Inline docs

RSpec matcher for declarative_authorization. A neat way of asserting declarative_authorization's rules inside controller using RSpec matcher.

Installation

Add this line to your application's Gemfile:

gem 'rspec-authorization', group: :test

And then execute:

bundle

Or install it yourself as:

gem install rspec-authorization

Requirement

Current development focus is as follows, future development may support other dependencies, following are requirements for this gem:

  • declarative_authorization 1.0.0.pre
  • rails 4.x
  • rspec-rails 3.x

Usage

In your controller spec:

describe ArticlesController do
  it { is_expected.to have_permission_for(:a_role).to(:restful_action_name) }

  it { is_expected.to have_permission_for(:writer).to(:index) }
  it { is_expected.to have_permission_for(:writer).to(:show) }
  it { is_expected.to have_permission_for(:writer).to(:new) }
  it { is_expected.to have_permission_for(:writer).to(:create) }
  it { is_expected.not_to have_permission_for(:writer).to(:edit) }
  it { is_expected.not_to have_permission_for(:writer).to(:update) }
  it { is_expected.not_to have_permission_for(:writer).to(:destroy) }
end

You can also use convenience RESTful methods matcher:

describe ArticlesController do
  it { is_expected.to have_permission_for(:user).to_read }
  it { is_expected.not_to have_permission_for(:user).to_create }
  it { is_expected.not_to have_permission_for(:user).to_update }
  it { is_expected.not_to have_permission_for(:user).to_delete }

  it { is_expected.to have_permission_for(:writer).to_read }
  it { is_expected.to have_permission_for(:writer).to_create }
  it { is_expected.to have_permission_for(:writer).to_update }
  it { is_expected.not_to have_permission_for(:writer).to_delete }

  it { is_expected.to have_permission_for(:editor).to_manage }
end

Contributing

  1. Fork it ( https://github.com/hendrauzia/rspec-authorization/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Setup rails test app (bundle exec rake setup)
  4. Test your changes (bundle exec rake spec)
  5. Commit your changes (git commit -am 'Add some feature')
  6. Push to the branch (git push origin my-new-feature)
  7. Create a new Pull Request