mechanize 1.0.1.beta.20110107104205 → 2.0.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.
- data.tar.gz.sig +2 -0
- data/{lib/mechanize/chain/post_connect_hook.rb → .gemtest} +0 -0
- data/CHANGELOG.rdoc +51 -6
- data/EXAMPLES.rdoc +5 -3
- data/GUIDE.rdoc +72 -32
- data/LICENSE.rdoc +20 -340
- data/Manifest.txt +20 -27
- data/README.rdoc +12 -9
- data/Rakefile +5 -2
- data/examples/spider.rb +13 -2
- data/lib/mechanize.rb +545 -267
- data/lib/mechanize/content_type_error.rb +1 -1
- data/lib/mechanize/cookie.rb +72 -65
- data/lib/mechanize/cookie_jar.rb +197 -148
- data/lib/mechanize/element_matcher.rb +35 -0
- data/lib/mechanize/file.rb +3 -1
- data/lib/mechanize/file_connection.rb +17 -0
- data/lib/mechanize/file_request.rb +26 -0
- data/lib/mechanize/file_response.rb +61 -47
- data/lib/mechanize/form.rb +57 -58
- data/lib/mechanize/form/image_button.rb +2 -3
- data/lib/mechanize/form/multi_select_list.rb +71 -55
- data/lib/mechanize/form/select_list.rb +34 -62
- data/lib/mechanize/monkey_patch.rb +13 -11
- data/lib/mechanize/page.rb +277 -270
- data/lib/mechanize/page/image.rb +6 -2
- data/lib/mechanize/redirect_limit_reached_error.rb +1 -1
- data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -1
- data/lib/mechanize/response_code_error.rb +3 -3
- data/lib/mechanize/unsupported_scheme_error.rb +1 -1
- data/lib/mechanize/uri_resolver.rb +82 -0
- data/lib/mechanize/util.rb +76 -60
- data/test/helper.rb +35 -5
- data/test/htdocs/dir with spaces/foo.html +1 -0
- data/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
- data/test/htdocs/tc_base_images.html +10 -0
- data/test/htdocs/tc_images.html +8 -0
- data/test/htdocs/test_click.html +11 -0
- data/test/servlets.rb +3 -2
- data/test/test_authenticate.rb +5 -5
- data/test/test_errors.rb +8 -8
- data/test/test_follow_meta.rb +4 -4
- data/test/test_form_as_hash.rb +4 -4
- data/test/test_forms.rb +3 -7
- data/test/test_hash_api.rb +2 -2
- data/test/test_headers.rb +1 -1
- data/test/test_images.rb +19 -0
- data/test/test_mech.rb +6 -6
- data/test/test_mechanize.rb +687 -0
- data/test/{test_cookie_class.rb → test_mechanize_cookie.rb} +52 -45
- data/test/test_mechanize_cookie_jar.rb +400 -0
- data/test/test_mechanize_file.rb +7 -1
- data/test/test_mechanize_file_request.rb +19 -0
- data/test/test_mechanize_file_response.rb +21 -0
- data/test/test_mechanize_form_image_button.rb +12 -0
- data/test/test_mechanize_page.rb +165 -0
- data/test/test_mechanize_uri_resolver.rb +29 -0
- data/test/{test_util.rb → test_mechanize_util.rb} +1 -1
- data/test/test_multi_select.rb +12 -0
- data/test/test_post_form.rb +7 -0
- data/test/test_redirect_verb_handling.rb +6 -6
- data/test/test_scheme.rb +0 -7
- data/test/test_verbs.rb +3 -3
- metadata +106 -72
- metadata.gz.sig +0 -0
- data/lib/mechanize/chain.rb +0 -36
- data/lib/mechanize/chain/auth_headers.rb +0 -78
- data/lib/mechanize/chain/body_decoding_handler.rb +0 -50
- data/lib/mechanize/chain/connection_resolver.rb +0 -28
- data/lib/mechanize/chain/custom_headers.rb +0 -21
- data/lib/mechanize/chain/handler.rb +0 -9
- data/lib/mechanize/chain/header_resolver.rb +0 -48
- data/lib/mechanize/chain/parameter_resolver.rb +0 -22
- data/lib/mechanize/chain/pre_connect_hook.rb +0 -20
- data/lib/mechanize/chain/request_resolver.rb +0 -31
- data/lib/mechanize/chain/response_body_parser.rb +0 -36
- data/lib/mechanize/chain/response_header_handler.rb +0 -34
- data/lib/mechanize/chain/response_reader.rb +0 -39
- data/lib/mechanize/chain/ssl_resolver.rb +0 -40
- data/lib/mechanize/chain/uri_resolver.rb +0 -75
- data/test/chain/test_argument_validator.rb +0 -14
- data/test/chain/test_auth_headers.rb +0 -25
- data/test/chain/test_custom_headers.rb +0 -18
- data/test/chain/test_header_resolver.rb +0 -27
- data/test/chain/test_parameter_resolver.rb +0 -35
- data/test/chain/test_request_resolver.rb +0 -29
- data/test/chain/test_response_reader.rb +0 -24
- data/test/test_cookie_jar.rb +0 -324
- data/test/test_page.rb +0 -124
data/test/test_page.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
require "helper"
|
2
|
-
|
3
|
-
require 'cgi'
|
4
|
-
|
5
|
-
class TestPage < Test::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@agent = Mechanize.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_page_gets_charset_from_page
|
11
|
-
page = @agent.get("http://localhost/tc_charset.html")
|
12
|
-
assert_equal 'windows-1255', page.encoding
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_double_semicolon
|
16
|
-
page = @agent.get("http://localhost/http_headers?content-disposition=#{CGI.escape('attachment;; filename=fooooo')}")
|
17
|
-
assert page.parser
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_broken_charset
|
21
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=akldsjfhaldjfksh')}")
|
22
|
-
assert page.parser
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_mostly_broken_charset
|
26
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=ISO_8859-1')}")
|
27
|
-
assert_equal 'ISO_8859-1', page.encoding
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_another_mostly_broken_charset
|
31
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF8')}")
|
32
|
-
assert_equal 'UTF8', page.parser.encoding
|
33
|
-
assert_equal 'UTF8', page.encoding
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_upper_case_content_type
|
37
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/HTML')}")
|
38
|
-
assert_instance_of Mechanize::Page, page
|
39
|
-
assert_equal 'text/HTML', page.content_type
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_encoding_override_before_parser_initialized
|
43
|
-
# document has a bad encoding information - windows-1255
|
44
|
-
page = @agent.get("http://localhost/tc_bad_charset.html")
|
45
|
-
# encoding is wrong, so user wants to force ISO-8859-2
|
46
|
-
page.encoding = 'ISO-8859-2'
|
47
|
-
assert_equal 'ISO-8859-2', page.encoding
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_encoding_override_after_parser_was_initialized
|
51
|
-
# document has a bad encoding information - windows-1255
|
52
|
-
page = @agent.get("http://localhost/tc_bad_charset.html")
|
53
|
-
page.parser
|
54
|
-
# autodetection sets encoding to windows-1255
|
55
|
-
assert_equal 'windows-1255', page.encoding
|
56
|
-
# encoding is wrong, so user wants to force ISO-8859-2
|
57
|
-
page.encoding = 'ISO-8859-2'
|
58
|
-
assert_equal 'ISO-8859-2', page.encoding
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_page_gets_charset_sent_by_server
|
62
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF-8')}")
|
63
|
-
assert_equal 'UTF-8', page.encoding
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_page_gets_charset_sent_by_server_with_trailing_semicolon
|
67
|
-
page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF-8;')}")
|
68
|
-
assert_equal 'UTF-8', page.encoding
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_set_encoding
|
72
|
-
page = @agent.get("http://localhost/file_upload.html")
|
73
|
-
page.encoding = 'UTF-8'
|
74
|
-
assert_equal 'UTF-8', page.parser.encoding
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_page_gets_yielded
|
78
|
-
pages = nil
|
79
|
-
@agent.get("http://localhost/file_upload.html") { |page|
|
80
|
-
pages = page
|
81
|
-
}
|
82
|
-
assert pages
|
83
|
-
assert_equal('File Upload Form', pages.title)
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_title
|
87
|
-
page = @agent.get("http://localhost/file_upload.html")
|
88
|
-
assert_equal('File Upload Form', page.title)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_no_title
|
92
|
-
page = @agent.get("http://localhost/no_title_test.html")
|
93
|
-
assert_equal(nil, page.title)
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_page_decoded_with_charset
|
97
|
-
page = Mechanize::Page.new(
|
98
|
-
URI.parse('http://tenderlovemaking.com/'),
|
99
|
-
{ 'content-type' => 'text/html; charset=EUC-JP' },
|
100
|
-
'<html><body>hello</body></html>',
|
101
|
-
400,
|
102
|
-
@agent
|
103
|
-
)
|
104
|
-
assert_equal 'EUC-JP', page.parser.encoding
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_find_form_with_hash
|
108
|
-
page = @agent.get("http://localhost/tc_form_action.html")
|
109
|
-
form = page.form(:name => 'post_form1')
|
110
|
-
assert form
|
111
|
-
yielded = false
|
112
|
-
form = page.form(:name => 'post_form1') { |f|
|
113
|
-
yielded = true
|
114
|
-
assert f
|
115
|
-
assert_equal(form, f)
|
116
|
-
}
|
117
|
-
assert yielded
|
118
|
-
|
119
|
-
form_by_action = page.form(:action => '/form_post?a=b&b=c')
|
120
|
-
assert form_by_action
|
121
|
-
assert_equal(form, form_by_action)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|