Grapify all endpoints of the deploy keys API
This commit is contained in:
parent
6c65f7a7ce
commit
18417c9ee8
2 changed files with 10 additions and 16 deletions
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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…
Reference in a new issue