diff options
Diffstat (limited to 'spec/policies/ci/build_policy_spec.rb')
-rw-r--r-- | spec/policies/ci/build_policy_spec.rb | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/spec/policies/ci/build_policy_spec.rb b/spec/policies/ci/build_policy_spec.rb index d2547338855..098efd7daa6 100644 --- a/spec/policies/ci/build_policy_spec.rb +++ b/spec/policies/ci/build_policy_spec.rb @@ -146,7 +146,7 @@ RSpec.describe Ci::BuildPolicy do create(:protected_tag, :no_one_can_create, name: build.ref, project: project) - build.update(tag: true) + build.update!(tag: true) end it 'does not include ability to update build' do @@ -247,6 +247,36 @@ RSpec.describe Ci::BuildPolicy do it { expect(policy).to be_disallowed :erase_build } end end + + context 'when an admin erases a build', :enable_admin_mode do + let(:owner) { create(:user) } + + before do + user.update!(admin: true) + end + + context 'when the build was created for a protected branch' do + before do + create(:protected_branch, :developers_can_push, + name: build.ref, project: project) + end + + it { expect(policy).to be_allowed :erase_build } + end + + context 'when the build was created for a protected tag' do + before do + create(:protected_tag, :developers_can_create, + name: build.ref, project: project) + end + + it { expect(policy).to be_allowed :erase_build } + end + + context 'when the build was created for an unprotected ref' do + it { expect(policy).to be_allowed :erase_build } + end + end end end |