diff options
| -rw-r--r-- | app/policies/boiv_policy.rb | 4 | ||||
| -rw-r--r-- | spec/features/lines_spec.rb | 5 | ||||
| -rw-r--r-- | spec/features/users/connection_spec.rb | 0 | ||||
| -rw-r--r-- | spec/policies/boiv_policy_spec.rb | 12 | ||||
| -rw-r--r-- | spec/support/pundit/policies.rb | 7 | 
5 files changed, 24 insertions, 4 deletions
| diff --git a/app/policies/boiv_policy.rb b/app/policies/boiv_policy.rb index 4270dc686..9679d083a 100644 --- a/app/policies/boiv_policy.rb +++ b/app/policies/boiv_policy.rb @@ -5,6 +5,10 @@ class BoivPolicy < ApplicationPolicy      organisation_match? && user.has_permission?('boiv:read-offer')    end +  def boiv? +    !(user.permissions || []).grep(%r{\Aboiv:.}).empty? +  end +    def index?      boiv_read_offer?    end diff --git a/spec/features/lines_spec.rb b/spec/features/lines_spec.rb index e7e1e601c..a55f30ebc 100644 --- a/spec/features/lines_spec.rb +++ b/spec/features/lines_spec.rb @@ -1,7 +1,4 @@ -# -*- coding: utf-8 -*- -require 'spec_helper' - -describe "Lines", :type => :feature do +describe "Lines", type: :feature do    login_user    let(:line_referential) { create :line_referential } diff --git a/spec/features/users/connection_spec.rb b/spec/features/users/connection_spec.rb new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/spec/features/users/connection_spec.rb diff --git a/spec/policies/boiv_policy_spec.rb b/spec/policies/boiv_policy_spec.rb index bf09cdcd9..14f88e416 100644 --- a/spec/policies/boiv_policy_spec.rb +++ b/spec/policies/boiv_policy_spec.rb @@ -12,4 +12,16 @@ RSpec.describe BoivPolicy, type: :policy do      it_behaves_like 'permitted policy and same organisation', 'boiv:read-offer'    end +  permissions :boiv? do +    it 'no permission starting with boiv:. →  denies' do +      expect_it.not_to permit(user_context, referential) +    end + +    with_user_permission 'boiv:anything' do +      it{ expect_it.to permit(user_context, referential) } +    end +    with_user_permission 'boiv:' do +      it{ expect_it.not_to permit(user_context, referential) } +    end +  end  end diff --git a/spec/support/pundit/policies.rb b/spec/support/pundit/policies.rb index 637a2a528..e18309226 100644 --- a/spec/support/pundit/policies.rb +++ b/spec/support/pundit/policies.rb @@ -16,6 +16,7 @@ module Support          for_user.permissions ||= []          for_user.permissions += permissions.flatten        end +      end      module PoliciesMacros @@ -27,6 +28,12 @@ module Support            let( :user )         { create :user }          end        end +      def with_user_permission(permission, &blk) +        it "with user permission #{permission.inspect}" do +          add_permissions(permission, for_user: user) +          blk.() +        end +      end      end    end  end | 
