#794: add #key_pair action, add new specs
This commit is contained in:
parent
0ad9932561
commit
da4860bc45
|
@ -30,6 +30,9 @@ class Api::V1::RepositoriesController < Api::V1::BaseController
|
||||||
destroy_subject @repository
|
destroy_subject @repository
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def key_pair
|
||||||
|
end
|
||||||
|
|
||||||
def add_project
|
def add_project
|
||||||
project = Project.where(:id => params[:project_id]).first
|
project = Project.where(:id => params[:project_id]).first
|
||||||
if project
|
if project
|
||||||
|
|
|
@ -154,6 +154,12 @@ class Ability
|
||||||
cannot([:get_list, :create], MassBuild) {|mass_build| mass_build.platform.personal?}
|
cannot([:get_list, :create], MassBuild) {|mass_build| mass_build.platform.personal?}
|
||||||
cannot(:cancel, MassBuild) {|mass_build| mass_build.platform.personal? || mass_build.stop_build}
|
cannot(:cancel, MassBuild) {|mass_build| mass_build.platform.personal? || mass_build.stop_build}
|
||||||
|
|
||||||
|
if @user.uname == 'iso_worker_1'
|
||||||
|
can :key_pair, Repository
|
||||||
|
else
|
||||||
|
cannot :key_pair, Repository
|
||||||
|
end
|
||||||
|
|
||||||
can :create, Subscribe do |subscribe|
|
can :create, Subscribe do |subscribe|
|
||||||
!subscribe.subscribeable.subscribes.exists?(:user_id => user.id)
|
!subscribe.subscribeable.subscribes.exists?(:user_id => user.id)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
json.repository do |json|
|
||||||
|
json.partial! 'repository', :repository => @repository, :json => json
|
||||||
|
json.key_pair do |json_key_pair|
|
||||||
|
json_key_pair.(@repository.key_pair, :public, :secret)
|
||||||
|
end
|
||||||
|
end
|
|
@ -38,6 +38,7 @@ Rosa::Application.routes.draw do
|
||||||
resources :repositories, :only => [:show, :update, :destroy] do
|
resources :repositories, :only => [:show, :update, :destroy] do
|
||||||
member {
|
member {
|
||||||
get :projects
|
get :projects
|
||||||
|
get :key_pair
|
||||||
put :add_member
|
put :add_member
|
||||||
delete :remove_member
|
delete :remove_member
|
||||||
put :add_project
|
put :add_project
|
||||||
|
|
|
@ -39,6 +39,13 @@ shared_examples_for "api repository user without show rights" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
shared_examples_for "api repository user without key_pair rights" do
|
||||||
|
it 'should not be able to perform key_pair action' do
|
||||||
|
get :key_pair, :id => @repository.id, :format => :json
|
||||||
|
response.should_not be_success
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
shared_examples_for 'api repository user with writer rights' do
|
shared_examples_for 'api repository user with writer rights' do
|
||||||
|
|
||||||
context 'api repository user with update rights' do
|
context 'api repository user with update rights' do
|
||||||
|
@ -264,6 +271,7 @@ describe Api::V1::RepositoriesController do
|
||||||
it_should_behave_like 'api repository user with show rights'
|
it_should_behave_like 'api repository user with show rights'
|
||||||
end
|
end
|
||||||
it_should_behave_like 'api repository user without writer rights'
|
it_should_behave_like 'api repository user without writer rights'
|
||||||
|
it_should_behave_like 'api repository user without key_pair rights'
|
||||||
|
|
||||||
it 'should not be able to perform projects action', :anonymous_access => false do
|
it 'should not be able to perform projects action', :anonymous_access => false do
|
||||||
get :projects, :id => @repository.id, :format => :json
|
get :projects, :id => @repository.id, :format => :json
|
||||||
|
@ -280,6 +288,7 @@ describe Api::V1::RepositoriesController do
|
||||||
it_should_behave_like 'api repository user with reader rights'
|
it_should_behave_like 'api repository user with reader rights'
|
||||||
it_should_behave_like 'api repository user with reader rights for hidden platform'
|
it_should_behave_like 'api repository user with reader rights for hidden platform'
|
||||||
it_should_behave_like 'api repository user with writer rights'
|
it_should_behave_like 'api repository user with writer rights'
|
||||||
|
it_should_behave_like 'api repository user without key_pair rights'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for platform owner user' do
|
context 'for platform owner user' do
|
||||||
|
@ -294,6 +303,7 @@ describe Api::V1::RepositoriesController do
|
||||||
it_should_behave_like 'api repository user with reader rights'
|
it_should_behave_like 'api repository user with reader rights'
|
||||||
it_should_behave_like 'api repository user with reader rights for hidden platform'
|
it_should_behave_like 'api repository user with reader rights for hidden platform'
|
||||||
it_should_behave_like 'api repository user with writer rights'
|
it_should_behave_like 'api repository user with writer rights'
|
||||||
|
it_should_behave_like 'api repository user without key_pair rights'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for user' do
|
context 'for user' do
|
||||||
|
@ -306,5 +316,26 @@ describe Api::V1::RepositoriesController do
|
||||||
it_should_behave_like 'api repository user without reader rights for hidden platform'
|
it_should_behave_like 'api repository user without reader rights for hidden platform'
|
||||||
it_should_behave_like 'api repository user with show rights'
|
it_should_behave_like 'api repository user with show rights'
|
||||||
it_should_behave_like 'api repository user without writer rights'
|
it_should_behave_like 'api repository user without writer rights'
|
||||||
|
it_should_behave_like 'api repository user without key_pair rights'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'for system user' do
|
||||||
|
before(:each) do
|
||||||
|
@user = FactoryGirl.create(:user, :uname => 'iso_worker_1')
|
||||||
|
http_login(@user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be able to perform key_pair action when repository has not keys' do
|
||||||
|
get :key_pair, :id => @repository.id, :format => :json
|
||||||
|
response.should be_success
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be able to perform key_pair action when repository has keys' do
|
||||||
|
FactoryGirl.create(:key_pair, :repository => @repository)
|
||||||
|
get :key_pair, :id => @repository.id, :format => :json
|
||||||
|
response.should be_success
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue