diff options
Diffstat (limited to 'spec/controllers/import')
4 files changed, 34 insertions, 141 deletions
diff --git a/spec/controllers/import/bitbucket_controller_spec.rb b/spec/controllers/import/bitbucket_controller_spec.rb index ec38a635c2d..0427715d1ac 100644 --- a/spec/controllers/import/bitbucket_controller_spec.rb +++ b/spec/controllers/import/bitbucket_controller_spec.rb @@ -58,12 +58,12 @@ RSpec.describe Import::BitbucketController do before do @repo = double(name: 'vim', slug: 'vim', owner: 'asd', full_name: 'asd/vim', clone_url: 'http://test.host/demo/url.git', 'valid?' => true) @invalid_repo = double(name: 'mercurialrepo', slug: 'mercurialrepo', owner: 'asd', full_name: 'asd/mercurialrepo', clone_url: 'http://test.host/demo/mercurialrepo.git', 'valid?' => false) + allow(controller).to receive(:provider_url).and_return('http://demobitbucket.org') assign_session_tokens - stub_feature_flags(new_import_ui: false) end - it_behaves_like 'import controller with new_import_ui feature flag' do + it_behaves_like 'import controller status' do before do allow(controller).to receive(:provider_url).and_return('http://demobitbucket.org') end @@ -75,44 +75,16 @@ RSpec.describe Import::BitbucketController do let(:client_repos_field) { :repos } end - context 'with new_import_ui feature flag enabled' do - before do - stub_feature_flags(new_import_ui: true) - allow(controller).to receive(:provider_url).and_return('http://demobitbucket.org') - end - - it 'returns invalid repos' do - allow_any_instance_of(Bitbucket::Client).to receive(:repos).and_return([@repo, @invalid_repo]) - - get :status, format: :json - - expect(response).to have_gitlab_http_status(:ok) - expect(json_response['incompatible_repos'].length).to eq(1) - expect(json_response.dig("incompatible_repos", 0, "id")).to eq(@invalid_repo.full_name) - expect(json_response['provider_repos'].length).to eq(1) - expect(json_response.dig("provider_repos", 0, "id")).to eq(@repo.full_name) - end - end - - it "assigns variables" do - @project = create(:project, import_type: 'bitbucket', creator_id: user.id) - allow_any_instance_of(Bitbucket::Client).to receive(:repos).and_return([@repo]) + it 'returns invalid repos' do + allow_any_instance_of(Bitbucket::Client).to receive(:repos).and_return([@repo, @invalid_repo]) - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - expect(assigns(:incompatible_repos)).to eq([]) - end + get :status, format: :json - it "does not show already added project" do - @project = create(:project, import_type: 'bitbucket', creator_id: user.id, import_source: 'asd/vim') - allow_any_instance_of(Bitbucket::Client).to receive(:repos).and_return([@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['incompatible_repos'].length).to eq(1) + expect(json_response.dig("incompatible_repos", 0, "id")).to eq(@invalid_repo.full_name) + expect(json_response['provider_repos'].length).to eq(1) + expect(json_response.dig("provider_repos", 0, "id")).to eq(@repo.full_name) end context 'when filtering' do diff --git a/spec/controllers/import/bitbucket_server_controller_spec.rb b/spec/controllers/import/bitbucket_server_controller_spec.rb index af471b478fa..bb80de6425f 100644 --- a/spec/controllers/import/bitbucket_server_controller_spec.rb +++ b/spec/controllers/import/bitbucket_server_controller_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Import::BitbucketServerController do let(:user) { create(:user) } let(:project_key) { 'test-project' } let(:repo_slug) { 'some-repo' } + let(:repo_id) { "#{project_key}/#{repo_slug}" } let(:client) { instance_double(BitbucketServer::Client) } def assign_session_tokens @@ -46,7 +47,7 @@ RSpec.describe Import::BitbucketServerController do .to receive(:new).with(project_key, repo_slug, anything, project_name, user.namespace, user, anything) .and_return(double(execute: project)) - post :create, params: { project: project_key, repository: repo_slug }, format: :json + post :create, params: { repo_id: repo_id }, format: :json expect(response).to have_gitlab_http_status(:ok) end @@ -59,20 +60,20 @@ RSpec.describe Import::BitbucketServerController do .to receive(:new).with(project_key, repo_slug, anything, project_name, user.namespace, user, anything) .and_return(double(execute: project)) - post :create, params: { project: project_key, repository: repo_slug, format: :json } + post :create, params: { repo_id: repo_id }, format: :json expect(response).to have_gitlab_http_status(:ok) end end it 'returns an error when an invalid project key is used' do - post :create, params: { project: 'some&project' } + post :create, params: { repo_id: 'some&project/repo' } expect(response).to have_gitlab_http_status(:unprocessable_entity) end it 'returns an error when an invalid repository slug is used' do - post :create, params: { project: 'some-project', repository: 'try*this' } + post :create, params: { repo_id: 'some-project/try*this' } expect(response).to have_gitlab_http_status(:unprocessable_entity) end @@ -80,7 +81,7 @@ RSpec.describe Import::BitbucketServerController do it 'returns an error when the project cannot be found' do allow(client).to receive(:repo).with(project_key, repo_slug).and_return(nil) - post :create, params: { project: project_key, repository: repo_slug }, format: :json + post :create, params: { repo_id: repo_id }, format: :json expect(response).to have_gitlab_http_status(:unprocessable_entity) end @@ -90,15 +91,15 @@ RSpec.describe Import::BitbucketServerController do .to receive(:new).with(project_key, repo_slug, anything, project_name, user.namespace, user, anything) .and_return(double(execute: build(:project))) - post :create, params: { project: project_key, repository: repo_slug }, format: :json + post :create, params: { repo_id: repo_id }, format: :json expect(response).to have_gitlab_http_status(:unprocessable_entity) end it "returns an error when the server can't be contacted" do - expect(client).to receive(:repo).with(project_key, repo_slug).and_raise(::BitbucketServer::Connection::ConnectionError) + allow(client).to receive(:repo).with(project_key, repo_slug).and_raise(::BitbucketServer::Connection::ConnectionError) - post :create, params: { project: project_key, repository: repo_slug }, format: :json + post :create, params: { repo_id: repo_id }, format: :json expect(response).to have_gitlab_http_status(:unprocessable_entity) end @@ -123,7 +124,9 @@ RSpec.describe Import::BitbucketServerController do end it 'sets the session variables' do - post :configure, params: { personal_access_token: token, bitbucket_username: username, bitbucket_server_url: url } + allow(controller).to receive(:allow_local_requests?).and_return(true) + + post :configure, params: { personal_access_token: token, bitbucket_server_username: username, bitbucket_server_url: url } expect(session[:bitbucket_server_url]).to eq(url) expect(session[:bitbucket_server_username]).to eq(username) @@ -145,28 +148,21 @@ RSpec.describe Import::BitbucketServerController do @invalid_repo = double(slug: 'invalid', project_key: 'foobar', full_name: 'asd/foobar', "valid?" => false, browse_url: 'http://bad-repo', name: 'invalid') @created_repo = double(slug: 'created', project_key: 'existing', full_name: 'group/created', "valid?" => true, browse_url: 'http://existing') assign_session_tokens - stub_feature_flags(new_import_ui: false) end - context 'with new_import_ui feature flag enabled' do - before do - stub_feature_flags(new_import_ui: true) - end - - it 'returns invalid repos' do - allow(client).to receive(:repos).with(filter: nil, limit: 25, page_offset: 0).and_return([@repo, @invalid_repo]) + it 'returns invalid repos' do + allow(client).to receive(:repos).with(filter: nil, limit: 25, page_offset: 0).and_return([@repo, @invalid_repo]) - get :status, format: :json + get :status, format: :json - expect(response).to have_gitlab_http_status(:ok) - expect(json_response['incompatible_repos'].length).to eq(1) - expect(json_response.dig("incompatible_repos", 0, "id")).to eq(@invalid_repo.full_name) - expect(json_response['provider_repos'].length).to eq(1) - expect(json_response.dig("provider_repos", 0, "id")).to eq(@repo.full_name) - end + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['incompatible_repos'].length).to eq(1) + expect(json_response.dig("incompatible_repos", 0, "id")).to eq(@invalid_repo.full_name) + expect(json_response['provider_repos'].length).to eq(1) + expect(json_response.dig("provider_repos", 0, "id")).to eq(@repo.full_name) end - it_behaves_like 'import controller with new_import_ui feature flag' do + it_behaves_like 'import controller status' do let(:repo) { @repo } let(:repo_id) { @repo.full_name } let(:import_source) { @repo.browse_url } @@ -174,47 +170,14 @@ RSpec.describe Import::BitbucketServerController do let(:client_repos_field) { :repos } end - it 'assigns repository categories' do - created_project = create(:project, :import_finished, import_type: 'bitbucket_server', creator_id: user.id, import_source: @created_repo.browse_url) - - expect(repos).to receive(:partition).and_return([[@repo, @created_repo], [@invalid_repo]]) - expect(repos).to receive(:current_page).and_return(1) - expect(repos).to receive(:next_page).and_return(2) - expect(repos).to receive(:prev_page).and_return(nil) - expect(client).to receive(:repos).and_return(repos) - - get :status - - expect(assigns(:already_added_projects)).to eq([created_project]) - expect(assigns(:repos)).to eq([@repo]) - expect(assigns(:incompatible_repos)).to eq([@invalid_repo]) - end - context 'when filtering' do let(:filter) { 'test' } it 'passes filter param to bitbucket client' do - expect(repos).to receive(:partition).and_return([[@repo, @created_repo], [@invalid_repo]]) - expect(client).to receive(:repos).with(filter: filter, limit: 25, page_offset: 0).and_return(repos) + expect(client).to receive(:repos).with(filter: filter, limit: 25, page_offset: 0).and_return([@repo]) get :status, params: { filter: filter }, as: :json end end end - - describe 'GET jobs' do - before do - assign_session_tokens - end - - it 'returns a list of imported projects' do - created_project = create(:project, import_type: 'bitbucket_server', creator_id: user.id) - - get :jobs - - expect(json_response.count).to eq(1) - expect(json_response.first['id']).to eq(created_project.id) - expect(json_response.first['import_status']).to eq('none') - end - end end diff --git a/spec/controllers/import/fogbugz_controller_spec.rb b/spec/controllers/import/fogbugz_controller_spec.rb index aabbcb30358..376c089df78 100644 --- a/spec/controllers/import/fogbugz_controller_spec.rb +++ b/spec/controllers/import/fogbugz_controller_spec.rb @@ -82,36 +82,15 @@ RSpec.describe Import::FogbugzController do before do @repo = OpenStruct.new(id: 'demo', name: 'vim') stub_client(valid?: true) - stub_feature_flags(new_import_ui: false) end - it_behaves_like 'import controller with new_import_ui feature flag' do + it_behaves_like 'import controller status' do let(:repo) { @repo } let(:repo_id) { @repo.id } let(:import_source) { @repo.name } let(:provider_name) { 'fogbugz' } let(:client_repos_field) { :repos } end - - it 'assigns variables' do - @project = create(:project, import_type: 'fogbugz', creator_id: user.id) - stub_client(repos: [@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it 'does not show already added project' do - @project = create(:project, import_type: 'fogbugz', creator_id: user.id, import_source: 'vim') - stub_client(repos: [@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end end describe 'POST create' do diff --git a/spec/controllers/import/gitlab_controller_spec.rb b/spec/controllers/import/gitlab_controller_spec.rb index 1cd0593f762..42c4348dac2 100644 --- a/spec/controllers/import/gitlab_controller_spec.rb +++ b/spec/controllers/import/gitlab_controller_spec.rb @@ -36,36 +36,15 @@ RSpec.describe Import::GitlabController do before do @repo = OpenStruct.new(id: 1, path: 'vim', path_with_namespace: 'asd/vim', web_url: 'https://gitlab.com/asd/vim') assign_session_token - stub_feature_flags(new_import_ui: false) end - it_behaves_like 'import controller with new_import_ui feature flag' do + it_behaves_like 'import controller status' do let(:repo) { @repo } let(:repo_id) { @repo.id } let(:import_source) { @repo.path_with_namespace } let(:provider_name) { 'gitlab' } let(:client_repos_field) { :projects } end - - it "assigns variables" do - @project = create(:project, import_type: 'gitlab', creator_id: user.id) - stub_client(projects: [@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([@repo]) - end - - it "does not show already added project" do - @project = create(:project, import_type: 'gitlab', creator_id: user.id, import_source: 'asd/vim') - stub_client(projects: [@repo]) - - get :status - - expect(assigns(:already_added_projects)).to eq([@project]) - expect(assigns(:repos)).to eq([]) - end end describe "POST create" do |