Commit f2b00e7c authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'add-project-permissions' into 'master'

Add project permissions to all project API endpoints

This standardizes all the project API formats. Also needed to support Huboard.

See merge request !2090
parents 4e290454 301a30e0
...@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. ...@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.4.0 (unreleased) v 8.4.0 (unreleased)
- Implement new UI for group page - Implement new UI for group page
- Add project permissions to all project API endpoints (Stan Hu)
v 8.3.0 v 8.3.0
- Add CAS support (tduehr) - Add CAS support (tduehr)
......
...@@ -118,6 +118,16 @@ Parameters: ...@@ -118,6 +118,16 @@ Parameters:
"path": "brightbox", "path": "brightbox",
"updated_at": "2013-09-30T13:46:02Z" "updated_at": "2013-09-30T13:46:02Z"
}, },
"permissions": {
"project_access": {
"access_level": 10,
"notification_level": 3
},
"group_access": {
"access_level": 50,
"notification_level": 3
}
},
"archived": false, "archived": false,
"avatar_url": null "avatar_url": null
} }
......
...@@ -25,7 +25,7 @@ module API ...@@ -25,7 +25,7 @@ module API
@projects = current_user.authorized_projects @projects = current_user.authorized_projects
@projects = filter_projects(@projects) @projects = filter_projects(@projects)
@projects = paginate @projects @projects = paginate @projects
present @projects, with: Entities::Project present @projects, with: Entities::ProjectWithAccess, user: current_user
end end
# Get an owned projects list for authenticated user # Get an owned projects list for authenticated user
...@@ -36,7 +36,7 @@ module API ...@@ -36,7 +36,7 @@ module API
@projects = current_user.owned_projects @projects = current_user.owned_projects
@projects = filter_projects(@projects) @projects = filter_projects(@projects)
@projects = paginate @projects @projects = paginate @projects
present @projects, with: Entities::Project present @projects, with: Entities::ProjectWithAccess, user: current_user
end end
# Gets starred project for the authenticated user # Gets starred project for the authenticated user
...@@ -59,7 +59,7 @@ module API ...@@ -59,7 +59,7 @@ module API
@projects = Project.all @projects = Project.all
@projects = filter_projects(@projects) @projects = filter_projects(@projects)
@projects = paginate @projects @projects = paginate @projects
present @projects, with: Entities::Project present @projects, with: Entities::ProjectWithAccess, user: current_user
end end
# Get a single project # Get a single project
......
...@@ -131,6 +131,7 @@ describe API::API, api: true do ...@@ -131,6 +131,7 @@ describe API::API, api: true do
expect(json_response).to satisfy do |response| expect(json_response).to satisfy do |response|
response.one? do |entry| response.one? do |entry|
entry.has_key?('permissions') &&
entry['name'] == project.name && entry['name'] == project.name &&
entry['owner']['username'] == user.username entry['owner']['username'] == user.username
end end
...@@ -382,6 +383,18 @@ describe API::API, api: true do ...@@ -382,6 +383,18 @@ describe API::API, api: true do
end end
describe 'permissions' do describe 'permissions' do
context 'all projects' do
it 'Contains permission information' do
project.team << [user, :master]
get api("/projects", user)
expect(response.status).to eq(200)
expect(json_response.first['permissions']['project_access']['access_level']).
to eq(Gitlab::Access::MASTER)
expect(json_response.first['permissions']['group_access']).to be_nil
end
end
context 'personal project' do context 'personal project' do
it 'Sets project access and returns 200' do it 'Sets project access and returns 200' do
project.team << [user, :master] project.team << [user, :master]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment