diff options
Diffstat (limited to 'spec/services/releases')
-rw-r--r-- | spec/services/releases/create_evidence_service_spec.rb | 1 | ||||
-rw-r--r-- | spec/services/releases/create_service_spec.rb | 15 | ||||
-rw-r--r-- | spec/services/releases/destroy_service_spec.rb | 15 | ||||
-rw-r--r-- | spec/services/releases/update_service_spec.rb | 15 |
4 files changed, 46 insertions, 0 deletions
diff --git a/spec/services/releases/create_evidence_service_spec.rb b/spec/services/releases/create_evidence_service_spec.rb index 818d20f0468..0ac15a7291d 100644 --- a/spec/services/releases/create_evidence_service_spec.rb +++ b/spec/services/releases/create_evidence_service_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe Releases::CreateEvidenceService do let_it_be(:project) { create(:project) } + let(:release) { create(:release, project: project) } let(:service) { described_class.new(release) } diff --git a/spec/services/releases/create_service_spec.rb b/spec/services/releases/create_service_spec.rb index 7287825a0be..bf28fde3d90 100644 --- a/spec/services/releases/create_service_spec.rb +++ b/spec/services/releases/create_service_spec.rb @@ -44,6 +44,21 @@ RSpec.describe Releases::CreateService do it_behaves_like 'a successful release creation' + context 'when tag is protected and user does not have access to it' do + let!(:protected_tag) { create(:protected_tag, :no_one_can_create, name: '*', project: project) } + + it 'track the error event' do + stub_feature_flags(evalute_protected_tag_for_release_permissions: false) + + expect(Gitlab::ErrorTracking).to receive(:log_exception).with( + kind_of(described_class::ReleaseProtectedTagAccessError), + project_id: project.id, + user_id: user.id) + + service.execute + end + end + context 'when the tag does not exist' do let(:tag_name) { 'non-exist-tag' } diff --git a/spec/services/releases/destroy_service_spec.rb b/spec/services/releases/destroy_service_spec.rb index bc5bff0b31d..38cdcef3825 100644 --- a/spec/services/releases/destroy_service_spec.rb +++ b/spec/services/releases/destroy_service_spec.rb @@ -28,6 +28,21 @@ RSpec.describe Releases::DestroyService do it 'returns the destroyed object' do is_expected.to include(status: :success, release: release) end + + context 'when tag is protected and user does not have access to it' do + let!(:protected_tag) { create(:protected_tag, :no_one_can_create, name: '*', project: project) } + + it 'track the error event' do + stub_feature_flags(evalute_protected_tag_for_release_permissions: false) + + expect(Gitlab::ErrorTracking).to receive(:log_exception).with( + kind_of(described_class::ReleaseProtectedTagAccessError), + project_id: project.id, + user_id: user.id) + + service.execute + end + end end context 'when tag does not exist in the repository' do diff --git a/spec/services/releases/update_service_spec.rb b/spec/services/releases/update_service_spec.rb index 932a7fab5ec..96b562a8071 100644 --- a/spec/services/releases/update_service_spec.rb +++ b/spec/services/releases/update_service_spec.rb @@ -38,6 +38,21 @@ RSpec.describe Releases::UpdateService do service.execute end + context 'when tag is protected and user does not have access to it' do + let!(:protected_tag) { create(:protected_tag, :no_one_can_create, name: '*', project: project) } + + it 'track the error event' do + stub_feature_flags(evalute_protected_tag_for_release_permissions: false) + + expect(Gitlab::ErrorTracking).to receive(:log_exception).with( + kind_of(described_class::ReleaseProtectedTagAccessError), + project_id: project.id, + user_id: user.id) + + service.execute + end + end + context 'when the tag does not exists' do let(:tag_name) { 'foobar' } |