diff options
author | akira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-04 04:02:16 +0000 |
---|---|---|
committer | akira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-04 04:02:16 +0000 |
commit | ef5883c016d02059beff0f7c5711e54a35318b32 (patch) | |
tree | 0917473376a6608a91af0361e0c15a25c8ad10c2 /test/uri/test_mailto.rb | |
parent | d6f70951dbf2dcdec6515ee783de539d739875dd (diff) | |
download | ruby-ef5883c016d02059beff0f7c5711e54a35318b32.tar.gz |
* test/uri/* (6 files): added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/uri/test_mailto.rb')
-rw-r--r-- | test/uri/test_mailto.rb | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb new file mode 100644 index 0000000000..4fd1476625 --- /dev/null +++ b/test/uri/test_mailto.rb @@ -0,0 +1,139 @@ +# +# $Id$ +# +# Copyright (c) 2001 akira yamada <akira@ruby-lang.org> +# You can redistribute it and/or modify it under the same term as Ruby. +# + +require 'runit/testcase' +require 'runit/cui/testrunner' +require 'uri/mailto' +module URI + class Generic + def to_ary + component_ary + end + end +end + +class TestMailTo < RUNIT::TestCase + def setup + @u = URI::MailTo + end + + def teardown + end + + def test_build + ok = [] + bad = [] + + # RFC2368, 6. Examples + # mailto:chris@example.com + ok << ["mailto:chris@example.com"] + ok[-1] << ["chris@example.com", nil] + ok[-1] << {:to => "chris@example.com"} + + # mailto:infobot@example.com?subject=current-issue + ok << ["mailto:infobot@example.com?subject=current-issue"] + ok[-1] << ["infobot@example.com", ["subject=current-issue"]] + ok[-1] << {:to => "infobot@example.com", + :headers => ["subject=current-issue"]} + + # mailto:infobot@example.com?body=send%20current-issue + ok << ["mailto:infobot@example.com?body=send%20current-issue"] + ok[-1] << ["infobot@example.com", ["body=send%20current-issue"]] + ok[-1] << {:to => "infobot@example.com", + :headers => ["body=send%20current-issue"]} + + # mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index + ok << ["mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"] + ok[-1] << ["infobot@example.com", + ["body=send%20current-issue%0D%0Asend%20index"]] + ok[-1] << {:to => "infobot@example.com", + :headers => ["body=send%20current-issue%0D%0Asend%20index"]} + + # mailto:foobar@example.com?In-Reply-To=%3c3469A91.D10AF4C@example.com + ok << ["mailto:foobar@example.com?In-Reply-To=%3c3469A91.D10AF4C@example.com"] + ok[-1] << ["foobar@example.com", + ["In-Reply-To=%3c3469A91.D10AF4C@example.com"]] + ok[-1] << {:to => "foobar@example.com", + :headers => ["In-Reply-To=%3c3469A91.D10AF4C@example.com"]} + + # mailto:majordomo@example.com?body=subscribe%20bamboo-l + ok << ["mailto:majordomo@example.com?body=subscribe%20bamboo-l"] + ok[-1] << ["majordomo@example.com", ["body=subscribe%20bamboo-l"]] + ok[-1] << {:to => "majordomo@example.com", + :headers => ["body=subscribe%20bamboo-l"]} + + # mailto:joe@example.com?cc=bob@example.com&body=hello + ok << ["mailto:joe@example.com?cc=bob@example.com&body=hello"] + ok[-1] << ["joe@example.com", ["cc=bob@example.com", "body=hello"]] + ok[-1] << {:to => "joe@example.com", + :headers => ["cc=bob@example.com", "body=hello"]} + + # mailto:?to=joe@example.com&cc=bob@example.com&body=hello + ok << ["mailto:?to=joe@example.com&cc=bob@example.com&body=hello"] + 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"]} + + # mailto:gorby%25kremvax@example.com + ok << ["mailto:gorby%25kremvax@example.com"] + ok[-1] << ["gorby%25kremvax@example.com", nil] + ok[-1] << {:to => "gorby%25kremvax@example.com"} + + # mailto:unlikely%3Faddress@example.com?blat=foop + ok << ["mailto:unlikely%3Faddress@example.com?blat=foop"] + ok[-1] << ["unlikely%3Faddress@example.com", ["blat=foop"]] + ok[-1] << {:to => "unlikely%3Faddress@example.com", + :headers => ["blat=foop"]} + + ok_all = ok.flatten.join("\0") + + # mailto:joe@example.com?cc=bob@example.com?body=hello ; WRONG! + bad << ["joe@example.com", ["cc=bob@example.com?body=hello"]] + + # mailto:javascript:alert() + bad << ["javascript:alert()", []] + + # '=' which is in hname or hvalue is wrong. + 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) + end + + bad.each do |x| + assert_exception(URI::InvalidComponentError) { + @u.build(x) + } + end + + assert_equal(ok_all, ok.flatten.join("\0")) + end + + def test_select + u = URI.parse('mailto:joe@example.com?cc=bob@example.com&body=hello') + assert_equal(u.to_ary, u.select(*u.component)) + assert_exception(ArgumentError) do + u.select(:scheme, :host, :not_exist, :port) + end + end +end + +if $0 == __FILE__ + if ARGV.size == 0 + suite = TestMailTo.suite + else + suite = RUNIT::TestSuite.new + ARGV.each do |testmethod| + suite.add_test(TestMailTo.new(testmethod)) + end + end + RUNIT::CUI::TestRunner.run(suite) +end |