* Refactoring questions asked of user In this pull request, I'm extracting and normalizing role-based questions asked of the user. Prior to this commit, our codebase has asked two very similar questions of our user model: - `user.has_role?(:admin)` - `user.admin?` In asking `has_role?(:admin)` we are relying on implementation details of the rolify gem. In addition, the `has_role?` question asked throughout controllers or views means that it's harder to create hieararchies of permissions. In favoring `user.admin?` as our question, we can use that indirection as an opportunity to discuss and decide "Should someone with the `:super_admin` role be `user.admin? == true`?" The details of this commit is to do three primary things: 1. Ask the `has_role?` questions in "one place" in the code (e.g. the `Authorizer` module) 2. Extract the role based questions that are on the `User` model and provde backwards compatable delegation. 3. Structure the code so that it's harder to accidentally call `user.has_role?` (e.g., make `User#has_role?` and `User#has_any_role?` private). This is related to #15624 and the updates are informed by discussion in PR #15691. This commit supplants #15691. * Refactoring the liquid tag policy tests * Fixing typo * Bump for travis
25 lines
731 B
Ruby
25 lines
731 B
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe InternalPolicy, type: :policy do
|
|
let(:internal_policy) { described_class }
|
|
|
|
permissions :access? do
|
|
let(:user) { instance_double(User) }
|
|
|
|
context "when user does not have administrative access (to the record)" do
|
|
before { allow(user).to receive(:administrative_access_to?).and_return(false) }
|
|
|
|
it "does not permit the user" do
|
|
expect(internal_policy).not_to permit(user)
|
|
end
|
|
end
|
|
|
|
context "when user has administrative access (to the record)" do
|
|
before { allow(user).to receive(:administrative_access_to?).and_return(true) }
|
|
|
|
it "does not permit the user" do
|
|
expect(internal_policy).to permit(user)
|
|
end
|
|
end
|
|
end
|
|
end
|