Skip to content

Commit

Permalink
Implements adding project checkout key
Browse files Browse the repository at this point in the history
* Create new project checkout key
  • Loading branch information
mtchavez committed Dec 6, 2015
1 parent 9eb6dda commit 8c3e87a
Show file tree
Hide file tree
Showing 5 changed files with 177 additions and 8 deletions.
14 changes: 14 additions & 0 deletions lib/circleci/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,20 @@ def self.build_ssh_key username, project, build, key, hostname
CircleCi.http.post "/project/#{username}/#{project}/#{build}/ssh-users", {}, body
end

##
#
# Create a checkout key for a project
#
# @param username [String] - User or org name who owns project
# @param project [String] - Name of project
# @param type [String] - The type of key to create. Can be 'deploy-key' or 'github-user-key'.
# @return [CircleCi::Response] - Response object

def self.new_checkout_key username, project, type
body = { type: type }
CircleCi.http.post "/project/#{username}/#{project}/checkout-key", {}, body
end

##
#
# Get all recent builds for a specific project
Expand Down
64 changes: 64 additions & 0 deletions spec/cassettes/project/new_checkout_key/success.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 52 additions & 0 deletions spec/cassettes/project/new_checkout_key/unsuccessfully.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

41 changes: 40 additions & 1 deletion spec/circleci/project_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,45 @@

end

describe 'new_checkout_key' do

context 'successfully', vcr: { cassette_name: 'project/new_checkout_key/success', record: :none } do

let(:res) { CircleCi::Project.new_checkout_key 'mtchavez', 'circleci', 'deploy-key' }

it 'returns a response object' do
res.should be_an_instance_of(CircleCi::Response)
res.should be_success
end

it 'returns created key' do
res.body.should be_an_instance_of(Hash)
res.body['public_key'].should match(/^ssh-rsa/)
res.body['type'].should eql 'deploy-key'
res.body.should have_key 'fingerprint'
end

end

context 'unsuccessfully', vcr: { cassette_name: 'project/new_checkout_key/unsuccessfully', record: :none } do

let(:res) { CircleCi::Project.new_checkout_key 'github', 'hub', 'deploy-key' }
let(:message) { 'Project not found' }

it 'returns a response object' do
res.should be_an_instance_of(CircleCi::Response)
res.should_not be_success
end

it 'returns an error message' do
res.body.should be_an_instance_of(Hash)
res.body['message'].should eql message
end

end

end

describe 'recent_builds' do

context 'successfully', vcr: { cassette_name: 'project/recent_builds/success', record: :none } do
Expand Down Expand Up @@ -188,7 +227,7 @@

end

context 'unsuccessful', vcr: { cassette_name: 'project/ssh_key/unsuccessful', record: :all } do
context 'unsuccessfully', vcr: { cassette_name: 'project/ssh_key/unsuccessfully', record: :none } do

let(:res) { CircleCi::Project.ssh_key 'mtchavez', 'circleci', 'RSA Private Key', 'hostname' }
let(:message) { 'it looks like private key is invalid key. Double check' }
Expand Down

0 comments on commit 8c3e87a

Please sign in to comment.