Export permissions report to CSV (#13767).

Patch by David Escala and Yuichi HARADA.


git-svn-id: http://svn.redmine.org/redmine/trunk@20778 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2021-03-12 05:29:50 +00:00
parent 9f73af6cb3
commit cf7a401b89
4 changed files with 71 additions and 1 deletions

View File

@@ -22,6 +22,8 @@ require File.expand_path('../../test_helper', __FILE__)
class RolesControllerTest < Redmine::ControllerTest
fixtures :roles, :users, :members, :member_roles, :workflows, :trackers
include Redmine::I18n
def setup
User.current = nil
@request.session[:user_id] = 1 # admin
@@ -270,6 +272,36 @@ class RolesControllerTest < Redmine::ControllerTest
assert_select 'input[name=?][type=checkbox][value=delete_issues]:not([checked])', 'permissions[3][]'
end
def test_permissions_csv_export
get(
:permissions,
:params => {
:format => 'csv'
}
)
assert_response :success
assert_equal 'text/csv', @response.media_type
lines = @response.body.chomp.split("\n")
# Number of lines
permissions = Redmine::AccessControl.permissions - Redmine::AccessControl.public_permissions
permissions = permissions.group_by{|p| p.project_module.to_s}.sort.collect(&:last).flatten
assert_equal permissions.size + 1, lines.size
# Header
assert_equal 'Module,Permissions,Manager,Developer,Reporter,Non member,Anonymous', lines.first
# Details
to_test = {
:add_project => '"",Create project,Yes,No,No,No,""',
:add_issue_notes => 'Issue tracking,Add notes,Yes,Yes,Yes,Yes,Yes',
:manage_wiki => 'Wiki,Manage wiki,Yes,No,No,"",""'
}
to_test.each do |name, expected|
index = permissions.find_index {|p| p.name == name}
assert_not_nil index
assert_equal expected, lines[index + 1]
end
end
def test_update_permissions
post(
:update_permissions,