@@ -239,7 +239,7 sub RedmineDSN { | |||||
239 | my ($self, $parms, $arg) = @_; |
|
239 | my ($self, $parms, $arg) = @_; | |
240 | $self->{RedmineDSN} = $arg; |
|
240 | $self->{RedmineDSN} = $arg; | |
241 | my $query = "SELECT |
|
241 | my $query = "SELECT | |
242 | hashed_password, salt, auth_source_id, permissions |
|
242 | users.hashed_password, users.salt, users.auth_source_id, roles.permissions, projects.status | |
243 | FROM projects, users, roles |
|
243 | FROM projects, users, roles | |
244 | WHERE |
|
244 | WHERE | |
245 | users.login=? |
|
245 | users.login=? | |
@@ -381,7 +381,7 sub is_public_project { | |||||
381 |
|
381 | |||
382 | my $dbh = connect_database($r); |
|
382 | my $dbh = connect_database($r); | |
383 | my $sth = $dbh->prepare( |
|
383 | my $sth = $dbh->prepare( | |
384 | "SELECT is_public FROM projects WHERE projects.identifier = ?;" |
|
384 | "SELECT is_public FROM projects WHERE projects.identifier = ? AND projects.status <> 9;" | |
385 | ); |
|
385 | ); | |
386 |
|
386 | |||
387 | $sth->execute($project_id); |
|
387 | $sth->execute($project_id); | |
@@ -460,7 +460,10 sub is_member { | |||||
460 | $sth->execute($redmine_user, $project_id); |
|
460 | $sth->execute($redmine_user, $project_id); | |
461 |
|
461 | |||
462 | my $ret; |
|
462 | my $ret; | |
463 | while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) { |
|
463 | while (my ($hashed_password, $salt, $auth_source_id, $permissions, $project_status) = $sth->fetchrow_array) { | |
|
464 | if ($project_status eq "9" || ($project_status ne "1" && $access_mode eq "W")) { | |||
|
465 | last; | |||
|
466 | } | |||
464 |
|
467 | |||
465 | unless ($auth_source_id) { |
|
468 | unless ($auth_source_id) { | |
466 | my $method = $r->method; |
|
469 | my $method = $r->method; |
@@ -168,6 +168,49 class RedminePmTest::RepositorySubversionTest < RedminePmTest::TestCase | |||||
168 | end |
|
168 | end | |
169 | end |
|
169 | end | |
170 |
|
170 | |||
|
171 | def test_read_on_archived_projects_should_fail | |||
|
172 | Project.find(1).update_attribute :status, Project::STATUS_ARCHIVED | |||
|
173 | assert_failure "ls", svn_url | |||
|
174 | end | |||
|
175 | ||||
|
176 | def test_read_on_archived_private_projects_should_fail | |||
|
177 | Project.find(1).update_attribute :status, Project::STATUS_ARCHIVED | |||
|
178 | Project.find(1).update_attribute :is_public, false | |||
|
179 | with_credentials "dlopper", "foo" do | |||
|
180 | assert_failure "ls", svn_url | |||
|
181 | end | |||
|
182 | end | |||
|
183 | ||||
|
184 | def test_read_on_closed_projects_should_succeed | |||
|
185 | Project.find(1).update_attribute :status, Project::STATUS_CLOSED | |||
|
186 | assert_success "ls", svn_url | |||
|
187 | end | |||
|
188 | ||||
|
189 | def test_read_on_closed_private_projects_should_succeed | |||
|
190 | Project.find(1).update_attribute :status, Project::STATUS_CLOSED | |||
|
191 | Project.find(1).update_attribute :is_public, false | |||
|
192 | with_credentials "dlopper", "foo" do | |||
|
193 | assert_success "ls", svn_url | |||
|
194 | end | |||
|
195 | end | |||
|
196 | ||||
|
197 | def test_commit_on_closed_projects_should_fail | |||
|
198 | Project.find(1).update_attribute :status, Project::STATUS_CLOSED | |||
|
199 | Role.find(2).add_permission! :commit_access | |||
|
200 | with_credentials "dlopper", "foo" do | |||
|
201 | assert_failure "mkdir --message Creating_a_directory", svn_url(random_filename) | |||
|
202 | end | |||
|
203 | end | |||
|
204 | ||||
|
205 | def test_commit_on_closed_private_projects_should_fail | |||
|
206 | Project.find(1).update_attribute :status, Project::STATUS_CLOSED | |||
|
207 | Project.find(1).update_attribute :is_public, false | |||
|
208 | Role.find(2).add_permission! :commit_access | |||
|
209 | with_credentials "dlopper", "foo" do | |||
|
210 | assert_failure "mkdir --message Creating_a_directory", svn_url(random_filename) | |||
|
211 | end | |||
|
212 | end | |||
|
213 | ||||
171 | if ldap_configured? |
|
214 | if ldap_configured? | |
172 | def test_user_with_ldap_auth_source_should_authenticate_with_ldap_credentials |
|
215 | def test_user_with_ldap_auth_source_should_authenticate_with_ldap_credentials | |
173 | ldap_user = User.new(:mail => 'example1@redmine.org', :firstname => 'LDAP', :lastname => 'user', :auth_source_id => 1) |
|
216 | ldap_user = User.new(:mail => 'example1@redmine.org', :firstname => 'LDAP', :lastname => 'user', :auth_source_id => 1) |
General Comments 0
You need to be logged in to leave comments.
Login now