diamond-mechanize 2.1 → 2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. metadata +222 -167
  2. data/Rakefile +0 -49
  3. data/lib/mechanize/content_type_error.rb +0 -13
  4. data/lib/mechanize/cookie.rb +0 -232
  5. data/lib/mechanize/cookie_jar.rb +0 -194
  6. data/lib/mechanize/download.rb +0 -59
  7. data/lib/mechanize/element_matcher.rb +0 -36
  8. data/lib/mechanize/file.rb +0 -65
  9. data/lib/mechanize/file_connection.rb +0 -17
  10. data/lib/mechanize/file_request.rb +0 -26
  11. data/lib/mechanize/file_response.rb +0 -74
  12. data/lib/mechanize/file_saver.rb +0 -39
  13. data/lib/mechanize/form/button.rb +0 -6
  14. data/lib/mechanize/form/check_box.rb +0 -12
  15. data/lib/mechanize/form/field.rb +0 -54
  16. data/lib/mechanize/form/file_upload.rb +0 -21
  17. data/lib/mechanize/form/hidden.rb +0 -3
  18. data/lib/mechanize/form/image_button.rb +0 -19
  19. data/lib/mechanize/form/keygen.rb +0 -34
  20. data/lib/mechanize/form/multi_select_list.rb +0 -94
  21. data/lib/mechanize/form/option.rb +0 -50
  22. data/lib/mechanize/form/radio_button.rb +0 -55
  23. data/lib/mechanize/form/reset.rb +0 -3
  24. data/lib/mechanize/form/select_list.rb +0 -44
  25. data/lib/mechanize/form/submit.rb +0 -3
  26. data/lib/mechanize/form/text.rb +0 -3
  27. data/lib/mechanize/form/textarea.rb +0 -3
  28. data/lib/mechanize/form.rb +0 -543
  29. data/lib/mechanize/headers.rb +0 -23
  30. data/lib/mechanize/history.rb +0 -82
  31. data/lib/mechanize/http/agent.rb +0 -1004
  32. data/lib/mechanize/http/auth_challenge.rb +0 -59
  33. data/lib/mechanize/http/auth_realm.rb +0 -31
  34. data/lib/mechanize/http/content_disposition_parser.rb +0 -188
  35. data/lib/mechanize/http/www_authenticate_parser.rb +0 -155
  36. data/lib/mechanize/http.rb +0 -8
  37. data/lib/mechanize/monkey_patch.rb +0 -16
  38. data/lib/mechanize/page/base.rb +0 -7
  39. data/lib/mechanize/page/frame.rb +0 -27
  40. data/lib/mechanize/page/image.rb +0 -30
  41. data/lib/mechanize/page/label.rb +0 -20
  42. data/lib/mechanize/page/link.rb +0 -98
  43. data/lib/mechanize/page/meta_refresh.rb +0 -68
  44. data/lib/mechanize/page.rb +0 -440
  45. data/lib/mechanize/parser.rb +0 -173
  46. data/lib/mechanize/pluggable_parsers.rb +0 -144
  47. data/lib/mechanize/redirect_limit_reached_error.rb +0 -19
  48. data/lib/mechanize/redirect_not_get_or_head_error.rb +0 -21
  49. data/lib/mechanize/response_code_error.rb +0 -21
  50. data/lib/mechanize/response_read_error.rb +0 -27
  51. data/lib/mechanize/robots_disallowed_error.rb +0 -28
  52. data/lib/mechanize/test_case.rb +0 -663
  53. data/lib/mechanize/unauthorized_error.rb +0 -3
  54. data/lib/mechanize/unsupported_scheme_error.rb +0 -6
  55. data/lib/mechanize/util.rb +0 -101
  56. data/lib/mechanize.rb +0 -1079
  57. data/test/data/htpasswd +0 -1
  58. data/test/data/server.crt +0 -16
  59. data/test/data/server.csr +0 -12
  60. data/test/data/server.key +0 -15
  61. data/test/data/server.pem +0 -15
  62. data/test/htdocs/alt_text.html +0 -10
  63. data/test/htdocs/bad_form_test.html +0 -9
  64. data/test/htdocs/button.jpg +0 -0
  65. data/test/htdocs/canonical_uri.html +0 -9
  66. data/test/htdocs/dir with spaces/foo.html +0 -1
  67. data/test/htdocs/empty_form.html +0 -6
  68. data/test/htdocs/file_upload.html +0 -26
  69. data/test/htdocs/find_link.html +0 -41
  70. data/test/htdocs/form_multi_select.html +0 -16
  71. data/test/htdocs/form_multival.html +0 -37
  72. data/test/htdocs/form_no_action.html +0 -18
  73. data/test/htdocs/form_no_input_name.html +0 -16
  74. data/test/htdocs/form_order_test.html +0 -11
  75. data/test/htdocs/form_select.html +0 -16
  76. data/test/htdocs/form_set_fields.html +0 -14
  77. data/test/htdocs/form_test.html +0 -188
  78. data/test/htdocs/frame_referer_test.html +0 -10
  79. data/test/htdocs/frame_test.html +0 -30
  80. data/test/htdocs/google.html +0 -13
  81. data/test/htdocs/index.html +0 -6
  82. data/test/htdocs/link with space.html +0 -5
  83. data/test/htdocs/meta_cookie.html +0 -11
  84. data/test/htdocs/no_title_test.html +0 -6
  85. data/test/htdocs/noindex.html +0 -9
  86. data/test/htdocs/rails_3_encoding_hack_form_test.html +0 -27
  87. data/test/htdocs/relative/tc_relative_links.html +0 -21
  88. data/test/htdocs/robots.html +0 -8
  89. data/test/htdocs/robots.txt +0 -2
  90. data/test/htdocs/tc_bad_charset.html +0 -9
  91. data/test/htdocs/tc_bad_links.html +0 -5
  92. data/test/htdocs/tc_base_link.html +0 -8
  93. data/test/htdocs/tc_blank_form.html +0 -11
  94. data/test/htdocs/tc_charset.html +0 -6
  95. data/test/htdocs/tc_checkboxes.html +0 -19
  96. data/test/htdocs/tc_encoded_links.html +0 -5
  97. data/test/htdocs/tc_field_precedence.html +0 -11
  98. data/test/htdocs/tc_follow_meta.html +0 -8
  99. data/test/htdocs/tc_form_action.html +0 -48
  100. data/test/htdocs/tc_links.html +0 -19
  101. data/test/htdocs/tc_meta_in_body.html +0 -9
  102. data/test/htdocs/tc_pretty_print.html +0 -17
  103. data/test/htdocs/tc_referer.html +0 -16
  104. data/test/htdocs/tc_relative_links.html +0 -19
  105. data/test/htdocs/tc_textarea.html +0 -23
  106. data/test/htdocs/test_click.html +0 -11
  107. data/test/htdocs/unusual______.html +0 -5
  108. data/test/test_mechanize.rb +0 -1164
  109. data/test/test_mechanize_cookie.rb +0 -451
  110. data/test/test_mechanize_cookie_jar.rb +0 -483
  111. data/test/test_mechanize_download.rb +0 -43
  112. data/test/test_mechanize_file.rb +0 -61
  113. data/test/test_mechanize_file_connection.rb +0 -21
  114. data/test/test_mechanize_file_request.rb +0 -19
  115. data/test/test_mechanize_file_saver.rb +0 -21
  116. data/test/test_mechanize_form.rb +0 -875
  117. data/test/test_mechanize_form_check_box.rb +0 -38
  118. data/test/test_mechanize_form_encoding.rb +0 -114
  119. data/test/test_mechanize_form_field.rb +0 -63
  120. data/test/test_mechanize_form_file_upload.rb +0 -20
  121. data/test/test_mechanize_form_image_button.rb +0 -12
  122. data/test/test_mechanize_form_keygen.rb +0 -32
  123. data/test/test_mechanize_form_multi_select_list.rb +0 -84
  124. data/test/test_mechanize_form_option.rb +0 -55
  125. data/test/test_mechanize_form_radio_button.rb +0 -78
  126. data/test/test_mechanize_form_select_list.rb +0 -76
  127. data/test/test_mechanize_form_textarea.rb +0 -52
  128. data/test/test_mechanize_headers.rb +0 -35
  129. data/test/test_mechanize_history.rb +0 -103
  130. data/test/test_mechanize_http_agent.rb +0 -1225
  131. data/test/test_mechanize_http_auth_challenge.rb +0 -39
  132. data/test/test_mechanize_http_auth_realm.rb +0 -49
  133. data/test/test_mechanize_http_content_disposition_parser.rb +0 -118
  134. data/test/test_mechanize_http_www_authenticate_parser.rb +0 -146
  135. data/test/test_mechanize_link.rb +0 -80
  136. data/test/test_mechanize_page.rb +0 -118
  137. data/test/test_mechanize_page_encoding.rb +0 -182
  138. data/test/test_mechanize_page_frame.rb +0 -16
  139. data/test/test_mechanize_page_link.rb +0 -390
  140. data/test/test_mechanize_page_meta_refresh.rb +0 -127
  141. data/test/test_mechanize_parser.rb +0 -289
  142. data/test/test_mechanize_pluggable_parser.rb +0 -52
  143. data/test/test_mechanize_redirect_limit_reached_error.rb +0 -24
  144. data/test/test_mechanize_redirect_not_get_or_head_error.rb +0 -14
  145. data/test/test_mechanize_subclass.rb +0 -22
  146. data/test/test_mechanize_util.rb +0 -103
  147. data/test/test_multi_select.rb +0 -119
@@ -1,127 +0,0 @@
1
- require 'mechanize/test_case'
2
-
3
- class TestMechanizePageMetaRefresh < Mechanize::TestCase
4
-
5
- def setup
6
- super
7
-
8
- @MR = Mechanize::Page::MetaRefresh
9
-
10
- @uri = URI 'http://example/here/'
11
- end
12
-
13
- def util_page delay, uri
14
- body = <<-BODY
15
- <head><meta http-equiv="refresh" content="#{delay};url=#{uri}"></head>
16
- BODY
17
-
18
- Mechanize::Page.new(@uri, { 'content-type' => 'text/html' }, body, 200,
19
- @mech)
20
- end
21
-
22
- def util_meta_refresh page
23
- node = page.search('meta').first
24
- @MR.from_node node, page, @uri
25
- end
26
-
27
- def test_class_parse
28
- delay, uri, link_self = @MR.parse "0; url=http://localhost:8080/path", @uri
29
- assert_equal "0", delay
30
- assert_equal "http://localhost:8080/path", uri.to_s
31
- refute link_self
32
-
33
- delay, uri, link_self =
34
- @MR.parse "100.001; url=http://localhost:8080/path", @uri
35
- assert_equal "100.001", delay
36
- assert_equal "http://localhost:8080/path", uri.to_s
37
- refute link_self
38
-
39
- delay, uri, link_self =
40
- @MR.parse "0; url='http://localhost:8080/path'", @uri
41
- assert_equal "0", delay
42
- assert_equal "http://localhost:8080/path", uri.to_s
43
- refute link_self
44
-
45
- delay, uri, link_self =
46
- @MR.parse "0; url=\"http://localhost:8080/path\"", @uri
47
- assert_equal "0", delay
48
- assert_equal "http://localhost:8080/path", uri.to_s
49
- refute link_self
50
-
51
- delay, uri, link_self = @MR.parse "0; url=", @uri
52
- assert_equal "0", delay
53
- assert_equal "http://example/here/", uri.to_s
54
- assert link_self
55
-
56
- delay, uri, link_self = @MR.parse "0", @uri
57
- assert_equal "0", delay
58
- assert_equal "http://example/here/", uri.to_s
59
- assert link_self
60
-
61
- delay, uri, link_self = @MR.parse " 0; ", @uri
62
- assert_equal "0", delay
63
- assert_equal "http://example/here/", uri.to_s
64
- assert link_self
65
-
66
- delay, uri, link_self = @MR.parse "0; UrL=http://localhost:8080/path", @uri
67
- assert_equal "0", delay
68
- assert_equal "http://localhost:8080/path", uri.to_s
69
- refute link_self
70
- end
71
-
72
- def test_class_from_node
73
- page = util_page 5, 'http://b.example'
74
- link = util_meta_refresh page
75
- assert_equal 5, link.delay
76
- assert_equal 'http://b.example', link.href
77
-
78
- page = util_page 5, 'http://example/a'
79
- link = util_meta_refresh page
80
- assert_equal 5, link.delay
81
- assert_equal 'http://example/a', link.href
82
-
83
- page = util_page 5, 'test'
84
- link = util_meta_refresh page
85
- assert_equal 5, link.delay
86
- assert_equal 'http://example/here/test', link.href
87
-
88
- page = util_page 5, '/test'
89
- link = util_meta_refresh page
90
- assert_equal 5, link.delay
91
- assert_equal 'http://example/test', link.href
92
-
93
- page = util_page 5, nil
94
- link = util_meta_refresh page
95
- assert_equal 5, link.delay
96
- assert_equal 'http://example/here/', link.href
97
-
98
- page = util_page 5, @uri
99
- link = util_meta_refresh page
100
- assert_equal 5, link.delay
101
- assert_equal 'http://example/here/', link.href
102
- end
103
-
104
- def test_class_from_node_no_content
105
- body = <<-BODY
106
- <head><meta http-equiv="refresh"></head>
107
- BODY
108
-
109
- page = Mechanize::Page.new(@uri, { 'content-type' => 'text/html' }, body,
110
- 200, @mech)
111
-
112
- assert_nil util_meta_refresh page
113
- end
114
-
115
- def test_class_from_node_not_refresh
116
- body = <<-BODY
117
- <head><meta http-equiv="other-thing" content="0;"></head>
118
- BODY
119
-
120
- page = Mechanize::Page.new(@uri, { 'content-type' => 'text/html' }, body,
121
- 200, @mech)
122
-
123
- assert_nil util_meta_refresh page
124
- end
125
-
126
- end
127
-
@@ -1,289 +0,0 @@
1
- require 'mechanize/test_case'
2
-
3
- class TestMechanizeParser < Mechanize::TestCase
4
-
5
- class P
6
- include Mechanize::Parser
7
-
8
- attr_accessor :filename
9
- attr_accessor :response
10
- attr_accessor :uri
11
-
12
- def initialize
13
- @uri = URI 'http://example'
14
- @full_path = false
15
- end
16
- end
17
-
18
- def setup
19
- super
20
-
21
- @parser = P.new
22
- end
23
-
24
- def test_extract_filename
25
- @parser.response = {}
26
-
27
- assert_equal 'index.html', @parser.extract_filename
28
- end
29
-
30
- def test_extract_filename_content_disposition
31
- @parser.uri = URI 'http://example/foo'
32
-
33
- @parser.response = {
34
- 'content-disposition' => 'attachment; filename=genome.jpeg'
35
- }
36
-
37
- assert_equal 'genome.jpeg', @parser.extract_filename
38
- end
39
-
40
- def test_extract_filename_content_disposition_path
41
- @parser.uri = URI 'http://example'
42
-
43
- @parser.response = {
44
- 'content-disposition' => 'attachment; filename="../genome.jpeg"'
45
- }
46
-
47
- assert_equal 'example/genome.jpeg', @parser.extract_filename(true)
48
-
49
- @parser.response = {
50
- 'content-disposition' => 'attachment; filename="foo/genome.jpeg"'
51
- }
52
-
53
- assert_equal 'example/genome.jpeg', @parser.extract_filename(true)
54
- end
55
-
56
- def test_extract_filename_content_disposition_path_windows
57
- @parser.uri = URI 'http://example'
58
-
59
- @parser.response = {
60
- 'content-disposition' => 'attachment; filename="..\\\\genome.jpeg"'
61
- }
62
-
63
- assert_equal 'example/genome.jpeg', @parser.extract_filename(true)
64
-
65
- @parser.response = {
66
- 'content-disposition' => 'attachment; filename="foo\\\\genome.jpeg"'
67
- }
68
-
69
- assert_equal 'example/genome.jpeg', @parser.extract_filename(true)
70
- end
71
-
72
- def test_extract_filename_content_disposition_full_path
73
- @parser.uri = URI 'http://example/foo'
74
-
75
- @parser.response = {
76
- 'content-disposition' => 'attachment; filename=genome.jpeg'
77
- }
78
-
79
- assert_equal 'example/genome.jpeg', @parser.extract_filename(true)
80
- end
81
-
82
- def test_extract_filename_content_disposition_quoted
83
- @parser.uri = URI 'http://example'
84
-
85
- @parser.response = {
86
- 'content-disposition' => 'attachment; filename="some \"file\""'
87
- }
88
-
89
- assert_equal 'some__file_', @parser.extract_filename
90
- end
91
-
92
- def test_extract_filename_content_disposition_special
93
- @parser.uri = URI 'http://example/foo'
94
-
95
- @parser.response = {
96
- 'content-disposition' => 'attachment; filename="/\\\\<>:\\"|?*"'
97
- }
98
-
99
- assert_equal '_______', @parser.extract_filename
100
-
101
- chars = (0..12).map { |c| c.chr }.join
102
- chars += "\\\r"
103
- chars += (14..31).map { |c| c.chr }.join
104
-
105
- @parser.response = {
106
- 'content-disposition' => "attachment; filename=\"#{chars}\""
107
- }
108
-
109
- assert_equal '_' * 32, @parser.extract_filename
110
- end
111
-
112
- def test_extract_filename_content_disposition_windows_special
113
- @parser.uri = URI 'http://example'
114
-
115
- windows_special = %w[
116
- AUX
117
- COM1
118
- COM2
119
- COM3
120
- COM4
121
- COM5
122
- COM6
123
- COM7
124
- COM8
125
- COM9
126
- CON
127
- LPT1
128
- LPT2
129
- LPT3
130
- LPT4
131
- LPT5
132
- LPT6
133
- LPT7
134
- LPT8
135
- LPT9
136
- NUL
137
- PRN
138
- ]
139
-
140
- windows_special.each do |special|
141
- @parser.response = {
142
- 'content-disposition' => "attachment; filename=#{special}"
143
- }
144
-
145
- assert_equal "_#{special}", @parser.extract_filename
146
- end
147
- end
148
-
149
- def test_extract_filename_host
150
- @parser.response = {}
151
- @parser.uri = URI 'http://example'
152
-
153
- assert_equal 'example/index.html', @parser.extract_filename(true)
154
- end
155
-
156
- def test_extract_filename_special_character
157
- @parser.response = {}
158
-
159
- invisible = "\t\n\v\f\r"
160
-
161
- invisible.chars.each do |char|
162
- begin
163
- @parser.uri = URI "http://example/#{char}"
164
-
165
- assert_equal 'index.html', @parser.extract_filename, char.inspect
166
- rescue URI::InvalidURIError
167
- # ignore
168
- end
169
- end
170
-
171
- escaped = "<>\"\\|"
172
-
173
- escaped.chars.each do |char|
174
- escaped_char = CGI.escape char
175
-
176
- @parser.uri = URI "http://example/#{escaped_char}"
177
-
178
- assert_equal "#{escaped_char}.html", @parser.extract_filename, char
179
- end
180
-
181
- @parser.uri = URI "http://example/?"
182
-
183
- assert_equal 'index.html_', @parser.extract_filename, 'empty query'
184
-
185
- @parser.uri = URI "http://example/:"
186
-
187
- assert_equal '_.html', @parser.extract_filename, 'colon'
188
-
189
- @parser.uri = URI "http://example/*"
190
-
191
- assert_equal '_.html', @parser.extract_filename, 'asterisk'
192
- end
193
-
194
- def test_extract_filename_uri
195
- @parser.response = {}
196
- @parser.uri = URI 'http://example/foo'
197
-
198
- assert_equal 'foo.html', @parser.extract_filename
199
-
200
- @parser.uri += '/foo.jpg'
201
-
202
- assert_equal 'foo.jpg', @parser.extract_filename
203
- end
204
-
205
- def test_extract_filename_uri_full_path
206
- @parser.response = {}
207
- @parser.uri = URI 'http://example/foo'
208
-
209
- assert_equal 'example/foo.html', @parser.extract_filename(true)
210
-
211
- @parser.uri += '/foo.jpg'
212
-
213
- assert_equal 'example/foo.jpg', @parser.extract_filename(true)
214
- end
215
-
216
- def test_extract_filename_uri_query
217
- @parser.response = {}
218
- @parser.uri = URI 'http://example/?id=5'
219
-
220
- assert_equal 'index.html_id=5', @parser.extract_filename
221
-
222
- @parser.uri += '/foo.html?id=5'
223
-
224
- assert_equal 'foo.html_id=5', @parser.extract_filename
225
- end
226
-
227
- def test_extract_filename_uri_slash
228
- @parser.response = {}
229
- @parser.uri = URI 'http://example/foo/'
230
-
231
- assert_equal 'example/foo/index.html', @parser.extract_filename(true)
232
-
233
- @parser.uri += '/foo///'
234
-
235
- assert_equal 'example/foo/index.html', @parser.extract_filename(true)
236
- end
237
-
238
- def test_extract_filename_windows_special
239
- @parser.uri = URI 'http://example'
240
- @parser.response = {}
241
-
242
- windows_special = %w[
243
- AUX
244
- COM1
245
- COM2
246
- COM3
247
- COM4
248
- COM5
249
- COM6
250
- COM7
251
- COM8
252
- COM9
253
- CON
254
- LPT1
255
- LPT2
256
- LPT3
257
- LPT4
258
- LPT5
259
- LPT6
260
- LPT7
261
- LPT8
262
- LPT9
263
- NUL
264
- PRN
265
- ]
266
-
267
- windows_special.each do |special|
268
- @parser.uri += "/#{special}"
269
-
270
- assert_equal "_#{special}.html", @parser.extract_filename
271
- end
272
- end
273
-
274
- def test_fill_header
275
- @parser.fill_header 'a' => 'b'
276
-
277
- expected = { 'a' => 'b' }
278
-
279
- assert_equal expected, @parser.response
280
- end
281
-
282
- def test_fill_header_nil
283
- @parser.fill_header nil
284
-
285
- assert_empty @parser.response
286
- end
287
-
288
- end
289
-
@@ -1,52 +0,0 @@
1
- require 'mechanize/test_case'
2
-
3
- class TestMechanizePluggableParser < Mechanize::TestCase
4
-
5
- def setup
6
- super
7
-
8
- @pp = @mech.pluggable_parser
9
- end
10
-
11
- def test_aref
12
- @pp['text/html'] = Mechanize::Download
13
-
14
- assert_equal Mechanize::Download, @pp['text/html']
15
- end
16
-
17
- def test_csv
18
- @pp.csv = Mechanize::Download
19
-
20
- assert_equal Mechanize::Download, @pp['text/csv']
21
- end
22
-
23
- def test_html
24
- assert_equal Mechanize::Page, @pp['text/html']
25
-
26
- @pp.html = Mechanize::Download
27
-
28
- assert_equal Mechanize::Download, @pp['text/html']
29
- end
30
-
31
- def test_parser
32
- assert_nil @pp['text/xml']
33
-
34
- assert_equal Mechanize::File, @pp.parser('text/xml')
35
- end
36
-
37
- def test_pdf
38
- @pp.pdf = Mechanize::Download
39
-
40
- assert_equal Mechanize::Download, @pp['application/pdf']
41
- end
42
-
43
- def test_xml
44
- assert_nil @pp['text/xml']
45
-
46
- @pp.xml = Mechanize::Download
47
-
48
- assert_equal Mechanize::Download, @pp['text/xml']
49
- end
50
-
51
- end
52
-