Merge branch '33878-fix-edit-deploy-key' into 'master'

Fix edit button for deploy keys available from other projects

Closes #33878

See merge request !12301
This commit is contained in:
Rémy Coutable 2017-06-21 10:08:16 +00:00
commit 6a3da45a22
5 changed files with 34 additions and 3 deletions

View File

@ -6,7 +6,7 @@ class Projects::DeployKeysController < Projects::ApplicationController
before_action :authorize_admin_project!
before_action :authorize_update_deploy_key!, only: [:edit, :update]
layout "project_settings"
layout 'project_settings'
def index
respond_to do |format|
@ -66,7 +66,7 @@ class Projects::DeployKeysController < Projects::ApplicationController
protected
def deploy_key
@deploy_key ||= @project.deploy_keys.find(params[:id])
@deploy_key ||= DeployKey.find(params[:id])
end
def create_params

View File

@ -0,0 +1,4 @@
---
title: Fix edit button for deploy keys available from other projects
merge_request: 12301
author: Alexander Randa

View File

@ -86,7 +86,7 @@ module API
at_least_one_of :title, :can_push
end
put ":id/deploy_keys/:key_id" do
key = user_project.deploy_keys.find(params.delete(:key_id))
key = DeployKey.find(params.delete(:key_id))
authorize!(:update_deploy_key, key)

View File

@ -65,6 +65,23 @@ feature 'Repository settings', feature: true do
expect(page).to have_content('Write access allowed')
end
scenario 'edit a deploy key from projects user has access to' do
project2 = create(:project_empty_repo)
project2.team << [user, role]
project2.deploy_keys << private_deploy_key
visit namespace_project_settings_repository_path(project.namespace, project)
find('li', text: private_deploy_key.title).click_link('Edit')
fill_in 'deploy_key_title', with: 'updated_deploy_key'
check 'deploy_key_can_push'
click_button 'Save changes'
expect(page).to have_content('updated_deploy_key')
expect(page).to have_content('Write access allowed')
end
scenario 'remove an existing deploy key' do
project.deploy_keys << private_deploy_key
visit namespace_project_settings_repository_path(project.namespace, project)

View File

@ -160,6 +160,16 @@ describe API::DeployKeys do
expect(json_response['title']).to eq('new title')
expect(json_response['can_push']).to eq(true)
end
it 'updates a private ssh key from projects user has access with correct attributes' do
create(:deploy_keys_project, project: project2, deploy_key: private_deploy_key)
put api("/projects/#{project.id}/deploy_keys/#{private_deploy_key.id}", admin), { title: 'new title', can_push: true }
expect(json_response['id']).to eq(private_deploy_key.id)
expect(json_response['title']).to eq('new title')
expect(json_response['can_push']).to eq(true)
end
end
describe 'DELETE /projects/:id/deploy_keys/:key_id' do