Skip to content
This repository has been archived by the owner on Nov 19, 2020. It is now read-only.

Commit

Permalink
Merged r16286 (#24307).
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.redmine.org/redmine/branches/3.3-stable@16296 e93f8b46-1217-0410-a6f0-8f06a7374b81
  • Loading branch information
jplang committed Jan 29, 2017
1 parent 46e1139 commit b92d787
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
5 changes: 4 additions & 1 deletion extra/svn/Redmine.pm
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ sub RedmineDSN {
WHERE
users.login=?
AND projects.identifier=?
AND EXISTS (SELECT 1 FROM enabled_modules em WHERE em.project_id = projects.id AND em.name = 'repository')
AND users.type='User'
AND users.status=1
AND (
Expand Down Expand Up @@ -390,7 +391,9 @@ sub is_public_project {

my $dbh = connect_database($r);
my $sth = $dbh->prepare(
"SELECT is_public FROM projects WHERE projects.identifier = ? AND projects.status <> 9;"
"SELECT is_public FROM projects
WHERE projects.identifier = ? AND projects.status <> 9
AND EXISTS (SELECT 1 FROM enabled_modules em WHERE em.project_id = projects.id AND em.name = 'repository');"
);

$sth->execute($project_id);
Expand Down
25 changes: 24 additions & 1 deletion test/extra/redmine_pm/repository_subversion_test_pm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
require 'tmpdir'

class RedminePmTest::RepositorySubversionTest < RedminePmTest::TestCase
fixtures :projects, :users, :members, :roles, :member_roles, :auth_sources
fixtures :projects, :users, :members, :roles, :member_roles, :auth_sources, :enabled_modules

SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"

Expand All @@ -38,6 +38,11 @@ def test_anonymous_read_on_public_repo_without_permission_should_fail
assert_failure "ls", svn_url
end

def test_anonymous_read_on_public_project_with_module_disabled_should_fail
Project.find(1).disable_module! :repository
assert_failure "ls", svn_url
end

def test_anonymous_read_on_private_repo_should_fail
Project.find(1).update_attribute :is_public, false
assert_failure "ls", svn_url
Expand Down Expand Up @@ -128,6 +133,15 @@ def test_member_read_on_private_repo_without_permission_should_fail
end
end

def test_member_read_on_private_repo_with_module_disabled_should_fail
Role.find(2).add_permission! :browse_repository
Project.find(1).update_attribute :is_public, false
Project.find(1).disable_module! :repository
with_credentials "dlopper", "foo" do
assert_failure "ls", svn_url
end
end

def test_member_commit_on_public_repo_with_permission_should_succeed
Role.find(2).add_permission! :commit_access
with_credentials "dlopper", "foo" do
Expand Down Expand Up @@ -158,6 +172,15 @@ def test_member_commit_on_private_repo_without_permission_should_fail
end
end

def test_member_commit_on_private_repo_with_module_disabled_should_fail
Role.find(2).add_permission! :commit_access
Project.find(1).update_attribute :is_public, false
Project.find(1).disable_module! :repository
with_credentials "dlopper", "foo" do
assert_failure "mkdir --message Creating_a_directory", svn_url(random_filename)
end
end

def test_invalid_credentials_should_fail
Project.find(1).update_attribute :is_public, false
with_credentials "dlopper", "foo" do
Expand Down

0 comments on commit b92d787

Please sign in to comment.