Skip to content
Snippets Groups Projects
Commit 01fa19ed authored by Rémy Coutable's avatar Rémy Coutable
Browse files

Merge branch 'grapify-deploy-keys' into 'master'

Grapify all endpoints of the deploy keys API

See merge request !8721
parents fe0dbf61 18417c9e
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -38,26 +38,25 @@ module API
present key, with: Entities::SSHKey
end
 
# TODO: for 9.0 we should check if params are there with the params block
# grape provides, at this point we'd change behaviour so we can't
# Behaviour now if you don't provide all required params: it renders a
# validation error or two.
desc 'Add new deploy key to currently authenticated user' do
success Entities::SSHKey
end
params do
requires :key, type: String, desc: 'The new deploy key'
requires :title, type: String, desc: 'The name of the deploy key'
end
post ":id/#{path}" do
attrs = attributes_for_keys [:title, :key]
attrs[:key].strip! if attrs[:key]
params[:key].strip!
 
# Check for an existing key joined to this project
key = user_project.deploy_keys.find_by(key: attrs[:key])
key = user_project.deploy_keys.find_by(key: params[:key])
if key
present key, with: Entities::SSHKey
break
end
 
# Check for available deploy keys in other projects
key = current_user.accessible_deploy_keys.find_by(key: attrs[:key])
key = current_user.accessible_deploy_keys.find_by(key: params[:key])
if key
user_project.deploy_keys << key
present key, with: Entities::SSHKey
Loading
Loading
@@ -65,7 +64,7 @@ module API
end
 
# Create a new deploy key
key = DeployKey.new attrs
key = DeployKey.new(declared_params(include_missing: false))
if key.valid? && user_project.deploy_keys << key
present key, with: Entities::SSHKey
else
Loading
Loading
Loading
Loading
@@ -73,19 +73,14 @@ describe API::DeployKeys, api: true do
post api("/projects/#{project.id}/deploy_keys", admin), { title: 'invalid key' }
 
expect(response).to have_http_status(400)
expect(json_response['message']['key']).to eq([
'can\'t be blank',
'is invalid'
])
expect(json_response['error']).to eq('key is missing')
end
 
it 'should not create a key without title' do
post api("/projects/#{project.id}/deploy_keys", admin), key: 'some key'
 
expect(response).to have_http_status(400)
expect(json_response['message']['title']).to eq([
'can\'t be blank'
])
expect(json_response['error']).to eq('title is missing')
end
 
it 'should create new ssh key' 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