Apply manual rubocop fixes

This commit is contained in:
Sebastian Serth
2021-05-14 11:07:11 +02:00
parent 6cbecb5b39
commit da0a682ffb
109 changed files with 431 additions and 416 deletions

View File

@ -3,19 +3,19 @@
require 'rails_helper'
describe Admin::DashboardPolicy do
subject { described_class }
subject(:policy) { described_class }
permissions :show? do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), :dashboard)
expect(policy).to permit(FactoryBot.build(:admin), :dashboard)
end
it 'does not grant access to teachers' do
expect(subject).not_to permit(FactoryBot.build(:teacher), :dashboard)
expect(policy).not_to permit(FactoryBot.build(:teacher), :dashboard)
end
it 'does not grant access to external users' do
expect(subject).not_to permit(FactoryBot.build(:external_user), :dashboard)
expect(policy).not_to permit(FactoryBot.build(:external_user), :dashboard)
end
end
end

View File

@ -3,86 +3,86 @@
require 'rails_helper'
describe CodeOcean::FilePolicy do
subject { described_class }
subject(:policy) { described_class }
let(:exercise) { FactoryBot.create(:fibonacci) }
let(:submission) { FactoryBot.create(:submission) }
permissions :create? do
context 'as part of an exercise' do
context 'when being part of an exercise' do
let(:file) { exercise.files.first }
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), file)
expect(policy).to permit(FactoryBot.build(:admin), file)
end
it 'grants access to authors' do
expect(subject).to permit(exercise.author, file)
expect(policy).to permit(exercise.author, file)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), file)
expect(policy).not_to permit(FactoryBot.build(factory_name), file)
end
end
end
context 'as part of a submission' do
context 'when being part of a submission' do
let(:file) { submission.files.first }
context 'where file creation is allowed' do
context 'when file creation is allowed' do
before do
submission.exercise.update(allow_file_creation: true)
end
it 'grants access to authors' do
expect(subject).to permit(submission.author, file)
expect(policy).to permit(submission.author, file)
end
end
context 'where file creation is not allowed' do
context 'when file creation is not allowed' do
before do
submission.exercise.update(allow_file_creation: false)
end
it 'grants access to authors' do
expect(subject).not_to permit(submission.author, file)
expect(policy).not_to permit(submission.author, file)
end
end
it 'does not grant access to all other users' do
%i[admin external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), file)
expect(policy).not_to permit(FactoryBot.build(factory_name), file)
end
end
end
end
permissions :destroy? do
context 'as part of an exercise' do
context 'when being part of an exercise' do
let(:file) { exercise.files.first }
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), file)
expect(policy).to permit(FactoryBot.build(:admin), file)
end
it 'grants access to authors' do
expect(subject).to permit(exercise.author, file)
expect(policy).to permit(exercise.author, file)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), file)
expect(policy).not_to permit(FactoryBot.build(factory_name), file)
end
end
end
context 'as part of a submission' do
context 'when being part of a submission' do
let(:file) { submission.files.first }
it 'does not grant access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), file)
expect(policy).not_to permit(FactoryBot.build(factory_name), file)
end
end
end

View File

@ -3,14 +3,14 @@
require 'rails_helper'
describe ConsumerPolicy do
subject { described_class }
subject(:policy) { described_class }
%i[create? destroy? edit? index? new? show? update?].each do |action|
permissions(action) do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), Consumer.new)
expect(policy).to permit(FactoryBot.build(:admin), Consumer.new)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), Consumer.new)
expect(policy).not_to permit(FactoryBot.build(factory_name), Consumer.new)
end
end
end

View File

@ -3,22 +3,22 @@
require 'rails_helper'
describe ExecutionEnvironmentPolicy do
subject { described_class }
subject(:policy) { described_class }
let(:execution_environment) { FactoryBot.build(:ruby) }
[:index?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), execution_environment)
expect(policy).to permit(FactoryBot.build(:admin), execution_environment)
end
it 'grants access to teachers' do
expect(subject).to permit(FactoryBot.build(:teacher), execution_environment)
expect(policy).to permit(FactoryBot.build(:teacher), execution_environment)
end
it 'does not grant access to external users' do
expect(subject).not_to permit(FactoryBot.build(:external_user), execution_environment)
expect(policy).not_to permit(FactoryBot.build(:external_user), execution_environment)
end
end
end
@ -26,16 +26,16 @@ describe ExecutionEnvironmentPolicy do
%i[execute_command? shell? statistics? show?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), execution_environment)
expect(policy).to permit(FactoryBot.build(:admin), execution_environment)
end
it 'grants access to authors' do
expect(subject).to permit(execution_environment.author, execution_environment)
expect(policy).to permit(execution_environment.author, execution_environment)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), execution_environment)
expect(policy).not_to permit(FactoryBot.build(factory_name), execution_environment)
end
end
end
@ -44,16 +44,16 @@ describe ExecutionEnvironmentPolicy do
%i[destroy? edit? update? new? create?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), execution_environment)
expect(policy).to permit(FactoryBot.build(:admin), execution_environment)
end
it 'does not grant access to authors' do
expect(subject).not_to permit(execution_environment.author, execution_environment)
expect(policy).not_to permit(execution_environment.author, execution_environment)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), execution_environment)
expect(policy).not_to permit(FactoryBot.build(factory_name), execution_environment)
end
end
end

View File

@ -3,31 +3,31 @@
require 'rails_helper'
describe ExercisePolicy do
subject { described_class }
subject(:policy) { described_class }
let(:exercise) { FactoryBot.build(:dummy, public: true) }
permissions :batch_update? do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), exercise)
expect(policy).to permit(FactoryBot.build(:admin), exercise)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), exercise)
expect(policy).not_to permit(FactoryBot.build(factory_name), exercise)
end
end
end
%i[create? index? new? statistics? feedback? get_rfcs_for_exercise?].each do |action|
%i[create? index? new? statistics? feedback? rfcs_for_exercise?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), exercise)
expect(policy).to permit(FactoryBot.build(:admin), exercise)
end
it 'grants access to teachers' do
expect(subject).to permit(FactoryBot.build(:teacher), exercise)
expect(policy).to permit(FactoryBot.build(:teacher), exercise)
end
it 'does not grant access to external users' do
expect(subject).not_to permit(FactoryBot.build(:external_user), exercise)
expect(policy).not_to permit(FactoryBot.build(:external_user), exercise)
end
end
end
@ -35,16 +35,16 @@ describe ExercisePolicy do
%i[clone? destroy? edit? update?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), exercise)
expect(policy).to permit(FactoryBot.build(:admin), exercise)
end
it 'grants access to authors' do
expect(subject).to permit(exercise.author, exercise)
expect(policy).to permit(exercise.author, exercise)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), exercise)
expect(policy).not_to permit(FactoryBot.build(factory_name), exercise)
end
end
end
@ -56,14 +56,14 @@ describe ExercisePolicy do
let(:user) { exercise.author }
it 'does not grant access' do
expect(subject).not_to permit(user, exercise)
expect(policy).not_to permit(user, exercise)
end
context 'when user has codeharbor_link' do
before { user.codeharbor_link = FactoryBot.build(:codeharbor_link) }
it 'grants access' do
expect(subject).to permit(user, exercise)
expect(policy).to permit(user, exercise)
end
end
end
@ -72,14 +72,14 @@ describe ExercisePolicy do
let(:user) { FactoryBot.build(:admin) }
it 'does not grant access' do
expect(subject).not_to permit(user, exercise)
expect(policy).not_to permit(user, exercise)
end
context 'when user has codeharbor_link' do
before { user.codeharbor_link = FactoryBot.build(:codeharbor_link) }
it 'grants access' do
expect(subject).to permit(user, exercise)
expect(policy).to permit(user, exercise)
end
end
end
@ -89,14 +89,14 @@ describe ExercisePolicy do
let(:user) { FactoryBot.build(factory_name) }
it 'does not grant access' do
expect(subject).not_to permit(user, exercise)
expect(policy).not_to permit(user, exercise)
end
context 'when user has codeharbor_link' do
before { user.codeharbor_link = FactoryBot.build(:codeharbor_link) }
it 'does not grant access' do
expect(subject).not_to permit(user, exercise)
expect(policy).not_to permit(user, exercise)
end
end
end
@ -107,7 +107,7 @@ describe ExercisePolicy do
[:show?].each do |action|
permissions(action) do
it 'not grants access to external users' do
expect(subject).not_to permit(FactoryBot.build(:external_user), exercise)
expect(policy).not_to permit(FactoryBot.build(:external_user), exercise)
end
end
end
@ -116,7 +116,7 @@ describe ExercisePolicy do
permissions(action) do
it 'grants access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(subject).to permit(FactoryBot.build(factory_name), Exercise.new)
expect(policy).to permit(FactoryBot.build(factory_name), Exercise.new)
end
end
end
@ -124,47 +124,47 @@ describe ExercisePolicy do
describe ExercisePolicy::Scope do
describe '#resolve' do
before(:all) do
@admin = FactoryBot.create(:admin)
@external_user = FactoryBot.create(:external_user)
@teacher = FactoryBot.create(:teacher)
let(:admin) { FactoryBot.create(:admin) }
let(:external_user) { FactoryBot.create(:external_user) }
let(:teacher) { FactoryBot.create(:teacher) }
[@admin, @teacher].each do |user|
before do
[admin, teacher].each do |user|
[true, false].each do |public|
FactoryBot.create(:dummy, public: public, user_id: user.id, user_type: InternalUser.name)
end
end
end
context 'for admins' do
let(:scope) { Pundit.policy_scope!(@admin, Exercise) }
context 'when being an admin' do
let(:scope) { Pundit.policy_scope!(admin, Exercise) }
it 'returns all exercises' do
expect(scope.map(&:id)).to include(*Exercise.all.map(&:id))
end
end
context 'for external users' do
let(:scope) { Pundit.policy_scope!(@external_user, Exercise) }
context 'when being an external users' do
let(:scope) { Pundit.policy_scope!(external_user, Exercise) }
it 'returns nothing' do
expect(scope.count).to be 0
end
end
context 'for teachers' do
let(:scope) { Pundit.policy_scope!(@teacher, Exercise) }
context 'when being a teacher' do
let(:scope) { Pundit.policy_scope!(teacher, Exercise) }
it 'includes all public exercises' do
expect(scope.map(&:id)).to include(*Exercise.where(public: true).map(&:id))
end
it 'includes all authored non-public exercises' do
expect(scope.map(&:id)).to include(*Exercise.where(public: false, user_id: @teacher.id).map(&:id))
expect(scope.map(&:id)).to include(*Exercise.where(public: false, user_id: teacher.id).map(&:id))
end
it "does not include other authors' non-public exercises" do
expect(scope.map(&:id)).not_to include(*Exercise.where(public: false).where("user_id <> #{@teacher.id}").map(&:id))
expect(scope.map(&:id)).not_to include(*Exercise.where(public: false).where("user_id <> #{teacher.id}").map(&:id))
end
end
end

View File

@ -3,14 +3,14 @@
require 'rails_helper'
describe ExternalUserPolicy do
subject { described_class }
subject(:policy) { described_class }
%i[create? destroy? edit? new? show? update?].each do |action|
permissions(action) do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), ExternalUser.new)
expect(policy).to permit(FactoryBot.build(:admin), ExternalUser.new)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), ExternalUser.new)
expect(policy).not_to permit(FactoryBot.build(factory_name), ExternalUser.new)
end
end
end
@ -19,10 +19,10 @@ describe ExternalUserPolicy do
[:index?].each do |action|
permissions(action) do
it 'grants access to admins and teachers only' do
expect(subject).to permit(FactoryBot.build(:admin), ExternalUser.new)
expect(subject).to permit(FactoryBot.build(:teacher), ExternalUser.new)
expect(policy).to permit(FactoryBot.build(:admin), ExternalUser.new)
expect(policy).to permit(FactoryBot.build(:teacher), ExternalUser.new)
[:external_user].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), ExternalUser.new)
expect(policy).not_to permit(FactoryBot.build(factory_name), ExternalUser.new)
end
end
end

View File

@ -3,23 +3,23 @@
require 'rails_helper'
describe FileTypePolicy do
subject { described_class }
subject(:policy) { described_class }
let(:file_type) { FactoryBot.build(:dot_rb) }
%i[destroy? edit? update? new? create? index? show?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), file_type)
expect(policy).to permit(FactoryBot.build(:admin), file_type)
end
it 'grants access to authors' do
expect(subject).to permit(file_type.author, file_type)
expect(policy).to permit(file_type.author, file_type)
end
it 'does not grant access to all other users' do
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), file_type)
expect(policy).not_to permit(FactoryBot.build(factory_name), file_type)
end
end
end

View File

@ -3,14 +3,14 @@
require 'rails_helper'
describe InternalUserPolicy do
subject { described_class }
subject(:policy) { described_class }
%i[create? edit? index? new? show? update?].each do |action|
permissions(action) do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), InternalUser.new)
expect(policy).to permit(FactoryBot.build(:admin), InternalUser.new)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), InternalUser.new)
expect(policy).not_to permit(FactoryBot.build(factory_name), InternalUser.new)
end
end
end
@ -20,16 +20,16 @@ describe InternalUserPolicy do
context 'with an admin user' do
it 'grants access to no one' do
%i[admin external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), FactoryBot.build(:admin))
expect(policy).not_to permit(FactoryBot.build(factory_name), FactoryBot.build(:admin))
end
end
end
context 'with a non-admin user' do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), InternalUser.new)
expect(policy).to permit(FactoryBot.build(:admin), InternalUser.new)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), FactoryBot.build(:teacher))
expect(policy).not_to permit(FactoryBot.build(factory_name), FactoryBot.build(:teacher))
end
end
end

View File

@ -3,12 +3,12 @@
require 'rails_helper'
describe SubmissionPolicy do
subject { described_class }
subject(:policy) { described_class }
permissions :create? do
it 'grants access to anyone' do
%i[admin external_user teacher].each do |factory_name|
expect(subject).to permit(FactoryBot.build(factory_name), Submission.new)
expect(policy).to permit(FactoryBot.build(factory_name), Submission.new)
end
end
end
@ -16,21 +16,21 @@ describe SubmissionPolicy do
%i[download_file? render_file? run? score? show? statistics? stop? test?].each do |action|
permissions(action) do
it 'grants access to admins' do
expect(subject).to permit(FactoryBot.build(:admin), Submission.new)
expect(policy).to permit(FactoryBot.build(:admin), Submission.new)
end
it 'grants access to authors' do
user = FactoryBot.create(:external_user)
expect(subject).to permit(user, FactoryBot.build(:submission, exercise: Exercise.new, user_id: user.id, user_type: user.class.name))
expect(policy).to permit(user, FactoryBot.build(:submission, exercise: Exercise.new, user_id: user.id, user_type: user.class.name))
end
end
end
permissions :index? do
it 'grants access to admins only' do
expect(subject).to permit(FactoryBot.build(:admin), Submission.new)
expect(policy).to permit(FactoryBot.build(:admin), Submission.new)
%i[external_user teacher].each do |factory_name|
expect(subject).not_to permit(FactoryBot.build(factory_name), Submission.new)
expect(policy).not_to permit(FactoryBot.build(factory_name), Submission.new)
end
end
end