Role based custom queries (#1019).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11994 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -28,6 +28,24 @@ class QueryTest < ActiveSupport::TestCase
|
||||
:projects_trackers,
|
||||
:custom_fields_trackers
|
||||
|
||||
def test_query_with_roles_visibility_should_validate_roles
|
||||
set_language_if_valid 'en'
|
||||
query = IssueQuery.new(:name => 'Query', :visibility => IssueQuery::VISIBILITY_ROLES)
|
||||
assert !query.save
|
||||
assert_include "Roles can't be blank", query.errors.full_messages
|
||||
query.role_ids = [1, 2]
|
||||
assert query.save
|
||||
end
|
||||
|
||||
def test_changing_roles_visibility_should_clear_roles
|
||||
query = IssueQuery.create!(:name => 'Query', :visibility => IssueQuery::VISIBILITY_ROLES, :role_ids => [1, 2])
|
||||
assert_equal 2, query.roles.count
|
||||
|
||||
query.visibility = IssueQuery::VISIBILITY_PUBLIC
|
||||
query.save!
|
||||
assert_equal 0, query.roles.count
|
||||
end
|
||||
|
||||
def test_available_filters_should_be_ordered
|
||||
set_language_if_valid 'en'
|
||||
query = IssueQuery.new
|
||||
@@ -1089,6 +1107,54 @@ class QueryTest < ActiveSupport::TestCase
|
||||
assert !query_ids.include?(7), 'public query on private project was visible'
|
||||
end
|
||||
|
||||
def test_query_with_public_visibility_should_be_visible_to_anyone
|
||||
q = IssueQuery.create!(:name => 'Query', :visibility => IssueQuery::VISIBILITY_PUBLIC)
|
||||
|
||||
assert q.visible?(User.anonymous)
|
||||
assert IssueQuery.visible(User.anonymous).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(7))
|
||||
assert IssueQuery.visible(User.find(7)).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(2))
|
||||
assert IssueQuery.visible(User.find(2)).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(1))
|
||||
assert IssueQuery.visible(User.find(1)).find_by_id(q.id)
|
||||
end
|
||||
|
||||
def test_query_with_roles_visibility_should_be_visible_to_user_with_role
|
||||
q = IssueQuery.create!(:name => 'Query', :visibility => IssueQuery::VISIBILITY_ROLES, :role_ids => [1,2])
|
||||
|
||||
assert !q.visible?(User.anonymous)
|
||||
assert_nil IssueQuery.visible(User.anonymous).find_by_id(q.id)
|
||||
|
||||
assert !q.visible?(User.find(7))
|
||||
assert_nil IssueQuery.visible(User.find(7)).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(2))
|
||||
assert IssueQuery.visible(User.find(2)).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(1))
|
||||
assert IssueQuery.visible(User.find(1)).find_by_id(q.id)
|
||||
end
|
||||
|
||||
def test_query_with_private_visibility_should_be_visible_to_owner
|
||||
q = IssueQuery.create!(:name => 'Query', :visibility => IssueQuery::VISIBILITY_PRIVATE, :user => User.find(7))
|
||||
|
||||
assert !q.visible?(User.anonymous)
|
||||
assert_nil IssueQuery.visible(User.anonymous).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(7))
|
||||
assert IssueQuery.visible(User.find(7)).find_by_id(q.id)
|
||||
|
||||
assert !q.visible?(User.find(2))
|
||||
assert_nil IssueQuery.visible(User.find(2)).find_by_id(q.id)
|
||||
|
||||
assert q.visible?(User.find(1))
|
||||
assert_nil IssueQuery.visible(User.find(1)).find_by_id(q.id)
|
||||
end
|
||||
|
||||
test "#available_filters should include users of visible projects in cross-project view" do
|
||||
users = IssueQuery.new.available_filters["assigned_to_id"]
|
||||
assert_not_nil users
|
||||
|
||||
Reference in New Issue
Block a user