Defect #30121 ยป 30121-api-will-return-trackers-with-role-based.patch
| app/helpers/projects_helper.rb | ||
|---|---|---|
| 115 | 115 | |
| 116 | 116 |
def render_api_includes(project, api) |
| 117 | 117 |
api.array :trackers do |
| 118 |
project.trackers.each do |tracker|
|
|
| 118 |
project.rolled_up_trackers(false).visible.each do |tracker|
|
|
| 119 | 119 |
api.tracker(:id => tracker.id, :name => tracker.name) |
| 120 | 120 |
end |
| 121 | 121 |
end if include_in_api_response?('trackers')
|
| test/integration/api_test/projects_test.rb | ||
|---|---|---|
| 130 | 130 |
assert_select 'trackers[type=array] tracker[id="2"][name="Feature request"]' |
| 131 | 131 |
end |
| 132 | 132 | |
| 133 |
test "GET /projects/:id.xml with include=trackers should return trackers based on role-based permissioning" do |
|
| 134 |
project = Project.find(1) |
|
| 135 |
assert_equal [1, 2, 3], project.tracker_ids |
|
| 136 | ||
| 137 |
role = Role.find(3) # Reporter |
|
| 138 |
role.permissions_all_trackers = {'view_issues' => '0'}
|
|
| 139 |
role.permissions_tracker_ids = {'view_issues' => ['1']}
|
|
| 140 |
role.save! |
|
| 141 | ||
| 142 |
user = User.find_by_login('jsmith')
|
|
| 143 |
member = project.members.detect{|m| m.user == user}
|
|
| 144 |
member.roles.delete_all |
|
| 145 |
member.role_ids = [role.id] |
|
| 146 |
member.roles.reload |
|
| 147 |
assert_equal [role.id], member.role_ids |
|
| 148 | ||
| 149 |
get '/projects/1.xml?include=trackers', :headers => credentials(user.login) |
|
| 150 |
assert_response :success |
|
| 151 |
assert_equal 'application/xml', @response.content_type |
|
| 152 | ||
| 153 |
assert_select 'trackers[type=array]' do |
|
| 154 |
assert_select 'tracker[id="1"]', :count => 1 |
|
| 155 |
assert_select 'tracker[id="2"]', :count => 0 |
|
| 156 |
assert_select 'tracker[id="3"]', :count => 0 |
|
| 157 |
end |
|
| 158 |
end |
|
| 159 | ||
| 133 | 160 |
test "GET /projects/:id.xml with include=enabled_modules should return enabled modules" do |
| 134 | 161 |
get '/projects/1.xml?include=enabled_modules' |
| 135 | 162 |
assert_response :success |