summaryrefslogtreecommitdiff
path: root/spec/requests
diff options
context:
space:
mode:
authorIzaak Alpert <ialpert@blackberry.com>2013-09-22 00:50:18 -0400
committerIzaak Alpert <ialpert@blackberry.com>2013-09-23 19:36:25 -0400
commit4cfbfbb845680f2df67110ca15f2479cba8e2441 (patch)
tree2ef7183fca2fe8ede1c85a89310033cbfef2e29d /spec/requests
parent0630be3828998af1261b87ae85b42c0ef9a439ed (diff)
downloadgitlab-ce-4cfbfbb845680f2df67110ca15f2479cba8e2441.tar.gz
Added search for projects by name to api
GITLAB-1283 (GITLAB-869) Change-Id: I611e7e93f6292de08e1edc8d3ea77cf9087b6ded Conflicts: config/initializers/1_settings.rb
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/api/projects_spec.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 2de3dc55e40..b8c0b6f33ed 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -692,4 +692,42 @@ describe API::API do
end
end
end
+
+ describe "GET /projects/search/:query" do
+ let!(:query) { 'query'}
+ let!(:search) { create(:project, name: query, creator_id: user.id, namespace: user.namespace) }
+ let!(:pre) { create(:project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) }
+ let!(:post) { create(:project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) }
+ let!(:pre_post) { create(:project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) }
+ let!(:unfound) { create(:project, name: 'unfound', creator_id: user.id, namespace: user.namespace) }
+ let!(:public) { create(:project, name: "another #{query}",public: true) }
+ let!(:unfound_public) { create(:project, name: 'unfound public', public: true) }
+
+ context "when unauthenticated" do
+ it "should return authentication error" do
+ get api("/projects/search/#{query}")
+ response.status.should == 401
+ end
+ end
+
+ context "when authenticated" do
+ it "should return an array of projects" do
+ get api("/projects/search/#{query}",user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.size.should == 5
+ json_response.each {|project| project['name'].should =~ /.*query.*/}
+ end
+ end
+
+ context "when authenticated as a different user" do
+ it "should return matching public projects" do
+ get api("/projects/search/#{query}", user2)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.size.should == 1
+ json_response.first['name'].should == "another #{query}"
+ end
+ end
+ end
end