Add endpoints for key regeneration

Enpoints are:

    POST /repos/:id/key

and

    POST /repos/:owner/:name/key

Both versions will replace current ssl key for given repo with the new
one.
This commit is contained in:
Piotr Sarnacki 2012-12-03 02:34:15 +01:00
parent a62948b047
commit 440dacece3
4 changed files with 43 additions and 2 deletions

View File

@ -4,7 +4,7 @@ source :rubygems
gemspec
gem 'travis-support', github: 'travis-ci/travis-support'
gem 'travis-core', github: 'travis-ci/travis-core'
gem 'travis-core', github: 'travis-ci/travis-core', branch: 'regenerate-repo-key'
gem 'travis-sidekiqs', github: 'travis-ci/travis-sidekiqs', require: nil, ref: 'cde9741'
gem 'unicorn'

View File

@ -42,7 +42,8 @@ GIT
GIT
remote: git://github.com/travis-ci/travis-core.git
revision: e1034dc248883d30e21518a4a65665abe4523fe8
revision: b9edfcd3de6a1cfcbe24747cbf2b0ee62847a4ab
branch: regenerate-repo-key
specs:
travis-core (0.0.1)
actionmailer (~> 3.2.3)

View File

@ -24,6 +24,10 @@ class Travis::Api::App
respond_with service(:find_repo_key, params), version: :v2
end
post '/:id/key' do
respond_with service(:regenerate_repo_key, params), version: :v2
end
get '/:owner_name/:name' do
respond_with service(:find_repo, params)
end
@ -43,6 +47,10 @@ class Travis::Api::App
get '/:owner_name/:name/key' do
respond_with service(:find_repo_key, params), version: :v2
end
post '/:owner_name/:name/key' do
respond_with service(:regenerate_repo_key, params), version: :v2
end
end
end
end

View File

@ -6,6 +6,38 @@ describe 'Repos' do
let(:repo) { Repository.by_slug('svenfuchs/minimal').first }
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json' } }
describe 'with authenticated user' do
let(:user) { User.where(login: 'svenfuchs').first }
let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: -1) }
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json', 'HTTP_AUTHORIZATION' => "token #{token}" } }
before { user.permissions.create!(:repository_id => repo.id, :push => true) }
it 'POST /repos/:id/key' do
expect {
response = post "/repos/#{repo.id}/key", {}, headers
}.to change { repo.reload.key.private_key }
end
it 'POST /repos/:owner/:name/key' do
expect {
response = post "/repos/#{repo.slug}/key", {}, headers
}.to change { repo.reload.key.private_key }
end
end
describe 'without authenticated user' do
it 'POST /repos/:id/key' do
response = post "/repos/#{repo.id}/key", {}, headers
response.should be_not_found
end
it 'POST /repos/:owner/:name/key' do
response = post "/repos/#{repo.id}/key", {}, headers
response.should be_not_found
end
end
it 'GET /repos/:id/key' do
response = get "/repos/#{repo.id}/key", {}, headers
response.should deliver_json_for(repo.key, version: 'v2')