Commit 928b7f3bff82c614b8b6e68be8ed51707927a8c6
1 parent
0ea0e542
Exists in
spb-stable
and in
3 other branches
Add tests for API project permissions info
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
2 changed files
with
26 additions
and
1 deletions
Show diff stats
lib/api/entities.rb
| @@ -181,7 +181,9 @@ module API | @@ -181,7 +181,9 @@ module API | ||
| 181 | end | 181 | end |
| 182 | 182 | ||
| 183 | expose :group_access, using: Entities::GroupAccess do |project, options| | 183 | expose :group_access, using: Entities::GroupAccess do |project, options| |
| 184 | - project.group.users_groups.find_by(user_id: options[:user].id) | 184 | + if project.group |
| 185 | + project.group.users_groups.find_by(user_id: options[:user].id) | ||
| 186 | + end | ||
| 185 | end | 187 | end |
| 186 | end | 188 | end |
| 187 | end | 189 | end |
spec/requests/api/projects_spec.rb
| @@ -259,6 +259,7 @@ describe API::API do | @@ -259,6 +259,7 @@ describe API::API do | ||
| 259 | 259 | ||
| 260 | describe "GET /projects/:id" do | 260 | describe "GET /projects/:id" do |
| 261 | before { project } | 261 | before { project } |
| 262 | + before { users_project } | ||
| 262 | 263 | ||
| 263 | it "should return a project by id" do | 264 | it "should return a project by id" do |
| 264 | get api("/projects/#{project.id}", user) | 265 | get api("/projects/#{project.id}", user) |
| @@ -284,6 +285,28 @@ describe API::API do | @@ -284,6 +285,28 @@ describe API::API do | ||
| 284 | get api("/projects/#{project.id}", other_user) | 285 | get api("/projects/#{project.id}", other_user) |
| 285 | response.status.should == 404 | 286 | response.status.should == 404 |
| 286 | end | 287 | end |
| 288 | + | ||
| 289 | + describe 'permissions' do | ||
| 290 | + context 'personal project' do | ||
| 291 | + before { get api("/projects/#{project.id}", user) } | ||
| 292 | + | ||
| 293 | + it { response.status.should == 200 } | ||
| 294 | + it { json_response['permissions']["project_access"]["access_level"].should == Gitlab::Access::MASTER } | ||
| 295 | + it { json_response['permissions']["group_access"].should be_nil } | ||
| 296 | + end | ||
| 297 | + | ||
| 298 | + context 'group project' do | ||
| 299 | + before do | ||
| 300 | + project2 = create(:project, group: create(:group)) | ||
| 301 | + project2.group.add_owner(user) | ||
| 302 | + get api("/projects/#{project2.id}", user) | ||
| 303 | + end | ||
| 304 | + | ||
| 305 | + it { response.status.should == 200 } | ||
| 306 | + it { json_response['permissions']["project_access"].should be_nil } | ||
| 307 | + it { json_response['permissions']["group_access"]["access_level"].should == Gitlab::Access::OWNER } | ||
| 308 | + end | ||
| 309 | + end | ||
| 287 | end | 310 | end |
| 288 | 311 | ||
| 289 | describe "GET /projects/:id/events" do | 312 | describe "GET /projects/:id/events" do |