diff options
Diffstat (limited to 'spec/controllers/projects_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects_controller_spec.rb | 199 |
1 files changed, 117 insertions, 82 deletions
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 576191a5788..ea067a01295 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -22,7 +22,7 @@ describe ProjectsController do it 'renders the template' do group.add_owner(user) - get :new, namespace_id: group.id + get :new, params: { namespace_id: group.id } expect(response).to have_gitlab_http_status(200) expect(response).to render_template('new') @@ -31,7 +31,7 @@ describe ProjectsController do context 'when user does not have access to the namespace' do it 'responds with status 404' do - get :new, namespace_id: group.id + get :new, params: { namespace_id: group.id } expect(response).to have_gitlab_http_status(404) expect(response).not_to render_template('new') @@ -71,7 +71,7 @@ describe ProjectsController do let(:private_project) { create(:project, :private) } it "does not initialize notification setting" do - get :show, namespace_id: private_project.namespace, id: private_project + get :show, params: { namespace_id: private_project.namespace, id: private_project } expect(assigns(:notification_setting)).to be_nil end end @@ -79,7 +79,7 @@ describe ProjectsController do context "user has access to project" do context "and does not have notification setting" do it "initializes notification as disabled" do - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(assigns(:notification_setting).level).to eq("global") end end @@ -92,7 +92,7 @@ describe ProjectsController do end it "shows current notification setting" do - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(assigns(:notification_setting).level).to eq("watch") end end @@ -107,7 +107,7 @@ describe ProjectsController do end it 'shows wiki homepage' do - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response).to render_template('projects/_wiki') end @@ -116,7 +116,7 @@ describe ProjectsController do project.project_feature.update_attribute(:wiki_access_level, ProjectFeature::DISABLED) create(:issue, project: project) - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response).to render_template('projects/issues/_issues') expect(assigns(:issuable_meta_data)).not_to be_nil @@ -126,7 +126,7 @@ describe ProjectsController do project.project_feature.update_attribute(:wiki_access_level, ProjectFeature::DISABLED) project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED) - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response).to render_template("projects/_customize_workflow") end @@ -134,7 +134,7 @@ describe ProjectsController do it 'shows activity if enabled by user' do user.update_attribute(:project_view, 'activity') - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response).to render_template("projects/_activity") end @@ -150,7 +150,7 @@ describe ProjectsController do end it 'renders a 503' do - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(503) end @@ -168,7 +168,7 @@ describe ProjectsController do before do user.update(project_view: project_view) - get :show, namespace_id: empty_project.namespace, id: empty_project + get :show, params: { namespace_id: empty_project.namespace, id: empty_project } end it "renders the empty project view" do @@ -190,7 +190,7 @@ describe ProjectsController do before do user.update(project_view: project_view) - get :show, namespace_id: empty_project.namespace, id: empty_project + get :show, params: { namespace_id: empty_project.namespace, id: empty_project } end it "renders the empty project view" do @@ -211,7 +211,7 @@ describe ProjectsController do allow(controller).to receive(:current_user).and_return(user) allow(user).to receive(:project_view).and_return('activity') - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(response).to render_template('_activity') end @@ -219,7 +219,7 @@ describe ProjectsController do allow(controller).to receive(:current_user).and_return(user) allow(user).to receive(:project_view).and_return('files') - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(response).to render_template('_files') end @@ -227,7 +227,7 @@ describe ProjectsController do allow(controller).to receive(:current_user).and_return(user) allow(user).to receive(:project_view).and_return('readme') - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(response).to render_template('_readme') end end @@ -245,7 +245,7 @@ describe ProjectsController do project = create(:project, pending_delete: true) sign_in(user) - get :show, namespace_id: project.namespace, id: project + get :show, params: { namespace_id: project.namespace, id: project } expect(response.status).to eq 404 end @@ -255,7 +255,7 @@ describe ProjectsController do it 'redirects to project page (format.html)' do project = create(:project, :public) - get :show, namespace_id: project.namespace, id: project, format: :git + get :show, params: { namespace_id: project.namespace, id: project }, format: :git expect(response).to have_gitlab_http_status(302) expect(response).to redirect_to(namespace_project_path) @@ -278,7 +278,7 @@ describe ProjectsController do it 'does not increase the number of queries when the project is forked' do expected_query = /#{public_project.fork_network.find_forks_in(other_user.namespace).to_sql}/ - expect { get(:show, namespace_id: public_project.namespace, id: public_project) } + expect { get(:show, params: { namespace_id: public_project.namespace, id: public_project }) } .not_to exceed_query_limit(2).for_query(expected_query) end end @@ -290,8 +290,10 @@ describe ProjectsController do project.add_maintainer(user) get :edit, - namespace_id: project.namespace.path, - id: project.path + params: { + namespace_id: project.namespace.path, + id: project.path + } expect(assigns(:badge_api_endpoint)).not_to be_nil end @@ -355,9 +357,11 @@ describe ProjectsController do } put :update, - namespace_id: project.namespace, - id: project.id, - project: params + params: { + namespace_id: project.namespace, + id: project.id, + project: params + } expect(response).to have_gitlab_http_status(302) params.each do |param, value| @@ -367,9 +371,11 @@ describe ProjectsController do def update_project(**parameters) put :update, - namespace_id: project.namespace.path, - id: project.path, - project: parameters + params: { + namespace_id: project.namespace.path, + id: project.path, + project: parameters + } end end @@ -397,9 +403,11 @@ describe ProjectsController do sign_in(admin) put :transfer, - namespace_id: project.namespace.path, - new_namespace_id: new_namespace.id, - id: project.path, + params: { + namespace_id: project.namespace.path, + new_namespace_id: new_namespace.id, + id: project.path + }, format: :js project.reload @@ -416,9 +424,11 @@ describe ProjectsController do old_namespace = project.namespace put :transfer, - namespace_id: old_namespace.path, - new_namespace_id: nil, - id: project.path, + params: { + namespace_id: old_namespace.path, + new_namespace_id: nil, + id: project.path + }, format: :js project.reload @@ -438,7 +448,7 @@ describe ProjectsController do sign_in(admin) orig_id = project.id - delete :destroy, namespace_id: project.namespace, id: project + delete :destroy, params: { namespace_id: project.namespace, id: project } expect { Project.find(orig_id) }.to raise_error(ActiveRecord::RecordNotFound) expect(response).to have_gitlab_http_status(302) @@ -458,7 +468,7 @@ describe ProjectsController do project.merge_requests << merge_request sign_in(admin) - delete :destroy, namespace_id: forked_project.namespace, id: forked_project + delete :destroy, params: { namespace_id: forked_project.namespace, id: forked_project } expect(merge_request.reload.state).to eq('closed') end @@ -468,9 +478,11 @@ describe ProjectsController do describe 'PUT #new_issuable_address for issue' do subject do put :new_issuable_address, - namespace_id: project.namespace, - id: project, - issuable_type: 'issue' + params: { + namespace_id: project.namespace, + id: project, + issuable_type: 'issue' + } user.reload end @@ -496,9 +508,11 @@ describe ProjectsController do describe 'PUT #new_issuable_address for merge request' do subject do put :new_issuable_address, - namespace_id: project.namespace, - id: project, - issuable_type: 'merge_request' + params: { + namespace_id: project.namespace, + id: project, + issuable_type: 'merge_request' + } user.reload end @@ -526,23 +540,31 @@ describe ProjectsController do sign_in(user) expect(user.starred?(public_project)).to be_falsey post(:toggle_star, - namespace_id: public_project.namespace, - id: public_project) + params: { + namespace_id: public_project.namespace, + id: public_project + }) expect(user.starred?(public_project)).to be_truthy post(:toggle_star, - namespace_id: public_project.namespace, - id: public_project) + params: { + namespace_id: public_project.namespace, + id: public_project + }) expect(user.starred?(public_project)).to be_falsey end it "does nothing if user is not signed in" do post(:toggle_star, - namespace_id: project.namespace, - id: public_project) + params: { + namespace_id: project.namespace, + id: public_project + }) expect(user.starred?(public_project)).to be_falsey post(:toggle_star, - namespace_id: project.namespace, - id: public_project) + params: { + namespace_id: project.namespace, + id: public_project + }) expect(user.starred?(public_project)).to be_falsey end end @@ -558,8 +580,11 @@ describe ProjectsController do it 'removes fork from project' do delete(:remove_fork, - namespace_id: forked_project.namespace.to_param, - id: forked_project.to_param, format: :js) + params: { + namespace_id: forked_project.namespace.to_param, + id: forked_project.to_param + }, + format: :js) expect(forked_project.reload.forked?).to be_falsey expect(flash[:notice]).to eq('The fork relationship has been removed.') @@ -572,8 +597,11 @@ describe ProjectsController do it 'does nothing if project was not forked' do delete(:remove_fork, - namespace_id: unforked_project.namespace, - id: unforked_project, format: :js) + params: { + namespace_id: unforked_project.namespace, + id: unforked_project + }, + format: :js) expect(flash[:notice]).to be_nil expect(response).to render_template(:remove_fork) @@ -583,8 +611,11 @@ describe ProjectsController do it "does nothing if user is not signed in" do delete(:remove_fork, - namespace_id: project.namespace, - id: project, format: :js) + params: { + namespace_id: project.namespace, + id: project + }, + format: :js) expect(response).to have_gitlab_http_status(401) end end @@ -593,7 +624,7 @@ describe ProjectsController do let(:public_project) { create(:project, :public, :repository) } it 'gets a list of branches and tags' do - get :refs, namespace_id: public_project.namespace, id: public_project, sort: 'updated_desc' + get :refs, params: { namespace_id: public_project.namespace, id: public_project, sort: 'updated_desc' } parsed_body = JSON.parse(response.body) expect(parsed_body['Branches']).to include('master') @@ -603,7 +634,7 @@ describe ProjectsController do end it "gets a list of branches, tags and commits" do - get :refs, namespace_id: public_project.namespace, id: public_project, ref: "123456" + get :refs, params: { namespace_id: public_project.namespace, id: public_project, ref: "123456" } parsed_body = JSON.parse(response.body) expect(parsed_body["Branches"]).to include("master") @@ -618,7 +649,7 @@ describe ProjectsController do end it "gets a list of branches, tags and commits" do - get :refs, namespace_id: public_project.namespace, id: public_project, ref: "123456" + get :refs, params: { namespace_id: public_project.namespace, id: public_project, ref: "123456" } parsed_body = JSON.parse(response.body) expect(parsed_body["Branches"]).to include("master") @@ -634,7 +665,7 @@ describe ProjectsController do end it 'renders json in a correct format' do - post :preview_markdown, namespace_id: public_project.namespace, id: public_project, text: '*Markdown* text' + post :preview_markdown, params: { namespace_id: public_project.namespace, id: public_project, text: '*Markdown* text' } expect(JSON.parse(response.body).keys).to match_array(%w(body references)) end @@ -644,9 +675,11 @@ describe ProjectsController do let(:merge_request) { create(:merge_request, :closed, target_project: public_project) } it 'renders JSON body with state filter for issues' do - post :preview_markdown, namespace_id: public_project.namespace, - id: public_project, - text: issue.to_reference + post :preview_markdown, params: { + namespace_id: public_project.namespace, + id: public_project, + text: issue.to_reference + } json_response = JSON.parse(response.body) @@ -654,9 +687,11 @@ describe ProjectsController do end it 'renders JSON body with state filter for MRs' do - post :preview_markdown, namespace_id: public_project.namespace, - id: public_project, - text: merge_request.to_reference + post :preview_markdown, params: { + namespace_id: public_project.namespace, + id: public_project, + text: merge_request.to_reference + } json_response = JSON.parse(response.body) @@ -674,7 +709,7 @@ describe ProjectsController do context 'when requesting the canonical path' do context "with exactly matching casing" do it "loads the project" do - get :show, namespace_id: public_project.namespace, id: public_project + get :show, params: { namespace_id: public_project.namespace, id: public_project } expect(assigns(:project)).to eq(public_project) expect(response).to have_gitlab_http_status(200) @@ -683,7 +718,7 @@ describe ProjectsController do context "with different casing" do it "redirects to the normalized path" do - get :show, namespace_id: public_project.namespace, id: public_project.path.upcase + get :show, params: { namespace_id: public_project.namespace, id: public_project.path.upcase } expect(assigns(:project)).to eq(public_project) expect(response).to redirect_to("/#{public_project.full_path}") @@ -696,14 +731,14 @@ describe ProjectsController do let!(:redirect_route) { public_project.redirect_routes.create!(path: "foo/bar") } it 'redirects to the canonical path' do - get :show, namespace_id: 'foo', id: 'bar' + get :show, params: { namespace_id: 'foo', id: 'bar' } expect(response).to redirect_to(public_project) expect(controller).to set_flash[:notice].to(project_moved_message(redirect_route, public_project)) end it 'redirects to the canonical path (testing non-show action)' do - get :refs, namespace_id: 'foo', id: 'bar' + get :refs, params: { namespace_id: 'foo', id: 'bar' } expect(response).to redirect_to(refs_project_path(public_project)) expect(controller).to set_flash[:notice].to(project_moved_message(redirect_route, public_project)) @@ -714,13 +749,13 @@ describe ProjectsController do context 'for a POST request' do context 'when requesting the canonical path with different casing' do it 'does not 404' do - post :toggle_star, namespace_id: public_project.namespace, id: public_project.path.upcase + post :toggle_star, params: { namespace_id: public_project.namespace, id: public_project.path.upcase } expect(response).not_to have_gitlab_http_status(404) end it 'does not redirect to the correct casing' do - post :toggle_star, namespace_id: public_project.namespace, id: public_project.path.upcase + post :toggle_star, params: { namespace_id: public_project.namespace, id: public_project.path.upcase } expect(response).not_to have_gitlab_http_status(301) end @@ -730,7 +765,7 @@ describe ProjectsController do let!(:redirect_route) { public_project.redirect_routes.create!(path: "foo/bar") } it 'returns not found' do - post :toggle_star, namespace_id: 'foo', id: 'bar' + post :toggle_star, params: { namespace_id: 'foo', id: 'bar' } expect(response).to have_gitlab_http_status(404) end @@ -744,13 +779,13 @@ describe ProjectsController do context 'when requesting the canonical path with different casing' do it 'does not 404' do - delete :destroy, namespace_id: project.namespace, id: project.path.upcase + delete :destroy, params: { namespace_id: project.namespace, id: project.path.upcase } expect(response).not_to have_gitlab_http_status(404) end it 'does not redirect to the correct casing' do - delete :destroy, namespace_id: project.namespace, id: project.path.upcase + delete :destroy, params: { namespace_id: project.namespace, id: project.path.upcase } expect(response).not_to have_gitlab_http_status(301) end @@ -760,7 +795,7 @@ describe ProjectsController do let!(:redirect_route) { project.redirect_routes.create!(path: "foo/bar") } it 'returns not found' do - delete :destroy, namespace_id: 'foo', id: 'bar' + delete :destroy, params: { namespace_id: 'foo', id: 'bar' } expect(response).to have_gitlab_http_status(404) end @@ -777,7 +812,7 @@ describe ProjectsController do context 'when project export is enabled' do it 'returns 302' do - get :export, namespace_id: project.namespace, id: project + get :export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(302) end @@ -789,7 +824,7 @@ describe ProjectsController do end it 'returns 404' do - get :export, namespace_id: project.namespace, id: project + get :export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(404) end @@ -806,7 +841,7 @@ describe ProjectsController do context 'object storage enabled' do context 'when project export is enabled' do it 'returns 302' do - get :download_export, namespace_id: project.namespace, id: project + get :download_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(302) end @@ -818,7 +853,7 @@ describe ProjectsController do end it 'returns 404' do - get :download_export, namespace_id: project.namespace, id: project + get :download_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(404) end @@ -835,7 +870,7 @@ describe ProjectsController do context 'when project export is enabled' do it 'returns 302' do - post :remove_export, namespace_id: project.namespace, id: project + post :remove_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(302) end @@ -847,7 +882,7 @@ describe ProjectsController do end it 'returns 404' do - post :remove_export, namespace_id: project.namespace, id: project + post :remove_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(404) end @@ -863,7 +898,7 @@ describe ProjectsController do context 'when project export is enabled' do it 'returns 302' do - post :generate_new_export, namespace_id: project.namespace, id: project + post :generate_new_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(302) end @@ -875,7 +910,7 @@ describe ProjectsController do end it 'returns 404' do - post :generate_new_export, namespace_id: project.namespace, id: project + post :generate_new_export, params: { namespace_id: project.namespace, id: project } expect(response).to have_gitlab_http_status(404) end |