From d980ffb4c0caadbdd60e7e4c793c67d48e92c348 Mon Sep 17 00:00:00 2001 From: yqbk Date: Tue, 31 May 2016 18:39:03 +0200 Subject: [PATCH] add role author to execution_environment_policy --- app/policies/execution_environment_policy.rb | 4 ++++ .../execution_environment_policy_spec.rb | 21 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/policies/execution_environment_policy.rb b/app/policies/execution_environment_policy.rb index 51eabdf3..3ee5a1c0 100644 --- a/app/policies/execution_environment_policy.rb +++ b/app/policies/execution_environment_policy.rb @@ -7,4 +7,8 @@ class ExecutionEnvironmentPolicy < AdminOnlyPolicy [:execute_command?, :shell?, :statistics?].each do |action| define_method(action) { admin? || author? } end + + [:create?, :index?, :new?].each do |action| + define_method(action) { admin? || teacher? } + end end diff --git a/spec/policies/execution_environment_policy_spec.rb b/spec/policies/execution_environment_policy_spec.rb index 799881b5..8bede9e1 100644 --- a/spec/policies/execution_environment_policy_spec.rb +++ b/spec/policies/execution_environment_policy_spec.rb @@ -21,7 +21,8 @@ describe ExecutionEnvironmentPolicy do end end - [:destroy?, :edit?, :execute_command?, :shell?, :show?, :update?].each do |action| + + [:execute_command?, :shell?, :statistics?].each do |action| permissions(action) do it 'grants access to admins' do expect(subject).to permit(FactoryGirl.build(:admin), execution_environment) @@ -38,4 +39,22 @@ describe ExecutionEnvironmentPolicy do end end end + + [:destroy?, :edit?, :show?, :update?].each do |action| + permissions(action) do + it 'grants access to admins' do + expect(subject).to permit(FactoryGirl.build(:admin), execution_environment) + end + + it 'does not grant access to authors' do + expect(subject).not_to permit(execution_environment.author, execution_environment) + end + + it 'does not grant access to all other users' do + [:external_user, :teacher].each do |factory_name| + expect(subject).not_to permit(FactoryGirl.build(factory_name), execution_environment) + end + end + end + end end