mechanize 2.0.1 → 2.1.pre.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mechanize might be problematic. Click here for more details.

Files changed (148) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG.rdoc +82 -0
  3. data/EXAMPLES.rdoc +1 -1
  4. data/FAQ.rdoc +9 -9
  5. data/Manifest.txt +35 -48
  6. data/README.rdoc +2 -1
  7. data/Rakefile +16 -3
  8. data/lib/mechanize.rb +809 -392
  9. data/lib/mechanize/content_type_error.rb +10 -11
  10. data/lib/mechanize/cookie.rb +193 -60
  11. data/lib/mechanize/cookie_jar.rb +39 -86
  12. data/lib/mechanize/download.rb +59 -0
  13. data/lib/mechanize/element_matcher.rb +1 -0
  14. data/lib/mechanize/file.rb +61 -76
  15. data/lib/mechanize/file_saver.rb +37 -35
  16. data/lib/mechanize/form.rb +475 -410
  17. data/lib/mechanize/form/button.rb +4 -7
  18. data/lib/mechanize/form/check_box.rb +10 -9
  19. data/lib/mechanize/form/field.rb +52 -42
  20. data/lib/mechanize/form/file_upload.rb +17 -19
  21. data/lib/mechanize/form/hidden.rb +3 -0
  22. data/lib/mechanize/form/image_button.rb +15 -16
  23. data/lib/mechanize/form/keygen.rb +34 -0
  24. data/lib/mechanize/form/multi_select_list.rb +20 -9
  25. data/lib/mechanize/form/option.rb +48 -47
  26. data/lib/mechanize/form/radio_button.rb +52 -45
  27. data/lib/mechanize/form/reset.rb +3 -0
  28. data/lib/mechanize/form/select_list.rb +10 -6
  29. data/lib/mechanize/form/submit.rb +3 -0
  30. data/lib/mechanize/form/text.rb +3 -0
  31. data/lib/mechanize/form/textarea.rb +3 -0
  32. data/lib/mechanize/headers.rb +17 -19
  33. data/lib/mechanize/history.rb +60 -61
  34. data/lib/mechanize/http.rb +5 -0
  35. data/lib/mechanize/http/agent.rb +485 -218
  36. data/lib/mechanize/http/auth_challenge.rb +59 -0
  37. data/lib/mechanize/http/auth_realm.rb +31 -0
  38. data/lib/mechanize/http/content_disposition_parser.rb +188 -0
  39. data/lib/mechanize/http/www_authenticate_parser.rb +155 -0
  40. data/lib/mechanize/monkey_patch.rb +14 -35
  41. data/lib/mechanize/page.rb +34 -2
  42. data/lib/mechanize/page/base.rb +6 -7
  43. data/lib/mechanize/page/frame.rb +5 -5
  44. data/lib/mechanize/page/image.rb +23 -23
  45. data/lib/mechanize/page/label.rb +16 -16
  46. data/lib/mechanize/page/link.rb +16 -0
  47. data/lib/mechanize/page/meta_refresh.rb +19 -7
  48. data/lib/mechanize/parser.rb +173 -0
  49. data/lib/mechanize/pluggable_parsers.rb +126 -83
  50. data/lib/mechanize/redirect_limit_reached_error.rb +16 -13
  51. data/lib/mechanize/redirect_not_get_or_head_error.rb +18 -16
  52. data/lib/mechanize/response_code_error.rb +16 -17
  53. data/lib/mechanize/robots_disallowed_error.rb +22 -23
  54. data/lib/mechanize/test_case.rb +659 -0
  55. data/lib/mechanize/unauthorized_error.rb +3 -0
  56. data/lib/mechanize/unsupported_scheme_error.rb +4 -6
  57. data/lib/mechanize/util.rb +0 -12
  58. data/test/htdocs/form_order_test.html +11 -0
  59. data/test/htdocs/form_test.html +2 -2
  60. data/test/htdocs/tc_links.html +1 -0
  61. data/test/test_mechanize.rb +367 -59
  62. data/test/test_mechanize_cookie.rb +69 -4
  63. data/test/test_mechanize_cookie_jar.rb +200 -124
  64. data/test/test_mechanize_download.rb +43 -0
  65. data/test/test_mechanize_file.rb +53 -45
  66. data/test/{test_mechanize_file_response.rb → test_mechanize_file_connection.rb} +2 -2
  67. data/test/test_mechanize_file_request.rb +2 -2
  68. data/test/test_mechanize_file_saver.rb +21 -0
  69. data/test/test_mechanize_form.rb +345 -46
  70. data/test/test_mechanize_form_check_box.rb +5 -4
  71. data/test/test_mechanize_form_encoding.rb +10 -16
  72. data/test/test_mechanize_form_field.rb +45 -3
  73. data/test/test_mechanize_form_file_upload.rb +20 -0
  74. data/test/test_mechanize_form_image_button.rb +2 -2
  75. data/test/test_mechanize_form_keygen.rb +32 -0
  76. data/test/test_mechanize_form_multi_select_list.rb +84 -0
  77. data/test/test_mechanize_form_option.rb +55 -0
  78. data/test/test_mechanize_form_radio_button.rb +78 -0
  79. data/test/test_mechanize_form_select_list.rb +76 -0
  80. data/test/test_mechanize_form_textarea.rb +8 -7
  81. data/test/{test_headers.rb → test_mechanize_headers.rb} +4 -2
  82. data/test/test_mechanize_history.rb +103 -0
  83. data/test/test_mechanize_http_agent.rb +525 -17
  84. data/test/test_mechanize_http_auth_challenge.rb +39 -0
  85. data/test/test_mechanize_http_auth_realm.rb +49 -0
  86. data/test/test_mechanize_http_content_disposition_parser.rb +118 -0
  87. data/test/test_mechanize_http_www_authenticate_parser.rb +146 -0
  88. data/test/test_mechanize_link.rb +10 -14
  89. data/test/test_mechanize_page.rb +118 -0
  90. data/test/test_mechanize_page_encoding.rb +48 -13
  91. data/test/test_mechanize_page_frame.rb +16 -0
  92. data/test/test_mechanize_page_link.rb +27 -19
  93. data/test/test_mechanize_page_meta_refresh.rb +26 -14
  94. data/test/test_mechanize_parser.rb +289 -0
  95. data/test/test_mechanize_pluggable_parser.rb +52 -0
  96. data/test/test_mechanize_redirect_limit_reached_error.rb +24 -0
  97. data/test/test_mechanize_redirect_not_get_or_head_error.rb +3 -7
  98. data/test/test_mechanize_subclass.rb +2 -2
  99. data/test/test_mechanize_util.rb +24 -13
  100. data/test/test_multi_select.rb +23 -22
  101. metadata +145 -114
  102. metadata.gz.sig +0 -0
  103. data/lib/mechanize/inspect.rb +0 -88
  104. data/test/helper.rb +0 -175
  105. data/test/htdocs/form_select_all.html +0 -16
  106. data/test/htdocs/form_select_none.html +0 -17
  107. data/test/htdocs/form_select_noopts.html +0 -10
  108. data/test/htdocs/iframe_test.html +0 -16
  109. data/test/htdocs/nofollow.html +0 -9
  110. data/test/htdocs/norobots.html +0 -8
  111. data/test/htdocs/rel_nofollow.html +0 -8
  112. data/test/htdocs/tc_base_images.html +0 -10
  113. data/test/htdocs/tc_images.html +0 -8
  114. data/test/htdocs/tc_no_attributes.html +0 -16
  115. data/test/htdocs/tc_radiobuttons.html +0 -17
  116. data/test/htdocs/test_bad_encoding.html +0 -52
  117. data/test/servlets.rb +0 -402
  118. data/test/ssl_server.rb +0 -48
  119. data/test/test_cookies.rb +0 -129
  120. data/test/test_form_action.rb +0 -52
  121. data/test/test_form_as_hash.rb +0 -59
  122. data/test/test_form_button.rb +0 -46
  123. data/test/test_frames.rb +0 -34
  124. data/test/test_history.rb +0 -118
  125. data/test/test_history_added.rb +0 -16
  126. data/test/test_html_unscape_forms.rb +0 -46
  127. data/test/test_if_modified_since.rb +0 -20
  128. data/test/test_images.rb +0 -19
  129. data/test/test_no_attributes.rb +0 -13
  130. data/test/test_option.rb +0 -18
  131. data/test/test_pluggable_parser.rb +0 -136
  132. data/test/test_post_form.rb +0 -37
  133. data/test/test_pretty_print.rb +0 -22
  134. data/test/test_radiobutton.rb +0 -75
  135. data/test/test_redirect_limit_reached.rb +0 -39
  136. data/test/test_referer.rb +0 -81
  137. data/test/test_relative_links.rb +0 -40
  138. data/test/test_request.rb +0 -13
  139. data/test/test_response_code.rb +0 -53
  140. data/test/test_robots.rb +0 -72
  141. data/test/test_save_file.rb +0 -48
  142. data/test/test_scheme.rb +0 -48
  143. data/test/test_select.rb +0 -119
  144. data/test/test_select_all.rb +0 -15
  145. data/test/test_select_none.rb +0 -15
  146. data/test/test_select_noopts.rb +0 -18
  147. data/test/test_set_fields.rb +0 -44
  148. data/test/test_ssl_server.rb +0 -20
@@ -1,46 +0,0 @@
1
- require "helper"
2
-
3
- class TestCheckBoxes < MiniTest::Unit::TestCase
4
- def test_field
5
- f = Mechanize::Form::Field.new({'name' => 'a&amp;b'}, 'a&amp;b')
6
- assert_equal('a&b', f.name)
7
- assert_equal('a&b', f.value)
8
-
9
- f = Mechanize::Form::Field.new({'name' => 'a&b'}, 'a&b')
10
- assert_equal('a&b', f.name)
11
- assert_equal('a&b', f.value)
12
-
13
- f = Mechanize::Form::Field.new({'name' => 'a&#38;b'}, 'a&#38;b')
14
- assert_equal('a&b', f.name)
15
- assert_equal('a&b', f.value)
16
- end
17
-
18
- def test_file_upload
19
- f = Mechanize::Form::FileUpload.new(fake_node, 'a&amp;b')
20
- assert_equal('a&b', f.name)
21
- assert_equal('a&b', f.file_name)
22
-
23
- f = Mechanize::Form::FileUpload.new(fake_node, 'a&b')
24
- assert_equal('a&b', f.name)
25
- assert_equal('a&b', f.file_name)
26
- end
27
-
28
- def test_image_button
29
- f = Mechanize::Form::ImageButton.new({'name' => 'a&amp;b'}, 'a&amp;b')
30
- assert_equal('a&b', f.name)
31
- assert_equal('a&b', f.value)
32
- end
33
-
34
- def test_radio_button
35
- f = Mechanize::Form::RadioButton.new(fake_node, nil)
36
- assert_equal('a&b', f.name)
37
- assert_equal('a&b', f.value)
38
- end
39
-
40
- def fake_node
41
- {
42
- 'name' => 'a&amp;b',
43
- 'value' => 'a&amp;b'
44
- }
45
- end
46
- end
@@ -1,20 +0,0 @@
1
- require "helper"
2
-
3
- class TestIfModifiedSince < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_get_twice
9
- assert_equal(0, @agent.history.length)
10
- page = @agent.get('http://localhost/if_modified_since')
11
- assert_match(/You did not send/, page.body)
12
-
13
- assert_equal(1, @agent.history.length)
14
- page2 = @agent.get('http://localhost/if_modified_since')
15
-
16
- assert_equal(2, @agent.history.length)
17
- assert_equal(page.object_id, page2.object_id)
18
- assert_match(/You did not send/, page.body)
19
- end
20
- end
data/test/test_images.rb DELETED
@@ -1,19 +0,0 @@
1
- require "helper"
2
-
3
- class ImagesMechTest < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_base
9
- page = @agent.get("http://google.com/tc_base_images.html")
10
- assert_equal page.images[0].url, "http://localhost/a.jpg"
11
- assert_equal page.images[1].url, "http://localhost/b.gif"
12
- end
13
-
14
- def test_base2
15
- page = @agent.get("http://google.com/tc_images.html")
16
- assert_equal page.images[0].url, "http://google.com/a.jpg"
17
- assert_equal page.images[1].url, "http://google.com/b.gif"
18
- end
19
- end
@@ -1,13 +0,0 @@
1
- require "helper"
2
-
3
- class TestNoAttributes < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_parse_no_attributes
9
- @agent.get('http://localhost/tc_no_attributes.html')
10
-
11
- # HACK no assertions
12
- end
13
- end
data/test/test_option.rb DELETED
@@ -1,18 +0,0 @@
1
- require "helper"
2
-
3
- class OptionTest < MiniTest::Unit::TestCase
4
- class FakeAttribute < Hash
5
- attr_reader :inner_text
6
- def initialize(inner_text)
7
- @inner_text = inner_text
8
- end
9
- alias :has_attribute? :has_key?
10
- alias :attributes :keys
11
- end
12
-
13
- def test_option_missing_value
14
- attribute = FakeAttribute.new('blah')
15
- option = Mechanize::Form::Option.new(attribute, nil)
16
- assert_equal('blah', option.value)
17
- end
18
- end
@@ -1,136 +0,0 @@
1
- require "helper"
2
-
3
- class PluggableParserTest < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_content_type_error
9
- page = @agent.get("http://localhost/bad_content_type")
10
-
11
- e = assert_raises Mechanize::ContentTypeError do
12
- page = Mechanize::Page.new(page.uri,
13
- page.response,
14
- page.body,
15
- page.code)
16
- end
17
-
18
- assert_equal('text/xml', e.content_type)
19
- end
20
-
21
- def test_content_type
22
- page = @agent.get("http://localhost/content_type_test")
23
- assert_kind_of(Mechanize::Page, page)
24
- end
25
-
26
- class Filter < Mechanize::Page
27
- def initialize(uri=nil, response=nil, body=nil, code=nil)
28
- super( uri,
29
- response,
30
- body.gsub(/<body>/, '<body><a href="http://daapclient.rubyforge.org">Net::DAAP::Client</a>'),
31
- code
32
- )
33
- end
34
- end
35
-
36
- class FileFilter < Mechanize::File
37
- def initialize(uri=nil, response=nil, body=nil, code=nil)
38
- super( uri,
39
- response,
40
- body.gsub(/<body>/, '<body><a href="http://daapclient.rubyforge.org">Net::DAAP::Client</a>'),
41
- code
42
- )
43
- end
44
- end
45
-
46
- def test_filter
47
- @agent.pluggable_parser.html = Filter
48
- page = @agent.get("http://localhost/find_link.html")
49
-
50
- assert_kind_of(Filter, page)
51
-
52
- assert_equal(19, page.links.length)
53
- assert_equal(1, page.links_with(:text => 'Net::DAAP::Client').length)
54
- end
55
-
56
- def test_filter_hash
57
- @agent.pluggable_parser['text/html'] = Filter
58
- page = @agent.get("http://localhost/find_link.html")
59
- assert_kind_of(Class, @agent.pluggable_parser['text/html'])
60
- assert_equal(Filter, @agent.pluggable_parser['text/html'])
61
- assert_kind_of(Filter, page)
62
- assert_equal(19, page.links.length)
63
- assert_equal(1, page.links_with(:text => 'Net::DAAP::Client').length)
64
- end
65
-
66
- def test_file_saver
67
- @agent.pluggable_parser.html = Mechanize::FileSaver
68
- page = @agent.get('http://localhost:2000/form_no_action.html')
69
- length = page.response['Content-Length']
70
- file_length = nil
71
- File.open("localhost/form_no_action.html", "r") { |f|
72
- file_length = f.read.length
73
- }
74
- FileUtils.rm_rf("localhost")
75
- assert_equal(length.to_i, file_length)
76
- end
77
-
78
- def test_content_type_pdf
79
- @agent.pluggable_parser.pdf = FileFilter
80
- page = @agent.get("http://localhost/content_type_test?ct=application/pdf")
81
- assert_kind_of(Class, @agent.pluggable_parser['application/pdf'])
82
- assert_equal(FileFilter, @agent.pluggable_parser['application/pdf'])
83
- assert_kind_of(FileFilter, page)
84
- end
85
-
86
- def test_content_type_csv
87
- @agent.pluggable_parser.csv = FileFilter
88
- page = @agent.get("http://localhost/content_type_test?ct=text/csv")
89
- assert_kind_of(Class, @agent.pluggable_parser['text/csv'])
90
- assert_equal(FileFilter, @agent.pluggable_parser['text/csv'])
91
- assert_kind_of(FileFilter, page)
92
- end
93
-
94
- def test_content_type_xml
95
- @agent.pluggable_parser.xml = FileFilter
96
- page = @agent.get("http://localhost/content_type_test?ct=text/xml")
97
- assert_kind_of(Class, @agent.pluggable_parser['text/xml'])
98
- assert_equal(FileFilter, @agent.pluggable_parser['text/xml'])
99
- assert_kind_of(FileFilter, page)
100
- end
101
-
102
- def test_file_saver_no_path
103
- url = URI::HTTP.new('http', nil, 'example.com', nil, nil, '', nil, nil, nil)
104
- fs = Mechanize::FileSaver.new(url, nil, 'hello world', 200)
105
- assert_equal('example.com/index.html', fs.filename)
106
- FileUtils.rm_rf('example.com')
107
- end
108
-
109
- def test_file_saver_slash
110
- url = URI::HTTP.new('http', nil, 'example.com', nil, nil, '/', nil, nil, nil)
111
- fs = Mechanize::FileSaver.new(url, nil, 'hello world', 200)
112
- assert_equal('example.com/index.html', fs.filename)
113
- FileUtils.rm_rf('example.com')
114
- end
115
-
116
- def test_file_saver_slash_file
117
- url = URI::HTTP.new('http', nil, 'example.com', nil, nil, '/foo.html', nil, nil, nil)
118
- fs = Mechanize::FileSaver.new(url, nil, 'hello world', 200)
119
- assert_equal('example.com/foo.html', fs.filename)
120
- FileUtils.rm_rf('example.com')
121
- end
122
-
123
- def test_file_saver_long_path_no_file
124
- url = URI::HTTP.new('http', nil, 'example.com', nil, nil, '/one/two/', nil, nil, nil)
125
- fs = Mechanize::FileSaver.new(url, nil, 'hello world', 200)
126
- assert_equal('example.com/one/two/index.html', fs.filename)
127
- FileUtils.rm_rf('example.com')
128
- end
129
-
130
- def test_file_saver_long_path
131
- url = URI::HTTP.new('http', nil, 'example.com', nil, nil, '/one/two/foo.html', nil, nil, nil)
132
- fs = Mechanize::FileSaver.new(url, nil, 'hello world', 200)
133
- assert_equal('example.com/one/two/foo.html', fs.filename)
134
- FileUtils.rm_rf('example.com')
135
- end
136
- end
@@ -1,37 +0,0 @@
1
- require "helper"
2
-
3
- class PostForm < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_post_form
9
- page = @agent.post("http://localhost/form_post",
10
- 'gender' => 'female'
11
- )
12
- assert(page.links.find { |l| l.text == "gender:female" },
13
- "gender field missing")
14
- end
15
-
16
- def test_post_form_json
17
- page = @agent.post "http://localhost/form_post",
18
- 'json' => '["&quot;"]'
19
-
20
- assert page.links.find { |l| l.text == 'json:["""]' }
21
- end
22
-
23
- def test_post_form_multival
24
- page = @agent.post("http://localhost/form_post",
25
- [ ['gender', 'female'],
26
- ['gender', 'male']
27
- ]
28
- )
29
- assert(page.links.find { |l| l.text == "gender:female" },
30
- "gender field missing")
31
-
32
- assert(page.links.find { |l| l.text == "gender:male" },
33
- "gender field missing")
34
-
35
- assert_equal(2, page.links.length)
36
- end
37
- end
@@ -1,22 +0,0 @@
1
- require "helper"
2
-
3
- class TestPrettyPrint < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_pretty_print
9
- @agent.get("http://localhost/tc_pretty_print.html")
10
- pretty_string = @agent.pretty_print_inspect
11
- assert_match("{title \"tc_pretty_print.html\"}", pretty_string)
12
- assert_match(/\{frames[^"]*"http:\/\/meme/, pretty_string)
13
- assert_match(/\{iframes[^"]*"http:\/\/meme/, pretty_string)
14
- assert_match(
15
- "{links #<Mechanize::Page::Link \"Google\" \"http://google.com/\">}",
16
- pretty_string
17
- )
18
- assert_match("form1", pretty_string)
19
- assert_match("POST", pretty_string)
20
- assert_match("{file_uploads}", pretty_string)
21
- end
22
- end
@@ -1,75 +0,0 @@
1
- require "helper"
2
-
3
- class TestRadioButtons < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- @page = @agent.get("http://localhost/tc_radiobuttons.html")
7
- end
8
-
9
- def test_select_all
10
- form = @page.forms.first
11
- form.radiobuttons_with(:name => 'color').each do |b|
12
- b.check
13
- end
14
- form.radiobutton_with(:name => 'color', :value => 'green').check
15
-
16
- assert_equal(true, form.radiobutton_with( :name => 'color',
17
- :value => 'green').checked)
18
-
19
- %w{ red blue yellow brown }.each do |button_value|
20
- assert_equal(false, form.radiobutton_with( :name => 'color',
21
- :value => button_value
22
- ).checked)
23
- end
24
- end
25
-
26
- def test_unselect_all
27
- form = @page.forms.first
28
- form.radiobuttons_with(:name => 'color').each do |b|
29
- b.uncheck
30
- end
31
- %w{ green red blue yellow brown }.each do |button_value|
32
- assert_equal(false, form.radiobutton_with( :name => 'color',
33
- :value => button_value
34
- ).checked)
35
- end
36
- end
37
-
38
- def test_click_one
39
- form = @page.forms.first
40
- form.radiobutton_with(:name => 'color', :value => 'green').click
41
-
42
- assert form.radiobutton_with(:name => 'color', :value => 'green').checked
43
-
44
- %w{ red blue yellow brown }.each do |button_value|
45
- assert_equal(false, form.radiobutton_with( :name => 'color',
46
- :value => button_value
47
- ).checked)
48
- end
49
- end
50
-
51
- def test_click_twice
52
- form = @page.forms.first
53
- form.radiobutton_with(:name => 'color', :value => 'green').click
54
- assert form.radiobutton_with(:name => 'color', :value => 'green').checked
55
-
56
- form.radiobutton_with(:name => 'color', :value => 'green').click
57
- %w{ green red blue yellow brown }.each do |button_value|
58
- assert_equal(false, form.radiobutton_with( :name => 'color',
59
- :value => button_value
60
- ).checked)
61
- end
62
- end
63
-
64
- def test_click_all
65
- form = @page.forms.first
66
- form.radiobuttons_with(:name => 'color').each do |button|
67
- button.click
68
- end
69
- c = form.radiobuttons_with(:name => 'color').inject(0) do |m,button|
70
- m += 1 if button.checked
71
- m
72
- end
73
- assert_equal 1, c, 'Only one radio button should be checked'
74
- end
75
- end
@@ -1,39 +0,0 @@
1
- require "helper"
2
-
3
- class TestRedirectLimitReached < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_to_s
9
- page = MechTestHelper.fake_page(@agent)
10
- error = Mechanize::RedirectLimitReachedError.new(page, 10)
11
- assert_match(/10/, error.to_s)
12
- end
13
-
14
- def test_get_default_redirects
15
- assert_raises(Mechanize::RedirectLimitReachedError) {
16
- begin
17
- @agent.get('http://localhost/infinite_redirect')
18
- rescue Mechanize::RedirectLimitReachedError => ex
19
- assert_equal(@agent.redirection_limit, ex.redirects)
20
- assert_equal("q=#{@agent.redirection_limit}", ex.page.uri.query)
21
- raise ex
22
- end
23
- }
24
- end
25
-
26
- def test_get_2_redirects
27
- @agent.redirection_limit = 2
28
- assert_raises(Mechanize::RedirectLimitReachedError) {
29
- begin
30
- @agent.get('http://localhost/infinite_redirect')
31
- rescue Mechanize::RedirectLimitReachedError => ex
32
- assert_equal(2, ex.redirects)
33
- assert_equal(@agent.redirection_limit, ex.redirects)
34
- assert_equal("q=#{@agent.redirection_limit}", ex.page.uri.query)
35
- raise ex
36
- end
37
- }
38
- end
39
- end
data/test/test_referer.rb DELETED
@@ -1,81 +0,0 @@
1
- require "helper"
2
-
3
- class RefererTest < MiniTest::Unit::TestCase
4
- def setup
5
- @agent = Mechanize.new
6
- end
7
-
8
- def test_no_referer
9
- page = @agent.get("http://localhost/referer")
10
- assert_equal('', page.body)
11
- end
12
-
13
- def test_send_referer
14
- page = @agent.get("http://localhost/tc_referer.html")
15
- page = @agent.click page.links[0]
16
- assert_equal("http://localhost/tc_referer.html", page.body)
17
- end
18
-
19
- def test_send_referer_noreferrer
20
- page = @agent.get("http://localhost/tc_referer.html")
21
- page = @agent.click page.links[3]
22
- assert_equal("", page.body)
23
- end
24
-
25
- def test_fetch_two
26
- page1 = @agent.get("http://localhost/tc_referer.html")
27
- @agent.get("http://localhost/tc_pretty_print.html")
28
- page = @agent.click page1.links[0]
29
- assert_equal("http://localhost/tc_referer.html", page.body)
30
- end
31
-
32
- def test_fetch_two_first
33
- page1 = @agent.get("http://localhost/tc_referer.html")
34
- @agent.get("http://localhost/tc_pretty_print.html")
35
- page = @agent.click page1.links[0]
36
- assert_equal("http://localhost/tc_referer.html", page.body)
37
- end
38
-
39
- def test_post_form
40
- page1 = @agent.get("http://localhost/tc_referer.html")
41
- @agent.get("http://localhost/tc_pretty_print.html")
42
- page = @agent.submit page1.forms.first
43
- assert_equal("http://localhost/tc_referer.html", page.body)
44
- end
45
-
46
- def test_http_to_https
47
- page = @agent.get("http://localhost/tc_referer.html")
48
- page = @agent.click page.links[2]
49
- assert_equal("http://localhost/tc_referer.html", page.body)
50
- end
51
-
52
- def test_http_to_https_noreferrer
53
- page = @agent.get("http://localhost/tc_referer.html")
54
- page = @agent.click page.links[5]
55
- assert_equal("", page.body)
56
- end
57
-
58
- def test_https_to_https
59
- page = @agent.get("https://localhost/tc_referer.html")
60
- page = @agent.click page.links[2]
61
- assert_equal("https://localhost/tc_referer.html", page.body)
62
- end
63
-
64
- def test_https_to_https_noreferrer
65
- page = @agent.get("https://localhost/tc_referer.html")
66
- page = @agent.click page.links[5]
67
- assert_equal("", page.body)
68
- end
69
-
70
- def test_https_to_http
71
- page = @agent.get("https://localhost/tc_referer.html")
72
- page = @agent.click page.links[1]
73
- assert_equal("", page.body)
74
- end
75
-
76
- def test_https_to_http_noreferrer
77
- page = @agent.get("https://localhost/tc_referer.html")
78
- page = @agent.click page.links[4]
79
- assert_equal("", page.body)
80
- end
81
- end