From 44aa6b90ddde3a7babc6ed9f50d73040d6184789 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81bner=20Silva=20de=20Oliveira?= <abner.silva@gmail.com>
Date: Fri, 21 Mar 2014 06:18:19 -0300
Subject: [PATCH] added api method to return labels of a given project

---
 lib/api/entities.rb              |  4 ++++
 lib/api/projects.rb              |  9 +++++++++
 spec/requests/api/labels_spec.rb | 26 ++++++++++++++++++++++++++
 3 files changed, 39 insertions(+)
 create mode 100644 spec/requests/api/labels_spec.rb

diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 8b4519af2d1..9fa8506926c 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -187,5 +187,9 @@ module API
         end
       end
     end
+
+    class Label < Grape::Entity
+      expose :name
+    end
   end
 end
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 4d48d2194f8..40b5ce86c93 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -215,6 +215,15 @@ module API
         @users = paginate @users
         present @users, with: Entities::User
       end
+
+      # Get a labels list
+      #
+      # Example Request:
+      #  GET /users
+      get ':id/labels' do
+        @labels = user_project.issues_labels
+        present @labels, with: Entities::Label
+      end
     end
   end
 end
diff --git a/spec/requests/api/labels_spec.rb b/spec/requests/api/labels_spec.rb
new file mode 100644
index 00000000000..ba5efb6c603
--- /dev/null
+++ b/spec/requests/api/labels_spec.rb
@@ -0,0 +1,26 @@
+require 'spec_helper'
+
+describe API::API do
+  include ApiHelpers
+  before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
+  after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
+
+  let(:user) { create(:user) }
+  let!(:project) { create(:project, namespace: user.namespace ) }
+  let!(:issue) { create(:issue, author: user, assignee: user, project: project, :label_list => "label1, label2") }
+  before { project.team << [user, :reporter] }
+
+
+  describe "GET /projects/:id/labels" do
+    it "should return project labels" do
+      get api("/projects/#{project.id}/labels", user)
+      response.status.should == 200
+      json_response.should be_an Array
+      json_response.first['name'].should == 'label1'
+      json_response.last['name'].should == 'label2'
+    end
+  end
+
+
+end
+
-- 
GitLab