Simplify permission specs
* Remove iteration if not required * Unify usage of parentheses for `permissions` call
This commit is contained in:

committed by
Sebastian Serth

parent
e0c2c7b806
commit
e5879eb606
@ -54,7 +54,7 @@ describe CodeharborLinkPolicy do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
permissions(:enabled?) do
|
permissions :enabled? do
|
||||||
it 'reflects the config option' do
|
it 'reflects the config option' do
|
||||||
%i[external_user admin teacher].each do |factory_name|
|
%i[external_user admin teacher].each do |factory_name|
|
||||||
expect(policy).to permit(create(factory_name), codeharbor_link)
|
expect(policy).to permit(create(factory_name), codeharbor_link)
|
||||||
@ -72,7 +72,7 @@ describe CodeharborLinkPolicy do
|
|||||||
allow(codeocean_config).to receive(:read).and_return(codeharbor_config)
|
allow(codeocean_config).to receive(:read).and_return(codeharbor_config)
|
||||||
end
|
end
|
||||||
|
|
||||||
permissions(:enabled?) do
|
permissions :enabled? do
|
||||||
it 'reflects the config option' do
|
it 'reflects the config option' do
|
||||||
%i[external_user admin teacher].each do |factory_name|
|
%i[external_user admin teacher].each do |factory_name|
|
||||||
expect(policy).not_to permit(create(factory_name), codeharbor_link)
|
expect(policy).not_to permit(create(factory_name), codeharbor_link)
|
||||||
|
@ -7,19 +7,17 @@ describe ExecutionEnvironmentPolicy do
|
|||||||
|
|
||||||
let(:execution_environment) { build(:ruby) }
|
let(:execution_environment) { build(:ruby) }
|
||||||
|
|
||||||
[:index?].each do |action|
|
permissions :index? do
|
||||||
permissions(action) do
|
it 'grants access to admins' do
|
||||||
it 'grants access to admins' do
|
expect(policy).to permit(build(:admin), execution_environment)
|
||||||
expect(policy).to permit(build(:admin), execution_environment)
|
end
|
||||||
end
|
|
||||||
|
|
||||||
it 'grants access to teachers' do
|
it 'grants access to teachers' do
|
||||||
expect(policy).to permit(build(:teacher), execution_environment)
|
expect(policy).to permit(build(:teacher), execution_environment)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not grant access to external users' do
|
it 'does not grant access to external users' do
|
||||||
expect(policy).not_to permit(build(:external_user), execution_environment)
|
expect(policy).not_to permit(build(:external_user), execution_environment)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -59,7 +57,7 @@ describe ExecutionEnvironmentPolicy do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
permissions(:sync_all_to_runner_management?) do
|
permissions :sync_all_to_runner_management? do
|
||||||
it 'grants access to the admin' do
|
it 'grants access to the admin' do
|
||||||
expect(policy).to permit(build(:admin))
|
expect(policy).to permit(build(:admin))
|
||||||
end
|
end
|
||||||
|
@ -104,41 +104,35 @@ describe ExercisePolicy do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
[:show?].each do |action|
|
permissions :show? do
|
||||||
permissions(action) do
|
it 'not grants access to external users' do
|
||||||
it 'not grants access to external users' do
|
expect(policy).not_to permit(build(:external_user), exercise)
|
||||||
expect(policy).not_to permit(build(:external_user), exercise)
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
permissions :implement? do
|
||||||
|
it 'grants access to anyone' do
|
||||||
|
%i[admin external_user teacher].each do |factory_name|
|
||||||
|
expect(policy).to permit(build(factory_name), Exercise.new)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%i[implement?].each do |action|
|
permissions :submit? do
|
||||||
permissions(action) do
|
context 'when teacher-defined assessments are available' do
|
||||||
|
before { create(:test_file, context: exercise) }
|
||||||
|
|
||||||
it 'grants access to anyone' do
|
it 'grants access to anyone' do
|
||||||
%i[admin external_user teacher].each do |factory_name|
|
%i[admin external_user teacher].each do |factory_name|
|
||||||
expect(policy).to permit(build(factory_name), Exercise.new)
|
expect(policy).to permit(build(factory_name), exercise)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
%i[submit?].each do |action|
|
context 'when teacher-defined assessments are not available' do
|
||||||
permissions(action) do
|
it 'does not grant access to anyone' do
|
||||||
context 'when teacher-defined assessments are available' do
|
%i[admin external_user teacher].each do |factory_name|
|
||||||
before { create(:test_file, context: exercise) }
|
expect(policy).not_to permit(build(factory_name), exercise)
|
||||||
|
|
||||||
it 'grants access to anyone' do
|
|
||||||
%i[admin external_user teacher].each do |factory_name|
|
|
||||||
expect(policy).to permit(build(factory_name), exercise)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when teacher-defined assessments are not available' do
|
|
||||||
it 'does not grant access to anyone' do
|
|
||||||
%i[admin external_user teacher].each do |factory_name|
|
|
||||||
expect(policy).not_to permit(build(factory_name), exercise)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -16,14 +16,12 @@ describe ExternalUserPolicy do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
[:index?].each do |action|
|
permissions :index? do
|
||||||
permissions(action) do
|
it 'grants access to admins and teachers only' do
|
||||||
it 'grants access to admins and teachers only' do
|
expect(policy).to permit(build(:admin), ExternalUser.new)
|
||||||
expect(policy).to permit(build(:admin), ExternalUser.new)
|
expect(policy).to permit(build(:teacher), ExternalUser.new)
|
||||||
expect(policy).to permit(build(:teacher), ExternalUser.new)
|
[:external_user].each do |factory_name|
|
||||||
[:external_user].each do |factory_name|
|
expect(policy).not_to permit(build(factory_name), ExternalUser.new)
|
||||||
expect(policy).not_to permit(build(factory_name), ExternalUser.new)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user