diff --git a/lib/redmine/helpers/url.rb b/lib/redmine/helpers/url.rb index 9dd8a7114..8e13ab291 100644 --- a/lib/redmine/helpers/url.rb +++ b/lib/redmine/helpers/url.rb @@ -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 index 000000000..46e275004 --- /dev/null +++ b/test/unit/lib/redmine/helpers/url_test.rb @@ -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