Commit b59ba979984072af6dfa89121eb12686c83ac44d
Exists in
master
and in
4 other branches
Merge branch 'feature/api_projects_all' of /home/git/repositories/gitlab/gitlabhq
Showing
3 changed files
with
53 additions
and
1 deletions
Show diff stats
doc/api/projects.md
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | ### List projects |
| 4 | 4 | |
| 5 | -Get a list of projects owned by the authenticated user. | |
| 5 | +Get a list of projects accessible by the authenticated user. | |
| 6 | 6 | |
| 7 | 7 | ``` |
| 8 | 8 | GET /projects |
| ... | ... | @@ -82,6 +82,22 @@ GET /projects |
| 82 | 82 | ``` |
| 83 | 83 | |
| 84 | 84 | |
| 85 | +#### List owned projects | |
| 86 | + | |
| 87 | +Get a list of projects owned by the authenticated user. | |
| 88 | + | |
| 89 | +``` | |
| 90 | +GET /projects/owned | |
| 91 | +``` | |
| 92 | + | |
| 93 | +#### List ALL projects | |
| 94 | + | |
| 95 | +Get a list of all GitLab projects (admin only). | |
| 96 | + | |
| 97 | +``` | |
| 98 | +GET /projects/all | |
| 99 | +``` | |
| 100 | + | |
| 85 | 101 | ### Get single project |
| 86 | 102 | |
| 87 | 103 | Get a specific project, identified by project ID or NAMESPACE/PROJECT_NAME , which is owned by the authentication user. | ... | ... |
lib/api/projects.rb
| ... | ... | @@ -31,6 +31,16 @@ module API |
| 31 | 31 | present @projects, with: Entities::Project |
| 32 | 32 | end |
| 33 | 33 | |
| 34 | + # Get all projects for admin user | |
| 35 | + # | |
| 36 | + # Example Request: | |
| 37 | + # GET /projects/all | |
| 38 | + get '/all' do | |
| 39 | + authenticated_as_admin! | |
| 40 | + @projects = paginate Project | |
| 41 | + present @projects, with: Entities::Project | |
| 42 | + end | |
| 43 | + | |
| 34 | 44 | # Get a single project |
| 35 | 45 | # |
| 36 | 46 | # Parameters: | ... | ... |
spec/requests/api/projects_spec.rb
| ... | ... | @@ -36,6 +36,32 @@ describe API::API do |
| 36 | 36 | end |
| 37 | 37 | end |
| 38 | 38 | |
| 39 | + describe "GET /projects/all" do | |
| 40 | + context "when unauthenticated" do | |
| 41 | + it "should return authentication error" do | |
| 42 | + get api("/projects/all") | |
| 43 | + response.status.should == 401 | |
| 44 | + end | |
| 45 | + end | |
| 46 | + | |
| 47 | + context "when authenticated as regular user" do | |
| 48 | + it "should return authentication error" do | |
| 49 | + get api("/projects/all", user) | |
| 50 | + response.status.should == 403 | |
| 51 | + end | |
| 52 | + end | |
| 53 | + | |
| 54 | + context "when authenticated as admin" do | |
| 55 | + it "should return an array of all projects" do | |
| 56 | + get api("/projects/all", admin) | |
| 57 | + response.status.should == 200 | |
| 58 | + json_response.should be_an Array | |
| 59 | + json_response.first['name'].should == project.name | |
| 60 | + json_response.first['owner']['email'].should == user.email | |
| 61 | + end | |
| 62 | + end | |
| 63 | + end | |
| 64 | + | |
| 39 | 65 | describe "POST /projects" do |
| 40 | 66 | context "maximum number of projects reached" do |
| 41 | 67 | before do | ... | ... |