]> source.dussan.org Git - redmine.git/commitdiff
Make robust Redmine::Helpers::URL#uri_with_safe_scheme? (#27114)
authorGo MAEDA <maeda@farend.jp>
Sun, 26 Nov 2017 03:44:37 +0000 (03:44 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 26 Nov 2017 03:44:37 +0000 (03:44 +0000)
Patch by okkez.

git-svn-id: http://svn.redmine.org/redmine/trunk@17035 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/helpers/url.rb
test/unit/lib/redmine/helpers/url_test.rb [new file with mode: 0644]

index 9dd8a711453e9b205561bb1390b2d56ceb433b97..8e13ab291ec2e61d7920dc80bc403b201187ef1e 100644 (file)
@@ -27,7 +27,7 @@ module Redmine
     
         # Other URLs need to be parsed
         schemes.include? URI.parse(uri).scheme
-      rescue URI::InvalidURIError
+      rescue URI::Error
         false
       end
     end
diff --git a/test/unit/lib/redmine/helpers/url_test.rb b/test/unit/lib/redmine/helpers/url_test.rb
new file mode 100644 (file)
index 0000000..46e2750
--- /dev/null
@@ -0,0 +1,17 @@
+require File.expand_path('../../../../../test_helper', __FILE__)
+
+class URLTest < ActiveSupport::TestCase
+  include Redmine::Helpers::URL
+
+  def test_uri_with_safe_scheme
+    assert uri_with_safe_scheme?("http://example.com/")
+    assert uri_with_safe_scheme?("https://example.com/")
+    assert uri_with_safe_scheme?("ftp://example.com/index.html")
+    assert uri_with_safe_scheme?("mailto:root@example.com")
+  end
+
+  def test_uri_with_safe_scheme_invalid_component
+    assert_not uri_with_safe_scheme?("httpx://example.com/")
+    assert_not uri_with_safe_scheme?("mailto:root@")
+  end
+end