mirror of
https://github.com/redmine/redmine.git
synced 2025-11-08 06:15:59 +01:00
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
This commit is contained in:
@@ -38,7 +38,6 @@ class Repository < ActiveRecord::Base
|
|||||||
|
|
||||||
validates_length_of :password, :maximum => 255, :allow_nil => true
|
validates_length_of :password, :maximum => 255, :allow_nil => true
|
||||||
validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => 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_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)
|
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
|
# donwcase letters, digits, dashes, underscores but not digits only
|
||||||
|
|||||||
@@ -49,6 +49,35 @@ class RepositoryGitTest < ActiveSupport::TestCase
|
|||||||
assert @repository
|
assert @repository
|
||||||
end
|
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
|
def test_blank_path_to_repository_error_message
|
||||||
set_language_if_valid 'en'
|
set_language_if_valid 'en'
|
||||||
repo = Repository::Git.new(
|
repo = Repository::Git.new(
|
||||||
|
|||||||
Reference in New Issue
Block a user