Browse Source

Don't allow 2 repositories with blank identifier (#19400).

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

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

@@ -38,7 +38,7 @@ 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_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true
validates_uniqueness_of :identifier, :scope => :project_id
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
validates_format_of :identifier, :with => /\A(?!\d+$)[a-z0-9\-_]*\z/, :allow_blank => true

+ 18
- 0
test/unit/repository_test.rb View File

@@ -76,6 +76,24 @@ class RepositoryTest < ActiveSupport::TestCase
assert_equal repository, project.repository
end

def test_2_repositories_with_same_identifier_in_different_projects_should_be_valid
Repository::Subversion.create!(:project_id => 2, :identifier => 'foo', :url => 'file:///foo')
r = Repository::Subversion.new(:project_id => 3, :identifier => 'foo', :url => 'file:///bar')
assert r.save
end

def test_2_repositories_with_same_identifier_should_not_be_valid
Repository::Subversion.create!(:project_id => 3, :identifier => 'foo', :url => 'file:///foo')
r = Repository::Subversion.new(:project_id => 3, :identifier => 'foo', :url => 'file:///bar')
assert !r.save
end

def test_2_repositories_with_blank_identifier_should_not_be_valid
Repository::Subversion.create!(:project_id => 3, :identifier => '', :url => 'file:///foo')
r = Repository::Subversion.new(:project_id => 3, :identifier => '', :url => 'file:///bar')
assert !r.save
end

def test_first_repository_should_be_set_as_default
repository1 = Repository::Subversion.new(
:project => Project.find(3),

Loading…
Cancel
Save