diff --git a/app/models/repository.rb b/app/models/repository.rb index 229c8dae4..8b1f8d0af 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -20,6 +20,16 @@ class Repository < ActiveRecord::Base has_many :changesets, :dependent => :destroy, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets + # Removes leading and trailing whitespace + def url=(arg) + write_attribute(:url, arg ? arg.to_s.strip : nil) + end + + # Removes leading and trailing whitespace + def root_url=(arg) + write_attribute(:root_url, arg ? arg.to_s.strip : nil) + end + def scm @scm ||= self.scm_adapter.new url, root_url, login, password update_attribute(:root_url, @scm.root_url) if root_url.blank? @@ -88,4 +98,13 @@ class Repository < ActiveRecord::Base rescue nil end + + private + + def before_save + # Strips url and root_url + url.strip! + root_url.strip! + true + end end diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 21fb00b80..7764ee04a 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -98,4 +98,13 @@ class RepositoryTest < Test::Unit::TestCase assert_not_equal( comment, changeset.comments ) assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments ) end + + def test_for_urls_strip + repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository', + :root_url => 'foo ') + assert repository.save + repository.reload + assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url + assert_equal 'foo', repository.root_url + end end