aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-07-07 16:38:23 +0200
committerRobert2017-07-07 16:38:23 +0200
commitfaa9bce7ab2c4f8c2d09200387f70c2ed1d2322a (patch)
tree6c6983c596d4e21206fd7b39c1428e3f31af179a
parente4133cee19db0aef55318296b2746be5be4b5896 (diff)
downloadchouette-core-faa9bce7ab2c4f8c2d09200387f70c2ed1d2322a.tar.bz2
User Permissions Computation tested in controllers vehicle_journeys and journey_patterns
-rw-r--r--spec/controllers/journey_patterns_collections_controller_spec.rb24
-rw-r--r--spec/controllers/line_referentials_controller_spec.rb2
-rw-r--r--spec/controllers/referentials_controller_spec.rb2
-rw-r--r--spec/controllers/vehicle_journeys_collections_controller_spec.rb5
-rw-r--r--spec/controllers/vehicle_journeys_controller_spec.rb28
-rw-r--r--spec/factories/users.rb13
6 files changed, 65 insertions, 9 deletions
diff --git a/spec/controllers/journey_patterns_collections_controller_spec.rb b/spec/controllers/journey_patterns_collections_controller_spec.rb
index 442d73fb7..7015bfe98 100644
--- a/spec/controllers/journey_patterns_collections_controller_spec.rb
+++ b/spec/controllers/journey_patterns_collections_controller_spec.rb
@@ -1,3 +1,27 @@
RSpec.describe JourneyPatternsCollectionsController, :type => :controller do
+ before do
+ @user = build_stubbed(:allmighty_user)
+ end
+
+ describe 'user_permissions' do
+ let( :referential ){ build_stubbed(:referential) }
+ let( :user_context ){ UserContext.new(@user, referential: referential) }
+
+ before do
+ allow(controller).to receive(:pundit_user).and_return(user_context)
+ end
+
+ it 'computes them correctly if not authorized' do
+ expect( controller.user_permissions ).to eq({'journey_patterns.create' => false,
+ 'journey_patterns.destroy' => false,
+ 'journey_patterns.update' => false }.to_json)
+ end
+ it 'computes them correctly if authorized' do
+ @user.organisation_id = referential.organisation_id
+ expect( controller.user_permissions ).to eq({'journey_patterns.create' => true,
+ 'journey_patterns.destroy' => true,
+ 'journey_patterns.update' => true }.to_json)
+ end
+ end
end
diff --git a/spec/controllers/line_referentials_controller_spec.rb b/spec/controllers/line_referentials_controller_spec.rb
index 6f8356507..aee24b0fa 100644
--- a/spec/controllers/line_referentials_controller_spec.rb
+++ b/spec/controllers/line_referentials_controller_spec.rb
@@ -1,5 +1,3 @@
-require 'spec_helper'
-
RSpec.describe LineReferentialsController, :type => :controller do
end
diff --git a/spec/controllers/referentials_controller_spec.rb b/spec/controllers/referentials_controller_spec.rb
index 1b4533fca..500c6d2d6 100644
--- a/spec/controllers/referentials_controller_spec.rb
+++ b/spec/controllers/referentials_controller_spec.rb
@@ -1,5 +1,3 @@
-require 'spec_helper'
-
describe ReferentialsController, :type => :controller do
login_user
diff --git a/spec/controllers/vehicle_journeys_collections_controller_spec.rb b/spec/controllers/vehicle_journeys_collections_controller_spec.rb
deleted file mode 100644
index 39ea55761..000000000
--- a/spec/controllers/vehicle_journeys_collections_controller_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe VehicleJourneysCollectionsController, :type => :controller do
-
-end
diff --git a/spec/controllers/vehicle_journeys_controller_spec.rb b/spec/controllers/vehicle_journeys_controller_spec.rb
new file mode 100644
index 000000000..c9356fffa
--- /dev/null
+++ b/spec/controllers/vehicle_journeys_controller_spec.rb
@@ -0,0 +1,28 @@
+RSpec.describe VehicleJourneysController, :type => :controller do
+
+ before do
+ @user = build_stubbed(:allmighty_user)
+ end
+
+ describe 'user_permissions' do
+ let( :referential ){ build_stubbed(:referential) }
+ let( :user_context ){ UserContext.new(@user, referential: referential) }
+
+ before do
+ allow(controller).to receive(:pundit_user).and_return(user_context)
+ end
+
+ it 'computes them correctly if not authorized' do
+ expect( controller.send(:user_permissions) ).to eq({'vehicle_journeys.create' => false,
+ 'vehicle_journeys.destroy' => false,
+ 'vehicle_journeys.update' => false }.to_json)
+ end
+ it 'computes them correctly if authorized' do
+ @user.organisation_id = referential.organisation_id
+ expect( controller.send(:user_permissions) ).to eq({'vehicle_journeys.create' => true,
+ 'vehicle_journeys.destroy' => true,
+ 'vehicle_journeys.update' => true }.to_json)
+ end
+ end
+
+end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index 8f0ec38c0..d532cbafc 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -1,3 +1,13 @@
+all_permissions = %w[
+ footnotes
+ journey_patterns
+ referentials
+ routes
+ routing_constraint_zones
+ time_tables
+ vehicle_journeys
+ ].product( %w{create destroy update} ).map{ |model_action| model_action.join('.') }
+
FactoryGirl.define do
factory :user do
association :organisation
@@ -6,5 +16,8 @@ FactoryGirl.define do
sequence(:email) { |n| "chouette#{n}@dryade.priv" }
password "secret"
password_confirmation "secret"
+ factory :allmighty_user do
+ permissions all_permissions
+ end
end
end