summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/repository.rb19
-rw-r--r--test/unit/repository_test.rb9
2 files changed, 28 insertions, 0 deletions
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