From 612b8806ddc7881421e26a9dbfe465d6445fb3d6 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 1 Dec 2014 16:55:33 +0200 Subject: Fix internal API for missing project or key Signed-off-by: Dmitriy Zaporozhets --- lib/api/internal.rb | 13 +++++++++---- spec/requests/api/internal_spec.rb | 24 +++++++++++++++++++++--- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/lib/api/internal.rb b/lib/api/internal.rb index 1648834f034..180e50611cf 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -33,15 +33,20 @@ module API end project = Project.find_with_namespace(project_path) - return false unless project + + unless project + return Gitlab::GitAccessStatus.new(false, 'No such project') + end actor = if params[:key_id] - Key.find(params[:key_id]) + Key.find_by(id: params[:key_id]) elsif params[:user_id] - User.find(params[:user_id]) + User.find_by(id: params[:user_id]) end - return false unless actor + unless actor + return Gitlab::GitAccessStatus.new(false, 'No such user or key') + end access.check( actor, diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb index 53b7808d4c3..4faa1f9b964 100644 --- a/spec/requests/api/internal_spec.rb +++ b/spec/requests/api/internal_spec.rb @@ -26,7 +26,7 @@ describe API::API, api: true do end end - describe "GET /internal/allowed" do + describe "POST /internal/allowed" do context "access granted" do before do project.team << [user, :developer] @@ -140,7 +140,7 @@ describe API::API, api: true do archive(key, project) response.status.should == 200 - response.body.should == 'true' + JSON.parse(response.body)["status"].should be_true end end @@ -149,10 +149,28 @@ describe API::API, api: true do archive(key, project) response.status.should == 200 - response.body.should == 'false' + JSON.parse(response.body)["status"].should be_false end end end + + context 'project does not exist' do + it do + pull(key, OpenStruct.new(path_with_namespace: 'gitlab/notexists')) + + response.status.should == 200 + JSON.parse(response.body)["status"].should be_false + end + end + + context 'user does not exist' do + it do + pull(OpenStruct.new(id: 0), project) + + response.status.should == 200 + JSON.parse(response.body)["status"].should be_false + end + end end def pull(key, project) -- cgit v1.2.1