Skip to content

Commit

Permalink
Implements delete project checkout key
Browse files Browse the repository at this point in the history
* Delete a project checkout key
* Test deletion of key and if key is not found
  • Loading branch information
mtchavez committed Dec 6, 2015
1 parent e4afa45 commit 500f6cc
Show file tree
Hide file tree
Showing 5 changed files with 212 additions and 2 deletions.
15 changes: 14 additions & 1 deletion lib/circleci/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,19 @@ def self.clear_cache username, project
CircleCi.http.delete "/project/#{username}/#{project}/build-cache"
end

##
#
# Delete a checkout key for a project
#
# @param username [String] - User or org name who owns project
# @param project [String] - Name of project
# @param fingerprint [String] - Fingerprint of a checkout key
# @return [CircleCi::Response] - Response object

def self.delete_checkout_key username, project, fingerprint
CircleCi.http.delete "/project/#{username}/#{project}/checkout-key/#{fingerprint}"
end

##
#
# Enable a project in CircleCI. Causes a CircleCI SSH key to be added to
Expand Down Expand Up @@ -103,7 +116,7 @@ def self.follow username, project
# @param username [String] - User or org name who owns project
# @param project [String] - Name of project
# @param fingerprint [String] - Fingerprint of a checkout key
# @return [CircleCi::Response] - Response object
# @return [CircleCi::Response] - Response object

def self.get_checkout_key username, project, fingerprint
CircleCi.http.get "/project/#{username}/#{project}/checkout-key/#{fingerprint}"
Expand Down
106 changes: 106 additions & 0 deletions spec/cassettes/project/delete_checkout_key/successfully.yml

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

50 changes: 50 additions & 0 deletions spec/cassettes/project/delete_checkout_key/unsuccessfully.yml

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

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

end

describe 'delete_checkout_key' do

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

let(:res) { CircleCi::Project.delete_checkout_key 'mtchavez', 'circleci', test_delete_checkout_key_fingerprint }

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

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

end

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

let(:res) { CircleCi::Project.delete_checkout_key 'mtchavez', 'circleci', 'asdf-bogus' }
let(:message) { 'checkout key 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 'get_checkout_key' do

context 'successfully', vcr: { cassette_name: 'project/get_checkout_key/successfully', record: :none } do
Expand All @@ -113,7 +150,7 @@
res.should be_success
end

it 'returns created key' do
it 'returns 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'
Expand Down
4 changes: 4 additions & 0 deletions spec/support/checkout_keys.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
def test_checkout_key_fingerprint
'96:08:ec:3c:fd:df:1f:6a:09:ad:e0:0f:83:ae:17:0a'
end

def test_delete_checkout_key_fingerprint
'58:8a:ff:01:b3:e5:81:69:7a:70:2d:fc:2c:db:94:48'
end

0 comments on commit 500f6cc

Please sign in to comment.