Browse Source

Fixed that non-default identifier-less git repositories are undeletable (#19260).

Patch by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@14050 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/3.1.0
Jean-Philippe Lang 9 years ago
parent
commit
9ea438720f
2 changed files with 29 additions and 1 deletions
  1. 0
    1
      app/models/repository.rb
  2. 29
    0
      test/unit/repository_git_test.rb

+ 0
- 1
app/models/repository.rb View File

@@ -38,7 +38,6 @@ class Repository < ActiveRecord::Base

validates_length_of :password, :maximum => 255, :allow_nil => true
validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true
validates_presence_of :identifier, :unless => Proc.new { |r| r.is_default? || r.set_as_default? }
validates_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true
validates_exclusion_of :identifier, :in => %w(browse show entry raw changes annotate diff statistics graph revisions revision)
# donwcase letters, digits, dashes, underscores but not digits only

+ 29
- 0
test/unit/repository_git_test.rb View File

@@ -49,6 +49,35 @@ class RepositoryGitTest < ActiveSupport::TestCase
assert @repository
end

def test_nondefault_repo_with_blank_identifier_destruction
repo1 = Repository::Git.new(
:project => @project,
:url => REPOSITORY_PATH,
:identifier => '',
:is_default => true
)
assert repo1.save
repo1.fetch_changesets

repo2 = Repository::Git.new(
:project => @project,
:url => REPOSITORY_PATH,
:identifier => 'repo2',
:is_default => true
)
assert repo2.save
repo2.fetch_changesets

repo1.reload
repo2.reload
assert !repo1.is_default?
assert repo2.is_default?

assert_difference 'Repository.count', -1 do
repo1.destroy
end
end

def test_blank_path_to_repository_error_message
set_language_if_valid 'en'
repo = Repository::Git.new(

Loading…
Cancel
Save