aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/links_helper.rb7
-rw-r--r--app/models/vehicle_journey_import.rb2
-rw-r--r--app/policies/import_policy.rb12
-rw-r--r--lib/stif/permission_translator.rb2
-rw-r--r--spec/policies/import_policy_spec.rb41
5 files changed, 54 insertions, 10 deletions
diff --git a/app/helpers/links_helper.rb b/app/helpers/links_helper.rb
index 93f06df3c..4fb7a797d 100644
--- a/app/helpers/links_helper.rb
+++ b/app/helpers/links_helper.rb
@@ -1,11 +1,4 @@
module LinksHelper
-
- def protected_element(&blk)
- blk.()
- rescue
- nil
- end
-
def destroy_link_content(translation_key = 'actions.destroy')
content_tag(:span, nil, class: 'fa fa-trash mr-xs') + t(translation_key)
end
diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb
index 44a6d457e..250f3a9e9 100644
--- a/app/models/vehicle_journey_import.rb
+++ b/app/models/vehicle_journey_import.rb
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-
class VehicleJourneyImport
include ActiveModel::Validations
include ActiveModel::Conversion
diff --git a/app/policies/import_policy.rb b/app/policies/import_policy.rb
index 9e1d99a66..b12dcc167 100644
--- a/app/policies/import_policy.rb
+++ b/app/policies/import_policy.rb
@@ -4,4 +4,16 @@ class ImportPolicy < ApplicationPolicy
scope
end
end
+
+ def create?
+ !archived? && user.has_permission?('imports.create')
+ end
+
+ def destroy?
+ !archived? && user.has_permission?('imports.destroy')
+ end
+
+ def update?
+ !archived? && user.has_permission?('imports.update')
+ end
end
diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb
index 963c5df6e..2bc565968 100644
--- a/lib/stif/permission_translator.rb
+++ b/lib/stif/permission_translator.rb
@@ -30,7 +30,7 @@ module Stif
def destructive_permissions_for(models)
@__destructive_permissions_for__ ||=
- models.product( %w{create destroy import update} ).map{ |model_action| model_action.join('.') }
+ models.product( %w{create destroy update} ).map{ |model_action| model_action.join('.') }
end
def extra_permission_translation extra_permission
diff --git a/spec/policies/import_policy_spec.rb b/spec/policies/import_policy_spec.rb
new file mode 100644
index 000000000..fd9f3172c
--- /dev/null
+++ b/spec/policies/import_policy_spec.rb
@@ -0,0 +1,41 @@
+RSpec.describe ImportPolicy, type: :policy do
+
+ let( :record ){ build_stubbed :import }
+ before { stub_policy_scope(record) }
+
+ #
+ # Non Destructive
+ # ---------------
+
+ context 'Non Destructive actions →' do
+ permissions :index? do
+ it_behaves_like 'always allowed', 'anything', archived: true
+ end
+ permissions :show? do
+ it_behaves_like 'always allowed', 'anything', archived: true
+ end
+ end
+
+
+ #
+ # Destructive
+ # -----------
+
+ context 'Destructive actions →' do
+ permissions :create? do
+ it_behaves_like 'permitted policy', 'imports.create', archived: true
+ end
+ permissions :destroy? do
+ it_behaves_like 'permitted policy', 'imports.destroy', archived: true
+ end
+ permissions :edit? do
+ it_behaves_like 'permitted policy', 'imports.update', archived: true
+ end
+ permissions :new? do
+ it_behaves_like 'permitted policy', 'imports.create', archived: true
+ end
+ permissions :update? do
+ it_behaves_like 'permitted policy', 'imports.update', archived: true
+ end
+ end
+end