diff options
author | Izaak Alpert <ialpert@blackberry.com> | 2013-09-22 00:50:18 -0400 |
---|---|---|
committer | Izaak Alpert <ialpert@blackberry.com> | 2013-09-23 19:36:25 -0400 |
commit | 4cfbfbb845680f2df67110ca15f2479cba8e2441 (patch) | |
tree | 2ef7183fca2fe8ede1c85a89310033cbfef2e29d /spec/requests | |
parent | 0630be3828998af1261b87ae85b42c0ef9a439ed (diff) | |
download | gitlab-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.rb | 38 |
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 |