diamond-mechanize 2.1 → 2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
-