aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-05-24 11:13:37 +0200
committerRobert2017-05-29 17:34:42 +0200
commitd67ad14d0fe9fbfe08a450317d208afcee48d819 (patch)
tree1a5fa3056e0866caa2c4a150a08f0775477b48fe
parent54bf18da9a74295c327e39c659ef3a28719a2631 (diff)
downloadchouette-core-d67ad14d0fe9fbfe08a450317d208afcee48d819.tar.bz2
Refs: #3385; basic policy for boiv:*
-rw-r--r--app/policies/boiv_policy.rb4
-rw-r--r--spec/features/lines_spec.rb5
-rw-r--r--spec/features/users/connection_spec.rb0
-rw-r--r--spec/policies/boiv_policy_spec.rb12
-rw-r--r--spec/support/pundit/policies.rb7
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