diff options
| author | Robert | 2017-05-24 11:13:37 +0200 |
|---|---|---|
| committer | Robert | 2017-05-29 17:34:42 +0200 |
| commit | d67ad14d0fe9fbfe08a450317d208afcee48d819 (patch) | |
| tree | 1a5fa3056e0866caa2c4a150a08f0775477b48fe | |
| parent | 54bf18da9a74295c327e39c659ef3a28719a2631 (diff) | |
| download | chouette-core-d67ad14d0fe9fbfe08a450317d208afcee48d819.tar.bz2 | |
Refs: #3385; basic policy for boiv:*
| -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 |
