Skip to content
Snippets Groups Projects
Unverified Commit 79879145 authored by James Lopez's avatar James Lopez
Browse files

add more specs

parent 4a0d56da
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -17,7 +17,6 @@ module API
end
 
resource :projects, requirements: { id: %r{[^/]+} } do
params do
requires :path, type: String, desc: 'The new project path and name'
optional :namespace, type: String, desc: 'The ID or name of the namespace that the project will be imported into. Defaults to the user namespace.'
Loading
Loading
@@ -30,11 +29,10 @@ module API
render_api_error!('The file is invalid', 400) unless file_is_valid?
 
namespace = import_params[:namespace]
namespace = if namespace && namespace =~ /^\d+$/
Namespace.find_by(id: namespace)
elsif namespace.blank?
namespace = if namespace.blank?
current_user.namespace
elsif namespace =~ /^\d+$/
Namespace.find_by(id: namespace)
else
Namespace.find_by_path_or_name(namespace)
end
Loading
Loading
@@ -43,7 +41,7 @@ module API
file: import_params[:file]['tempfile'])
project = ::Projects::GitlabProjectsImportService.new(current_user, project_params).execute
 
render_api_error!(project&.full_messages&.first, 400) unless project&.saved?
render_api_error!(project.errors.full_messages&.first, 400) unless project.saved?
 
present project, with: Entities::ProjectImportStatus
end
Loading
Loading
Loading
Loading
@@ -16,13 +16,44 @@ describe API::ProjectImport do
end
 
describe 'POST /projects/import' do
it 'schedules an import' do
it 'schedules an import using a namespace' do
expect_any_instance_of(Project).to receive(:import_schedule)
expect(Gitlab::ImportExport::ProjectCreator).to receive(:new).with(namespace.id, any_args).and_call_original
 
post api('/projects/import', user), path: 'test-import', file: fixture_file_upload(file), namespace: namespace.full_path
 
expect(response).to have_gitlab_http_status(201)
end
it 'schedules an import at the user namespace level' do
expect_any_instance_of(Project).to receive(:import_schedule)
expect(Gitlab::ImportExport::ProjectCreator).to receive(:new).with(user.namespace.id, any_args).and_call_original
post api('/projects/import', user), path: 'test-import2', file: fixture_file_upload(file)
expect(response).to have_gitlab_http_status(201)
end
it 'does not schedule an import if the user has no permission to the namespace' do
expect_any_instance_of(Project).not_to receive(:import_schedule)
post(api('/projects/import', create(:user)),
path: 'test-import3',
file: fixture_file_upload(file),
namespace: namespace.full_path)
expect(response).to have_gitlab_http_status(400)
expect(json_response['message']).to eq('Namespace is not valid')
end
it 'does not schedule an import if the user uploads no valid file' do
expect_any_instance_of(Project).not_to receive(:import_schedule)
post api('/projects/import', user), path: 'test-import3', file: './random/test'
expect(response).to have_gitlab_http_status(400)
expect(json_response['error']).to eq('file is invalid')
end
end
 
describe 'GET /projects/:id/import' do
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