summaryrefslogtreecommitdiffstats
path: root/test/functional
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-06-05 10:06:17 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-06-05 10:06:17 +0000
commit79df68e17fc09a4d8bc87cad8efb4bc31c085dcd (patch)
tree33b0e4d2bfa3e26b6d2fa28a35d91a2b659242c7 /test/functional
parent939a7137ef985647d34fdacadf419b313bcd9110 (diff)
downloadredmine-79df68e17fc09a4d8bc87cad8efb4bc31c085dcd.tar.gz
redmine-79df68e17fc09a4d8bc87cad8efb4bc31c085dcd.zip
Limit trackers for new issue to certain roles (#7839).
git-svn-id: http://svn.redmine.org/redmine/trunk@15464 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/issues_controller_test.rb42
-rw-r--r--test/functional/roles_controller_test.rb16
2 files changed, 58 insertions, 0 deletions
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index 32f9d8f11..8888cf712 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -1864,6 +1864,31 @@ class IssuesControllerTest < ActionController::TestCase
end
end
+ def test_new_should_propose_allowed_trackers
+ role = Role.find(1)
+ role.set_permission_trackers 'add_issues', [1, 3]
+ role.save!
+ @request.session[:user_id] = 2
+
+ get :new, :project_id => 1
+ assert_response :success
+ assert_select 'select[name=?]', 'issue[tracker_id]' do
+ assert_select 'option', 2
+ assert_select 'option[value="1"]'
+ assert_select 'option[value="3"]'
+ end
+ end
+
+ def test_new_without_allowed_trackers_should_respond_with_403
+ role = Role.find(1)
+ role.set_permission_trackers 'add_issues', []
+ role.save!
+ @request.session[:user_id] = 2
+
+ get :new, :project_id => 1
+ assert_response 403
+ end
+
def test_new_should_preselect_default_version
version = Version.generate!(:project_id => 1)
Project.find(1).update_attribute :default_version_id, version.id
@@ -2432,6 +2457,23 @@ class IssuesControllerTest < ActionController::TestCase
assert_nil issue.custom_field_value(cf2)
end
+ def test_create_should_ignore_unallowed_trackers
+ role = Role.find(1)
+ role.set_permission_trackers :add_issues, [3]
+ role.save!
+ @request.session[:user_id] = 2
+
+ issue = new_record(Issue) do
+ post :create, :project_id => 1, :issue => {
+ :tracker_id => 1,
+ :status_id => 1,
+ :subject => 'Test'
+ }
+ assert_response 302
+ end
+ assert_equal 3, issue.tracker_id
+ end
+
def test_post_create_with_watchers
@request.session[:user_id] = 2
ActionMailer::Base.deliveries.clear
diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb
index 8ce469395..915b658c9 100644
--- a/test/functional/roles_controller_test.rb
+++ b/test/functional/roles_controller_test.rb
@@ -132,6 +132,22 @@ class RolesControllerTest < ActionController::TestCase
assert_equal [:edit_project], role.permissions
end
+ def test_update_trackers_permissions
+ put :update, :id => 1, :role => {
+ :permissions_all_trackers => {'add_issues' => '0'},
+ :permissions_tracker_ids => {'add_issues' => ['1', '3', '']}
+ }
+
+ assert_redirected_to '/roles'
+ role = Role.find(1)
+
+ assert_equal({'add_issues' => '0'}, role.permissions_all_trackers)
+ assert_equal({'add_issues' => ['1', '3']}, role.permissions_tracker_ids)
+
+ assert_equal false, role.permissions_all_trackers?(:add_issues)
+ assert_equal [1, 3], role.permissions_tracker_ids(:add_issues).sort
+ end
+
def test_update_with_failure
put :update, :id => 1, :role => {:name => ''}
assert_response :success