From 5eca64f814229c7c2e6d00534c99f182ff0ad128 Mon Sep 17 00:00:00 2001 From: Chris Heisterkamp Date: Thu, 16 Jun 2016 12:29:58 -0700 Subject: [PATCH] Fix URI --- lib/uri/mailto.rb | 3 +++ test/uri/test_mailto.rb | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/uri/mailto.rb b/lib/uri/mailto.rb index 495f939..7299550 100644 --- a/lib/uri/mailto.rb +++ b/lib/uri/mailto.rb @@ -136,6 +136,9 @@ def initialize(*arg) @to = nil @headers = [] + # The RFC3986 parser does not normally populate opaque + @opaque = "?#{@query}" if @query && !@opaque + unless @opaque raise InvalidComponentError, "missing opaque part for mailto URL" diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index 4e3b042..a6490ad 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -74,7 +74,7 @@ def test_build ok[-1] << [nil, ["to=joe@example.com", "cc=bob@example.com", "body=hello"]] ok[-1] << {:headers => ["to=joe@example.com", - "cc=bob@example.com", "body=hello"]} + "cc=bob@example.com", "body=hello"]} # mailto:gorby%25kremvax@example.com ok << ["mailto:gorby%25kremvax@example.com"] @@ -112,15 +112,17 @@ def test_build bad << ["foo@example.jp?subject=1+1=2", []] ok.each do |x| - assert_equal(x[0], - @u.build(x[1]).to_s) - assert_equal(x[0], - @u.build(x[2]).to_s) + assert_equal(x[0], URI.parse(x[0]).to_s) + assert_equal(x[0], @u.build(x[1]).to_s) + assert_equal(x[0], @u.build(x[2]).to_s) end bad.each do |x| + assert_raise(URI::InvalidURIError) { + URI.parse(x) + } assert_raise(URI::InvalidComponentError) { - @u.build(x) + @u.build(x) } end -- 2.8.1