OSDN Git Service

allow all git-upload-* commands for deploy keys
authorJakub Zienkiewicz <jakub.zienkiewicz@edpauto.com>
Mon, 29 Jul 2013 12:25:33 +0000 (14:25 +0200)
committerJakub Zienkiewicz <jakub.zienkiewicz@edpauto.com>
Tue, 30 Jul 2013 08:15:36 +0000 (10:15 +0200)
lib/api/internal.rb
spec/requests/api/internal_spec.rb

index a602dc0..bd28bef 100644 (file)
@@ -26,7 +26,7 @@ module API
 
 
         if key.is_a? DeployKey
-          key.projects.include?(project) && git_cmd == 'git-upload-pack'
+          key.projects.include?(project) && git_cmd.starts_with?('git-upload-')
         else
           user = key.user
 
index 5a43953..028617a 100644 (file)
@@ -100,6 +100,32 @@ describe API::API do
         end
       end
     end
+
+    context "deploy key" do
+      let(:key) { create(:deploy_key) }
+
+      context "added to project" do
+        before do
+          key.projects << project
+        end
+
+        it do
+          archive(key, project)
+
+          response.status.should == 200
+          response.body.should == 'true'
+        end
+      end
+
+      context "not added to project" do
+        it do
+          archive(key, project)
+
+          response.status.should == 200
+          response.body.should == 'false'
+        end
+      end
+    end
   end
 
   def pull(key, project)
@@ -121,4 +147,14 @@ describe API::API do
       action: 'git-receive-pack'
     )
   end
+
+  def archive(key, project)
+    get(
+      api("/internal/allowed"),
+      ref: 'master',
+      key_id: key.id,
+      project: project.path_with_namespace,
+      action: 'git-upload-archive'
+    )
+  end
 end