Ability to close projects (read-only) (#3640).

A new permission (Close/reopen project) is available to give non-admin users the ability to close their projects.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9883 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-06-25 17:49:35 +00:00
parent 5961a1e70d
commit ac56c0c99c
21 changed files with 213 additions and 42 deletions

View File

@@ -380,6 +380,21 @@ class ProjectsControllerTest < ActionController::TestCase
assert_template 'settings'
end
def test_settings_should_be_denied_for_member_on_closed_project
Project.find(1).close
@request.session[:user_id] = 2 # manager
get :settings, :id => 1
assert_response 403
end
def test_settings_should_be_denied_for_anonymous_on_closed_project
Project.find(1).close
get :settings, :id => 1
assert_response 302
end
def test_update
@request.session[:user_id] = 2 # manager
post :update, :id => 1, :project => {:name => 'Test changed name',
@@ -397,6 +412,23 @@ class ProjectsControllerTest < ActionController::TestCase
assert_error_tag :content => /name can't be blank/i
end
def test_update_should_be_denied_for_member_on_closed_project
Project.find(1).close
@request.session[:user_id] = 2 # manager
post :update, :id => 1, :project => {:name => 'Closed'}
assert_response 403
assert_equal 'eCookbook', Project.find(1).name
end
def test_update_should_be_denied_for_anonymous_on_closed_project
Project.find(1).close
post :update, :id => 1, :project => {:name => 'Closed'}
assert_response 302
assert_equal 'eCookbook', Project.find(1).name
end
def test_modules
@request.session[:user_id] = 2
Project.find(1).enabled_module_names = ['issue_tracking', 'news']
@@ -444,6 +476,21 @@ class ProjectsControllerTest < ActionController::TestCase
assert Project.find(1).active?
end
def test_close
@request.session[:user_id] = 2
post :close, :id => 1
assert_redirected_to '/projects/ecookbook'
assert_equal Project::STATUS_CLOSED, Project.find(1).status
end
def test_reopen
Project.find(1).close
@request.session[:user_id] = 2
post :reopen, :id => 1
assert_redirected_to '/projects/ecookbook'
assert Project.find(1).active?
end
def test_project_breadcrumbs_should_be_limited_to_3_ancestors
CustomField.delete_all
parent = nil