Skip to content
Snippets Groups Projects
Commit 4528fa98 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

modify api to work with new deploy keys

parent 1882baa1
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -25,8 +25,8 @@ module Gitlab
return false unless project
 
 
if key.is_deploy_key
project == key.project && git_cmd == 'git-upload-pack'
if key.is_a? DeployKey
key.projects.include?(project) && git_cmd == 'git-upload-pack'
else
user = key.user
 
Loading
Loading
Loading
Loading
@@ -531,8 +531,8 @@ module Gitlab
# POST /projects/:id/keys
post ":id/keys" do
attrs = attributes_for_keys [:title, :key]
key = user_project.deploy_keys.new attrs
if key.save
key = DeployKey.new attrs
if key.valid? && user_project.deploy_keys << key
present key, with: Entities::SSHKey
else
not_found!
Loading
Loading
@@ -545,9 +545,8 @@ module Gitlab
# DELETE /projects/:id/keys/:id
delete ":id/keys/:key_id" do
key = user_project.deploy_keys.find params[:key_id]
key.delete
key.destroy
end
end
end
end
Loading
Loading
@@ -174,7 +174,7 @@ module Gitlab
delete "keys/:id" do
begin
key = current_user.keys.find params[:id]
key.delete
key.destroy
rescue
end
end
Loading
Loading
Loading
Loading
@@ -37,7 +37,8 @@ describe Project do
it { should have_many(:users_projects).dependent(:destroy) }
it { should have_many(:notes).dependent(:destroy) }
it { should have_many(:snippets).dependent(:destroy) }
it { should have_many(:deploy_keys).dependent(:destroy) }
it { should have_many(:deploy_keys_projects).dependent(:destroy) }
it { should have_many(:deploy_keys) }
it { should have_many(:hooks).dependent(:destroy) }
it { should have_many(:protected_branches).dependent(:destroy) }
it { should have_one(:forked_project_link).dependent(:destroy) }
Loading
Loading
Loading
Loading
@@ -13,7 +13,6 @@ describe Gitlab::API do
let!(:snippet) { create(:snippet, author: user, project: project, title: 'example') }
let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
let(:key) { create(:key, project: project) }
 
before { project.team << [user, :reporter] }
 
Loading
Loading
@@ -636,58 +635,61 @@ describe Gitlab::API do
end
end
 
describe "GET /projects/:id/keys" do
it "should return array of ssh keys" do
project.deploy_keys << key
project.save
get api("/projects/#{project.id}/keys", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == key.title
end
end
describe :deploy_keys do
let(:deploy_keys_project) { create(:deploy_keys_project, project: project) }
let(:deploy_key) { deploy_keys_project.deploy_key }
 
describe "GET /projects/:id/keys/:key_id" do
it "should return a single key" do
project.deploy_keys << key
project.save
get api("/projects/#{project.id}/keys/#{key.id}", user)
response.status.should == 200
json_response['title'].should == key.title
end
describe "GET /projects/:id/keys" do
before { deploy_key }
 
it "should return 404 Not Found with invalid ID" do
get api("/projects/#{project.id}/keys/404", user)
response.status.should == 404
it "should return array of ssh keys" do
get api("/projects/#{project.id}/keys", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == deploy_key.title
end
end
end
 
describe "POST /projects/:id/keys" do
it "should not create an invalid ssh key" do
post api("/projects/#{project.id}/keys", user), { title: "invalid key" }
response.status.should == 404
end
describe "GET /projects/:id/keys/:key_id" do
it "should return a single key" do
get api("/projects/#{project.id}/keys/#{deploy_key.id}", user)
response.status.should == 200
json_response['title'].should == deploy_key.title
end
 
it "should create new ssh key" do
key_attrs = attributes_for :key
expect {
post api("/projects/#{project.id}/keys", user), key_attrs
}.to change{ project.deploy_keys.count }.by(1)
it "should return 404 Not Found with invalid ID" do
get api("/projects/#{project.id}/keys/404", user)
response.status.should == 404
end
end
end
 
describe "DELETE /projects/:id/keys/:key_id" do
it "should delete existing key" do
project.deploy_keys << key
project.save
expect {
delete api("/projects/#{project.id}/keys/#{key.id}", user)
}.to change{ project.deploy_keys.count }.by(-1)
describe "POST /projects/:id/keys" do
it "should not create an invalid ssh key" do
post api("/projects/#{project.id}/keys", user), { title: "invalid key" }
response.status.should == 404
end
it "should create new ssh key" do
key_attrs = attributes_for :key
expect {
post api("/projects/#{project.id}/keys", user), key_attrs
}.to change{ project.deploy_keys.count }.by(1)
end
end
 
it "should return 404 Not Found with invalid ID" do
delete api("/projects/#{project.id}/keys/404", user)
response.status.should == 404
describe "DELETE /projects/:id/keys/:key_id" do
before { deploy_key }
it "should delete existing key" do
expect {
delete api("/projects/#{project.id}/keys/#{deploy_key.id}", user)
}.to change{ project.deploy_keys.count }.by(-1)
end
it "should return 404 Not Found with invalid ID" do
delete api("/projects/#{project.id}/keys/404", user)
response.status.should == 404
end
end
end
end
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