Skip to content
Snippets Groups Projects
Commit 536ce960 authored by Steve Abrams's avatar Steve Abrams
Browse files

ProcessGemService specs

parent b3157d60
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -27,9 +27,17 @@ def process_gem
return false unless package_file
 
rename_package_and_set_version
::Packages::Rubygems::MetadataExtractionService.new(@package, gemspec).execute
::Packages::Rubygems::CreateGemspecService.new(@package, gemspec).execute
::Packages::Rubygems::CreateDependenciesService.new(@package, gemspec).execute
service_responses = []
service_responses << ::Packages::Rubygems::MetadataExtractionService.new(@package, gemspec).execute
service_responses << ::Packages::Rubygems::CreateGemspecService.new(@package, gemspec).execute
service_responses << ::Packages::Rubygems::CreateDependenciesService.new(@package, gemspec).execute
service_responses.each do |result|
next if result.success?
raise ExtractionError.new(result.message)
end
end
 
def rename_package_and_set_version
Loading
Loading
Loading
Loading
@@ -109,7 +109,6 @@ class RubygemPackages < ::API::Base
::Packages::Rubygems::ExtractionWorker.perform_async(package_file.id) # rubocop:disable CodeReuse/Worker
end
 
created!
rescue ObjectStorage::RemoteStoreError => e
Gitlab::ErrorTracking.track_exception(e, extra: { file_name: params[:file_name], project_id: user_project.id })
Loading
Loading
Loading
Loading
@@ -5,10 +5,9 @@
RSpec.describe Packages::Rubygems::ProcessGemService do
include RubygemsHelpers
 
let_it_be(:package) { create(:rubygems_package, name: 'temp_name', version: '0.0.0') }
let_it_be(:package_file) { create(:package_file, :gem) }
let(:file) { package_file.file }
let(:gem) { gem_from_file(file) }
let_it_be_with_reload(:package) { create(:rubygems_package, name: 'temp_name', version: '0.0.0') }
let(:package_file) { create(:package_file, :gem) }
let(:gem) { gem_from_file(package_file.file) }
let(:gemspec) { gem.spec }
let(:service) { described_class.new(package, package_file) }
 
Loading
Loading
@@ -16,13 +15,10 @@
subject { service.execute }
 
context 'no gem file' do
let(:file) { nil }
let(:package_file) { nil }
 
it 'returns an error' do
result = subject
expect(result.status).to eq(:error)
expect(result.message).to eq('Gem was not processed')
expect { subject }.to raise_error(::Packages::Rubygems::ProcessGemService::ExtractionError, 'Unable to read gem file')
end
end
 
Loading
Loading
@@ -31,9 +27,9 @@
let(:success_response) { ServiceResponse.success }
 
before do
expect(::Packages::Rubygems::MetadataExtractionService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(::Packages::Rubygems::CreateGemspecService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(::Packages::Rubygems::CreateDependenciesService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::MetadataExtractionService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::CreateGemspecService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::CreateDependenciesService).to receive(:new).with(package, gemspec).and_return(sub_service)
 
expect(sub_service).to receive(:execute).exactly(3).times.and_return(success_response)
end
Loading
Loading
@@ -42,7 +38,7 @@
result = subject
 
expect(result.success?).to be true
expect(result.payload).to eq(package)
expect(result.payload[:package]).to eq(package)
end
 
it 'updates the package name and version', :aggregate_failures do
Loading
Loading
@@ -61,18 +57,15 @@
let(:failure_response) { ServiceResponse.error(message: 'failure') }
 
before do
expect(::Packages::Rubygems::MetadataExtractionService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(::Packages::Rubygems::CreateGemspecService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(::Packages::Rubygems::CreateDependenciesService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::MetadataExtractionService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::CreateGemspecService).to receive(:new).with(package, gemspec).and_return(sub_service)
expect(Packages::Rubygems::CreateDependenciesService).to receive(:new).with(package, gemspec).and_return(sub_service)
 
expect(sub_service).to receive(:execute).exactly(3).times.and_return(failure_response)
end
 
it 'returns an error' do
result = subject
expect(result.error?).to be true
expect(result.errors).to contain_exactly('Gem was not processed')
expect { subject }.to raise_error(::Packages::Rubygems::ProcessGemService::ExtractionError, 'failure')
end
end
end
Loading
Loading
Loading
Loading
@@ -8,7 +8,7 @@
let(:package_file) { package.package_files.first }
let(:package_file_id) { package_file.id }
 
let_it_be(:package_name) { 'DummyProject.DummyPackage' }
let_it_be(:package_name) { 'TempProject.TempPackage' }
let_it_be(:package_version) { '1.0.0' }
 
subject { described_class.new.perform(package_file_id) }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment