diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-19 13:56:23 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-19 13:56:23 +0000 |
commit | 718ceb5476117f6280e428d28658296f808f90fe (patch) | |
tree | c19a7839b4693891a770c0c6f7fbd90a2cabcd48 /test | |
parent | ffffc0ce7d21756729f3b2690e39a4f2ff6300f4 (diff) | |
download | ruby-718ceb5476117f6280e428d28658296f808f90fe.tar.gz |
* lib/net/imap.rb (flag_list): untaint strings to intern in the safe
level 1.
* lib/net/imap.rb (max_flag_count=): new methods to set the max
number of flags interned to symbols.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/net/imap/test_imap_response_parser.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/net/imap/test_imap_response_parser.rb b/test/net/imap/test_imap_response_parser.rb new file mode 100644 index 0000000000..5c122dd59d --- /dev/null +++ b/test/net/imap/test_imap_response_parser.rb @@ -0,0 +1,54 @@ +require "net/imap" +require "test/unit" + +class IMAPResponseParserTest < Test::Unit::TestCase + def setup + @do_not_reverse_lookup = Socket.do_not_reverse_lookup + Socket.do_not_reverse_lookup = true + @max_flag_count = Net::IMAP.max_flag_count + Net::IMAP.max_flag_count = 3 + end + + def teardown + Socket.do_not_reverse_lookup = @do_not_reverse_lookup + Net::IMAP.max_flag_count = @max_flag_count + end + + def test_flag_list_safe + parser = Net::IMAP::ResponseParser.new + response = lambda { + $SAFE = 1 + parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* LIST (\\HasChildren) "." "INBOX" +EOF + }.call + assert_equal [:Haschildren], response.data.attr + end + + def test_flag_list_too_many_flags + parser = Net::IMAP::ResponseParser.new + assert_nothing_raised do + 3.times do |i| + parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* LIST (\\Foo#{i}) "." "INBOX" +EOF + end + end + assert_raise(Net::IMAP::FlagCountError) do + parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* LIST (\\Foo3) "." "INBOX" +EOF + end + end + + def test_flag_list_many_same_flags + parser = Net::IMAP::ResponseParser.new + assert_nothing_raised do + 100.times do + parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* LIST (\\Foo) "." "INBOX" +EOF + end + end + end +end |